diff -Nru xserver-xorg-video-qxl-0.0.17/ChangeLog xserver-xorg-video-qxl-0.1.0/ChangeLog --- xserver-xorg-video-qxl-0.0.17/ChangeLog 2012-03-15 17:47:48.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/ChangeLog 2012-09-20 23:09:18.000000000 +0000 @@ -1,3 +1,733 @@ +commit 6520293e1e1f57bafbcf99592e766f810ce3ad2d +Author: Søren Sandmann Pedersen +Date: Thu Sep 20 16:26:36 2012 -0400 + + Make the checks for composite and a8 return FALSE for Xspice + + They depend on the PCI revision which is not available for Xspice. + +commit 7f0b820d919eb944eae201de03b186bd247b0324 +Author: Jeremy White +Date: Wed Sep 12 10:38:41 2012 -0500 + + Only use dixScreenSpecificPrivatesSize if we have a new enough Xorg. + + This lets us continue to support older Xorg releases. + This reverts 4f37cd85 and partially reverts 4a43bd4. + +commit fb038eb37906eba9a88e0cb6622a59f06dcc2a68 +Author: Søren Sandmann +Date: Wed Sep 12 12:54:06 2012 -0400 + + Don't issue composite commands or create a8 surfaces when not available + + When the device or the client are not capable of composite commands or a8 + surfaces, don't issue these commands. + +commit 4f37cd854f128714b8fcf3c0ab8afd72986407a0 +Author: Johannes Obermayr +Date: Fri Sep 7 18:05:21 2012 +0200 + + Require XServer >= 1.12.99.901 in conjunction with commit 4a43bd4. + +commit 7059cff787eef80f3d3345de705e912b292a9f97 +Author: Søren Sandmann +Date: Thu Jul 12 09:53:31 2012 -0400 + + Add Render support + + This commit adds support for using the new Composite command in spice + protocol 0.12.0. This command is similar to the Composite request in + the X Render protocol. + + By implementing the UXA composite stubs, we get acceleration for most + common Composite requests, including glyphs. + +commit 2fecf3a171e64ca0dad5653ed740409dc5af2edf +Author: Søren Sandmann +Date: Tue Dec 20 09:01:17 2011 -0500 + + Enable 8 bit pixmaps. + + a8 surfaces are now supported with the 8BIT_A format in spice, so we + can have support 8 bit pixmaps. + +commit 37c97620da959d9214abfc760835aa3031d54daa +Author: Søren Sandmann +Date: Sun Aug 12 11:03:16 2012 -0400 + + Use an RGBA format for 32 bit images + + With the upcoming Render changes, we can no longer assume that the + fourth channel of images is unused. + +commit 1e89aab2dc0beb01f43a2397faa05a8cd01a7547 +Author: Søren Sandmann +Date: Wed Aug 22 15:27:09 2012 -0400 + + uxa: Plug leak in uxa_glyphs_via_masks + + If prepare_composite() fails, we need to free the temporary mask + before returning. + +commit afd8d20b84a4b4e9b22483e379d594517333e8c7 +Author: Søren Sandmann +Date: Tue Aug 14 14:20:11 2012 -0400 + + uxa-glyphs: don't prepare composite when dest is not offscreen + + It is possbible for a pixmap to not be in video memory after + uxa_clear_pixmap() was called. When this happens, we need to destroy + the pixmap and return 1 to indicate that the operation can't be + accelerated. + +commit e738d00e1fb3cd469f850765e2b42976c2a85764 +Author: Søren Sandmann +Date: Tue Aug 21 12:56:52 2012 -0400 + + Improved support for memory debugging. + + Make all memory allocation functions take a string that will explain + what the memory will be used for. This allows debug print statements + to be added to the allocation functions and could later potentially be + used for more detailed statistics. + +commit 4a43bd436c58dae72f91905657a36158efc68907 +Author: Alon Levy +Date: Thu Aug 23 18:28:03 2012 +0300 + + src/qxl_driver: use the new dixScreenSpecificPrivatesSize + + xserver introduces a new screen specific privates infrastructure, moving + the PRIVATE_PIXBUF over there, breaking qxl that was using the wrong + dixPrivatesSize to access it - there is a new array of screen specific/not + flags, and PRIVATE_PIXBUF is screen specific. + + xorg-xserver commit: 9d457f9c55f12106ba44c1c9db59d14f978f0ae8 + + This fix breaks backward compat. The next release will only work with + xorg-xserver >= 1.12.99.901 + + RHBZ: 844463 + +commit 0998bf63cd6c69a98f67094eba4e4edd2bf2a906 +Author: Søren Sandmann Pedersen +Date: Thu Aug 23 17:24:51 2012 -0400 + + Coding style fixes + + Undo most of the damage from 7f8d3ed05cbe891 + +commit 5554358fa3baf6616159b65f2f65a138f401aaf8 +Author: Søren Sandmann Pedersen +Date: Thu Aug 23 17:22:58 2012 -0400 + + Bump spice-protocol version requirement to 0.12.0 + +commit a261befde42d21f3fa9e4a56f121203cc67f3831 +Author: Alon Levy +Date: Thu Aug 23 17:27:20 2012 +0300 + + qxl_driver: Xspice: fix build breakage + +commit c1b537fcafc3b9121d8c79cf5e98566158f34ab6 +Author: Marc-André Lureau +Date: Sun Jul 15 09:38:55 2012 -0400 + + Return a preferred mode matching the current mode + + This make gnome-settings-daemon not switch resolution automatically to + the largest available. + +commit ef4f158a18f03444d358b5ece39db636f76365f9 +Author: Marc-André Lureau +Date: Fri Jul 13 08:20:33 2012 -0400 + + Change output status when update monitors config + +commit 907d0ff0b0f6934d37fbab4a6889295d70ae3496 +Author: Marc-André Lureau +Date: Sun Jul 8 15:35:23 2012 -0400 + + Bypass rrcrtc.c screen size bounds check + +commit 557e23e82b6d738fab6fa6bd28b077dd81437b22 +Author: Marc-André Lureau +Date: Fri Jul 6 08:06:10 2012 -0400 + + Avoid calling qxl_update_monitors_config() with invalid config + + During startup, the monitors are not yet enabled/set. and we + can avoid sending invalid/transient config. + +commit 47b54dcfd9ba2aa78e0f154a288321bb0ff98dce +Author: Marc-André Lureau +Date: Fri Jul 6 08:05:11 2012 -0400 + + Split crtc_set_mode_major() + + Avoid sending many monitor config changes during qxl_create_desired_modes() + +commit 6ee541636b6ed6846074afeb1c32d9e8e6a9bdda +Author: Marc-André Lureau +Date: Fri Jul 6 08:02:21 2012 -0400 + + Add check_crtc() helper, to catch crtc/monitor config errors + +commit 7f8d3ed05cbe8914910e49b49ec44df15562bd16 +Author: Marc-André Lureau +Date: Wed Jul 4 14:56:07 2012 -0400 + + Coding style improvement + +commit f9980eec2287a01a918ff073a45f13d9dc66a1c6 +Author: Marc-André Lureau +Date: Wed Jul 4 14:01:45 2012 -0400 + + get rid of one of the gcc warnings + +commit 6c63d799a2b0f69485938dbae7975bf913284a23 +Author: Alon Levy +Date: Wed Jun 27 15:53:41 2012 +0300 + + qxl_driver/qxl_initialize_x_modes: remove modes not fitting framebuffer + +commit f493653a5e09ae0e0fe1a5f70c3aba1dc9fe86fe +Author: Alon Levy +Date: Mon Jun 25 17:09:20 2012 +0300 + + qxl_driver: add infra for surface0 resizing + + Most importantly, don't allow randr resize if it is too large for the + currently allocated mspace. Ifdeffed out almost working code for + reallocating the primary mspace (qxl->mem). + +commit 75619d076bb029b76bed7a885864e191c386aa23 +Author: Alon Levy +Date: Wed Jun 27 12:11:41 2012 +0300 + + add qxl_edid + + Taken from Virtual Box, following exactly the same logic: + gnome-settings-daemon relies on the serial given in the edid to set the + resolution to the same one last used on that screen. Since this is not + what we want with a virtual machine, we produce a serial that is + different for every resolution. + +commit de547245e75ea88f780205da072967bff119a636 +Author: Alon Levy +Date: Mon Jun 25 16:13:29 2012 +0300 + + (for later) qxl_ring: add helpers (debugging/unused) + +commit b4e3f07474c919af0e484a71fb86c788a703ad8c +Author: Alon Levy +Date: Mon Jun 25 16:20:31 2012 +0300 + + qxl_driver: qxl_init_randr: limit width/height to 8192, real check done on randr screen resize callback + +commit d85e07921dda5e5401a336d415e8deee4b663252 +Author: Marc-André Lureau +Date: Wed Jul 4 11:30:58 2012 -0400 + + Add some error message if pci revision < 4 + +commit e6bfdd035f3692b712496069b9361d010526802a +Author: Alon Levy +Date: Wed Jun 27 14:33:46 2012 +0300 + + qxl_driver: introduce qxl_crtc, crtc private + + Additionally prevents disabling of the primary crtc. + +commit f106ea65cde61c8f3cf5819d8c127fb7912ec067 +Author: Alon Levy +Date: Mon Apr 30 18:35:59 2012 +0300 + + qxl_driver: implement randr, arbitrary resolution, multiple monitors (big dump) + + Send a MonitorsUpdate - this should definitely be split into it's own + patch. + + Require revision 4 - this is needed just for MonitorsUpdate, should go + with it. + + Adds new config: OPTION_NUM_HEADS, defaults to 4. + +commit 21e5719f74749fa6187539dc0805cb12759d66da +Author: Alon Levy +Date: Thu May 24 09:56:06 2012 +0300 + + qxl_surface: add download_box_no_update + +commit 26b8b350628ec053217715e7a9cb77ff56e4f56e +Author: Alon Levy +Date: Thu May 24 09:55:27 2012 +0300 + + qxl_surface: normalize surface_send names, add option to surface_destroy to send/not send destroy message + +commit 1db72fdf45a3ebbf7f0687671c1def75309b9499 +Author: Alon Levy +Date: Wed May 23 20:44:51 2012 +0300 + + spiceqxl_io_port: mark FLUSH_SURFACES_ASYNC as unimplemented, do half of it + +commit 5d78c4cac24ad3830dba1900d5d879551dcbb407 +Author: Alon Levy +Date: Wed May 23 21:23:09 2012 +0300 + + qxl_screen_init: move uxa_resources_init down to after qxl_switch_mode has run + +commit f246a251f88dab6a9db83e2d8bbd699e29950459 +Author: Alon Levy +Date: Wed May 23 21:20:23 2012 +0300 + + qxl_close_screen: disable fb access, prevent segfaults in uxa later on + + I don't have a stacktrace to show any segfault unfortunately. + +commit 6dedd9a3f997c0112e71cfd0b28465348dfbbc36 +Author: Alon Levy +Date: Mon Jun 25 17:08:11 2012 +0300 + + qxl_driver: move mspace_set_*_func earlier + +commit f838df1589c63fba8e99200238cf0b4e3acac6b1 +Author: Alon Levy +Date: Tue May 29 17:24:50 2012 +0300 + + fix two segfaults in qxl_free_surface + + Both results from ProcFreePixmap being called in unanticipated + circumstances: + + cache->all_surfaces is NULL + surface->host_image is NULL + + To reproduce the following scripts work, in tandem: + + create xterms, destroy them + chvt + + ============ xterm_test ============ + import os + import subprocess + import time + import atexit + + env = os.environ + env['DISPLAY'] = ':0.0' + xterms = [] + + def kill_all(): + print "killing xterms" + for x in xterms: + x.kill() + del xterms[:] + + atexit.register(kill_all) + while True: + for i in range(10): + xterms.append(subprocess.Popen(['xterm', '+u8'])) + time.sleep(1) + kill_all() + + ============= chvt_test_helper ============ + XPID=`pgrep Xorg` + XTTY=`find /proc/$XPID/fd -lname "/dev/tty*"` + XTTY=`readlink $XTTY` + XTTY=${XTTY#/dev/tty} + echo "chvt 1 (from Xorg)" + chvt 1 + sleep 2 + echo "chvt $XTTY (to Xorg)" + chvt $XTTY + + ============== chvt_test ================= + while true; do ./chvt-test ; sleep 3; done + +commit c60681561c9cf8317be4e84ac8ac2bb465e13eb0 +Author: Alon Levy +Date: Mon Jun 11 10:13:39 2012 +0300 + + qxl: remove qxl_screen_t->stride + +commit 203f579fed5e0c8a9970bfabebc84c7d84578ee5 +Author: Alon Levy +Date: Wed Jun 27 12:07:16 2012 +0300 + + spiceqxl_inputs: don't hide the pointer global typedef + +commit 5706a3765bead75999f6d0ca0b17fed6c30ad7ef +Author: Alon Levy +Date: Wed Jun 27 11:06:17 2012 +0300 + + uxa: fix bad argument type from removed index API change (s/SCREEN_ARG_TYPE/SCRN_ARG_TYPE/) + +commit ea676f67d4c8fc863a711fb8630c1afccfa0561c +Author: Alon Levy +Date: Wed Jun 27 12:19:01 2012 +0300 + + whitespace fix + +commit de66207883efc1f32e96907c3e64f17b2bdf6c3e +Author: Alon Levy +Date: Sun Jul 8 14:05:08 2012 +0300 + + qxl_driver/qxl_switch_mode: destroy is not idempotent + +commit 6267b1a56f6104409fcb970eddc4ea9606421331 +Author: Alon Levy +Date: Wed Mar 7 14:30:58 2012 +0200 + + spiceqxl_display: reformat & rephrase Xspice comment + +commit e0f301fc0512502542573b3f8dd9452f5a7ea6e1 +Author: Jeremy White +Date: Wed Jun 13 17:04:12 2012 -0500 + + Compute totalPixmapSize using the same logic as in dix/pixmap.c, rather than hard coding 100. + + This was found while building with a modified X server; one with a PixmapRec size of 224, not 64 :-/. + +commit 6832c0fd917556c52f56f8e82706a83942ed3dc1 +Author: Jeremy White +Date: Sun Jun 3 10:28:05 2012 -0500 + + Actually process write watches in the wakeup handler + + My apologies for the churn; this is, I think, a slightly better patch than + my previous patch, 'Process watches even when there is no X activity', in that + it avoids doing an extra polling select when we're idle. + +commit 72a0def8114073c0051f3df880f731d3968cb344 +Author: Alon Levy +Date: Wed May 30 13:44:40 2012 +0300 + + qxl_switch_mode: don't evacuate, just recreate primary surface + + In summary, on vt enter we still: + reset + recreate memory slots + clear our mspace allocators + and then do what switch mode below says + + On vt leave we still: + reset (this is redundant since the first VGA access will trigger a + reset on the device side) + + On switch mode however we only: + destroy primary surface + create primary surface (different size) + +commit 8df3eba368e80f60ce815300b85a567a9b02141c +Author: Alon Levy +Date: Thu May 31 13:04:01 2012 +0300 + + qxl_surface: don't unlink surface 0 + + The primary surface, i.e. qxl->primary, the only surface with id==0, is + allocated in qxl_surface_cache_create_primary with prev==next==NULL. + Unlinking it was producing a wrong cache->free_surfaces == NULL. This + was not a problem because unlinking the primary only happened in + switch_host, which then called surface_cache_init. In a following commit + switch_host is simplified to destroy-primary+create-primary, so this bug + needs to be fixed first to avoid leaking surfaces and reaching a no + surface available situation. + +commit 22157d4750f9090927d2e3473aa3d3a4f5232792 +Author: Alon Levy +Date: Thu May 31 13:03:54 2012 +0300 + + qxl_surface: add DEBUG_SURFACE_LIFECYCLE helpers + +commit 0f817bb4e1b4e33ef50c0399c92f1cc091840ef5 +Author: Alon Levy +Date: Tue May 29 12:25:12 2012 +0300 + + io: add qxl_io_destroy_primary + +commit 326b80974b4080ed7519801f7d1c96077f5ae0b9 +Author: Alon Levy +Date: Wed May 23 20:50:46 2012 +0300 + + prefix io with qxl_io, add several + +commit 73981e02c90cc81dd462f9fc2a00b5b11a9eab00 +Author: Alon Levy +Date: Wed May 23 20:52:48 2012 +0300 + + qxl.h: add device_primary tri state UNDEFINED/NONE/CREATED + +commit b600edc48270a4a368add11ec02e6d365d5da60d +Author: Alon Levy +Date: Thu May 24 00:08:38 2012 +0300 + + qxl_surface: logging: add function name to ErrorF + +commit 3a87e765d91a26ead2cfc5ddad1ba4f3e7d21922 +Author: Alon Levy +Date: Thu May 24 11:00:49 2012 +0300 + + qxl_surface: cosmetics + +commit 60478640a6c4d74c44fdf67350be6e180960cf5f +Author: Alon Levy +Date: Wed May 23 21:23:26 2012 +0300 + + qxl_pre_init: memset qxl struct + +commit 9d929ae1d1bb2e7f03221fcc4d70e761b6ff9242 +Author: Alon Levy +Date: Wed May 23 20:46:34 2012 +0300 + + qxl_driver: abort on mspace error, don't spin (default abort function) + +commit 6aa3ceb2d3f25726424b03a68ef949deadf7125a +Author: Alon Levy +Date: Wed May 23 20:44:06 2012 +0300 + + mspace: add mspace_malloc_stats_return + +commit 5e505dc6572ee29d0ebe912a8160a8e09bfb5d3e +Author: Alon Levy +Date: Tue May 29 13:46:34 2012 +0300 + + qxl_leave_vt: change outb to ioport_write (easier to grep / breakpoint on a single point) + +commit 67f86dc1e824d00a06bdc51ba4c3e88cfbd82292 +Author: Alon Levy +Date: Tue May 29 13:45:29 2012 +0300 + + rename qxl_reset to qxl_reset_and_create_mem_slots + +commit 21c1d576925e561551b91b44b0d286f0bdc689c4 +Author: Alon Levy +Date: Wed May 23 20:54:44 2012 +0300 + + qxl_mem: add debug flags, simple accounting and valgrind enabled + + adds preprocessor definitions DEBUG_QXL_MEM & DEBUG_QXL_MEM_VERBOSE + +commit a313b5ef1b5b6dda1e6c0ab47f458d692a5462f7 +Author: Alon Levy +Date: Wed May 30 10:46:54 2012 +0300 + + qxl_surface: handle destroyed pixmaps while evacuated + + Prevent access to freed memory when: + 1. qxl_leave_vt/qxl_surface_cache_evacuate_all freed cache->all_surfaces + 2. ProcRenderDispatch/damageDestroyPixmap/qxl_destroy_pixmap/qxl_surface_kill + access a surface that pointed inside the all_surfaces array + + Solution in this patch: + 1. never free all_surfaces + 2. add an 'evacuated' field per surface, initialized to NULL, set during + evacuation. + 3. on qxl_surface_kill, if surface->evacuated is set, don't destroy the + surface (it is already destroyed by this point via a reset in + qxl_surface_cache_evacuate_all's caller, qxl_leave_vt), just unref the + host pixmap, free the evacuated_surface_t and unlink it from the + evacuated linked list, so it isn't recreated later on + qxl_surface_cache_replace_all. + +commit c47ebff71878458ff6157aec7252999a6578fb97 +Author: Alon Levy +Date: Wed May 30 10:09:47 2012 +0300 + + qxl_driver: hide cursors on vt switch + + This is not enough to prevent any qxl_destroy_pixmap call during vt + switch, but it prevents those triggered by CursorDisplayCursor. + + Note: a matching xf86_show_cursors call doesn't hurt, but is not + required, so not adding it. + + It is still possible to access freed memory by the following trigger: + + ==4416== Invalid read of size 8 + ==4416== at 0x5D15EC1: unlink_surface (qxl_surface.c:685) + ==4416== by 0x5D162F9: qxl_surface_kill (qxl_surface.c:799) + ==4416== by 0x5D12688: qxl_destroy_pixmap (qxl_driver.c:928) + ==4416== by 0x55730B: damageDestroyPixmap (damage.c:1556) + ==4416== by 0x51C77B: ShmDestroyPixmap (shm.c:273) + ==4416== by 0x54591B: FreePicture (picture.c:1465) + ==4416== by 0x467A32: doFreeResource (resource.c:873) + ==4416== by 0x467B7E: FreeResource (resource.c:903) + ==4416== by 0x547742: ProcRenderFreePicture (render.c:661) + ==4416== by 0x54B13A: ProcRenderDispatch (render.c:1988) + ==4416== by 0x430670: Dispatch (dispatch.c:428) + ==4416== by 0x492604: main (main.c:288) + ==4416== Address 0x121031e0 is 116,960 bytes inside a block of size 122,880 free'd + ==4416== at 0x4A079AE: free (vg_replace_malloc.c:427) + ==4416== by 0x5D16BDA: qxl_surface_cache_evacuate_all (qxl_surface.c:1060) + ==4416== by 0x5D13078: qxl_leave_vt (qxl_driver.c:1209) + ==4416== by 0x4A4D4F: xf86VTSwitch (xf86Events.c:462) + ==4416== by 0x4A4926: xf86Wakeup (xf86Events.c:285) + ==4416== by 0x43E2E1: WakeupHandler (dixutils.c:421) + ==4416== by 0x488A75: WaitForSomething (WaitFor.c:224) + ==4416== by 0x4303CF: Dispatch (dispatch.c:357) + ==4416== by 0x492604: main (main.c:288) + + This is fixed by a following patch to not free all_surfaces, instead + keeping pointers from it to the evacuated list. + +commit fdf2274c9ff15fc5108b400b71120184d2651a21 +Author: Alon Levy +Date: Mon May 21 11:31:23 2012 +0300 + + qxl_surface: remove redundant qxl_garbage_collect, qxl_allocnf calls it + +commit b26640c2d24e6094487ea323a08b539d66050d89 +Author: Alon Levy +Date: Tue May 29 13:47:44 2012 +0300 + + uxa-damage: remove unnecessary include (doesn't fix any warnings) + +commit 8faf24226a20901e7a29019c922359365501ba69 +Author: Alon Levy +Date: Tue May 29 13:09:46 2012 +0300 + + uxa: remove unnecessary includes, reduces warnings due to duplicate definitions + +commit bb1b5865bc02341cfa1cc0d943fac59077643ea5 +Author: Dave Airlie +Date: Wed Jun 6 17:17:09 2012 +0100 + + qxl: fix spice build + + reported by jenkins. + + Signed-off-by: Dave Airlie + +commit f1a9c1b33bff038807755824190c69889ef6d794 +Author: Dave Airlie +Date: Wed Jun 6 14:19:04 2012 +0100 + + qxl: add API compat for latest X server. + + Signed-off-by: Dave Airlie + +commit 40dc75db615c1161c38874c145770b8d77a995ad +Author: Yonit Halperin +Date: Mon Apr 23 09:04:36 2012 +0300 + + Do not call update_area when lacking device memory + + The QXL_IO_NOTIFY_OOM is intended exactly for handling occurrences of + lacking memory. The spice server tries to first release resources that + are no longer in the current tree (and thus, do not need rendering). + It renders drawables only as a last resort. And even then, + it does not update the whole primary surface, but rather renders + the oldest X drawables. + The call to update_area is redundant, and its effect on performance + is noticeable when playing full screen video. + + Signed-off-by: Yonit Halperin + +commit 1ad5c8633cc52aef5aa8a58bf529859caa8d1bd9 +Author: Christophe Fergeau +Date: Wed Apr 25 16:18:19 2012 +0200 + + Distribution-agnostic XORG_MACROS_VERSION check message + +commit b3caf8621d798ea3c5140b8adc193121c4c13c4a +Author: Yaniv Kaul +Date: Tue Apr 24 13:22:41 2012 +0300 + + Change xorg-macros -> xorg-x11-util-macros in configure error message + + At least in Fedora 17, the correct RPM name is xorg-x11-util-macros + +commit 315c7de54699a883ba91f906ab59985e4e5426c2 +Author: Alon Levy +Date: Mon Apr 9 12:27:21 2012 +0300 + + qxl_driver: ifdef out qxl_wait_for_io_command if not XSPICE + +commit 5eae282231a7cd727ad3f3576ed0574a29d949b1 +Author: Alon Levy +Date: Mon Apr 9 12:18:36 2012 +0300 + + qxl_surface.c: fix -Wshadow warning + + qxl_surface.c:735:6: warning: declaration of 'i' shadows a previous + local [-Wshadow] + +commit a4773c508735ec3e9779c46e966a07d388e265dc +Author: Alon Levy +Date: Wed Apr 4 15:45:12 2012 +0300 + + mspace: no more warnings + +commit 01f77c0c42e2b9058e48a9ac4ae171609119ce12 +Author: Alon Levy +Date: Wed Apr 4 16:07:47 2012 +0300 + + spiceqxl_io_port: use pointer_to_u64 (fix warning) + +commit aa6cf3db29886ce964b9a5793e7ed0af6f213b57 +Author: Alon Levy +Date: Wed Apr 4 16:07:29 2012 +0300 + + spiceqxl_io_port: use attribute printf (fix warning) + +commit f7949ea1488223b8fcbfd1cba2d344d811ee62ca +Author: Alon Levy +Date: Tue Apr 24 12:11:42 2012 +0300 + + qxl_surface: qxl_surface_prepare_access: remove assigned but unused variables + +commit ae50a549d6169d806105a2d6b8220002fda5d9de +Author: Alon Levy +Date: Fri Apr 6 10:30:12 2012 +0300 + + spiceqxl: Xspice is spelled with a lower s + +commit ea37df4b4bccd4e2b9dbd590607737b18ec11ee9 +Author: Alon Levy +Date: Sun Apr 15 11:53:51 2012 +0300 + + README.xspice: updpate repository + + Reported by: Michael Tokarev + +commit fe74d8a89534d92a2151ee3ac28de3d5864a874e +Author: Alon Levy +Date: Thu Mar 8 16:16:20 2012 +0200 + + protect AC_CHECK_FILE for cross compiling + + Signed-off-by: Alon Levy + +commit 810d92db84d0e11260ec3abc936dacac113fcbba +Author: Dave Airlie +Date: Sun Mar 18 20:47:41 2012 +0000 + + qxl: missed one file that needs config.h + +commit 34ccb90f6b635b45080e6e4868314fa80a662fc2 +Author: Dave Airlie +Date: Sun Mar 18 20:42:38 2012 +0000 + + qxl: fix config.h usage + + You have to include config.h at top of each C file, not inside a header file. + + Signed-off-by: Dave Airlie + +commit b75eed01fa7514c15f4379092a93ecf8478f0b48 +Author: Søren Sandmann Pedersen +Date: Thu Mar 15 13:49:52 2012 -0400 + + Version bump to 0.0.17 + +commit c358c7f199bfeb519e08b0903438e43b1afd02c1 +Author: Søren Sandmann Pedersen +Date: Thu Mar 15 13:49:42 2012 -0400 + + Add qxl_option_helper.h to Makefile.am + commit 81bee3d3491ab6b31b0d69207729280e86138d50 Author: Søren Sandmann Pedersen Date: Thu Mar 15 13:42:04 2012 -0400 diff -Nru xserver-xorg-video-qxl-0.0.17/Makefile.in xserver-xorg-video-qxl-0.1.0/Makefile.in --- xserver-xorg-video-qxl-0.0.17/Makefile.in 2012-03-15 17:46:35.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/Makefile.in 2012-09-20 23:08:26.000000000 +0000 @@ -139,6 +139,7 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASE_CFLAGS = @BASE_CFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ diff -Nru xserver-xorg-video-qxl-0.0.17/README.xspice xserver-xorg-video-qxl-0.1.0/README.xspice --- xserver-xorg-video-qxl-0.0.17/README.xspice 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/README.xspice 2012-07-25 16:01:01.000000000 +0000 @@ -44,7 +44,7 @@ DRV_DIR=/usr/lib64/xorg/modules/drivers XORG_CONF_DIR=/etc/X11 -git clone git://anongit.freedesktop.org/~alon/xspice +git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-qxl sudo yum install spice-server-devel spice-protocol cd xspice @@ -72,7 +72,7 @@ git://anongit.freedesktop.org/xorg/xserver \ git://anongit.freedesktop.org/xorg/lib/libxkbfile \ git://git.freedesktop.org/git/spice/spice-protocol -git://anongit.freedesktop.org/~alon/xspice; do git clone $src; done +git://anongit.freedesktop.org/xorg/driver/xf86-video-qxl; do git clone $src; done build and install into some non common prefix (not to overwrite your existing server) - note that this is just for testing. This diff -Nru xserver-xorg-video-qxl-0.0.17/aclocal.m4 xserver-xorg-video-qxl-0.1.0/aclocal.m4 --- xserver-xorg-video-qxl-0.0.17/aclocal.m4 2012-03-15 17:46:33.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/aclocal.m4 2012-09-20 23:08:23.000000000 +0000 @@ -8255,7 +8255,7 @@ # See the "minimum version" comment for each macro you use to see what # version you require. m4_defun([XORG_MACROS_VERSION],[ -m4_define([vers_have], [1.15.0]) +m4_define([vers_have], [1.17]) m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.]))) m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.]))) m4_if(m4_cmp(maj_have, maj_needed), 0,, @@ -9263,6 +9263,7 @@ AC_DEFUN([XORG_ENABLE_UNIT_TESTS],[ AC_BEFORE([$0], [XORG_WITH_GLIB]) AC_BEFORE([$0], [XORG_LD_WRAP]) +AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], [Enable building unit test cases (default: ]_defopt[)]), @@ -9273,6 +9274,39 @@ AC_MSG_RESULT([$enable_unit_tests]) ]) # XORG_ENABLE_UNIT_TESTS +# XORG_ENABLE_INTEGRATION_TESTS (enable_unit_tests=auto) +# ------------------------------------------------------ +# Minimum version: 1.17.0 +# +# This macro enables a builder to enable/disable integration testing +# It makes no assumption about the test cases' implementation +# Test cases may or may not use Automake "Support for test suites" +# +# Please see XORG_ENABLE_UNIT_TESTS for unit test support. Unit test support +# usually requires less dependencies and may be built and run under less +# stringent environments than integration tests. +# +# Interface to module: +# ENABLE_INTEGRATION_TESTS: used in makefiles to conditionally build tests +# enable_integration_tests: used in configure.ac for additional configuration +# --enable-integration-tests: 'yes' user instructs the module to build tests +# 'no' user instructs the module not to build tests +# parm1: specify the default value, yes or no. +# +AC_DEFUN([XORG_ENABLE_INTEGRATION_TESTS],[ +AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_ENABLE(integration-tests, AS_HELP_STRING([--enable-integration-tests], + [Enable building integration test cases (default: ]_defopt[)]), + [enable_integration_tests=$enableval], + [enable_integration_tests=]_defopt) +m4_undefine([_defopt]) +AM_CONDITIONAL([ENABLE_INTEGRATION_TESTS], + [test "x$enable_integration_tests" != xno]) +AC_MSG_CHECKING([whether to build unit test cases]) +AC_MSG_RESULT([$enable_integration_tests]) +]) # XORG_ENABLE_INTEGRATION_TESTS + # XORG_WITH_GLIB([MIN-VERSION], [DEFAULT]) # ---------------------------------------- # Minimum version: 1.13.0 @@ -9283,6 +9317,10 @@ # When used with ENABLE_UNIT_TESTS, it is assumed GLib is used for unit testing. # Otherwise the value of $enable_unit_tests is blank. # +# Please see XORG_ENABLE_INTEGRATION_TESTS for integration test support. Unit +# test support usually requires less dependencies and may be built and run under +# less stringent environments than integration tests. +# # Interface to module: # HAVE_GLIB: used in makefiles to conditionally build targets # with_glib: used in configure.ac to know if GLib has been found @@ -9334,8 +9372,8 @@ AM_CONDITIONAL([HAVE_GLIB], [test "$have_glib" = yes]) ]) # XORG_WITH_GLIB -# XORG_LD_WRAP -# ------------ +# XORG_LD_WRAP([required|optional]) +# --------------------------------- # Minimum version: 1.13.0 # # Check if linker supports -wrap, passed via compiler flags @@ -9343,10 +9381,18 @@ # When used with ENABLE_UNIT_TESTS, it is assumed -wrap is used for unit testing. # Otherwise the value of $enable_unit_tests is blank. # +# Argument added in 1.16.0 - default is "required", to match existing behavior +# of returning an error if enable_unit_tests is yes, and ld -wrap is not +# available, an argument of "optional" allows use when some unit tests require +# ld -wrap and others do not. +# AC_DEFUN([XORG_LD_WRAP],[ -XORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no]) +XORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no], + [AC_LANG_PROGRAM([#include + void __wrap_exit(int status) { return; }], + [exit(0);])]) # Not having ld wrap when unit testing has been explicitly requested is an error -if test "x$enable_unit_tests" = x"yes"; then +if test "x$enable_unit_tests" = x"yes" -a "x$1" != "xoptional"; then if test "x$have_ld_wrap" = x"no"; then AC_MSG_ERROR([--enable-unit-tests=yes specified but ld -wrap support is not available]) fi @@ -9359,7 +9405,7 @@ # ----------------------- # SYNOPSIS # -# XORG_CHECK_LINKER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE]) +# XORG_CHECK_LINKER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE], [PROGRAM-SOURCE]) # # DESCRIPTION # @@ -9369,6 +9415,8 @@ # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on # success/failure. # +# PROGRAM-SOURCE is the program source to link with, if needed +# # NOTE: Based on AX_CHECK_COMPILER_FLAGS. # # LICENSE @@ -9409,7 +9457,7 @@ [AC_CACHE_VAL(AS_TR_SH(xorg_cv_linker_flags_[$1]), [ ax_save_FLAGS=$LDFLAGS LDFLAGS="$1" - AC_LINK_IFELSE([AC_LANG_PROGRAM()], + AC_LINK_IFELSE([m4_default([$4],[AC_LANG_PROGRAM()])], AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, AS_TR_SH(xorg_cv_linker_flags_[$1])=no) LDFLAGS=$ax_save_FLAGS])], @@ -9428,6 +9476,52 @@ fi ]) # XORG_CHECK_LINKER_FLAGS +# XORG_MEMORY_CHECK_FLAGS +# ----------------------- +# Minimum version: 1.16.0 +# +# This macro attempts to find appropriate memory checking functionality +# for various platforms which unit testing code may use to catch various +# forms of memory allocation and access errors in testing. +# +# Interface to module: +# XORG_MALLOC_DEBUG_ENV - environment variables to set to enable debugging +# Usually added to TESTS_ENVIRONMENT in Makefile.am +# +# If the user sets the value of XORG_MALLOC_DEBUG_ENV, it is used verbatim. +# +AC_DEFUN([XORG_MEMORY_CHECK_FLAGS],[ + +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_ARG_VAR([XORG_MALLOC_DEBUG_ENV], + [Environment variables to enable memory checking in tests]) + +# Check for different types of support on different platforms +case $host_os in + solaris*) + AC_CHECK_LIB([umem], [umem_alloc], + [malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default']) + ;; + *-gnu*) # GNU libc - Value is used as a single byte bit pattern, + # both directly and inverted, so should not be 0 or 255. + malloc_debug_env='MALLOC_PERTURB_=15' + ;; + darwin*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' + ;; + *bsd*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1' + ;; +esac + +# User supplied flags override default flags +if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then + malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" +fi + +AC_SUBST([XORG_MALLOC_DEBUG_ENV],[$malloc_debug_env]) +]) # XORG_WITH_LINT + # XORG_CHECK_MALLOC_ZERO # ---------------------- # Minimum version: 1.0.0 @@ -9585,41 +9679,248 @@ # # Checks for various brands of compilers and sets flags as appropriate: # GNU gcc - relies on AC_PROG_CC (via AC_PROG_CC_C99) to set GCC to "yes" +# GNU g++ - relies on AC_PROG_CXX to set GXX to "yes" # clang compiler - sets CLANGCC to "yes" # Intel compiler - sets INTELCC to "yes" # Sun/Oracle Solaris Studio cc - sets SUNCC to "yes" # AC_DEFUN([XORG_COMPILER_BRAND], [ -AC_REQUIRE([AC_PROG_CC_C99]) +AC_LANG_CASE( + [C], [ + AC_REQUIRE([AC_PROG_CC_C99]) + ], + [C++], [ + AC_REQUIRE([AC_PROG_CXX]) + ] +) AC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"]) AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"]) AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) ]) # XORG_COMPILER_BRAND +# XORG_TESTSET_CFLAG(, , [, ...]) +# --------------- +# Minimum version: 1.16.0 +# +# Test if the compiler works when passed the given flag as a command line argument. +# If it succeeds, the flag is appeneded to the given variable. If not, it tries the +# next flag in the list until there are no more options. +# +# Note that this does not guarantee that the compiler supports the flag as some +# compilers will simply ignore arguments that they do not understand, but we do +# attempt to weed out false positives by using -Werror=unknown-warning-option and +# -Werror=unused-command-line-argument +# +AC_DEFUN([XORG_TESTSET_CFLAG], [ +m4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) +m4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) + +AC_LANG_COMPILER_REQUIRE + +AC_LANG_CASE( + [C], [ + AC_REQUIRE([AC_PROG_CC_C99]) + define([PREFIX], [C]) + define([CACHE_PREFIX], [cc]) + define([COMPILER], [$CC]) + ], + [C++], [ + define([PREFIX], [CXX]) + define([CACHE_PREFIX], [cxx]) + define([COMPILER], [$CXX]) + ] +) + +[xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]" + +if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "x" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unknown-warning-option], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option], + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=yes], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=no])) + [xorg_testset_]CACHE_PREFIX[_unknown_warning_option]=$[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option] + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" +fi + +if test "x$[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]" = "x" ; then + if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + fi + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" + AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unused-command-line-argument], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument], + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=yes], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=no])) + [xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]=$[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument] + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" +fi + +found="no" +m4_foreach([flag], m4_cdr($@), [ + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" + fi + + PREFIX[FLAGS]="$PREFIX[FLAGS] ]flag[" + +dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname + AC_MSG_CHECKING([if ]COMPILER[ supports ]flag[]) + cacheid=AS_TR_SH([xorg_cv_]CACHE_PREFIX[_flag_]flag[]) + AC_CACHE_VAL($cacheid, + [AC_LINK_IFELSE([AC_LANG_PROGRAM([int i;])], + [eval $cacheid=yes], + [eval $cacheid=no])]) + + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" + + eval supported=\$$cacheid + AC_MSG_RESULT([$supported]) + if test "$supported" = "yes" ; then + $1="$$1 ]flag[" + found="yes" + fi + fi +]) +]) # XORG_TESTSET_CFLAG + +# XORG_COMPILER_FLAGS +# --------------- +# Minimum version: 1.16.0 +# +# Defines BASE_CFLAGS or BASE_CXXFLAGS to contain a set of command line +# arguments supported by the selected compiler which do NOT alter the generated +# code. These arguments will cause the compiler to print various warnings +# during compilation AND turn a conservative set of warnings into errors. +# +# The set of flags supported by BASE_CFLAGS and BASE_CXXFLAGS will grow in +# future versions of util-macros as options are added to new compilers. +# +AC_DEFUN([XORG_COMPILER_FLAGS], [ +AC_REQUIRE([XORG_COMPILER_BRAND]) + +AC_ARG_ENABLE(selective-werror, + AS_HELP_STRING([--disable-selective-werror], + [Turn off selective compiler errors. (default: enabled)]), + [SELECTIVE_WERROR=$enableval], + [SELECTIVE_WERROR=yes]) + +AC_LANG_CASE( + [C], [ + define([PREFIX], [C]) + ], + [C++], [ + define([PREFIX], [CXX]) + ] +) +# -v is too short to test reliably with XORG_TESTSET_CFLAG +if test "x$SUNCC" = "xyes"; then + [BASE_]PREFIX[FLAGS]="-v" +else + [BASE_]PREFIX[FLAGS]="" +fi + +# This chunk of warnings were those that existed in the legacy CWARNFLAGS +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) + +AC_LANG_CASE( + [C], [ + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement]) + ] +) + +# This chunk adds additional warnings that could catch undesired effects. +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) + +# These are currently disabled because they are noisy. They will be enabled +# in the future once the codebase is sufficiently modernized to silence +# them. For now, I don't want them to drown out the other warnings. +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) + +# Turn some warnings into errors, so we don't accidently get successful builds +# when there are problems that should be fixed. + +if test "x$SELECTIVE_WERROR" = "xyes" ; then +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION +else +AC_MSG_WARN([You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) +fi + +AC_SUBST([BASE_]PREFIX[FLAGS]) +]) # XORG_COMPILER_FLAGS + # XORG_CWARNFLAGS # --------------- # Minimum version: 1.2.0 +# Deprecated since: 1.16.0 (Use XORG_COMPILER_FLAGS instead) # # Defines CWARNFLAGS to enable C compiler warnings. # +# This function is deprecated because it defines -fno-strict-aliasing +# which alters the code generated by the compiler. If -fno-strict-aliasing +# is needed, then it should be added explicitly in the module when +# it is updated to use BASE_CFLAGS. +# AC_DEFUN([XORG_CWARNFLAGS], [ -AC_REQUIRE([AC_PROG_CC_C99]) +AC_REQUIRE([XORG_COMPILER_FLAGS]) AC_REQUIRE([XORG_COMPILER_BRAND]) -if test "x$GCC" = xyes ; then - CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ --Wmissing-declarations -Wnested-externs -fno-strict-aliasing \ --Wbad-function-cast -Wformat=2" - case `$CC -dumpversion` in - 3.4.* | 4.*) - CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement" - ;; - esac -else - if test "x$SUNCC" = "xyes"; then - CWARNFLAGS="-v" - fi -fi -AC_SUBST(CWARNFLAGS) +AC_LANG_CASE( + [C], [ + CWARNFLAGS="$BASE_CFLAGS" + if test "x$GCC" = xyes ; then + CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" + fi + AC_SUBST(CWARNFLAGS) + ] +) ]) # XORG_CWARNFLAGS # XORG_STRICT_OPTION @@ -9629,41 +9930,43 @@ # Add configure option to enable strict compilation flags, such as treating # warnings as fatal errors. # If --enable-strict-compilation is passed to configure, adds strict flags to -# $CWARNFLAGS. +# $BASE_CFLAGS or $BASE_CXXFLAGS and the deprecated $CWARNFLAGS. # # Starting in 1.14.0 also exports $STRICT_CFLAGS for use in other tests or # when strict compilation is unconditionally desired. AC_DEFUN([XORG_STRICT_OPTION], [ -# If the module's configure.ac calls AC_PROG_CC later on, CC gets set to C89 -AC_REQUIRE([AC_PROG_CC_C99]) -AC_REQUIRE([XORG_COMPILER_BRAND]) AC_REQUIRE([XORG_CWARNFLAGS]) +AC_REQUIRE([XORG_COMPILER_FLAGS]) AC_ARG_ENABLE(strict-compilation, AS_HELP_STRING([--enable-strict-compilation], [Enable all warnings from compiler and make them errors (default: disabled)]), [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no]) -if test "x$GCC" = xyes ; then - STRICT_CFLAGS="-pedantic -Werror" - # Add -Werror=attributes if supported (gcc 4.2 & later) - AC_MSG_CHECKING([if $CC supports -Werror=attributes]) - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $STRICT_CFLAGS -Werror=attributes" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([return 0;])], - [STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes" - AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])]) - CFLAGS="$save_CFLAGS" -elif test "x$SUNCC" = "xyes"; then - STRICT_CFLAGS="-errwarn" -elif test "x$INTELCC" = "xyes"; then - STRICT_CFLAGS="-Werror" -fi + +AC_LANG_CASE( + [C], [ + define([PREFIX], [C]) + ], + [C++], [ + define([PREFIX], [CXX]) + ] +) + +[STRICT_]PREFIX[FLAGS]="" +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) + +# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not +# activate it with -Werror, so we add it here explicitly. +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) + if test "x$STRICT_COMPILE" = "xyes"; then - CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS" + [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]" + AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"]) fi -AC_SUBST([STRICT_CFLAGS]) -AC_SUBST([CWARNFLAGS]) +AC_SUBST([STRICT_]PREFIX[FLAGS]) +AC_SUBST([BASE_]PREFIX[FLAGS]) +AC_LANG_CASE([C], AC_SUBST([CWARNFLAGS])) ]) # XORG_STRICT_OPTION # XORG_DEFAULT_OPTIONS @@ -9674,6 +9977,7 @@ # AC_DEFUN([XORG_DEFAULT_OPTIONS], [ AC_REQUIRE([AC_PROG_INSTALL]) +XORG_COMPILER_FLAGS XORG_CWARNFLAGS XORG_STRICT_OPTION XORG_RELEASE_VERSION diff -Nru xserver-xorg-video-qxl-0.0.17/configure xserver-xorg-video-qxl-0.1.0/configure --- xserver-xorg-video-qxl-0.0.17/configure 2012-03-15 17:46:34.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/configure 2012-09-20 23:08:25.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.66 for xf86-video-qxl 0.0.17. +# Generated by GNU Autoconf 2.66 for xf86-video-qxl 0.1.0. # # Report bugs to . # @@ -563,8 +563,8 @@ # Identity of this package. PACKAGE_NAME='xf86-video-qxl' PACKAGE_TARNAME='xf86-video-qxl' -PACKAGE_VERSION='0.0.17' -PACKAGE_STRING='xf86-video-qxl 0.0.17' +PACKAGE_VERSION='0.1.0' +PACKAGE_STRING='xf86-video-qxl 0.1.0' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' PACKAGE_URL='' @@ -663,6 +663,7 @@ CHANGELOG_CMD STRICT_CFLAGS CWARNFLAGS +BASE_CFLAGS EGREP GREP CPP @@ -759,6 +760,7 @@ enable_option_checking enable_maintainer_mode enable_dependency_tracking +enable_selective_werror enable_strict_compilation enable_silent_rules enable_static @@ -1331,7 +1333,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xf86-video-qxl 0.0.17 to adapt to many kinds of systems. +\`configure' configures xf86-video-qxl 0.1.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1401,7 +1403,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xf86-video-qxl 0.0.17:";; + short | recursive ) echo "Configuration of xf86-video-qxl 0.1.0:";; esac cat <<\_ACEOF @@ -1413,6 +1415,9 @@ (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors + --disable-selective-werror + Turn off selective compiler errors. (default: + enabled) --enable-strict-compilation Enable all warnings from compiler and make them errors (default: disabled) @@ -1530,7 +1535,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xf86-video-qxl configure 0.0.17 +xf86-video-qxl configure 0.1.0 generated by GNU Autoconf 2.66 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1854,7 +1859,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xf86-video-qxl $as_me 0.0.17, which was +It was created by xf86-video-qxl $as_me 0.1.0, which was generated by GNU Autoconf 2.66. Invocation command line was $ $0 $@ @@ -2743,7 +2748,7 @@ # Define the identity of the package. PACKAGE='xf86-video-qxl' - VERSION='0.0.17' + VERSION='0.1.0' cat >>confdefs.h <<_ACEOF @@ -4377,6 +4382,8 @@ + + ac_fn_c_check_decl "$LINENO" "__clang__" "ac_cv_have_decl___clang__" "$ac_includes_default" if test "x$ac_cv_have_decl___clang__" = x""yes; then : CLANGCC="yes" @@ -4384,271 +4391,5967 @@ CLANGCC="no" fi -ac_fn_c_check_decl "$LINENO" "__INTEL_COMPILER" "ac_cv_have_decl___INTEL_COMPILER" "$ac_includes_default" -if test "x$ac_cv_have_decl___INTEL_COMPILER" = x""yes; then : - INTELCC="yes" +ac_fn_c_check_decl "$LINENO" "__INTEL_COMPILER" "ac_cv_have_decl___INTEL_COMPILER" "$ac_includes_default" +if test "x$ac_cv_have_decl___INTEL_COMPILER" = x""yes; then : + INTELCC="yes" +else + INTELCC="no" +fi + +ac_fn_c_check_decl "$LINENO" "__SUNPRO_C" "ac_cv_have_decl___SUNPRO_C" "$ac_includes_default" +if test "x$ac_cv_have_decl___SUNPRO_C" = x""yes; then : + SUNCC="yes" +else + SUNCC="no" +fi + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; 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_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $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 + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; 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_path_ac_pt_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $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 + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + 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 + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + 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_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + + + + +# Check whether --enable-selective-werror was given. +if test "${enable_selective_werror+set}" = set; then : + enableval=$enable_selective_werror; SELECTIVE_WERROR=$enableval +else + SELECTIVE_WERROR=yes +fi + + + + + +# -v is too short to test reliably with XORG_TESTSET_CFLAG +if test "x$SUNCC" = "xyes"; then + BASE_CFLAGS="-v" +else + BASE_CFLAGS="" +fi + +# This chunk of warnings were those that existed in the legacy CWARNFLAGS + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wall" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wall" >&5 +$as_echo_n "checking if $CC supports -Wall... " >&6; } + cacheid=xorg_cv_cc_flag__Wall + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wall" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wpointer-arith" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wpointer-arith" >&5 +$as_echo_n "checking if $CC supports -Wpointer-arith... " >&6; } + cacheid=xorg_cv_cc_flag__Wpointer_arith + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wpointer-arith" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-declarations" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-declarations" >&5 +$as_echo_n "checking if $CC supports -Wmissing-declarations... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_declarations + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-declarations" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wformat=2" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wformat=2" >&5 +$as_echo_n "checking if $CC supports -Wformat=2... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Wformat=2" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wformat=2" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wformat" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wformat" >&5 +$as_echo_n "checking if $CC supports -Wformat... " >&6; } + cacheid=xorg_cv_cc_flag__Wformat + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wformat" + found="yes" + fi + fi + + + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wstrict-prototypes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wstrict-prototypes" >&5 +$as_echo_n "checking if $CC supports -Wstrict-prototypes... " >&6; } + cacheid=xorg_cv_cc_flag__Wstrict_prototypes + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wstrict-prototypes" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-prototypes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-prototypes" >&5 +$as_echo_n "checking if $CC supports -Wmissing-prototypes... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_prototypes + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-prototypes" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wnested-externs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wnested-externs" >&5 +$as_echo_n "checking if $CC supports -Wnested-externs... " >&6; } + cacheid=xorg_cv_cc_flag__Wnested_externs + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wnested-externs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wbad-function-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wbad-function-cast" >&5 +$as_echo_n "checking if $CC supports -Wbad-function-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wbad_function_cast + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wbad-function-cast" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wold-style-definition" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wold-style-definition" >&5 +$as_echo_n "checking if $CC supports -Wold-style-definition... " >&6; } + cacheid=xorg_cv_cc_flag__Wold_style_definition + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wold-style-definition" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wdeclaration-after-statement" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wdeclaration-after-statement" >&5 +$as_echo_n "checking if $CC supports -Wdeclaration-after-statement... " >&6; } + cacheid=xorg_cv_cc_flag__Wdeclaration_after_statement + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wdeclaration-after-statement" + found="yes" + fi + fi + + + + + +# This chunk adds additional warnings that could catch undesired effects. + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wunused" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wunused" >&5 +$as_echo_n "checking if $CC supports -Wunused... " >&6; } + cacheid=xorg_cv_cc_flag__Wunused + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wunused" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wuninitialized" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wuninitialized" >&5 +$as_echo_n "checking if $CC supports -Wuninitialized... " >&6; } + cacheid=xorg_cv_cc_flag__Wuninitialized + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wuninitialized" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wshadow" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wshadow" >&5 +$as_echo_n "checking if $CC supports -Wshadow... " >&6; } + cacheid=xorg_cv_cc_flag__Wshadow + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wshadow" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wcast-qual" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wcast-qual" >&5 +$as_echo_n "checking if $CC supports -Wcast-qual... " >&6; } + cacheid=xorg_cv_cc_flag__Wcast_qual + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wcast-qual" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-noreturn" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-noreturn" >&5 +$as_echo_n "checking if $CC supports -Wmissing-noreturn... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_noreturn + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-noreturn" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-format-attribute" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-format-attribute" >&5 +$as_echo_n "checking if $CC supports -Wmissing-format-attribute... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_format_attribute + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-format-attribute" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wredundant-decls" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wredundant-decls" >&5 +$as_echo_n "checking if $CC supports -Wredundant-decls... " >&6; } + cacheid=xorg_cv_cc_flag__Wredundant_decls + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wredundant-decls" + found="yes" + fi + fi + + + +# These are currently disabled because they are noisy. They will be enabled +# in the future once the codebase is sufficiently modernized to silence +# them. For now, I don't want them to drown out the other warnings. +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) + +# Turn some warnings into errors, so we don't accidently get successful builds +# when there are problems that should be fixed. + +if test "x$SELECTIVE_WERROR" = "xyes" ; then + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=implicit" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=implicit" >&5 +$as_echo_n "checking if $CC supports -Werror=implicit... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=implicit" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=implicit" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" >&5 +$as_echo_n "checking if $CC supports -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=nonnull" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=nonnull" >&5 +$as_echo_n "checking if $CC supports -Werror=nonnull... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=nonnull" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=nonnull" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=init-self" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=init-self" >&5 +$as_echo_n "checking if $CC supports -Werror=init-self... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=init-self" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=init-self" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=main" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=main" >&5 +$as_echo_n "checking if $CC supports -Werror=main... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=main" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=main" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=missing-braces" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=missing-braces" >&5 +$as_echo_n "checking if $CC supports -Werror=missing-braces... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=missing-braces" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=missing-braces" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=sequence-point" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=sequence-point" >&5 +$as_echo_n "checking if $CC supports -Werror=sequence-point... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=sequence-point" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=sequence-point" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=return-type" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=return-type" >&5 +$as_echo_n "checking if $CC supports -Werror=return-type... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=return-type" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=return-type" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -errwarn=E_FUNC_HAS_NO_RETURN_STMT" >&5 +$as_echo_n "checking if $CC supports -errwarn=E_FUNC_HAS_NO_RETURN_STMT... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-errwarn=E_FUNC_HAS_NO_RETURN_STMT" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=trigraphs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=trigraphs" >&5 +$as_echo_n "checking if $CC supports -Werror=trigraphs... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=trigraphs" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=trigraphs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=array-bounds" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=array-bounds" >&5 +$as_echo_n "checking if $CC supports -Werror=array-bounds... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=array-bounds" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=array-bounds" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=write-strings" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=write-strings" >&5 +$as_echo_n "checking if $CC supports -Werror=write-strings... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=write-strings" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=write-strings" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=address" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=address" >&5 +$as_echo_n "checking if $CC supports -Werror=address... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=address" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=address" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=int-to-pointer-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=int-to-pointer-cast" >&5 +$as_echo_n "checking if $CC supports -Werror=int-to-pointer-cast... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=int-to-pointer-cast" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=int-to-pointer-cast" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -errwarn=E_BAD_PTR_INT_COMBINATION" >&5 +$as_echo_n "checking if $CC supports -errwarn=E_BAD_PTR_INT_COMBINATION... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-errwarn=E_BAD_PTR_INT_COMBINATION" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=pointer-to-int-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=pointer-to-int-cast" >&5 +$as_echo_n "checking if $CC supports -Werror=pointer-to-int-cast... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=pointer-to-int-cast" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=pointer-to-int-cast" + found="yes" + fi + fi + + # Also -errwarn=E_BAD_PTR_INT_COMBINATION +else +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&5 +$as_echo "$as_me: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&2;} + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wimplicit" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wimplicit" >&5 +$as_echo_n "checking if $CC supports -Wimplicit... " >&6; } + cacheid=xorg_cv_cc_flag__Wimplicit + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wimplicit" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wnonnull" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wnonnull" >&5 +$as_echo_n "checking if $CC supports -Wnonnull... " >&6; } + cacheid=xorg_cv_cc_flag__Wnonnull + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wnonnull" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Winit-self" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Winit-self" >&5 +$as_echo_n "checking if $CC supports -Winit-self... " >&6; } + cacheid=xorg_cv_cc_flag__Winit_self + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Winit-self" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmain" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmain" >&5 +$as_echo_n "checking if $CC supports -Wmain... " >&6; } + cacheid=xorg_cv_cc_flag__Wmain + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmain" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-braces" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wmissing-braces" >&5 +$as_echo_n "checking if $CC supports -Wmissing-braces... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_braces + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-braces" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wsequence-point" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wsequence-point" >&5 +$as_echo_n "checking if $CC supports -Wsequence-point... " >&6; } + cacheid=xorg_cv_cc_flag__Wsequence_point + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wsequence-point" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wreturn-type" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wreturn-type" >&5 +$as_echo_n "checking if $CC supports -Wreturn-type... " >&6; } + cacheid=xorg_cv_cc_flag__Wreturn_type + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wreturn-type" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wtrigraphs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wtrigraphs" >&5 +$as_echo_n "checking if $CC supports -Wtrigraphs... " >&6; } + cacheid=xorg_cv_cc_flag__Wtrigraphs + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wtrigraphs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Warray-bounds" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Warray-bounds" >&5 +$as_echo_n "checking if $CC supports -Warray-bounds... " >&6; } + cacheid=xorg_cv_cc_flag__Warray_bounds + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Warray-bounds" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wwrite-strings" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wwrite-strings" >&5 +$as_echo_n "checking if $CC supports -Wwrite-strings... " >&6; } + cacheid=xorg_cv_cc_flag__Wwrite_strings + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wwrite-strings" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Waddress" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Waddress" >&5 +$as_echo_n "checking if $CC supports -Waddress... " >&6; } + cacheid=xorg_cv_cc_flag__Waddress + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Waddress" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wint-to-pointer-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wint-to-pointer-cast" >&5 +$as_echo_n "checking if $CC supports -Wint-to-pointer-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wint_to_pointer_cast + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wint-to-pointer-cast" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wpointer-to-int-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wpointer-to-int-cast" >&5 +$as_echo_n "checking if $CC supports -Wpointer-to-int-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wpointer_to_int_cast + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wpointer-to-int-cast" + found="yes" + fi + fi + + +fi + + + + + + + + CWARNFLAGS="$BASE_CFLAGS" + if test "x$GCC" = xyes ; then + CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" + fi + + + + + + + + +# Check whether --enable-strict-compilation was given. +if test "${enable_strict_compilation+set}" = set; then : + enableval=$enable_strict_compilation; STRICT_COMPILE=$enableval +else + STRICT_COMPILE=no +fi + + + + + + +STRICT_CFLAGS="" + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -pedantic" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -pedantic" >&5 +$as_echo_n "checking if $CC supports -pedantic... " >&6; } + cacheid=xorg_cv_cc_flag__pedantic + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -pedantic" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror" >&5 +$as_echo_n "checking if $CC supports -Werror... " >&6; } + cacheid=xorg_cv_cc_flag__Werror + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -Werror" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -errwarn" >&5 +$as_echo_n "checking if $CC supports -errwarn... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 else - INTELCC="no" -fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ -ac_fn_c_check_decl "$LINENO" "__SUNPRO_C" "ac_cv_have_decl___SUNPRO_C" "$ac_includes_default" -if test "x$ac_cv_have_decl___SUNPRO_C" = x""yes; then : - SUNCC="yes" + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes else - SUNCC="no" + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi + CFLAGS="$xorg_testset_save_CFLAGS" + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -errwarn" + found="yes" + fi + fi +# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not +# activate it with -Werror, so we add it here explicitly. -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; 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_path_PKG_CONFIG+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $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 - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; 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_path_ac_pt_PKG_CONFIG+set}" = set; then : + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if test "${xorg_cv_cc_flag_unknown_warning_option+set}" = set; then : $as_echo_n "(cached) " >&6 else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - 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_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $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 - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + xorg_cv_cc_flag_unknown_warning_option=no fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - 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 - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if test "${ac_cv_path_SED+set}" = set; then : + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if test "${xorg_cv_cc_flag_unused_command_line_argument+set}" = set; then : $as_echo_n "(cached) " >&6 else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - 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_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes else - ac_cv_path_SED=$SED + xorg_cv_cc_flag_unused_command_line_argument=no fi - +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed +found="no" + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + CFLAGS="$CFLAGS -Werror=attributes" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=attributes" >&5 +$as_echo_n "checking if $CC supports -Werror=attributes... " >&6; } + cacheid=`$as_echo "xorg_cv_cc_flag_-Werror=attributes" | $as_tr_sh` + if eval "test \"\${$cacheid+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ -if test "x$GCC" = xyes ; then - CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ --Wmissing-declarations -Wnested-externs -fno-strict-aliasing \ --Wbad-function-cast -Wformat=2" - case `$CC -dumpversion` in - 3.4.* | 4.*) - CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement" - ;; - esac + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes else - if test "x$SUNCC" = "xyes"; then - CWARNFLAGS="-v" - fi + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi + CFLAGS="$xorg_testset_save_CFLAGS" -# If the module's configure.ac calls AC_PROG_CC later on, CC gets set to C89 - - + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes" + found="yes" + fi + fi -# Check whether --enable-strict-compilation was given. -if test "${enable_strict_compilation+set}" = set; then : - enableval=$enable_strict_compilation; STRICT_COMPILE=$enableval -else - STRICT_COMPILE=no -fi -if test "x$GCC" = xyes ; then - STRICT_CFLAGS="-pedantic -Werror" - # Add -Werror=attributes if supported (gcc 4.2 & later) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=attributes" >&5 -$as_echo_n "checking if $CC supports -Werror=attributes... " >&6; } - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $STRICT_CFLAGS -Werror=attributes" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -return 0; -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$save_CFLAGS" -elif test "x$SUNCC" = "xyes"; then - STRICT_CFLAGS="-errwarn" -elif test "x$INTELCC" = "xyes"; then - STRICT_CFLAGS="-Werror" -fi if test "x$STRICT_COMPILE" = "xyes"; then + BASE_CFLAGS="$BASE_CFLAGS $STRICT_CFLAGS" CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS" fi @@ -4656,6 +10359,7 @@ + cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1` _ACEOF @@ -11720,12 +17424,12 @@ pkg_cv_SPICE_PROTOCOL_CFLAGS="$SPICE_PROTOCOL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"spice-protocol >= 0.8.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "spice-protocol >= 0.8.1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"spice-protocol >= 0.12.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "spice-protocol >= 0.12.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_SPICE_PROTOCOL_CFLAGS=`$PKG_CONFIG --cflags "spice-protocol >= 0.8.1" 2>/dev/null` + pkg_cv_SPICE_PROTOCOL_CFLAGS=`$PKG_CONFIG --cflags "spice-protocol >= 0.12.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -11737,12 +17441,12 @@ pkg_cv_SPICE_PROTOCOL_LIBS="$SPICE_PROTOCOL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"spice-protocol >= 0.8.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "spice-protocol >= 0.8.1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"spice-protocol >= 0.12.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "spice-protocol >= 0.12.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_SPICE_PROTOCOL_LIBS=`$PKG_CONFIG --libs "spice-protocol >= 0.8.1" 2>/dev/null` + pkg_cv_SPICE_PROTOCOL_LIBS=`$PKG_CONFIG --libs "spice-protocol >= 0.12.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -11763,14 +17467,14 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - SPICE_PROTOCOL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "spice-protocol >= 0.8.1" 2>&1` + SPICE_PROTOCOL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "spice-protocol >= 0.12.0" 2>&1` else - SPICE_PROTOCOL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "spice-protocol >= 0.8.1" 2>&1` + SPICE_PROTOCOL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "spice-protocol >= 0.12.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SPICE_PROTOCOL_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (spice-protocol >= 0.8.1) were not met: + as_fn_error $? "Package requirements (spice-protocol >= 0.12.0) were not met: $SPICE_PROTOCOL_PKG_ERRORS @@ -11803,7 +17507,9 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .git" >&5 +# AC_CHECK_FILE is not supported when cross compiling +if test "$cross_compiling" = "no" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .git" >&5 $as_echo_n "checking for .git... " >&6; } if test "${ac_cv_file__git+set}" = set; then : $as_echo_n "(cached) " >&6 @@ -11820,7 +17526,7 @@ $as_echo "$ac_cv_file__git" >&6; } if test "x$ac_cv_file__git" = x""yes; then : - GIT_VERSION=`git log -1 --format=%h` + GIT_VERSION=`git log -1 --format=%h` cat >>confdefs.h <<_ACEOF #define GIT_VERSION "$GIT_VERSION" @@ -11830,6 +17536,7 @@ fi +fi ac_config_files="$ac_config_files Makefile src/Makefile src/uxa/Makefile scripts/Makefile examples/Makefile" @@ -12371,7 +18078,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xf86-video-qxl $as_me 0.0.17, which was +This file was extended by xf86-video-qxl $as_me 0.1.0, which was generated by GNU Autoconf 2.66. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -12437,7 +18144,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xf86-video-qxl config.status 0.0.17 +xf86-video-qxl config.status 0.1.0 configured by $0, generated by GNU Autoconf 2.66, with options \\"\$ac_cs_config\\" diff -Nru xserver-xorg-video-qxl-0.0.17/configure.ac xserver-xorg-video-qxl-0.1.0/configure.ac --- xserver-xorg-video-qxl-0.0.17/configure.ac 2012-03-15 17:46:19.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/configure.ac 2012-09-20 23:08:05.000000000 +0000 @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-qxl], - [0.0.17], + [0.1.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-qxl]) AC_CONFIG_SRCDIR([Makefile.am]) @@ -36,7 +36,7 @@ # Require xorg-macros: XORG_DEFAULT_OPTIONS m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must install xorg-macros 1.4 or later before running autoconf/autogen])]) + [m4_fatal([you must install X.Org util-macros 1.4 or later (or the corresponding package from your distribution) before running autoconf/autogen])]) XORG_MACROS_VERSION(1.4) XORG_DEFAULT_OPTIONS @@ -105,13 +105,16 @@ AM_CONDITIONAL(BUILD_XSPICE, test "x$enable_xspice" = "xyes") AM_CONDITIONAL(BUILD_QXL, test "x$enable_qxl" = "xyes") -PKG_CHECK_MODULES([SPICE_PROTOCOL], [spice-protocol >= 0.8.1]) +PKG_CHECK_MODULES([SPICE_PROTOCOL], [spice-protocol >= 0.12.0]) -AC_CHECK_FILE(.git, [ - GIT_VERSION=`git log -1 --format=%h` - AC_DEFINE_UNQUOTED([GIT_VERSION], ["$GIT_VERSION"], [Defined if building from git]) - ] -) +# AC_CHECK_FILE is not supported when cross compiling +if test "$cross_compiling" = "no" ; then + AC_CHECK_FILE(.git, [ + GIT_VERSION=`git log -1 --format=%h` + AC_DEFINE_UNQUOTED([GIT_VERSION], ["$GIT_VERSION"], [Defined if building from git]) + ] + ) +fi AC_CONFIG_FILES([ Makefile diff -Nru xserver-xorg-video-qxl-0.0.17/debian/changelog xserver-xorg-video-qxl-0.1.0/debian/changelog --- xserver-xorg-video-qxl-0.0.17/debian/changelog 2012-04-16 14:04:58.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/debian/changelog 2012-10-02 20:44:45.000000000 +0000 @@ -1,3 +1,42 @@ +xserver-xorg-video-qxl (0.1.0-0ubuntu1) quantal; urgency=low + + * Merge from unreleased debian git. (LP: #1056381) + + -- Timo Aaltonen Tue, 02 Oct 2012 00:20:35 +0300 + +xserver-xorg-video-qxl (0.1.0-1) UNRELEASED; urgency=low + + [ Maarten Lankhorst ] + * New upstream release. + + [ Timo Aaltonen ] + * control: Bump build-dep on libspice-protocol-dev to >= 0.12.2~. + + -- Maarten Lankhorst Thu, 19 Jul 2012 11:25:04 +0200 + +xserver-xorg-video-qxl (0.0.18~gitde66207-0ubuntu1) quantal-proposed; urgency=low + + * Merge from unreleased debian git, remaining changes: + - Remove xserver-xspice for amd64 which is dependent on the universe + package libspice-server-dev. + + -- Timo Aaltonen Thu, 02 Aug 2012 00:13:34 +0300 + +xserver-xorg-video-qxl (0.0.17-2ubuntu2) quantal; urgency=low + + * No-change rebuild for the new xserver-video-abi-12. + + -- Adam Conrad Tue, 26 Jun 2012 02:08:08 -0600 + +xserver-xorg-video-qxl (0.0.17-2ubuntu1) quantal; urgency=low + + * Remove xserver-xspice for amd64 which is dependent on the universe package + libspice-server-dev. xserver-xspice was not provided in Precise, so + its not likely to be missed in Quantal. It will require an MIR for + spice to do so. + + -- Tim Gardner Thu, 21 Jun 2012 10:07:19 -0400 + xserver-xorg-video-qxl (0.0.17-2) unstable; urgency=low * Enable Xspice (Closes: 668537) diff -Nru xserver-xorg-video-qxl-0.0.17/debian/control xserver-xorg-video-qxl-0.1.0/debian/control --- xserver-xorg-video-qxl-0.0.17/debian/control 2012-04-15 10:33:46.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/debian/control 2012-10-02 20:45:09.000000000 +0000 @@ -1,7 +1,8 @@ Source: xserver-xorg-video-qxl Section: x11 Priority: optional -Maintainer: Debian X Strike Force +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian X Strike Force Uploaders: Liang Guo , Cyril Brulebois Build-Depends: debhelper (>= 8), @@ -20,8 +21,7 @@ libtool, xutils-dev (>= 1:7.5), quilt (>= 0.46-7~), - libspice-protocol-dev (>= 0.8.1~), - libspice-server-dev [amd64], + libspice-protocol-dev (>= 0.12.2~), python, Standards-Version: 3.9.3 Homepage: http://spice-space.org/ @@ -54,16 +54,3 @@ . This package contains the debugging symbols for this driver. -Package: xserver-xspice -Architecture: amd64 -Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, xserver-xorg, xserver-xorg-video-qxl (>= 0.0.17-2), python-argparse -Description: Xspice X server - Xspice is an X server and Spice server in one. It consists of a wrapper script - for executing Xorg with the right parameters and environment variables, a - module names spiceqxl_drv.so implementing three drivers: a video mostly - code identical to the guest qxl X driver, and keyboard and mouse reading from - the spice inputs channel. - . - Xspice allows regular X connections, while a spice client provides the keyboard - and mouse and video output. - diff -Nru xserver-xorg-video-qxl-0.0.17/debian/rules xserver-xorg-video-qxl-0.1.0/debian/rules --- xserver-xorg-video-qxl-0.0.17/debian/rules 2012-04-15 09:34:09.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/debian/rules 2012-10-02 20:44:41.000000000 +0000 @@ -20,10 +20,10 @@ override_dh_shlibdeps: dh_shlibdeps -- --warnings=6 -# Enable Xspice support +# Disable Xspice support override_dh_auto_configure: ifeq ($(DEB_HOST_GNU_TYPE), x86_64-linux-gnu) - dh_auto_configure -- --enable-xspice + dh_auto_configure -- --disable-xspice else dh_auto_configure endif diff -Nru xserver-xorg-video-qxl-0.0.17/examples/Makefile.in xserver-xorg-video-qxl-0.1.0/examples/Makefile.in --- xserver-xorg-video-qxl-0.0.17/examples/Makefile.in 2012-03-15 17:46:35.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/examples/Makefile.in 2012-09-20 23:08:25.000000000 +0000 @@ -108,6 +108,7 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASE_CFLAGS = @BASE_CFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ diff -Nru xserver-xorg-video-qxl-0.0.17/scripts/Makefile.in xserver-xorg-video-qxl-0.1.0/scripts/Makefile.in --- xserver-xorg-video-qxl-0.0.17/scripts/Makefile.in 2012-03-15 17:46:35.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/scripts/Makefile.in 2012-09-20 23:08:26.000000000 +0000 @@ -108,6 +108,7 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASE_CFLAGS = @BASE_CFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ diff -Nru xserver-xorg-video-qxl-0.0.17/src/Makefile.am xserver-xorg-video-qxl-0.1.0/src/Makefile.am --- xserver-xorg-video-qxl-0.0.17/src/Makefile.am 2012-03-15 17:47:41.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/Makefile.am 2012-09-05 16:52:20.000000000 +0000 @@ -47,7 +47,11 @@ mspace.h \ murmurhash3.c \ murmurhash3.h \ - qxl_cursor.c + qxl_cursor.c \ + qxl_option_helpers.c \ + qxl_option_helpers.h \ + qxl_edid.c \ + compat-api.h endif if BUILD_XSPICE @@ -84,5 +88,7 @@ mspace.h \ murmurhash3.c \ murmurhash3.h \ - qxl_cursor.c + qxl_cursor.c \ + qxl_edid.c \ + compat-api.h endif diff -Nru xserver-xorg-video-qxl-0.0.17/src/Makefile.in xserver-xorg-video-qxl-0.1.0/src/Makefile.in --- xserver-xorg-video-qxl-0.0.17/src/Makefile.in 2012-03-15 17:47:49.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/Makefile.in 2012-09-20 23:08:26.000000000 +0000 @@ -97,10 +97,12 @@ @BUILD_QXL_TRUE@qxl_drv_la_DEPENDENCIES = uxa/libuxa.la am__qxl_drv_la_SOURCES_DIST = qxl.h qxl_driver.c qxl_image.c \ qxl_surface.c qxl_ring.c qxl_mem.c mspace.c mspace.h \ - murmurhash3.c murmurhash3.h qxl_cursor.c + murmurhash3.c murmurhash3.h qxl_cursor.c qxl_option_helpers.c \ + qxl_option_helpers.h qxl_edid.c compat-api.h @BUILD_QXL_TRUE@am_qxl_drv_la_OBJECTS = qxl_driver.lo qxl_image.lo \ @BUILD_QXL_TRUE@ qxl_surface.lo qxl_ring.lo qxl_mem.lo \ -@BUILD_QXL_TRUE@ mspace.lo murmurhash3.lo qxl_cursor.lo +@BUILD_QXL_TRUE@ mspace.lo murmurhash3.lo qxl_cursor.lo \ +@BUILD_QXL_TRUE@ qxl_option_helpers.lo qxl_edid.lo qxl_drv_la_OBJECTS = $(am_qxl_drv_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) @@ -117,7 +119,8 @@ spiceqxl_main_loop.h spiceqxl_display.c spiceqxl_display.h \ spiceqxl_inputs.c spiceqxl_inputs.h qxl_driver.c qxl_image.c \ qxl_surface.c qxl_ring.c qxl_mem.c mspace.c mspace.h \ - murmurhash3.c murmurhash3.h qxl_cursor.c + murmurhash3.c murmurhash3.h qxl_cursor.c qxl_edid.c \ + compat-api.h @BUILD_XSPICE_TRUE@am_spiceqxl_drv_la_OBJECTS = \ @BUILD_XSPICE_TRUE@ spiceqxl_drv_la-qxl_option_helpers.lo \ @BUILD_XSPICE_TRUE@ spiceqxl_drv_la-spiceqxl_spice_server.lo \ @@ -133,7 +136,8 @@ @BUILD_XSPICE_TRUE@ spiceqxl_drv_la-qxl_mem.lo \ @BUILD_XSPICE_TRUE@ spiceqxl_drv_la-mspace.lo \ @BUILD_XSPICE_TRUE@ spiceqxl_drv_la-murmurhash3.lo \ -@BUILD_XSPICE_TRUE@ spiceqxl_drv_la-qxl_cursor.lo +@BUILD_XSPICE_TRUE@ spiceqxl_drv_la-qxl_cursor.lo \ +@BUILD_XSPICE_TRUE@ spiceqxl_drv_la-qxl_edid.lo spiceqxl_drv_la_OBJECTS = $(am_spiceqxl_drv_la_OBJECTS) spiceqxl_drv_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -223,6 +227,7 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASE_CFLAGS = @BASE_CFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @@ -370,7 +375,11 @@ @BUILD_QXL_TRUE@ mspace.h \ @BUILD_QXL_TRUE@ murmurhash3.c \ @BUILD_QXL_TRUE@ murmurhash3.h \ -@BUILD_QXL_TRUE@ qxl_cursor.c +@BUILD_QXL_TRUE@ qxl_cursor.c \ +@BUILD_QXL_TRUE@ qxl_option_helpers.c \ +@BUILD_QXL_TRUE@ qxl_option_helpers.h \ +@BUILD_QXL_TRUE@ qxl_edid.c \ +@BUILD_QXL_TRUE@ compat-api.h @BUILD_XSPICE_TRUE@spiceqxl_drv_la_LTLIBRARIES = spiceqxl_drv.la @BUILD_XSPICE_TRUE@spiceqxl_drv_la_LDFLAGS = -module -avoid-version $(SPICE_LIBS) @@ -402,7 +411,9 @@ @BUILD_XSPICE_TRUE@ mspace.h \ @BUILD_XSPICE_TRUE@ murmurhash3.c \ @BUILD_XSPICE_TRUE@ murmurhash3.h \ -@BUILD_XSPICE_TRUE@ qxl_cursor.c +@BUILD_XSPICE_TRUE@ qxl_cursor.c \ +@BUILD_XSPICE_TRUE@ qxl_edid.c \ +@BUILD_XSPICE_TRUE@ compat-api.h all: all-recursive @@ -515,14 +526,17 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/murmurhash3.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qxl_cursor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qxl_driver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qxl_edid.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qxl_image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qxl_mem.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qxl_option_helpers.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qxl_ring.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qxl_surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spiceqxl_drv_la-mspace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spiceqxl_drv_la-murmurhash3.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spiceqxl_drv_la-qxl_cursor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spiceqxl_drv_la-qxl_driver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spiceqxl_drv_la-qxl_edid.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spiceqxl_drv_la-qxl_image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spiceqxl_drv_la-qxl_mem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spiceqxl_drv_la-qxl_option_helpers.Plo@am__quote@ @@ -679,6 +693,14 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(spiceqxl_drv_la_CFLAGS) $(CFLAGS) -c -o spiceqxl_drv_la-qxl_cursor.lo `test -f 'qxl_cursor.c' || echo '$(srcdir)/'`qxl_cursor.c +spiceqxl_drv_la-qxl_edid.lo: qxl_edid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(spiceqxl_drv_la_CFLAGS) $(CFLAGS) -MT spiceqxl_drv_la-qxl_edid.lo -MD -MP -MF $(DEPDIR)/spiceqxl_drv_la-qxl_edid.Tpo -c -o spiceqxl_drv_la-qxl_edid.lo `test -f 'qxl_edid.c' || echo '$(srcdir)/'`qxl_edid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/spiceqxl_drv_la-qxl_edid.Tpo $(DEPDIR)/spiceqxl_drv_la-qxl_edid.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qxl_edid.c' object='spiceqxl_drv_la-qxl_edid.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(spiceqxl_drv_la_CFLAGS) $(CFLAGS) -c -o spiceqxl_drv_la-qxl_edid.lo `test -f 'qxl_edid.c' || echo '$(srcdir)/'`qxl_edid.c + mostlyclean-libtool: -rm -f *.lo diff -Nru xserver-xorg-video-qxl-0.0.17/src/compat-api.h xserver-xorg-video-qxl-0.1.0/src/compat-api.h --- xserver-xorg-video-qxl-0.0.17/src/compat-api.h 1970-01-01 00:00:00.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/compat-api.h 2012-09-05 16:52:17.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * Copyright 2012 Red Hat, Inc. + * + * 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 (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 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. + * + * Author: Dave Airlie + */ + +/* this file provides API compat between server post 1.13 and pre it, + it should be reused inside as many drivers as possible */ +#ifndef COMPAT_API_H +#define COMPAT_API_H + +#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR +#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum] +#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p +#endif + +#ifndef XF86_HAS_SCRN_CONV +#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum] +#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex] +#endif + +#ifndef XF86_SCRN_INTERFACE + +#define SCRN_ARG_TYPE int +#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)] + +#define SCREEN_ARG_TYPE int +#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)] + +#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS scrnIndex, pScreen + +#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags +#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0 + +#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags +#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0 + +#define FREE_SCREEN_ARGS_DECL int arg, int flags + +#define VT_FUNC_ARGS_DECL int arg, int flags +#define VT_FUNC_ARGS pScrn->scrnIndex, 0 + +#define XF86_SCRN_ARG(x) ((x)->scrnIndex) +#else +#define SCRN_ARG_TYPE ScrnInfoPtr +#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1) + +#define SCREEN_ARG_TYPE ScreenPtr +#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1) + +#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS pScreen + +#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y +#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y + +#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode +#define SWITCH_MODE_ARGS(arg, m) arg, m + +#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg + +#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg +#define VT_FUNC_ARGS pScrn + +#define XF86_SCRN_ARG(x) (x) + +#endif + +#endif diff -Nru xserver-xorg-video-qxl-0.0.17/src/mspace.c xserver-xorg-video-qxl-0.1.0/src/mspace.c --- xserver-xorg-video-qxl-0.0.17/src/mspace.c 2011-02-03 10:43:25.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/mspace.c 2012-09-05 16:52:17.000000000 +0000 @@ -21,8 +21,6 @@ #include #include "mspace.h" -#pragma warning( disable : 4146 ) /* no "unsigned" warnings */ - #define MALLOC_ALIGNMENT ((size_t)8U) #define USE_LOCKS 0 #define malloc_getpagesize ((size_t)4096U) @@ -47,12 +45,12 @@ #define M_GRANULARITY (-1) -void default_abort_func(void *user_data) +void __attribute__ ((__noreturn__)) default_abort_func(void *user_data) { for (;;); } -void default_print_func(void *user_data, char *format, ...) +void default_print_func(void *user_data, const char *format, ...) { } @@ -762,6 +760,7 @@ #define segment_holds(S, A)\ ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) +#if DEBUG /* Return segment holding given address */ static msegmentptr segment_holding(mstate m, char* addr) { msegmentptr sp = &m->seg; @@ -783,7 +782,7 @@ return 0; } } - +#endif /* @@ -1480,7 +1479,8 @@ } #endif /* !NO_MALLINFO */ -static void internal_malloc_stats(mstate m) { +static void internal_malloc_stats(mstate m, size_t *ret_maxfp, size_t *ret_fp, + size_t *ret_used) { if (!PREACTION(m)) { size_t maxfp = 0; size_t fp = 0; @@ -1504,9 +1504,21 @@ } } - PRINT((m->user_data, "max system bytes = %10lu\n", (unsigned long)(maxfp))); - PRINT((m->user_data, "system bytes = %10lu\n", (unsigned long)(fp))); - PRINT((m->user_data, "in use bytes = %10lu\n", (unsigned long)(used))); + if (ret_maxfp || ret_fp || ret_used) { + if (ret_maxfp) { + *ret_maxfp = maxfp; + } + if (ret_fp) { + *ret_fp = fp; + } + if (ret_used) { + *ret_used = used; + } + } else { + PRINT((m->user_data, "max system bytes = %10lu\n", (unsigned long)(maxfp))); + PRINT((m->user_data, "system bytes = %10lu\n", (unsigned long)(fp))); + PRINT((m->user_data, "in use bytes = %10lu\n", (unsigned long)(used))); + } POSTACTION(m); } @@ -1795,6 +1807,7 @@ } #endif /* PROCEED_ON_ERROR */ +#if 0 /* Allocate chunk and prepend remainder with chunk in successor base. */ static void* prepend_alloc(mstate m, char* newbase, char* oldbase, size_t nb) { @@ -1836,6 +1849,7 @@ check_malloced_chunk(m, chunk2mem(p), nb); return chunk2mem(p); } +#endif /* -------------------------- System allocation -------------------------- */ @@ -2388,16 +2402,24 @@ return internal_memalign(ms, alignment, bytes); } -void mspace_malloc_stats(mspace msp) { +void mspace_malloc_stats_return(mspace msp, size_t *ret_maxfp, size_t *ret_fp, + size_t *ret_used) +{ + mstate ms = (mstate)msp; if (ok_magic(ms)) { - internal_malloc_stats(ms); + internal_malloc_stats(ms, ret_maxfp, ret_fp, ret_used); } else { USAGE_ERROR_ACTION(ms,ms); } } + +void mspace_malloc_stats(mspace msp) { + mspace_malloc_stats_return(msp, NULL, NULL, NULL); +} + size_t mspace_footprint(mspace msp) { size_t result; mstate ms = (mstate)msp; diff -Nru xserver-xorg-video-qxl-0.0.17/src/mspace.h xserver-xorg-video-qxl-0.1.0/src/mspace.h --- xserver-xorg-video-qxl-0.0.17/src/mspace.h 2011-02-03 10:43:25.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/mspace.h 2012-09-05 16:52:20.000000000 +0000 @@ -9,11 +9,14 @@ //typedef unsigned long size_t; typedef void (*mspace_abort_t)(void *user_data); -typedef void (*mspace_print_t)(void *user_data, char *format, ...); +typedef void (*mspace_print_t)(void *user_data, const char *format, ...) __attribute__((format(gnu_printf, 2, 3))); void mspace_set_abort_func(mspace_abort_t f); void mspace_set_print_func(mspace_print_t f); +void default_abort_func(void *user_data); +void default_print_func(void *user_data, const char *format, ...); + /* mspace is an opaque type representing an independent region of space that supports mspace_malloc, etc. @@ -128,9 +131,12 @@ /* mspace_malloc_stats behaves as malloc_stats, but reports - properties of the given space. + properties of the given space. The return variant returns instead of + printing the three quantities, maxfp, fp, and used. */ void mspace_malloc_stats(mspace msp); +void mspace_malloc_stats_return(mspace msp, size_t *ret_maxfp, size_t *ret_fp, + size_t *ret_used); /* mspace_trim behaves as malloc_trim, but diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl.h xserver-xorg-video-qxl-0.1.0/src/qxl.h --- xserver-xorg-video-qxl-0.0.17/src/qxl.h 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl.h 2012-09-20 20:26:17.000000000 +0000 @@ -23,8 +23,6 @@ #ifndef QXL_H #define QXL_H -#include "config.h" - #include #include @@ -40,6 +38,7 @@ #include "xf86Cursor.h" #include "xf86_OSproc.h" #include "xf86xv.h" +#include "xf86Crtc.h" #include "shadow.h" #include "micmap.h" #include "uxa/uxa.h" @@ -52,6 +51,7 @@ #include "vgaHW.h" #endif /* XSPICE */ +#include "compat-api.h" #define hidden _X_HIDDEN #ifdef XSPICE @@ -101,6 +101,7 @@ OPTION_ENABLE_IMAGE_CACHE = 0, OPTION_ENABLE_FALLBACK_CACHE, OPTION_ENABLE_SURFACES, + OPTION_NUM_HEADS, #ifdef XSPICE OPTION_SPICE_PORT, OPTION_SPICE_TLS_PORT, @@ -128,6 +129,12 @@ OPTION_COUNT, }; +enum { + QXL_DEVICE_PRIMARY_UNDEFINED, + QXL_DEVICE_PRIMARY_NONE, + QXL_DEVICE_PRIMARY_CREATED, +}; + struct _qxl_screen_t { /* These are the names QXL uses */ @@ -140,6 +147,8 @@ struct qxl_ring * command_ring; struct qxl_ring * cursor_ring; struct qxl_ring * release_ring; + + int device_primary; int num_modes; struct QXLMode * modes; @@ -147,13 +156,21 @@ void * surface0_area; long surface0_size; long vram_size; + long ram_size; + + DisplayModePtr x_modes; int virtual_x; int virtual_y; void * fb; - int stride; - struct QXLMode * current_mode; + + /* not the same as the heads mode for #head > 1 or virtual != head size */ + struct QXLMode primary_mode; qxl_surface_t * primary; + + struct QXLMonitorsConfig *monitors_config; + int monitors_config_size; + int mem_size; int bytes_per_pixel; @@ -165,6 +182,10 @@ EntityInfoPtr entity; + int num_heads; + xf86CrtcPtr * crtcs; + xf86OutputPtr * outputs; + #ifndef XSPICE void * io_pages; void * io_pages_physical; @@ -241,6 +262,18 @@ #endif /* XSPICE */ }; +typedef struct qxl_output_private { + qxl_screen_t *qxl; + int head; + xf86OutputStatus status; +} qxl_output_private; + +typedef struct qxl_crtc_private { + qxl_screen_t *qxl; + int head; + xf86OutputPtr output; +} qxl_crtc_private; + static inline uint64_t physical_address (qxl_screen_t *qxl, void *virtual, uint8_t slot_id) { @@ -296,6 +329,10 @@ void *element); void qxl_ring_wait_idle (struct qxl_ring *ring); +void qxl_ring_request_notify (struct qxl_ring *ring); + +int qxl_ring_prod (struct qxl_ring *ring); +int qxl_ring_cons (struct qxl_ring *ring); /* * Surface @@ -355,7 +392,21 @@ const char *src, int src_pitch); void qxl_surface_unref (surface_cache_t *cache, uint32_t surface_id); - + +/* composite */ +Bool qxl_surface_prepare_composite (int op, + PicturePtr src_picture, + PicturePtr mask_picture, + PicturePtr dst_picture, + qxl_surface_t *src, + qxl_surface_t *mask, + qxl_surface_t *dest); +void qxl_surface_composite (qxl_surface_t *dest, + int src_x, int src_y, + int mask_x, int mask_y, + int dst_x, int dst_y, + int width, int height); + #if HAS_DEVPRIVATEKEYREC extern DevPrivateKeyRec uxa_pixmap_index; #else @@ -409,21 +460,38 @@ void qxl_mem_dump_stats (struct qxl_mem *mem, const char *header); void * qxl_alloc (struct qxl_mem *mem, - unsigned long n_bytes); + unsigned long n_bytes, + const char * name); void qxl_free (struct qxl_mem *mem, - void *d); + void *d, + const char * name); void qxl_mem_free_all (struct qxl_mem *mem); void * qxl_allocnf (qxl_screen_t *qxl, - unsigned long size); + unsigned long size, + const char * name); int qxl_garbage_collect (qxl_screen_t *qxl); +#ifdef DEBUG_QXL_MEM +void qxl_mem_unverifiable(struct qxl_mem *mem); +#else +static inline void qxl_mem_unverifiable(struct qxl_mem *mem) {} +#endif + /* * I/O port commands */ void qxl_update_area(qxl_screen_t *qxl); -void qxl_memslot_add(qxl_screen_t *qxl, uint8_t id); -void qxl_create_primary(qxl_screen_t *qxl); -void qxl_notify_oom(qxl_screen_t *qxl); +void qxl_io_memslot_add(qxl_screen_t *qxl, uint8_t id); +void qxl_io_create_primary(qxl_screen_t *qxl); +void qxl_io_destroy_primary(qxl_screen_t *qxl); +void qxl_io_notify_oom(qxl_screen_t *qxl); +void qxl_io_flush_surfaces(qxl_screen_t *qxl); +void qxl_io_destroy_all_surfaces (qxl_screen_t *qxl); + +/* + * qxl_edid.c + */ +Bool qxl_output_edid_set(xf86OutputPtr output, int head, DisplayModePtr mode); #ifdef XSPICE /* device to spice-server, now xspice to spice-server */ diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl_cursor.c xserver-xorg-video-qxl-0.1.0/src/qxl_cursor.c --- xserver-xorg-video-qxl-0.0.17/src/qxl_cursor.c 2011-07-14 17:51:46.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl_cursor.c 2012-09-07 03:18:50.000000000 +0000 @@ -23,6 +23,9 @@ /** \file qxl_cursor.c * \author Søren Sandmann */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include #include "qxl.h" @@ -47,7 +50,7 @@ qxl_alloc_cursor_cmd(qxl_screen_t *qxl) { struct QXLCursorCmd *cmd = - qxl_allocnf (qxl, sizeof(struct QXLCursorCmd)); + qxl_allocnf (qxl, sizeof(struct QXLCursorCmd), "cursor command"); cmd->release_info.id = pointer_to_u64 (cmd) | 1; @@ -91,7 +94,7 @@ struct QXLCursorCmd *cmd = qxl_alloc_cursor_cmd (qxl); struct QXLCursor *cursor = - qxl_allocnf(qxl, sizeof(struct QXLCursor) + size); + qxl_allocnf(qxl, sizeof(struct QXLCursor) + size, "cursor data"); cursor->header.unique = 0; cursor->header.type = SPICE_CURSOR_TYPE_ALPHA; diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl_driver.c xserver-xorg-video-qxl-0.1.0/src/qxl_driver.c --- xserver-xorg-video-qxl-0.0.17/src/qxl_driver.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl_driver.c 2012-09-20 20:22:23.000000000 +0000 @@ -28,15 +28,26 @@ * in qemu. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include #include #include #include + +#include +#include + +#include "mspace.h" + #include "qxl.h" #include "assert.h" #include "qxl_option_helpers.h" +#include #ifdef XSPICE #include "spiceqxl_driver.h" @@ -47,68 +58,74 @@ #include "spiceqxl_spice_server.h" #endif /* XSPICE */ -extern void compat_init_scrn(ScrnInfoPtr); +extern void compat_init_scrn (ScrnInfoPtr); -#if 0 +#ifdef WITH_CHECK_POINT #define CHECK_POINT() ErrorF ("%s: %d (%s)\n", __FILE__, __LINE__, __FUNCTION__); -#endif +#else #define CHECK_POINT() +#endif + +#define BREAKPOINT() do { __asm__ __volatile__ ("int $03"); } while (0) -const OptionInfoRec DefaultOptions[] = { +const OptionInfoRec DefaultOptions[] = +{ { OPTION_ENABLE_IMAGE_CACHE, - "EnableImageCache", OPTV_BOOLEAN, { 0 }, TRUE }, + "EnableImageCache", OPTV_BOOLEAN, { 0 }, TRUE }, { OPTION_ENABLE_FALLBACK_CACHE, - "EnableFallbackCache", OPTV_BOOLEAN, { 0 }, TRUE }, + "EnableFallbackCache", OPTV_BOOLEAN, { 0 }, TRUE }, { OPTION_ENABLE_SURFACES, - "EnableSurfaces", OPTV_BOOLEAN, { 0 }, TRUE }, + "EnableSurfaces", OPTV_BOOLEAN, { 0 }, TRUE }, + { OPTION_NUM_HEADS, + "NumHeads", OPTV_INTEGER, { 4 }, FALSE }, #ifdef XSPICE { OPTION_SPICE_PORT, - "SpicePort", OPTV_INTEGER, {5900}, FALSE }, + "SpicePort", OPTV_INTEGER, {5900}, FALSE }, { OPTION_SPICE_TLS_PORT, - "SpiceTlsPort", OPTV_INTEGER, {0}, FALSE}, + "SpiceTlsPort", OPTV_INTEGER, {0}, FALSE}, { OPTION_SPICE_ADDR, - "SpiceAddr", OPTV_STRING, {0}, FALSE}, + "SpiceAddr", OPTV_STRING, {0}, FALSE}, { OPTION_SPICE_X509_DIR, - "SpiceX509Dir", OPTV_STRING, {0}, FALSE}, + "SpiceX509Dir", OPTV_STRING, {0}, FALSE}, { OPTION_SPICE_SASL, - "SpiceSasl", OPTV_BOOLEAN, {0}, FALSE}, + "SpiceSasl", OPTV_BOOLEAN, {0}, FALSE}, /* VVV qemu defaults to 1 - not implemented in xspice yet */ { OPTION_SPICE_AGENT_MOUSE, - "SpiceAgentMouse", OPTV_BOOLEAN, {0}, FALSE}, + "SpiceAgentMouse", OPTV_BOOLEAN, {0}, FALSE}, { OPTION_SPICE_DISABLE_TICKETING, - "SpiceDisableTicketing", OPTV_BOOLEAN, {0}, FALSE}, + "SpiceDisableTicketing", OPTV_BOOLEAN, {0}, FALSE}, { OPTION_SPICE_PASSWORD, - "SpicePassword", OPTV_STRING, {0}, FALSE}, + "SpicePassword", OPTV_STRING, {0}, FALSE}, { OPTION_SPICE_X509_KEY_FILE, - "SpiceX509KeyFile", OPTV_STRING, {0}, FALSE}, + "SpiceX509KeyFile", OPTV_STRING, {0}, FALSE}, { OPTION_SPICE_STREAMING_VIDEO, - "SpiceStreamingVideo", OPTV_STRING, {.str="filter"}, FALSE}, + "SpiceStreamingVideo", OPTV_STRING, {.str = "filter"}, FALSE}, { OPTION_SPICE_PLAYBACK_COMPRESSION, - "SpicePlaybackCompression", OPTV_BOOLEAN, {1}, FALSE}, + "SpicePlaybackCompression", OPTV_BOOLEAN, {1}, FALSE}, { OPTION_SPICE_ZLIB_GLZ_WAN_COMPRESSION, - "SpiceZlibGlzWanCompression", OPTV_STRING, {.str="auto"}, FALSE}, + "SpiceZlibGlzWanCompression", OPTV_STRING, {.str = "auto"}, FALSE}, { OPTION_SPICE_JPEG_WAN_COMPRESSION, - "SpiceJpegWanCompression", OPTV_STRING, {.str="auto"}, FALSE}, + "SpiceJpegWanCompression", OPTV_STRING, {.str = "auto"}, FALSE}, { OPTION_SPICE_IMAGE_COMPRESSION, - "SpiceImageCompression", OPTV_STRING, {.str="auto_glz"}, FALSE}, + "SpiceImageCompression", OPTV_STRING, {.str = "auto_glz"}, FALSE}, { OPTION_SPICE_DISABLE_COPY_PASTE, - "SpiceDisableCopyPaste", OPTV_BOOLEAN, {0}, FALSE}, + "SpiceDisableCopyPaste", OPTV_BOOLEAN, {0}, FALSE}, { OPTION_SPICE_IPV4_ONLY, - "SpiceIPV4Only", OPTV_BOOLEAN, {0}, FALSE}, + "SpiceIPV4Only", OPTV_BOOLEAN, {0}, FALSE}, { OPTION_SPICE_IPV6_ONLY, - "SpiceIPV6Only", OPTV_BOOLEAN, {0}, FALSE}, + "SpiceIPV6Only", OPTV_BOOLEAN, {0}, FALSE}, { OPTION_SPICE_X509_CERT_FILE, - "SpiceX509CertFile", OPTV_STRING, {0}, FALSE}, + "SpiceX509CertFile", OPTV_STRING, {0}, FALSE}, { OPTION_SPICE_X509_KEY_PASSWORD, - "SpiceX509KeyPassword", OPTV_STRING, {0}, FALSE}, + "SpiceX509KeyPassword", OPTV_STRING, {0}, FALSE}, { OPTION_SPICE_TLS_CIPHERS, - "SpiceTlsCiphers", OPTV_STRING, {0}, FALSE}, + "SpiceTlsCiphers", OPTV_STRING, {0}, FALSE}, { OPTION_SPICE_CACERT_FILE, - "SpiceCacertFile", OPTV_STRING, {0}, FALSE}, + "SpiceCacertFile", OPTV_STRING, {0}, FALSE}, { OPTION_SPICE_DH_FILE, - "SpiceDhFile", OPTV_STRING, {0}, FALSE}, + "SpiceDhFile", OPTV_STRING, {0}, FALSE}, #endif - + { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -118,196 +135,341 @@ return DefaultOptions; } -static void qxl_wait_for_io_command(qxl_screen_t *qxl) +#ifndef XSPICE +static void +qxl_wait_for_io_command (qxl_screen_t *qxl) +{ + struct QXLRam *ram_header; + + ram_header = (void *)((unsigned long)qxl->ram + qxl->rom->ram_header_offset); + + while (!(ram_header->int_pending & QXL_INTERRUPT_IO_CMD)) + usleep (1); + + ram_header->int_pending &= ~QXL_INTERRUPT_IO_CMD; +} + +#if 0 +static void +qxl_wait_for_display_interrupt (qxl_screen_t *qxl) { - struct QXLRam *ram_header = (void *)( - (unsigned long)qxl->ram + qxl->rom->ram_header_offset); + struct QXLRam *ram_header; + + ram_header = (void *)((unsigned long)qxl->ram + qxl->rom->ram_header_offset); + + while (!(ram_header->int_pending & QXL_INTERRUPT_DISPLAY)) + usleep (1); + + ram_header->int_pending &= ~QXL_INTERRUPT_DISPLAY; +} + +#endif +#endif - while (!(ram_header->int_pending & QXL_INTERRUPT_IO_CMD)) { - usleep(1); +void +qxl_update_area (qxl_screen_t *qxl) +{ +#ifndef XSPICE + if (qxl->pci->revision >= 3) + { + ioport_write (qxl, QXL_IO_UPDATE_AREA_ASYNC, 0); + qxl_wait_for_io_command (qxl); } - ram_header->int_pending &= ~QXL_INTERRUPT_IO_CMD; + else + { + ioport_write (qxl, QXL_IO_UPDATE_AREA, 0); + } +#else + ioport_write (qxl, QXL_IO_UPDATE_AREA, 0); +#endif } -void qxl_update_area(qxl_screen_t *qxl) +void +qxl_io_memslot_add (qxl_screen_t *qxl, uint8_t id) { #ifndef XSPICE - if (qxl->pci->revision >= 3) { - ioport_write(qxl, QXL_IO_UPDATE_AREA_ASYNC, 0); - qxl_wait_for_io_command(qxl); - } else { - ioport_write(qxl, QXL_IO_UPDATE_AREA, 0); + if (qxl->pci->revision >= 3) + { + ioport_write (qxl, QXL_IO_MEMSLOT_ADD_ASYNC, id); + qxl_wait_for_io_command (qxl); + } + else + { + ioport_write (qxl, QXL_IO_MEMSLOT_ADD, id); } #else - ioport_write(qxl, QXL_IO_UPDATE_AREA, 0); + ioport_write (qxl, QXL_IO_MEMSLOT_ADD, id); #endif } -void qxl_memslot_add(qxl_screen_t *qxl, uint8_t id) +void +qxl_io_create_primary (qxl_screen_t *qxl) { #ifndef XSPICE - if (qxl->pci->revision >= 3) { - ioport_write(qxl, QXL_IO_MEMSLOT_ADD_ASYNC, id); - qxl_wait_for_io_command(qxl); - } else { - ioport_write(qxl, QXL_IO_MEMSLOT_ADD, id); + if (qxl->pci->revision >= 3) + { + ioport_write (qxl, QXL_IO_CREATE_PRIMARY_ASYNC, 0); + qxl_wait_for_io_command (qxl); + } + else + { + ioport_write (qxl, QXL_IO_CREATE_PRIMARY, 0); } #else - ioport_write(qxl, QXL_IO_MEMSLOT_ADD, id); + ioport_write (qxl, QXL_IO_CREATE_PRIMARY, 0); #endif + qxl->device_primary = QXL_DEVICE_PRIMARY_CREATED; } -void qxl_create_primary(qxl_screen_t *qxl) +void +qxl_io_destroy_primary (qxl_screen_t *qxl) { #ifndef XSPICE - if (qxl->pci->revision >= 3) { - ioport_write(qxl, QXL_IO_CREATE_PRIMARY_ASYNC, 0); - qxl_wait_for_io_command(qxl); - } else { - ioport_write(qxl, QXL_IO_CREATE_PRIMARY, 0); + if (qxl->pci->revision >= 3) + { + ioport_write (qxl, QXL_IO_DESTROY_PRIMARY_ASYNC, 0); + qxl_wait_for_io_command (qxl); + } + else + { + ioport_write (qxl, QXL_IO_DESTROY_PRIMARY, 0); } #else - ioport_write(qxl, QXL_IO_CREATE_PRIMARY, 0); + ioport_write (qxl, QXL_IO_DESTROY_PRIMARY, 0); #endif + qxl->device_primary = QXL_DEVICE_PRIMARY_NONE; } -void qxl_notify_oom(qxl_screen_t *qxl) +void +qxl_io_notify_oom (qxl_screen_t *qxl) { - ioport_write(qxl, QXL_IO_NOTIFY_OOM, 0); + ioport_write (qxl, QXL_IO_NOTIFY_OOM, 0); } -int -qxl_garbage_collect (qxl_screen_t *qxl) +void +qxl_io_flush_surfaces (qxl_screen_t *qxl) { - uint64_t id; - int i = 0; + // FIXME: write individual update_area for revision < V10 +#ifndef XSPICE + ioport_write (qxl, QXL_IO_FLUSH_SURFACES_ASYNC, 0); + qxl_wait_for_io_command (qxl); +#else + ioport_write (qxl, QXL_IO_FLUSH_SURFACES_ASYNC, 0); +#endif +} - while (qxl_ring_pop (qxl->release_ring, &id)) - { - while (id) - { - /* We assume that there the two low bits of a pointer are - * available. If the low one is set, then the command in - * question is a cursor command - */ +static void +qxl_usleep (int useconds) +{ + struct timespec t; + + t.tv_sec = useconds / 1000000; + t.tv_nsec = (useconds - (t.tv_sec * 1000000)) * 1000; + + errno = 0; + while (nanosleep (&t, &t) == -1 && errno == EINTR) + ; +} + +#ifdef QXLDRV_RESIZABLE_SURFACE0 +static void +qxl_io_flush_release (qxl_screen_t *qxl) +{ +#ifndef XSPICE + int sum = 0; + + sum += qxl_garbage_collect (qxl); + ioport_write (qxl, QXL_IO_FLUSH_RELEASE, 0); + sum += qxl_garbage_collect (qxl); + ErrorF ("%s: collected %d\n", __func__, sum); +#else +#endif +} + +#endif + +static void +qxl_io_monitors_config_async (qxl_screen_t *qxl) +{ +#ifndef XSPICE + if (qxl->pci->revision < 4) + return; + + ioport_write (qxl, QXL_IO_MONITORS_CONFIG_ASYNC, 0); + qxl_wait_for_io_command (qxl); +#else + fprintf (stderr, "UNIMPLEMENTED!\n"); +#endif +} + +/* Having a single monitors config struct allocated on the device avoids any + * + * possible fragmentation. Since X is single threaded there is no danger + * in us changing it between issuing the io and getting the interrupt to signal + * spice-server is done reading it. + */ +#define MAX_MONITORS_NUM 16 + +static void +qxl_allocate_monitors_config (qxl_screen_t *qxl) +{ + int size = sizeof (QXLMonitorsConfig) + sizeof (QXLHead) * MAX_MONITORS_NUM; + + if (qxl->monitors_config) + return; + + qxl->monitors_config = (QXLMonitorsConfig *)(void *) + ((unsigned long)qxl->ram + qxl->rom->ram_header_offset - qxl->monitors_config_size); + + memset (qxl->monitors_config, 0, size); +} + +static uint64_t +qxl_garbage_collect_internal (qxl_screen_t *qxl, uint64_t id) +{ + /* We assume that there the two low bits of a pointer are + * available. If the low one is set, then the command in + * question is a cursor command + */ #define POINTER_MASK ((1 << 2) - 1) - union QXLReleaseInfo *info = u64_to_pointer (id & ~POINTER_MASK); - struct QXLCursorCmd *cmd = (struct QXLCursorCmd *)info; - struct QXLDrawable *drawable = (struct QXLDrawable *)info; - struct QXLSurfaceCmd *surface_cmd = (struct QXLSurfaceCmd *)info; - int is_cursor = FALSE; - int is_surface = FALSE; - int is_drawable = FALSE; - - if ((id & POINTER_MASK) == 1) - is_cursor = TRUE; - else if ((id & POINTER_MASK) == 2) - is_surface = TRUE; - else - is_drawable = TRUE; - - if (is_cursor && cmd->type == QXL_CURSOR_SET) - { - struct QXLCursor *cursor = (void *)virtual_address ( - qxl, u64_to_pointer (cmd->u.set.shape), qxl->main_mem_slot); - - qxl_free (qxl->mem, cursor); - } - else if (is_drawable && drawable->type == QXL_DRAW_COPY) + union QXLReleaseInfo *info = u64_to_pointer (id & ~POINTER_MASK); + struct QXLCursorCmd *cmd = (struct QXLCursorCmd *)info; + struct QXLDrawable *drawable = (struct QXLDrawable *)info; + struct QXLSurfaceCmd *surface_cmd = (struct QXLSurfaceCmd *)info; + int is_cursor = FALSE; + int is_surface = FALSE; + int is_drawable = FALSE; + + if ((id & POINTER_MASK) == 1) + is_cursor = TRUE; + else if ((id & POINTER_MASK) == 2) + is_surface = TRUE; + else + is_drawable = TRUE; + + if (is_cursor && cmd->type == QXL_CURSOR_SET) + { + struct QXLCursor *cursor = (void *)virtual_address ( + qxl, u64_to_pointer (cmd->u.set.shape), qxl->main_mem_slot); + + qxl_free (qxl->mem, cursor, "cursor image"); + } + else if (is_drawable && drawable->type == QXL_DRAW_COPY) + { + struct QXLImage *image = virtual_address ( + qxl, u64_to_pointer (drawable->u.copy.src_bitmap), qxl->main_mem_slot); + + if (image->descriptor.type == SPICE_IMAGE_TYPE_SURFACE) + { + qxl_surface_unref (qxl->surface_cache, image->surface_image.surface_id); + qxl_surface_cache_sanity_check (qxl->surface_cache); + qxl_free (qxl->mem, image, "surface image"); + } + else + { + qxl_image_destroy (qxl, image); + } + } + else if (is_drawable && drawable->type == QXL_DRAW_COMPOSITE) + { + struct QXLTransform *src_trans, *mask_trans; + struct QXLImage *src_img, *mask_img; + struct QXLComposite *composite = &drawable->u.composite; + + /* Source */ + src_img = virtual_address ( + qxl, u64_to_pointer (drawable->u.composite.src), qxl->main_mem_slot); + qxl_free (qxl->mem, src_img, "image struct"); + + if (composite->src_transform) + { + src_trans = virtual_address ( + qxl, u64_to_pointer (composite->src_transform), qxl->main_mem_slot); + qxl_free (qxl->mem, src_trans, "transform"); + } + + /* Mask */ + if (drawable->u.composite.mask) + { + if (drawable->u.composite.mask_transform) { - struct QXLImage *image = virtual_address ( - qxl, u64_to_pointer (drawable->u.copy.src_bitmap), qxl->main_mem_slot); + mask_trans = virtual_address ( + qxl, u64_to_pointer (drawable->u.composite.mask_transform), qxl->main_mem_slot); - if (image->descriptor.type == SPICE_IMAGE_TYPE_SURFACE) - { - qxl_surface_unref (qxl->surface_cache, image->surface_image.surface_id); - qxl_surface_cache_sanity_check (qxl->surface_cache); - qxl_free (qxl->mem, image); - } - else - { - qxl_image_destroy (qxl, image); - } - } - else if (is_surface && surface_cmd->type == QXL_SURFACE_CMD_DESTROY) - { - qxl_surface_recycle (qxl->surface_cache, surface_cmd->surface_id); - qxl_surface_cache_sanity_check (qxl->surface_cache); + qxl_free (qxl->mem, mask_trans, "transform"); } - id = info->next; - - qxl_free (qxl->mem, info); - - ++i; + mask_img = virtual_address ( + qxl, u64_to_pointer (drawable->u.composite.mask), qxl->main_mem_slot); + qxl_free (qxl->mem, mask_img, "image struct"); } } + else if (is_surface && surface_cmd->type == QXL_SURFACE_CMD_DESTROY) + { + qxl_surface_recycle (qxl->surface_cache, surface_cmd->surface_id); + qxl_surface_cache_sanity_check (qxl->surface_cache); + } - return i; + id = info->next; + + qxl_free (qxl->mem, info, "command"); + + return id; } -static void -qxl_usleep (int useconds) +int +qxl_garbage_collect (qxl_screen_t *qxl) { - struct timespec t; - - t.tv_sec = useconds / 1000000; - t.tv_nsec = (useconds - (t.tv_sec * 1000000)) * 1000; + uint64_t id; + int i = 0; - errno = 0; - while (nanosleep (&t, &t) == -1 && errno == EINTR) - ; + while (qxl_ring_pop (qxl->release_ring, &id)) + { + while (id) + { + id = qxl_garbage_collect_internal (qxl, id); + + i++; + } + } + return i; } int qxl_handle_oom (qxl_screen_t *qxl) { - qxl_notify_oom(qxl); - + qxl_io_notify_oom (qxl); + #if 0 ErrorF ("."); qxl_usleep (10000); #endif - + if (!(qxl_garbage_collect (qxl))) qxl_usleep (10000); - + return qxl_garbage_collect (qxl); } void * -qxl_allocnf (qxl_screen_t *qxl, unsigned long size) +qxl_allocnf (qxl_screen_t *qxl, unsigned long size, const char *name) { void *result; int n_attempts = 0; + #if 0 static int nth_oom = 1; #endif - + qxl_garbage_collect (qxl); - while (!(result = qxl_alloc (qxl->mem, size))) + while (!(result = qxl_alloc (qxl->mem, size, name))) { - struct QXLRam *ram_header = (void *)( - (unsigned long)qxl->ram + qxl->rom->ram_header_offset); - - /* Rather than go out of memory, we simply tell the - * device to dump everything - */ - ram_header->update_area.top = 0; - ram_header->update_area.bottom = qxl->virtual_y; - ram_header->update_area.left = 0; - ram_header->update_area.right = qxl->virtual_x; - ram_header->update_surface = 0; /* Only primary for now */ - - qxl_update_area(qxl); - #if 0 - ErrorF ("eliminated memory (%d)\n", nth_oom++); + ErrorF ("eliminated memory (%d)\n", nth_oom++); #endif - if (!qxl_garbage_collect (qxl)) { if (qxl_handle_oom (qxl)) @@ -318,7 +480,6 @@ { ErrorF ("Out of memory allocating %ld bytes\n", size); qxl_mem_dump_stats (qxl->mem, "Out of mem - stats\n"); - fprintf (stderr, "Out of memory\n"); exit (1); } @@ -329,326 +490,503 @@ } static Bool -qxl_blank_screen(ScreenPtr pScreen, int mode) +qxl_blank_screen (ScreenPtr pScreen, int mode) { return TRUE; } #ifdef XSPICE static void -unmap_memory_helper(qxl_screen_t *qxl, int scrnIndex) +unmap_memory_helper (qxl_screen_t *qxl) { - free(qxl->ram); - free(qxl->vram); - free(qxl->rom); + free (qxl->ram); + free (qxl->vram); + free (qxl->rom); } static void -map_memory_helper(qxl_screen_t *qxl, int scrnIndex) +map_memory_helper (qxl_screen_t *qxl) { - qxl->ram = malloc(RAM_SIZE); + qxl->ram = malloc (RAM_SIZE); + qxl->ram_size = RAM_SIZE; qxl->ram_physical = qxl->ram; - qxl->vram = malloc(VRAM_SIZE); + qxl->vram = malloc (VRAM_SIZE); qxl->vram_size = VRAM_SIZE; qxl->vram_physical = qxl->vram; - qxl->rom = malloc(ROM_SIZE); - - init_qxl_rom(qxl, ROM_SIZE); + qxl->rom = malloc (ROM_SIZE); + + init_qxl_rom (qxl, ROM_SIZE); } + #else /* Default */ + static void -unmap_memory_helper(qxl_screen_t *qxl, int scrnIndex) +unmap_memory_helper (qxl_screen_t *qxl) { #ifdef XSERVER_LIBPCIACCESS if (qxl->ram) - pci_device_unmap_range(qxl->pci, qxl->ram, qxl->pci->regions[0].size); + pci_device_unmap_range (qxl->pci, qxl->ram, qxl->pci->regions[0].size); if (qxl->vram) - pci_device_unmap_range(qxl->pci, qxl->vram, qxl->pci->regions[1].size); + pci_device_unmap_range (qxl->pci, qxl->vram, qxl->pci->regions[1].size); if (qxl->rom) - pci_device_unmap_range(qxl->pci, qxl->rom, qxl->pci->regions[2].size); + pci_device_unmap_range (qxl->pci, qxl->rom, qxl->pci->regions[2].size); #else if (qxl->ram) - xf86UnMapVidMem(scrnIndex, qxl->ram, (1 << qxl->pci->size[0])); + xf86UnMapVidMem (scrnIndex, qxl->ram, (1 << qxl->pci->size[0])); if (qxl->vram) - xf86UnMapVidMem(scrnIndex, qxl->vram, (1 << qxl->pci->size[1])); + xf86UnMapVidMem (scrnIndex, qxl->vram, (1 << qxl->pci->size[1])); if (qxl->rom) - xf86UnMapVidMem(scrnIndex, qxl->rom, (1 << qxl->pci->size[2])); + xf86UnMapVidMem (scrnIndex, qxl->rom, (1 << qxl->pci->size[2])); #endif } static void -map_memory_helper(qxl_screen_t *qxl, int scrnIndex) +map_memory_helper (qxl_screen_t *qxl) { #ifdef XSERVER_LIBPCIACCESS - pci_device_map_range(qxl->pci, qxl->pci->regions[0].base_addr, - qxl->pci->regions[0].size, - PCI_DEV_MAP_FLAG_WRITABLE | PCI_DEV_MAP_FLAG_WRITE_COMBINE, - &qxl->ram); + pci_device_map_range (qxl->pci, qxl->pci->regions[0].base_addr, + qxl->pci->regions[0].size, + PCI_DEV_MAP_FLAG_WRITABLE | PCI_DEV_MAP_FLAG_WRITE_COMBINE, + &qxl->ram); qxl->ram_physical = u64_to_pointer (qxl->pci->regions[0].base_addr); - - pci_device_map_range(qxl->pci, qxl->pci->regions[1].base_addr, - qxl->pci->regions[1].size, - PCI_DEV_MAP_FLAG_WRITABLE, - &qxl->vram); + qxl->ram_size = qxl->pci->regions[0].size; + + pci_device_map_range (qxl->pci, qxl->pci->regions[1].base_addr, + qxl->pci->regions[1].size, + PCI_DEV_MAP_FLAG_WRITABLE, + &qxl->vram); qxl->vram_physical = u64_to_pointer (qxl->pci->regions[1].base_addr); qxl->vram_size = qxl->pci->regions[1].size; - - pci_device_map_range(qxl->pci, qxl->pci->regions[2].base_addr, - qxl->pci->regions[2].size, 0, - (void **)&qxl->rom); - + + pci_device_map_range (qxl->pci, qxl->pci->regions[2].base_addr, + qxl->pci->regions[2].size, 0, + (void **)&qxl->rom); + qxl->io_base = qxl->pci->regions[3].base_addr; #else - qxl->ram = xf86MapPciMem(scrnIndex, VIDMEM_FRAMEBUFFER, - qxl->pci_tag, qxl->pci->memBase[0], - (1 << qxl->pci->size[0])); + qxl->ram = xf86MapPciMem (scrnIndex, VIDMEM_FRAMEBUFFER, + qxl->pci_tag, qxl->pci->memBase[0], + (1 << qxl->pci->size[0])); qxl->ram_physical = (void *)qxl->pci->memBase[0]; - - qxl->vram = xf86MapPciMem(scrnIndex, VIDMEM_MMIO | VIDMEM_MMIO_32BIT, - qxl->pci_tag, qxl->pci->memBase[1], - (1 << qxl->pci->size[1])); + + qxl->vram = xf86MapPciMem (scrnIndex, VIDMEM_MMIO | VIDMEM_MMIO_32BIT, + qxl->pci_tag, qxl->pci->memBase[1], + (1 << qxl->pci->size[1])); qxl->vram_physical = (void *)qxl->pci->memBase[1]; qxl->vram_size = (1 << qxl->pci->size[1]); - - qxl->rom = xf86MapPciMem(scrnIndex, VIDMEM_MMIO | VIDMEM_MMIO_32BIT, - qxl->pci_tag, qxl->pci->memBase[2], - (1 << qxl->pci->size[2])); - + + qxl->rom = xf86MapPciMem (scrnIndex, VIDMEM_MMIO | VIDMEM_MMIO_32BIT, + qxl->pci_tag, qxl->pci->memBase[2], + (1 << qxl->pci->size[2])); + qxl->io_base = qxl->pci->ioBase[3]; #endif } + #endif /* XSPICE */ static void -qxl_unmap_memory(qxl_screen_t *qxl, int scrnIndex) +qxl_unmap_memory (qxl_screen_t *qxl) { #ifdef XSPICE - if (qxl->worker) { - qxl->worker->stop(qxl->worker); - qxl->worker_running = FALSE; + if (qxl->worker) + { + qxl->worker->stop (qxl->worker); + qxl->worker_running = FALSE; } #endif - unmap_memory_helper(qxl, scrnIndex); + + if (qxl->mem) + { + qxl_mem_free_all (qxl->mem); + qxl_drop_image_cache (qxl); + } + + if (qxl->surf_mem) + qxl_mem_free_all (qxl->surf_mem); + + unmap_memory_helper (qxl); qxl->ram = qxl->ram_physical = qxl->vram = qxl->rom = NULL; - + qxl->num_modes = 0; qxl->modes = NULL; } -static Bool -qxl_map_memory(qxl_screen_t *qxl, int scrnIndex) +static void __attribute__ ((__noreturn__)) +qxl_mspace_abort_func (void *user_data) { - map_memory_helper(qxl, scrnIndex); - - if (!qxl->ram || !qxl->vram || !qxl->rom) - return FALSE; + abort (); +} - xf86DrvMsg(scrnIndex, X_INFO, "framebuffer at %p (%d KB)\n", - qxl->ram, qxl->rom->surface0_area_size / 1024); +static void __attribute__ ((format (gnu_printf, 2, 3))) +qxl_mspace_print_func (void *user_data, const char *format, ...) +{ + va_list args; + + va_start (args, format); + VErrorF (format, args); + va_end (args); +} - xf86DrvMsg(scrnIndex, X_INFO, "command ram at %p (%d KB)\n", - (void *)((unsigned long)qxl->ram + qxl->rom->surface0_area_size), - (qxl->rom->num_pages * getpagesize() - qxl->rom->surface0_area_size)/1024); +#ifdef QXLDRV_RESIZABLE_SURFACE0 +static void +qxl_dump_ring_stat (qxl_screen_t *qxl) +{ + int cmd_prod, cursor_prod, cmd_cons, cursor_cons; + int release_prod, release_cons; + + cmd_prod = qxl_ring_prod (qxl->command_ring); + cursor_prod = qxl_ring_prod (qxl->cursor_ring); + cmd_cons = qxl_ring_cons (qxl->command_ring); + cursor_cons = qxl_ring_cons (qxl->cursor_ring); + release_prod = qxl_ring_prod (qxl->release_ring); + release_cons = qxl_ring_cons (qxl->release_ring); + + ErrorF ("%s: Cmd %d/%d, Cur %d/%d, Rel %d/%d\n", + __func__, cmd_cons, cmd_prod, cursor_cons, cursor_prod, + release_cons, release_prod); +} - xf86DrvMsg(scrnIndex, X_INFO, "vram at %p (%ld KB)\n", - qxl->vram, qxl->vram_size / 1024); +#endif - xf86DrvMsg(scrnIndex, X_INFO, "rom at %p\n", qxl->rom); +/* To resize surface0 we need to ensure qxl->mem is empty. We can do that by: + * - fast: + * - ooming until command ring is empty. + * - flushing the release ring (>V10) + * - slow: calling update_area on all surfaces. + * This is done via already known code, so use that by default now. + */ +static int +qxl_resize_surface0 (qxl_screen_t *qxl, long surface0_size) +{ + long ram_header_size = qxl->ram_size - qxl->rom->ram_header_offset; + long new_mem_size = qxl->ram_size - + (surface0_size + ram_header_size + qxl->monitors_config_size); + + if (new_mem_size < 0) + { + ErrorF ("cannot resize surface0 to %ld, does not fit in BAR 0\n", + surface0_size); + return 0; + } + + ErrorF ("resizing surface0 to %ld\n", surface0_size); + + if (qxl->mem) + { +#ifdef QXLDRV_RESIZABLE_SURFACE0 + void *surfaces; + qxl_dump_ring_stat (qxl); + qxl_io_flush_surfaces (qxl); + surfaces = qxl_surface_cache_evacuate_all (qxl->surface_cache); + qxl_io_destroy_all_surfaces (qxl); // redundant? + qxl_io_flush_release (qxl); + qxl_drop_image_cache (qxl); + qxl_dump_ring_stat (qxl); + qxl_surface_cache_replace_all (qxl->surface_cache, surfaces); +#else + ErrorF ("resizing surface0 compiled out\n"); + return 0; +#endif + } + + /* surface0_area is still fixed to start of ram BAR */ + qxl->surface0_size = surface0_size; + + qxl->mem_size = new_mem_size; + qxl->mem = qxl_mem_create ((void *)((unsigned long)qxl->surface0_area + qxl->surface0_size), + qxl->mem_size); + return 1; +} +static Bool +qxl_map_memory (qxl_screen_t *qxl, int scrnIndex) +{ + map_memory_helper (qxl); + + if (!qxl->ram || !qxl->vram || !qxl->rom) + return FALSE; + + xf86DrvMsg (scrnIndex, X_INFO, "framebuffer at %p (%d KB)\n", + qxl->ram, qxl->rom->surface0_area_size / 1024); + + xf86DrvMsg (scrnIndex, X_INFO, "command ram at %p (%d KB)\n", + (void *)((unsigned long)qxl->ram + qxl->rom->surface0_area_size), + (qxl->rom->num_pages * getpagesize () - qxl->rom->surface0_area_size) / 1024); + + xf86DrvMsg (scrnIndex, X_INFO, "vram at %p (%ld KB)\n", + qxl->vram, qxl->vram_size / 1024); + + xf86DrvMsg (scrnIndex, X_INFO, "rom at %p\n", qxl->rom); + + /* + * Keep a hole for MonitorsConfig. This is not part of QXLRam to ensure + * the driver can change it without affecting the driver/device ABI. + */ + qxl->monitors_config_size = (sizeof (QXLMonitorsConfig) + + sizeof (QXLHead) * MAX_MONITORS_NUM + getpagesize () - 1) + & ~(getpagesize () - 1); qxl->num_modes = *(uint32_t *)((uint8_t *)qxl->rom + qxl->rom->modes_offset); qxl->modes = (struct QXLMode *)(((uint8_t *)qxl->rom) + qxl->rom->modes_offset + 4); qxl->surface0_area = qxl->ram; - qxl->surface0_size = qxl->rom->surface0_area_size; - - qxl->mem = qxl_mem_create ((void *)((unsigned long)qxl->ram + qxl->surface0_size), - qxl->rom->num_pages * getpagesize() - qxl->surface0_size); + qxl->surface0_size = 0; + qxl->mem = NULL; + if (!qxl_resize_surface0 (qxl, qxl->rom->surface0_area_size)) + return FALSE; qxl->surf_mem = qxl_mem_create ((void *)((unsigned long)qxl->vram), qxl->vram_size); - + qxl_allocate_monitors_config (qxl); + return TRUE; } #ifdef XSPICE static void -qxl_save_state(ScrnInfoPtr pScrn) +qxl_save_state (ScrnInfoPtr pScrn) { } static void -qxl_restore_state(ScrnInfoPtr pScrn) +qxl_restore_state (ScrnInfoPtr pScrn) { } + #else /* QXL */ static void -qxl_save_state(ScrnInfoPtr pScrn) +qxl_save_state (ScrnInfoPtr pScrn) { qxl_screen_t *qxl = pScrn->driverPrivate; - + if (xf86IsPrimaryPci (qxl->pci)) - vgaHWSaveFonts(pScrn, &qxl->vgaRegs); + vgaHWSaveFonts (pScrn, &qxl->vgaRegs); } static void -qxl_restore_state(ScrnInfoPtr pScrn) +qxl_restore_state (ScrnInfoPtr pScrn) { qxl_screen_t *qxl = pScrn->driverPrivate; - + if (xf86IsPrimaryPci (qxl->pci)) - vgaHWRestoreFonts(pScrn, &qxl->vgaRegs); + vgaHWRestoreFonts (pScrn, &qxl->vgaRegs); } + #endif /* XSPICE */ static uint8_t -setup_slot(qxl_screen_t *qxl, uint8_t slot_index_offset, - unsigned long start_phys_addr, unsigned long end_phys_addr, - uint64_t start_virt_addr, uint64_t end_virt_addr) +setup_slot (qxl_screen_t *qxl, uint8_t slot_index_offset, + unsigned long start_phys_addr, unsigned long end_phys_addr, + uint64_t start_virt_addr, uint64_t end_virt_addr) { - uint64_t high_bits; + uint64_t high_bits; qxl_memslot_t *slot; - uint8_t slot_index; + uint8_t slot_index; struct QXLRam *ram_header; + ram_header = (void *)((unsigned long)qxl->ram + (unsigned long)qxl->rom->ram_header_offset); - + slot_index = qxl->rom->slots_start + slot_index_offset; slot = &qxl->mem_slots[slot_index]; slot->start_phys_addr = start_phys_addr; slot->end_phys_addr = end_phys_addr; slot->start_virt_addr = start_virt_addr; slot->end_virt_addr = end_virt_addr; - + ram_header->mem_slot.mem_start = slot->start_phys_addr; ram_header->mem_slot.mem_end = slot->end_phys_addr; - - qxl_memslot_add(qxl, slot_index); - + + qxl_io_memslot_add (qxl, slot_index); + slot->generation = qxl->rom->slot_generation; high_bits = slot_index << qxl->slot_gen_bits; high_bits |= slot->generation; high_bits <<= (64 - (qxl->slot_gen_bits + qxl->slot_id_bits)); slot->high_bits = high_bits; + return slot_index; } static void -qxl_reset (qxl_screen_t *qxl) +qxl_reset_and_create_mem_slots (qxl_screen_t *qxl) { - ioport_write(qxl, QXL_IO_RESET, 0); + ioport_write (qxl, QXL_IO_RESET, 0); + qxl->device_primary = QXL_DEVICE_PRIMARY_NONE; /* Mem slots */ ErrorF ("slots start: %d, slots end: %d\n", - qxl->rom->slots_start, - qxl->rom->slots_end); - + qxl->rom->slots_start, + qxl->rom->slots_end); + /* Main slot */ qxl->n_mem_slots = qxl->rom->slots_end; qxl->slot_gen_bits = qxl->rom->slot_gen_bits; qxl->slot_id_bits = qxl->rom->slot_id_bits; qxl->va_slot_mask = (~(uint64_t)0) >> (qxl->slot_id_bits + qxl->slot_gen_bits); - + qxl->mem_slots = xnfalloc (qxl->n_mem_slots * sizeof (qxl_memslot_t)); - + #ifdef XSPICE - qxl->main_mem_slot = qxl->vram_mem_slot = setup_slot(qxl, 0, 0, ~0, 0, ~0); + qxl->main_mem_slot = qxl->vram_mem_slot = setup_slot (qxl, 0, 0, ~0, 0, ~0); #else /* QXL */ - qxl->main_mem_slot = setup_slot(qxl, 0, - (unsigned long)qxl->ram_physical, - (unsigned long)qxl->ram_physical + (unsigned long)qxl->rom->num_pages * getpagesize(), - (uint64_t)(uintptr_t)qxl->ram, - (uint64_t)(uintptr_t)qxl->ram + (unsigned long)qxl->rom->num_pages * getpagesize() - ); - qxl->vram_mem_slot = setup_slot(qxl, 1, - (unsigned long)qxl->vram_physical, - (unsigned long)qxl->vram_physical + (unsigned long)qxl->vram_size, - (uint64_t)(uintptr_t)qxl->vram, - (uint64_t)(uintptr_t)qxl->vram + (uint64_t)qxl->vram_size); + qxl->main_mem_slot = setup_slot (qxl, 0, + (unsigned long)qxl->ram_physical, + (unsigned long)qxl->ram_physical + qxl->surface0_size + + (unsigned long)qxl->rom->num_pages * getpagesize (), + (uint64_t)(uintptr_t)qxl->ram, + (uint64_t)(uintptr_t)qxl->ram + qxl->surface0_size + + (unsigned long)qxl->rom->num_pages * getpagesize () + ); + qxl->vram_mem_slot = setup_slot (qxl, 1, + (unsigned long)qxl->vram_physical, + (unsigned long)qxl->vram_physical + (unsigned long)qxl->vram_size, + (uint64_t)(uintptr_t)qxl->vram, + (uint64_t)(uintptr_t)qxl->vram + (uint64_t)qxl->vram_size); +#endif +} + +static void +qxl_mark_mem_unverifiable (qxl_screen_t *qxl) +{ + qxl_mem_unverifiable (qxl->mem); + qxl_mem_unverifiable (qxl->surf_mem); +} + +void +qxl_io_destroy_all_surfaces (qxl_screen_t *qxl) +{ +#ifndef XSPICE + if (qxl->pci->revision >= 3) + { + ioport_write (qxl, QXL_IO_DESTROY_ALL_SURFACES_ASYNC, 0); + qxl_wait_for_io_command (qxl); + } + else + { + ioport_write (qxl, QXL_IO_DESTROY_ALL_SURFACES, 0); + } +#else + ErrorF ("Xspice: error: UNIMPLEMENTED qxl_io_destroy_all_surfaces\n"); #endif + qxl->device_primary = QXL_DEVICE_PRIMARY_NONE; } static Bool -qxl_close_screen(int scrnIndex, ScreenPtr pScreen) +qxl_close_screen (CLOSE_SCREEN_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + ScrnInfoPtr pScrn = xf86ScreenToScrn (pScreen); qxl_screen_t *qxl = pScrn->driverPrivate; Bool result; + ErrorF ("Disabling FB access for %d\n", pScrn->scrnIndex); +#ifndef XF86_SCRN_INTERFACE + pScrn->EnableDisableFBAccess (scrnIndex, FALSE); +#else + pScrn->EnableDisableFBAccess (pScrn, FALSE); +#endif ErrorF ("Freeing %p\n", qxl->fb); - free(qxl->fb); + free (qxl->fb); qxl->fb = NULL; pScreen->CreateScreenResources = qxl->create_screen_resources; pScreen->CloseScreen = qxl->close_screen; - result = pScreen->CloseScreen(scrnIndex, pScreen); - + result = pScreen->CloseScreen (CLOSE_SCREEN_ARGS); + #ifndef XSPICE if (!xf86IsPrimaryPci (qxl->pci) && qxl->primary) - qxl_reset (qxl); + qxl_reset_and_create_mem_slots (qxl); #endif if (pScrn->vtSema) { - qxl_restore_state(pScrn); - qxl_unmap_memory(qxl, scrnIndex); + qxl_restore_state (pScrn); + qxl_mark_mem_unverifiable (qxl); + qxl_unmap_memory (qxl); } pScrn->vtSema = FALSE; - + return result; } static void set_screen_pixmap_header (ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn (pScreen); qxl_screen_t *qxl = pScrn->driverPrivate; - PixmapPtr pPixmap = pScreen->GetScreenPixmap(pScreen); + PixmapPtr pPixmap = pScreen->GetScreenPixmap (pScreen); + + // TODO: don't ModifyPixmapHeader too early? - if (pPixmap && qxl->current_mode) + if (pPixmap) { ErrorF ("new stride: %d (display width: %d, bpp: %d)\n", - qxl->pScrn->displayWidth * qxl->bytes_per_pixel, - qxl->pScrn->displayWidth, qxl->bytes_per_pixel); + qxl->pScrn->displayWidth * qxl->bytes_per_pixel, + qxl->pScrn->displayWidth, qxl->bytes_per_pixel); - pScreen->ModifyPixmapHeader( - pPixmap, - qxl->current_mode->x_res, qxl->current_mode->y_res, - -1, -1, - qxl->pScrn->displayWidth * qxl->bytes_per_pixel, - NULL); + pScreen->ModifyPixmapHeader (pPixmap, + qxl->primary_mode.x_res, qxl->primary_mode.y_res, + -1, -1, + qxl->pScrn->displayWidth * qxl->bytes_per_pixel, + NULL); } else - ErrorF ("pix: %p; mode: %p\n", pPixmap, qxl->current_mode); + { + ErrorF ("pix: %p;\n", pPixmap); + } } static Bool -qxl_switch_mode(int scrnIndex, DisplayModePtr p, int flags) +qxl_resize_primary_to_virtual (qxl_screen_t *qxl) { - qxl_screen_t *qxl = xf86Screens[scrnIndex]->driverPrivate; - int mode_index = (int)(unsigned long)p->Private; - struct QXLMode *m = qxl->modes + mode_index; ScreenPtr pScreen; - void *evacuated; - - evacuated = qxl_surface_cache_evacuate_all (qxl->surface_cache); - + long new_surface0_size; + + if ((qxl->primary_mode.x_res == qxl->virtual_x && + qxl->primary_mode.y_res == qxl->virtual_y) && + qxl->device_primary == QXL_DEVICE_PRIMARY_CREATED) + { + return TRUE; /* empty Success */ + } + + ErrorF ("resizing primary to %dx%d\n", qxl->virtual_x, qxl->virtual_y); + + new_surface0_size = + qxl->virtual_x * qxl->pScrn->bitsPerPixel / 8 * qxl->virtual_y; + + if (new_surface0_size > qxl->surface0_size) + { + if (!qxl_resize_surface0 (qxl, new_surface0_size)) + { + ErrorF ("not resizing primary to virtual, leaving old virtual\n"); + return FALSE; + } + } + if (qxl->primary) { qxl_surface_kill (qxl->primary); qxl_surface_cache_sanity_check (qxl->surface_cache); + qxl_io_destroy_primary (qxl); } - - qxl_reset (qxl); - ErrorF ("done reset\n"); - - qxl->primary = qxl_surface_cache_create_primary (qxl->surface_cache, m); - qxl->current_mode = m; + { + struct QXLMode *pm = &qxl->primary_mode; + pm->id = 0x4242; + pm->x_res = qxl->virtual_x; + pm->y_res = qxl->virtual_y; + pm->bits = qxl->pScrn->bitsPerPixel; + pm->stride = qxl->virtual_x * pm->bits / 8; + pm->x_mili = 0; // TODO + pm->y_mili = 0; // TODO + pm->orientation = 0; // ? supported by us for single head usage? more TODO + } + qxl->primary = qxl_surface_cache_create_primary (qxl->surface_cache, &qxl->primary_mode); qxl->bytes_per_pixel = (qxl->pScrn->bitsPerPixel + 7) / 8; - + pScreen = qxl->pScrn->pScreen; if (pScreen) { PixmapPtr root = pScreen->GetScreenPixmap (pScreen); qxl_surface_t *surf; - + if ((surf = get_surface (root))) qxl_surface_kill (surf); @@ -656,18 +994,33 @@ } ErrorF ("primary is %p\n", qxl->primary); - if (qxl->mem) + return TRUE; +} + +static Bool +qxl_resize_primary (qxl_screen_t *qxl, uint32_t width, uint32_t height) +{ + qxl->virtual_x = width; + qxl->virtual_y = height; + + if (qxl->vt_surfaces) { - qxl_mem_free_all (qxl->mem); - qxl_drop_image_cache (qxl); + ErrorF ("%s: ignoring resize due to not being in control of VT\n", + __FUNCTION__); + return FALSE; } + return qxl_resize_primary_to_virtual (qxl); +} - if (qxl->surf_mem) - qxl_mem_free_all (qxl->surf_mem); - - qxl_surface_cache_replace_all (qxl->surface_cache, evacuated); +static Bool +qxl_switch_mode (SWITCH_MODE_ARGS_DECL) +{ + SCRN_INFO_PTR (arg); + qxl_screen_t *qxl = pScrn->driverPrivate; - return TRUE; + ErrorF ("Ignoring display mode, ensuring recreation of primary\n"); + + return qxl_resize_primary_to_virtual (qxl); } enum ROPDescriptor @@ -682,17 +1035,164 @@ ROPD_OP_BLACKNESS = (1 << 7), ROPD_OP_WHITENESS = (1 << 8), ROPD_OP_INVERS = (1 << 9), - ROPD_INVERS_RES = (1 <<10), + ROPD_INVERS_RES = (1 << 10), }; +static int +check_crtc (qxl_screen_t *qxl) +{ + int i, count = 0; + xf86CrtcPtr crtc; + + for (i = 0 ; i < qxl->num_heads; ++i) + { + crtc = qxl->crtcs[i]; + + if (!crtc->enabled || crtc->mode.CrtcHDisplay == 0 || + crtc->mode.CrtcVDisplay == 0) + { + continue; + } + count++; + } + +#if 0 + if (count == 0) + { + ErrorF ("check crtc failed, count == 0!!\n"); + BREAKPOINT (); + } +#endif + + return count; +} + +static void +qxl_update_monitors_config (qxl_screen_t *qxl) +{ + int i; + QXLHead *head; + xf86CrtcPtr crtc; + qxl_output_private *qxl_output; + QXLRam * ram = get_ram_header (qxl); + + check_crtc (qxl); + + qxl->monitors_config->count = 0; + qxl->monitors_config->max_allowed = qxl->num_heads; + for (i = 0 ; i < qxl->num_heads; ++i) + { + head = &qxl->monitors_config->heads[qxl->monitors_config->count]; + crtc = qxl->crtcs[i]; + qxl_output = qxl->outputs[i]->driver_private; + head->id = i; + head->surface_id = 0; + head->flags = 0; + + if (!crtc->enabled || crtc->mode.CrtcHDisplay == 0 || + crtc->mode.CrtcVDisplay == 0) + { + head->width = head->height = head->x = head->y = 0; + qxl_output->status = XF86OutputStatusDisconnected; + } + else + { + head->width = crtc->mode.CrtcHDisplay; + head->height = crtc->mode.CrtcVDisplay; + head->x = crtc->x; + head->y = crtc->y; + qxl->monitors_config->count++; + qxl_output->status = XF86OutputStatusConnected; + } + } + /* initialize when actually used, memslots should be initialized by now */ + if (ram->monitors_config == 0) + { + ram->monitors_config = physical_address (qxl, qxl->monitors_config, + qxl->main_mem_slot); + } + + qxl_io_monitors_config_async (qxl); +} + static Bool -qxl_create_screen_resources(ScreenPtr pScreen) +crtc_set_mode_major (xf86CrtcPtr crtc, DisplayModePtr mode, + Rotation rotation, int x, int y) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - qxl_screen_t *qxl = pScrn->driverPrivate; - Bool ret; - PixmapPtr pPixmap; + qxl_crtc_private *crtc_private = crtc->driver_private; + qxl_screen_t * qxl = crtc_private->qxl; + + if (crtc == qxl->crtcs[0] && mode == NULL) + { + /* disallow disabling of monitor 0 mode */ + ErrorF ("%s: not allowing crtc 0 disablement\n", __func__); + return FALSE; + } + + crtc->mode = *mode; + crtc->x = x; + crtc->y = y; + crtc->rotation = rotation; +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC (1, 5, 99, 0, 0) + crtc->transformPresent = FALSE; +#endif + qxl_output_edid_set (crtc_private->output, crtc_private->head, mode); + + return TRUE; +} + +static Bool +qxl_create_desired_modes (qxl_screen_t *qxl) +{ + int i; + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (qxl->pScrn); + + CHECK_POINT (); + + for (i = 0 ; i < config->num_crtc; ++i) + { + xf86CrtcPtr crtc = config->crtc[i]; + if (!crtc->enabled) + continue; + + if (!crtc_set_mode_major ( + crtc, &crtc->desiredMode, crtc->desiredRotation, + crtc->desiredX, crtc->desiredY)) + { + return FALSE; + } + } + + qxl_update_monitors_config (qxl); + return TRUE; +} + +static void +qxl_update_edid (qxl_screen_t *qxl) +{ + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (qxl->pScrn); + int i; + + for (i = 0; i < config->num_crtc; ++i) + { + xf86CrtcPtr crtc = config->crtc[i]; + + if (!crtc->enabled) + continue; + + qxl_output_edid_set (qxl->outputs[i], i, &crtc->desiredMode); + } +} + +static Bool +qxl_create_screen_resources (ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86ScreenToScrn (pScreen); + qxl_screen_t * qxl = pScrn->driverPrivate; + Bool ret; + PixmapPtr pPixmap; qxl_surface_t *surf; + int i; pScreen->CreateScreenResources = qxl->create_screen_resources; ret = pScreen->CreateScreenResources (pScreen); @@ -700,16 +1200,29 @@ if (!ret) return FALSE; - + pPixmap = pScreen->GetScreenPixmap (pScreen); set_screen_pixmap_header (pScreen); - + if ((surf = get_surface (pPixmap))) qxl_surface_kill (surf); set_surface (pPixmap, qxl->primary); + /* HACK - I don't want to enable any crtcs other then the first at the beginning */ + for (i = 1; i < qxl->num_heads; ++i) + { + qxl_output_private *private; + + qxl->crtcs[i]->enabled = 0; + private = qxl->outputs[i]->driver_private; + private->status = XF86OutputStatusDisconnected; + } + + qxl_create_desired_modes (qxl); + qxl_update_edid (qxl); + return TRUE; } @@ -720,16 +1233,10 @@ #endif static Bool -unaccel (void) -{ - return FALSE; -} - -static Bool qxl_prepare_access (PixmapPtr pixmap, RegionPtr region, uxa_access_t access) { return qxl_surface_prepare_access (get_surface (pixmap), - pixmap, region, access); + pixmap, region, access); } static void @@ -744,7 +1251,6 @@ return !!get_surface (pixmap); } - static Bool good_alu_and_pm (DrawablePtr drawable, int alu, Pixel planemask) { @@ -796,7 +1302,7 @@ */ static Bool qxl_check_copy (PixmapPtr source, PixmapPtr dest, - int alu, Pixel planemask) + int alu, Pixel planemask) { if (!good_alu_and_pm ((DrawablePtr)source, alu, planemask)) return FALSE; @@ -812,22 +1318,22 @@ static Bool qxl_prepare_copy (PixmapPtr source, PixmapPtr dest, - int xdir, int ydir, int alu, - Pixel planemask) + int xdir, int ydir, int alu, + Pixel planemask) { return qxl_surface_prepare_copy (get_surface (dest), get_surface (source)); } static void qxl_copy (PixmapPtr dest, - int src_x1, int src_y1, - int dest_x1, int dest_y1, - int width, int height) + int src_x1, int src_y1, + int dest_x1, int dest_y1, + int width, int height) { qxl_surface_copy (get_surface (dest), - src_x1, src_y1, - dest_x1, dest_y1, - width, height); + src_x1, src_y1, + dest_x1, dest_y1, + width, height); } static void @@ -835,15 +1341,175 @@ { } +/* + * Composite + */ +static Bool +can_accelerate_picture (PicturePtr pict) +{ + if (!pict) + return TRUE; + + if (pict->format != PICT_a8r8g8b8 && + pict->format != PICT_x8r8g8b8 && + pict->format != PICT_a8) + { + return FALSE; + } + + if (!pict->pDrawable) + return FALSE; + + if (pict->transform) + { + if (pict->transform->matrix[2][0] != 0 || + pict->transform->matrix[2][1] != 0 || + pict->transform->matrix[2][2] != pixman_int_to_fixed (1)) + { + return FALSE; + } + } + + if (pict->filter != PictFilterBilinear && + pict->filter != PictFilterNearest) + { + return FALSE; + } + + return TRUE; +} + +#define QXL_HAS_CAP(qxl, cap) \ + (((qxl)->rom->client_capabilities[(cap) / 8]) & (1 << ((cap) % 8))) + +static Bool +qxl_has_composite (qxl_screen_t *qxl) +{ +#ifndef XSPICE + return + qxl->pci->revision >= 4 && + QXL_HAS_CAP (qxl, SPICE_DISPLAY_CAP_COMPOSITE); +#else + /* FIXME */ + return FALSE; +#endif +} + +static Bool +qxl_has_a8_surfaces (qxl_screen_t *qxl) +{ +#ifndef XSPICE + return + qxl->pci->revision >= 4 && + QXL_HAS_CAP (qxl, SPICE_DISPLAY_CAP_A8_SURFACE); +#else + /* FIXME */ + return FALSE; +#endif +} + +static Bool +qxl_check_composite (int op, + PicturePtr pSrcPicture, + PicturePtr pMaskPicture, + PicturePtr pDstPicture, + int width, int height) +{ + int i; + ScreenPtr pScreen = pDstPicture->pDrawable->pScreen; + ScrnInfoPtr pScrn = xf86ScreenToScrn (pScreen); + qxl_screen_t *qxl = pScrn->driverPrivate; + + static const int accelerated_ops[] = + { + PictOpClear, PictOpSrc, PictOpDst, PictOpOver, PictOpOverReverse, + PictOpIn, PictOpInReverse, PictOpOut, PictOpOutReverse, + PictOpAtop, PictOpAtopReverse, PictOpXor, PictOpAdd, + PictOpSaturate, PictOpMultiply, PictOpScreen, PictOpOverlay, + PictOpDarken, PictOpLighten, PictOpColorDodge, PictOpColorBurn, + PictOpHardLight, PictOpSoftLight, PictOpDifference, PictOpExclusion, + PictOpHSLHue, PictOpHSLSaturation, PictOpHSLColor, PictOpHSLLuminosity, + }; + + if (!qxl_has_composite (qxl)) + return FALSE; + + if (!can_accelerate_picture (pSrcPicture) || + !can_accelerate_picture (pMaskPicture) || + !can_accelerate_picture (pDstPicture)) + { + return FALSE; + } + + for (i = 0; i < sizeof (accelerated_ops) / sizeof (accelerated_ops[0]); ++i) + { + if (accelerated_ops[i] == op) + goto found; + } + return FALSE; + +found: + return TRUE; +} + +static Bool +qxl_check_composite_target (PixmapPtr pixmap) +{ + return TRUE; +} + +static Bool +qxl_check_composite_texture (ScreenPtr screen, + PicturePtr pPicture) +{ + return TRUE; +} + +static Bool +qxl_prepare_composite (int op, + PicturePtr pSrcPicture, + PicturePtr pMaskPicture, + PicturePtr pDstPicture, + PixmapPtr pSrc, + PixmapPtr pMask, + PixmapPtr pDst) +{ + return qxl_surface_prepare_composite ( + op, pSrcPicture, pMaskPicture, pDstPicture, + get_surface (pSrc), + pMask? get_surface (pMask) : NULL, + get_surface (pDst)); +} + +static void +qxl_composite (PixmapPtr pDst, + int src_x, int src_y, + int mask_x, int mask_y, + int dst_x, int dst_y, + int width, int height) +{ + qxl_surface_composite ( + get_surface (pDst), + src_x, src_y, + mask_x, mask_y, + dst_x, dst_y, width, height); +} + +static void +qxl_done_composite (PixmapPtr pDst) +{ + ; +} + static Bool qxl_put_image (PixmapPtr pDst, int x, int y, int w, int h, - char *src, int src_pitch) + char *src, int src_pitch) { qxl_surface_t *surface = get_surface (pDst); - + if (surface) return qxl_surface_put_image (surface, x, y, w, h, src, src_pitch); - + return FALSE; } @@ -856,22 +1522,31 @@ static PixmapPtr qxl_create_pixmap (ScreenPtr screen, int w, int h, int depth, unsigned usage) { - ScrnInfoPtr scrn = xf86Screens[screen->myNum]; - PixmapPtr pixmap; - qxl_screen_t *qxl = scrn->driverPrivate; + ScrnInfoPtr scrn = xf86ScreenToScrn (screen); + PixmapPtr pixmap; + qxl_screen_t * qxl = scrn->driverPrivate; qxl_surface_t *surface; if (w > 32767 || h > 32767) return NULL; - + qxl_surface_cache_sanity_check (qxl->surface_cache); - + #if 0 ErrorF ("Create pixmap: %d %d @ %d (usage: %d)\n", w, h, depth, usage); #endif - + if (uxa_swapped_out (screen)) goto fallback; + + if (depth == 8 && !qxl_has_a8_surfaces (qxl)) + { + /* FIXME: When we detect a _change_ in the property of having a8 + * surfaces, we should copy all existing a8 surface to host memory + * and then destroy the ones on the device. + */ + goto fallback; + } surface = qxl_surface_create (qxl->surface_cache, w, h, depth); @@ -880,30 +1555,30 @@ /* ErrorF (" Successfully created surface in video memory\n"); */ pixmap = fbCreatePixmap (screen, 0, 0, depth, usage); - - screen->ModifyPixmapHeader(pixmap, w, h, - -1, -1, -1, - NULL); + + screen->ModifyPixmapHeader (pixmap, w, h, + -1, -1, -1, + NULL); #if 0 ErrorF ("Create pixmap %p with surface %p\n", pixmap, surface); #endif set_surface (pixmap, surface); qxl_surface_set_pixmap (surface, pixmap); - + qxl_surface_cache_sanity_check (qxl->surface_cache); } else { #if 0 ErrorF (" Couldn't allocate %d x %d @ %d surface in video memory\n", - w, h, depth); + w, h, depth); #endif fallback: pixmap = fbCreatePixmap (screen, w, h, depth, usage); - + #if 0 - ErrorF ("Create pixmap %p without surface\n", pixmap); + ErrorF ("Create pixmap %p without surface\n", pixmap); #endif } @@ -913,26 +1588,26 @@ static Bool qxl_destroy_pixmap (PixmapPtr pixmap) { - ScreenPtr screen = pixmap->drawable.pScreen; - ScrnInfoPtr scrn = xf86Screens[screen->myNum]; - qxl_screen_t *qxl = scrn->driverPrivate; + ScreenPtr screen = pixmap->drawable.pScreen; + ScrnInfoPtr scrn = xf86ScreenToScrn (screen); + qxl_screen_t * qxl = scrn->driverPrivate; qxl_surface_t *surface = NULL; - + qxl_surface_cache_sanity_check (qxl->surface_cache); if (pixmap->refcnt == 1) { surface = get_surface (pixmap); - + #if 0 ErrorF ("- Destroy %p (had surface %p)\n", pixmap, surface); #endif - + if (surface) { qxl_surface_kill (surface); set_surface (pixmap, NULL); - + qxl_surface_cache_sanity_check (qxl->surface_cache); } } @@ -944,20 +1619,21 @@ static Bool setup_uxa (qxl_screen_t *qxl, ScreenPtr screen) { - ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + ScrnInfoPtr scrn = xf86ScreenToScrn (screen); + #if HAS_DIXREGISTERPRIVATEKEY - if (!dixRegisterPrivateKey(&uxa_pixmap_index, PRIVATE_PIXMAP, 0)) + if (!dixRegisterPrivateKey (&uxa_pixmap_index, PRIVATE_PIXMAP, 0)) return FALSE; #else - if (!dixRequestPrivate(&uxa_pixmap_index, 0)) + if (!dixRequestPrivate (&uxa_pixmap_index, 0)) return FALSE; #endif - qxl->uxa = uxa_driver_alloc(); + qxl->uxa = uxa_driver_alloc (); if (qxl->uxa == NULL) return FALSE; - - memset(qxl->uxa, 0, sizeof(*qxl->uxa)); + + memset (qxl->uxa, 0, sizeof (*qxl->uxa)); qxl->uxa->uxa_major = 1; qxl->uxa->uxa_minor = 0; @@ -975,12 +1651,12 @@ qxl->uxa->done_copy = qxl_done_copy; /* Composite */ - qxl->uxa->check_composite = (typeof(qxl->uxa->check_composite))unaccel; - qxl->uxa->check_composite_target = (typeof(qxl->uxa->check_composite_target))unaccel; - qxl->uxa->check_composite_texture = (typeof(qxl->uxa->check_composite_texture))unaccel; - qxl->uxa->prepare_composite = (typeof(qxl->uxa->prepare_composite))unaccel; - qxl->uxa->composite = (typeof(qxl->uxa->composite))unaccel; - qxl->uxa->done_composite = (typeof(qxl->uxa->done_composite))unaccel; + qxl->uxa->check_composite = qxl_check_composite; + qxl->uxa->check_composite_target = qxl_check_composite_target; + qxl->uxa->check_composite_texture = qxl_check_composite_texture; + qxl->uxa->prepare_composite = qxl_prepare_composite; + qxl->uxa->composite = qxl_composite; + qxl->uxa->done_composite = qxl_done_composite; /* PutImage */ qxl->uxa->put_image = qxl_put_image; @@ -990,21 +1666,21 @@ qxl->uxa->finish_access = qxl_finish_access; qxl->uxa->pixmap_is_offscreen = qxl_pixmap_is_offscreen; - + screen->SetScreenPixmap = qxl_set_screen_pixmap; screen->CreatePixmap = qxl_create_pixmap; screen->DestroyPixmap = qxl_destroy_pixmap; - if (!uxa_driver_init(screen, qxl->uxa)) + if (!uxa_driver_init (screen, qxl->uxa)) { - xf86DrvMsg(scrn->scrnIndex, X_ERROR, - "UXA initialization failed\n"); - free(qxl->uxa); + xf86DrvMsg (scrn->scrnIndex, X_ERROR, + "UXA initialization failed\n"); + free (qxl->uxa); return FALSE; } #if 0 - uxa_set_fallback_debug(screen, FALSE); + uxa_set_fallback_debug (screen, FALSE); #endif #if 0 @@ -1018,19 +1694,20 @@ #ifdef XSPICE static void -spiceqxl_screen_init(int scrnIndex, ScrnInfoPtr pScrn, qxl_screen_t *qxl) +spiceqxl_screen_init (ScrnInfoPtr pScrn, qxl_screen_t *qxl) { SpiceCoreInterface *core; - + // Init spice - if (!qxl->spice_server) { - qxl->spice_server = xspice_get_spice_server(); - xspice_set_spice_server_options(qxl->options); - core = basic_event_loop_init(); - spice_server_init(qxl->spice_server, core); - qxl_add_spice_display_interface(qxl); - qxl->worker->start(qxl->worker); - qxl->worker_running = TRUE; + if (!qxl->spice_server) + { + qxl->spice_server = xspice_get_spice_server (); + xspice_set_spice_server_options (qxl->options); + core = basic_event_loop_init (); + spice_server_init (qxl->spice_server, core); + qxl_add_spice_display_interface (qxl); + qxl->worker->start (qxl->worker); + qxl->worker_running = TRUE; } qxl->spice_server = qxl->spice_server; } @@ -1038,42 +1715,56 @@ #endif static Bool -qxl_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) +qxl_fb_init (qxl_screen_t *qxl, ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - qxl_screen_t *qxl = pScrn->driverPrivate; - struct QXLRam *ram_header; - VisualPtr visual; - - CHECK_POINT(); - - qxl->pScrn = pScrn; - - if (!qxl_map_memory(qxl, scrnIndex)) + ScrnInfoPtr pScrn = qxl->pScrn; + +#if 0 + ErrorF ("allocated %d x %d %p\n", pScrn->virtualX, pScrn->virtualY, qxl->fb); +#endif + + if (!fbScreenInit (pScreen, NULL, + pScrn->virtualX, pScrn->virtualY, + pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, + pScrn->bitsPerPixel)) return FALSE; + + fbPictureInit (pScreen, NULL, 0); + return TRUE; +} +static Bool +qxl_screen_init (SCREEN_INIT_ARGS_DECL) +{ + ScrnInfoPtr pScrn = xf86ScreenToScrn (pScreen); + qxl_screen_t * qxl = pScrn->driverPrivate; + struct QXLRam *ram_header; + VisualPtr visual; + + CHECK_POINT (); + + assert (qxl->pScrn == pScrn); + + if (!qxl_map_memory (qxl, pScrn->scrnIndex)) + return FALSE; + #ifdef XSPICE - spiceqxl_screen_init(scrnIndex, pScrn, qxl); + spiceqxl_screen_init (pScrn, qxl); #endif ram_header = (void *)((unsigned long)qxl->ram + (unsigned long)qxl->rom->ram_header_offset); printf ("ram_header at %d\n", qxl->rom->ram_header_offset); printf ("surf0 size: %d\n", qxl->rom->surface0_area_size); - qxl_save_state(pScrn); - qxl_blank_screen(pScreen, SCREEN_SAVER_ON); + qxl_save_state (pScrn); + qxl_blank_screen (pScreen, SCREEN_SAVER_ON); - miClearVisualTypes(); - if (!miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth), - pScrn->rgbBits, pScrn->defaultVisual)) + miClearVisualTypes (); + if (!miSetVisualTypes (pScrn->depth, miGetDefaultVisualMask (pScrn->depth), + pScrn->rgbBits, pScrn->defaultVisual)) goto out; - if (!miSetPixmapDepths()) + if (!miSetPixmapDepths ()) goto out; - - qxl->virtual_x = pScrn->virtualX; - qxl->virtual_y = pScrn->virtualY; - qxl->stride = pScrn->virtualX * 4; - pScrn->displayWidth = pScrn->virtualX; qxl->fb = calloc (pScrn->virtualY * pScrn->displayWidth, 4); @@ -1084,23 +1775,16 @@ ErrorF ("allocated %d x %d %p\n", pScrn->virtualX, pScrn->virtualY, qxl->fb); #endif - pScreen->totalPixmapSize = 100; - pScrn->virtualX = pScrn->currentMode->HDisplay; pScrn->virtualY = pScrn->currentMode->VDisplay; - - if (!fbScreenInit(pScreen, qxl->fb, - pScrn->virtualX, pScrn->virtualY, - pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, - pScrn->bitsPerPixel)) - { + + if (!qxl_fb_init (qxl, pScreen)) goto out; - } visual = pScreen->visuals + pScreen->numVisuals; - while (--visual >= pScreen->visuals) + while (--visual >= pScreen->visuals) { - if ((visual->class | DynamicClass) == DirectColor) + if ((visual->class | DynamicClass) == DirectColor) { visual->offsetRed = pScrn->offset.red; visual->offsetGreen = pScrn->offset.green; @@ -1111,365 +1795,652 @@ } } - fbPictureInit(pScreen, NULL, 0); - qxl->uxa = uxa_driver_alloc (); /* Set up resources */ - qxl_reset (qxl); + qxl_reset_and_create_mem_slots (qxl); ErrorF ("done reset\n"); - + #ifndef XSPICE qxl->io_pages = (void *)((unsigned long)qxl->ram); qxl->io_pages_physical = (void *)((unsigned long)qxl->ram_physical); #endif - + qxl->command_ring = qxl_ring_create ((struct qxl_ring_header *)&(ram_header->cmd_ring), - sizeof (struct QXLCommand), - QXL_COMMAND_RING_SIZE, QXL_IO_NOTIFY_CMD, qxl); + sizeof (struct QXLCommand), + QXL_COMMAND_RING_SIZE, QXL_IO_NOTIFY_CMD, qxl); qxl->cursor_ring = qxl_ring_create ((struct qxl_ring_header *)&(ram_header->cursor_ring), - sizeof (struct QXLCommand), - QXL_CURSOR_RING_SIZE, QXL_IO_NOTIFY_CURSOR, qxl); + sizeof (struct QXLCommand), + QXL_CURSOR_RING_SIZE, QXL_IO_NOTIFY_CURSOR, qxl); qxl->release_ring = qxl_ring_create ((struct qxl_ring_header *)&(ram_header->release_ring), - sizeof (uint64_t), - QXL_RELEASE_RING_SIZE, 0, qxl); - + sizeof (uint64_t), + QXL_RELEASE_RING_SIZE, 0, qxl); + qxl->surface_cache = qxl_surface_cache_create (qxl); - /* xf86DPMSInit(pScreen, xf86DPMSSet, 0); */ + /* xf86DPMSInit (pScreen, xf86DPMSSet, 0); */ pScreen->SaveScreen = qxl_blank_screen; - + setup_uxa (qxl, pScreen); - DamageSetup(pScreen); +#if 0 + uxa_set_fallback_debug(pScreen, TRUE); +#endif + + DamageSetup (pScreen); - miDCInitialize(pScreen, xf86GetPointerScreenFuncs()); - if (!miCreateDefColormap(pScreen)) - goto out; + /* We need to set totalPixmapSize after setup_uxa and Damage, + as the privates size is not computed correctly until then + */ +#if (XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 12, 99, 901, 0)) + pScreen->totalPixmapSize = BitmapBytePad ((sizeof (PixmapRec) + dixPrivatesSize (PRIVATE_PIXMAP) ) * 8); +#else + pScreen->totalPixmapSize = BitmapBytePad((sizeof(PixmapRec) + + dixScreenSpecificPrivatesSize(pScreen, PRIVATE_PIXMAP) ) * 8); +#endif + + miDCInitialize (pScreen, xf86GetPointerScreenFuncs()); + if (!miCreateDefColormap (pScreen)) + goto out; + qxl->create_screen_resources = pScreen->CreateScreenResources; + pScreen->CreateScreenResources = qxl_create_screen_resources; + + qxl->close_screen = pScreen->CloseScreen; + pScreen->CloseScreen = qxl_close_screen; + + qxl_cursor_init (pScreen); + + CHECK_POINT (); + + pScreen->width = pScrn->currentMode->HDisplay; + pScreen->height = pScrn->currentMode->VDisplay; + + if (!xf86CrtcScreenInit (pScreen)) + return FALSE; + + if (!qxl_resize_primary_to_virtual (qxl)) + return FALSE; + /* Note: this must be done after DamageSetup() because it calls * _dixInitPrivates. And if that has been called, DamageSetup() * will assert. */ if (!uxa_resources_init (pScreen)) return FALSE; + CHECK_POINT (); - qxl->create_screen_resources = pScreen->CreateScreenResources; - pScreen->CreateScreenResources = qxl_create_screen_resources; + /* fake transform support, to allow agent to switch crtc mode */ + /* without X doing checks, see rrcrtc.c "Check screen size */ + /* bounds" */ + xf86RandR12SetTransformSupport (pScreen, TRUE); - qxl->close_screen = pScreen->CloseScreen; - pScreen->CloseScreen = qxl_close_screen; + return TRUE; - qxl_cursor_init (pScreen); +out: + return FALSE; +} - CHECK_POINT(); +static Bool +qxl_enter_vt (VT_FUNC_ARGS_DECL) +{ + SCRN_INFO_PTR (arg); + qxl_screen_t *qxl = pScrn->driverPrivate; + + qxl_save_state (pScrn); + + qxl_reset_and_create_mem_slots (qxl); + + if (!qxl_resize_primary_to_virtual (qxl)) + return FALSE; + + if (qxl->mem) + { + qxl_mem_free_all (qxl->mem); + qxl_drop_image_cache (qxl); + } + + if (qxl->surf_mem) + qxl_mem_free_all (qxl->surf_mem); + + if (qxl->vt_surfaces) + { + qxl_surface_cache_replace_all (qxl->surface_cache, qxl->vt_surfaces); + + qxl->vt_surfaces = NULL; + } + + qxl_create_desired_modes (qxl); + + pScrn->EnableDisableFBAccess (XF86_SCRN_ARG (pScrn), TRUE); + + return TRUE; +} - pScreen->width = pScrn->currentMode->HDisplay; - pScreen->height = pScrn->currentMode->VDisplay; +static void +qxl_leave_vt (VT_FUNC_ARGS_DECL) +{ + SCRN_INFO_PTR (arg); + qxl_screen_t *qxl = pScrn->driverPrivate; + + xf86_hide_cursors (pScrn); + + pScrn->EnableDisableFBAccess (XF86_SCRN_ARG (pScrn), FALSE); + + qxl->vt_surfaces = qxl_surface_cache_evacuate_all (qxl->surface_cache); + + ioport_write (qxl, QXL_IO_RESET, 0); + + qxl_restore_state (pScrn); + qxl->device_primary = QXL_DEVICE_PRIMARY_NONE; +} + +static Bool +qxl_color_setup (ScrnInfoPtr pScrn) +{ + int scrnIndex = pScrn->scrnIndex; + Gamma gzeros = { 0.0, 0.0, 0.0 }; + rgb rzeros = { 0, 0, 0 }; + + if (!xf86SetDepthBpp (pScrn, 0, 0, 0, Support32bppFb)) + return FALSE; + + if (pScrn->depth != 15 && pScrn->depth != 24) + { + xf86DrvMsg (scrnIndex, X_ERROR, "Depth %d is not supported\n", + pScrn->depth); + return FALSE; + } + xf86PrintDepthBpp (pScrn); + + if (!xf86SetWeight (pScrn, rzeros, rzeros)) + return FALSE; + + if (!xf86SetDefaultVisual (pScrn, -1)) + return FALSE; + + if (!xf86SetGamma (pScrn, gzeros)) + return FALSE; + + return TRUE; +} + +static void +print_modes (qxl_screen_t *qxl, int scrnIndex) +{ + int i; + + for (i = 0; i < qxl->num_modes; ++i) + { + struct QXLMode *m = qxl->modes + i; + + xf86DrvMsg (scrnIndex, X_INFO, + "%d: %dx%d, %d bits, stride %d, %dmm x %dmm, orientation %d\n", + m->id, m->x_res, m->y_res, m->bits, m->stride, m->x_mili, + m->y_mili, m->orientation); + } +} + +#ifndef XSPICE +static Bool +qxl_check_device (ScrnInfoPtr pScrn, qxl_screen_t *qxl) +{ + int scrnIndex = pScrn->scrnIndex; + struct QXLRom *rom = qxl->rom; + struct QXLRam *ram_header = (void *)((unsigned long)qxl->ram + rom->ram_header_offset); + + CHECK_POINT (); + + if (rom->magic != 0x4f525851) /* "QXRO" little-endian */ + { + xf86DrvMsg (scrnIndex, X_ERROR, "Bad ROM signature %x\n", rom->magic); + return FALSE; + } + + xf86DrvMsg (scrnIndex, X_INFO, "Device version %d.%d\n", + rom->id, rom->update_id); + + xf86DrvMsg (scrnIndex, X_INFO, "Compression level %d, log level %d\n", + rom->compression_level, + rom->log_level); + + xf86DrvMsg (scrnIndex, X_INFO, "%d io pages at 0x%lx\n", + rom->num_pages, (unsigned long)qxl->ram); + + xf86DrvMsg (scrnIndex, X_INFO, "RAM header offset: 0x%x\n", rom->ram_header_offset); + + if (ram_header->magic != 0x41525851) /* "QXRA" little-endian */ + { + xf86DrvMsg (scrnIndex, X_ERROR, "Bad RAM signature %x at %p\n", + ram_header->magic, + &ram_header->magic); + return FALSE; + } + + xf86DrvMsg (scrnIndex, X_INFO, "Correct RAM signature %x\n", + ram_header->magic); + return TRUE; +} + +#endif /* !XSPICE */ + +static DisplayModePtr +screen_create_mode (ScrnInfoPtr pScrn, int width, int height, int type) +{ + DisplayModePtr mode; + + mode = xnfcalloc (1, sizeof (DisplayModeRec)); + + mode->status = MODE_OK; + mode->type = type; + mode->HDisplay = width; + mode->HSyncStart = (width * 105 / 100 + 7) & ~7; + mode->HSyncEnd = (width * 115 / 100 + 7) & ~7; + mode->HTotal = (width * 130 / 100 + 7) & ~7; + mode->VDisplay = height; + mode->VSyncStart = height + 1; + mode->VSyncEnd = height + 4; + mode->VTotal = height * 1035 / 1000; + mode->Clock = mode->HTotal * mode->VTotal * 60 / 1000; + mode->Flags = V_NHSYNC | V_PVSYNC; + + xf86SetModeDefaultName (mode); + xf86SetModeCrtc (mode, pScrn->adjustFlags); /* needed? xf86-video-modesetting does this */ + + return mode; +} + +static DisplayModePtr +qxl_add_mode (qxl_screen_t *qxl, ScrnInfoPtr pScrn, int width, int height, int type) +{ + DisplayModePtr mode; - qxl_switch_mode(scrnIndex, pScrn->currentMode, 0); + mode = screen_create_mode (pScrn, width, height, type); + qxl->x_modes = xf86ModesAdd (qxl->x_modes, mode); - CHECK_POINT(); + return mode; +} - return TRUE; +static DisplayModePtr +qxl_output_get_modes (xf86OutputPtr output) +{ + qxl_output_private *qxl_output = output->driver_private; + DisplayModePtr modes = xf86DuplicateModes (qxl_output->qxl->pScrn, qxl_output->qxl->x_modes); -out: - return FALSE; + if (output && + output->crtc && output->crtc->enabled) + { + DisplayModePtr crtc_mode = &output->crtc->mode; + crtc_mode = screen_create_mode (qxl_output->qxl->pScrn, crtc_mode->HDisplay, crtc_mode->VDisplay, M_T_PREFERRED); + output->crtc->mode = *crtc_mode; + modes = xf86ModesAdd (modes, crtc_mode); + } + + /* xf86ProbeOutputModes owns this memory */ + return modes; } -static Bool -qxl_enter_vt(int scrnIndex, int flags) +static void +qxl_output_destroy (xf86OutputPtr output) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - qxl_screen_t *qxl = pScrn->driverPrivate; + qxl_output_private *qxl_output = output->driver_private; + + xf86DrvMsg (qxl_output->qxl->pScrn->scrnIndex, X_INFO, + "%s", __func__); +} - qxl_save_state(pScrn); - qxl_switch_mode(scrnIndex, pScrn->currentMode, 0); +static void +qxl_output_dpms (xf86OutputPtr output, int mode) +{ +} - if (qxl->vt_surfaces) - { - qxl_surface_cache_replace_all (qxl->surface_cache, qxl->vt_surfaces); +static void +qxl_output_create_resources (xf86OutputPtr output) +{ +} - qxl->vt_surfaces = NULL; - } +static Bool +qxl_output_set_property (xf86OutputPtr output, Atom property, + RRPropertyValuePtr value) +{ + /* EDID data is stored in the "EDID" atom property, we must return + * TRUE here for that. No penalty to say ok to everything else. */ + return TRUE; +} - pScrn->EnableDisableFBAccess (scrnIndex, TRUE); - +static Bool +qxl_output_get_property (xf86OutputPtr output, Atom property) +{ return TRUE; } -static void -qxl_leave_vt(int scrnIndex, int flags) +static xf86OutputStatus +qxl_output_detect (xf86OutputPtr output) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - qxl_screen_t *qxl = pScrn->driverPrivate; + qxl_output_private *qxl_output = output->driver_private; - pScrn->EnableDisableFBAccess (scrnIndex, FALSE); + return qxl_output->status; +} - qxl->vt_surfaces = qxl_surface_cache_evacuate_all (qxl->surface_cache); +static Bool +qxl_output_mode_valid (xf86OutputPtr output, DisplayModePtr pModes) +{ + return MODE_OK; +} - outb(qxl->io_base + QXL_IO_RESET, 0); +static const xf86OutputFuncsRec qxl_output_funcs = { + .dpms = qxl_output_dpms, + .create_resources = qxl_output_create_resources, +#ifdef RANDR_12_INTERFACE + .set_property = qxl_output_set_property, + .get_property = qxl_output_get_property, +#endif + .detect = qxl_output_detect, + .mode_valid = qxl_output_mode_valid, + + .get_modes = qxl_output_get_modes, + .destroy = qxl_output_destroy +}; - qxl_restore_state(pScrn); +static void +qxl_crtc_dpms (xf86CrtcPtr crtc, int mode) +{ } static Bool -qxl_color_setup(ScrnInfoPtr pScrn) +qxl_crtc_set_mode_major (xf86CrtcPtr crtc, DisplayModePtr mode, + Rotation rotation, int x, int y) { - int scrnIndex = pScrn->scrnIndex; - Gamma gzeros = { 0.0, 0.0, 0.0 }; - rgb rzeros = { 0, 0, 0 }; + qxl_crtc_private *crtc_private = crtc->driver_private; + qxl_screen_t * qxl = crtc_private->qxl; - if (!xf86SetDepthBpp(pScrn, 0, 0, 0, Support32bppFb)) - return FALSE; - - if (pScrn->depth != 15 && pScrn->depth != 24) - { - xf86DrvMsg(scrnIndex, X_ERROR, "Depth %d is not supported\n", - pScrn->depth); - return FALSE; - } - xf86PrintDepthBpp(pScrn); - - if (!xf86SetWeight(pScrn, rzeros, rzeros)) - return FALSE; + CHECK_POINT (); - if (!xf86SetDefaultVisual(pScrn, -1)) + if (!crtc_set_mode_major (crtc, mode, rotation, x, y)) return FALSE; - if (!xf86SetGamma(pScrn, gzeros)) - return FALSE; + check_crtc (qxl); + qxl_update_monitors_config (qxl); return TRUE; } static void -print_modes (qxl_screen_t *qxl, int scrnIndex) +qxl_crtc_set_cursor_colors (xf86CrtcPtr crtc, int bg, int fg) { - int i; +} + +static void +qxl_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y) +{ +} + +static void +qxl_crtc_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image) +{ +} + +static void +qxl_crtc_hide_cursor (xf86CrtcPtr crtc) +{ +} + +static void +qxl_crtc_show_cursor (xf86CrtcPtr crtc) +{ +} + +static void +qxl_crtc_gamma_set (xf86CrtcPtr crtc, uint16_t *red, uint16_t *green, + uint16_t *blue, int size) +{ +} + +static void +qxl_crtc_destroy (xf86CrtcPtr crtc) +{ + qxl_crtc_private *crtc_private = crtc->driver_private; + qxl_screen_t * qxl = crtc_private->qxl; - for (i = 0; i < qxl->num_modes; ++i) - { - struct QXLMode *m = qxl->modes + i; - - xf86DrvMsg (scrnIndex, X_INFO, - "%d: %dx%d, %d bits, stride %d, %dmm x %dmm, orientation %d\n", - m->id, m->x_res, m->y_res, m->bits, m->stride, m->x_mili, - m->y_mili, m->orientation); - } + xf86DrvMsg (qxl->pScrn->scrnIndex, X_INFO, "%s\n", __func__); } -#ifndef XSPICE static Bool -qxl_check_device(ScrnInfoPtr pScrn, qxl_screen_t *qxl) +qxl_crtc_lock (xf86CrtcPtr crtc) { - int scrnIndex = pScrn->scrnIndex; - struct QXLRom *rom = qxl->rom; - struct QXLRam *ram_header = (void *)((unsigned long)qxl->ram + rom->ram_header_offset); + qxl_crtc_private *crtc_private = crtc->driver_private; + qxl_screen_t * qxl = crtc_private->qxl; - CHECK_POINT(); + xf86DrvMsg (qxl->pScrn->scrnIndex, X_INFO, "%s\n", __func__); + return TRUE; +} + +static void +qxl_crtc_unlock (xf86CrtcPtr crtc) +{ + qxl_crtc_private *crtc_private = crtc->driver_private; + qxl_screen_t * qxl = crtc_private->qxl; - if (rom->magic != 0x4f525851) { /* "QXRO" little-endian */ - xf86DrvMsg(scrnIndex, X_ERROR, "Bad ROM signature %x\n", rom->magic); - return FALSE; - } + xf86DrvMsg (qxl->pScrn->scrnIndex, X_INFO, "%s\n", __func__); + qxl_update_monitors_config (qxl); +} + +static const xf86CrtcFuncsRec qxl_crtc_funcs = { + .dpms = qxl_crtc_dpms, + .set_mode_major = qxl_crtc_set_mode_major, + .set_cursor_colors = qxl_crtc_set_cursor_colors, + .set_cursor_position = qxl_crtc_set_cursor_position, + .show_cursor = qxl_crtc_show_cursor, + .hide_cursor = qxl_crtc_hide_cursor, + .load_cursor_argb = qxl_crtc_load_cursor_argb, + .lock = qxl_crtc_lock, + .unlock = qxl_crtc_unlock, - xf86DrvMsg(scrnIndex, X_INFO, "Device version %d.%d\n", - rom->id, rom->update_id); + .gamma_set = qxl_crtc_gamma_set, + .destroy = qxl_crtc_destroy, +}; + +static Bool +qxl_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height) +{ + qxl_screen_t *qxl = scrn->driverPrivate; - xf86DrvMsg(scrnIndex, X_INFO, "Compression level %d, log level %d\n", - rom->compression_level, - rom->log_level); + xf86DrvMsg (scrn->scrnIndex, X_INFO, "%s: Placeholder resize %dx%d\n", + __func__, width, height); + if (!qxl_resize_primary (qxl, width, height)) + return FALSE; - xf86DrvMsg(scrnIndex, X_INFO, "%d io pages at 0x%lx\n", - rom->num_pages, (unsigned long)qxl->ram); + scrn->virtualX = width; + scrn->virtualY = height; + + // when starting, no monitor is enabled, and count == 0 + // we want to avoid server/client freaking out with temporary config + if (check_crtc (qxl) != 0) + qxl_update_monitors_config (qxl); - xf86DrvMsg(scrnIndex, X_INFO, "RAM header offset: 0x%x\n", rom->ram_header_offset); - - if (ram_header->magic != 0x41525851) { /* "QXRA" little-endian */ - xf86DrvMsg(scrnIndex, X_ERROR, "Bad RAM signature %x at %p\n", - ram_header->magic, - &ram_header->magic); - return FALSE; - } - - xf86DrvMsg(scrnIndex, X_INFO, "Correct RAM signature %x\n", - ram_header->magic); return TRUE; } -#endif /* !XSPICE */ -static int -qxl_find_native_mode(ScrnInfoPtr pScrn, DisplayModePtr p) +static const xf86CrtcConfigFuncsRec qxl_xf86crtc_config_funcs = { + qxl_xf86crtc_resize +}; + +static void +qxl_init_randr (ScrnInfoPtr pScrn, qxl_screen_t *qxl) { - int i; - qxl_screen_t *qxl = pScrn->driverPrivate; + char name[32]; + qxl_output_private *qxl_output; + qxl_crtc_private * qxl_crtc; + int i; + xf86OutputPtr output; - CHECK_POINT(); + xf86CrtcConfigInit (pScrn, &qxl_xf86crtc_config_funcs); - for (i = 0; i < qxl->num_modes; i++) - { - struct QXLMode *m = qxl->modes + i; - - if (m->x_res == p->HDisplay && - m->y_res == p->VDisplay && - m->bits == pScrn->bitsPerPixel) - { - if (m->bits == 16) - { - /* What QXL calls 16 bit is actually x1r5g5b515 */ - if (pScrn->depth == 15) - return i; - } - else if (m->bits == 32) - { - /* What QXL calls 32 bit is actually x8r8g8b8 */ - if (pScrn->depth == 24) - return i; - } - } - } + /* CHECKME: This is actually redundant, it's overwritten by a later call via + * xf86InitialConfiguration */ + xf86CrtcSetSizeRange (pScrn, 320, 200, 8192, 8192); - return -1; -} - -static ModeStatus -qxl_valid_mode(int scrn, DisplayModePtr p, Bool flag, int pass) -{ - ScrnInfoPtr pScrn = xf86Screens[scrn]; - int scrnIndex = pScrn->scrnIndex; - qxl_screen_t *qxl = pScrn->driverPrivate; - int bpp = pScrn->bitsPerPixel; - int mode_idx; + qxl->crtcs = xnfcalloc (sizeof (xf86CrtcPtr), qxl->num_heads); + qxl->outputs = xnfcalloc (sizeof (xf86OutputPtr), qxl->num_heads); - /* FIXME: I don't think this is necessary now that we report the - * correct amount of video ram? - */ - if (p->HDisplay * p->VDisplay * (bpp/8) > qxl->surface0_size) + for (i = 0 ; i < qxl->num_heads; ++i) { - xf86DrvMsg(scrnIndex, X_INFO, "rejecting mode %d x %d: insufficient memory\n", p->HDisplay, p->VDisplay); - return MODE_MEM; + qxl->crtcs[i] = xf86CrtcCreate (pScrn, &qxl_crtc_funcs); + if (!qxl->crtcs[i]) + xf86DrvMsg (pScrn->scrnIndex, X_ERROR, "failed to create Crtc %d", i); + + qxl_crtc = xnfcalloc (sizeof (qxl_crtc_private), 1); + qxl->crtcs[i]->driver_private = qxl_crtc; + qxl_crtc->head = i; + qxl_crtc->qxl = qxl; + snprintf (name, sizeof (name), "qxl-%d", i); + qxl->outputs[i] = output = xf86OutputCreate (pScrn, &qxl_output_funcs, name); + if (!output) + xf86DrvMsg (pScrn->scrnIndex, X_ERROR, "failed to create Output %d", i); + + output->possible_crtcs = (1 << i); /* bitrange of allowed outputs - do a 1:1 */ + output->possible_clones = 0; /* TODO: not? */ + qxl_output = xnfcalloc (sizeof (qxl_output_private), 1); + output->driver_private = qxl_output; + qxl_output->head = i; + qxl_output->qxl = qxl; + qxl_output->status = XF86OutputStatusConnected; + qxl_crtc->output = output; } - mode_idx = qxl_find_native_mode (pScrn, p); - if (mode_idx == -1) - { - xf86DrvMsg(scrnIndex, X_INFO, "rejecting unknown mode %d x %d\n", p->HDisplay, p->VDisplay); - return MODE_NOMODE; - } - p->Private = (void *)(unsigned long)mode_idx; + qxl->virtual_x = 1024; + qxl->virtual_y = 768; - xf86DrvMsg (scrnIndex, X_INFO, "accepting %d x %d\n", p->HDisplay, p->VDisplay); + pScrn->display->virtualX = qxl->virtual_x; + pScrn->display->virtualY = qxl->virtual_y; - return MODE_OK; + xf86InitialConfiguration (pScrn, TRUE); + /* all crtcs are enabled here, but their mode is 0, + resulting monitor config empty atm */ } -static void qxl_add_mode(ScrnInfoPtr pScrn, int width, int height, int type) +static void +qxl_initialize_x_modes (qxl_screen_t *qxl, ScrnInfoPtr pScrn, + unsigned int *max_x, unsigned int *max_y) { - DisplayModePtr mode; - - /* Skip already present modes */ - for (mode = pScrn->monitor->Modes; mode; mode = mode->next) - if (mode->HDisplay == width && mode->VDisplay == height) - return; - - mode = xnfcalloc(1, sizeof(DisplayModeRec)); - - mode->status = MODE_OK; - mode->type = type; - mode->HDisplay = width; - mode->HSyncStart = (width * 105 / 100 + 7) & ~7; - mode->HSyncEnd = (width * 115 / 100 + 7) & ~7; - mode->HTotal = (width * 130 / 100 + 7) & ~7; - mode->VDisplay = height; - mode->VSyncStart = height + 1; - mode->VSyncEnd = height + 4; - mode->VTotal = height * 1035 / 1000; - mode->Clock = mode->HTotal * mode->VTotal * 60 / 1000; - mode->Flags = V_NHSYNC | V_PVSYNC; - - xf86SetModeDefaultName(mode); - xf86ModesAdd(pScrn->monitor->Modes, mode); + int i; + int size; + + *max_x = *max_y = 0; + /* Create a list of modes used by the qxl_output_get_modes */ + for (i = 0; i < qxl->num_modes; i++) + { + if (qxl->modes[i].orientation == 0) + { + size = qxl->modes[i].x_res * qxl->modes[i].y_res * 4; + if (size > qxl->surface0_size) + { + ErrorF ("skipping mode %dx%d not fitting in surface0", + qxl->modes[i].x_res, qxl->modes[i].y_res); + continue; + } + + qxl_add_mode (qxl, pScrn, qxl->modes[i].x_res, qxl->modes[i].y_res, + M_T_DRIVER); + if (qxl->modes[i].x_res > *max_x) + *max_x = qxl->modes[i].x_res; + if (qxl->modes[i].y_res > *max_y) + *max_y = qxl->modes[i].y_res; + } + } } static Bool -qxl_pre_init(ScrnInfoPtr pScrn, int flags) +qxl_pre_init (ScrnInfoPtr pScrn, int flags) { - int i, scrnIndex = pScrn->scrnIndex; + int scrnIndex = pScrn->scrnIndex; qxl_screen_t *qxl = NULL; ClockRangePtr clockRanges = NULL; - int *linePitches = NULL; - DisplayModePtr mode; - unsigned int max_x = 0, max_y = 0; - + //int *linePitches = NULL; + //DisplayModePtr mode; + unsigned int max_x, max_y; + /* In X server 1.7.5, Xorg -configure will cause this * function to get called without a confScreen. */ if (!pScrn->confScreen) return FALSE; - CHECK_POINT(); - + CHECK_POINT (); + + mspace_set_abort_func (qxl_mspace_abort_func); + mspace_set_print_func (qxl_mspace_print_func); + /* zaphod mode is for suckers and i choose not to implement it */ - if (xf86IsEntityShared(pScrn->entityList[0])) { - xf86DrvMsg(scrnIndex, X_ERROR, "No Zaphod mode for you\n"); + if (xf86IsEntityShared (pScrn->entityList[0])) + { + xf86DrvMsg (scrnIndex, X_ERROR, "No Zaphod mode for you\n"); return FALSE; } if (!pScrn->driverPrivate) - pScrn->driverPrivate = xnfcalloc(sizeof(qxl_screen_t), 1); + pScrn->driverPrivate = xnfcalloc (sizeof (qxl_screen_t), 1); + qxl = pScrn->driverPrivate; - - qxl->entity = xf86GetEntityInfo(pScrn->entityList[0]); + memset (qxl, 0, sizeof (qxl)); + qxl->device_primary = QXL_DEVICE_PRIMARY_UNDEFINED; + qxl->pScrn = pScrn; + qxl->x_modes = NULL; + qxl->entity = xf86GetEntityInfo (pScrn->entityList[0]); #ifndef XSPICE - qxl->pci = xf86GetPciInfoForEntity(qxl->entity->index); + qxl->pci = xf86GetPciInfoForEntity (qxl->entity->index); #ifndef XSERVER_LIBPCIACCESS - qxl->pci_tag = pciTag(qxl->pci->bus, qxl->pci->device, qxl->pci->func); + qxl->pci_tag = pciTag (qxl->pci->bus, qxl->pci->device, qxl->pci->func); #endif + if (qxl->pci->revision < 4) + { + ErrorF ("Ignoring monitor config, device revision < 4\n"); + } #endif /* XSPICE */ - pScrn->monitor = pScrn->confScreen->monitor; - if (!qxl_color_setup(pScrn)) + if (!qxl_color_setup (pScrn)) goto out; /* option parsing and card differentiation */ - xf86CollectOptions(pScrn, NULL); - memcpy(qxl->options, DefaultOptions, sizeof(DefaultOptions)); - xf86ProcessOptions(scrnIndex, pScrn->options, qxl->options); - + xf86CollectOptions (pScrn, NULL); + memcpy (qxl->options, DefaultOptions, sizeof (DefaultOptions)); + xf86ProcessOptions (scrnIndex, pScrn->options, qxl->options); + qxl->enable_image_cache = - xf86ReturnOptValBool (qxl->options, OPTION_ENABLE_IMAGE_CACHE, TRUE); + xf86ReturnOptValBool (qxl->options, OPTION_ENABLE_IMAGE_CACHE, TRUE); qxl->enable_fallback_cache = - xf86ReturnOptValBool (qxl->options, OPTION_ENABLE_FALLBACK_CACHE, TRUE); + xf86ReturnOptValBool (qxl->options, OPTION_ENABLE_FALLBACK_CACHE, TRUE); qxl->enable_surfaces = - xf86ReturnOptValBool (qxl->options, OPTION_ENABLE_SURFACES, TRUE); - - xf86DrvMsg(scrnIndex, X_INFO, "Offscreen Surfaces: %s\n", - qxl->enable_surfaces? "Enabled" : "Disabled"); - xf86DrvMsg(scrnIndex, X_INFO, "Image Cache: %s\n", - qxl->enable_image_cache? "Enabled" : "Disabled"); - xf86DrvMsg(scrnIndex, X_INFO, "Fallback Cache: %s\n", - qxl->enable_fallback_cache? "Enabled" : "Disabled"); + xf86ReturnOptValBool (qxl->options, OPTION_ENABLE_SURFACES, TRUE); + qxl->num_heads = + get_int_option (qxl->options, OPTION_NUM_HEADS, "QXL_NUM_HEADS"); + + xf86DrvMsg (scrnIndex, X_INFO, "Offscreen Surfaces: %s\n", + qxl->enable_surfaces ? "Enabled" : "Disabled"); + xf86DrvMsg (scrnIndex, X_INFO, "Image Cache: %s\n", + qxl->enable_image_cache ? "Enabled" : "Disabled"); + xf86DrvMsg (scrnIndex, X_INFO, "Fallback Cache: %s\n", + qxl->enable_fallback_cache ? "Enabled" : "Disabled"); - if (!qxl_map_memory(qxl, scrnIndex)) + if (!qxl_map_memory (qxl, scrnIndex)) goto out; #ifndef XSPICE - if (!qxl_check_device(pScrn, qxl)) + if (!qxl_check_device (pScrn, qxl)) goto out; #else - xspice_init_qxl_ram(qxl); /* initialize the rings */ + xspice_init_qxl_ram (qxl); /* initialize the rings */ #endif pScrn->videoRam = (qxl->rom->num_pages * 4096) / 1024; - xf86DrvMsg(scrnIndex, X_INFO, "%d KB of video RAM\n", pScrn->videoRam); - xf86DrvMsg(scrnIndex, X_INFO, "%d surfaces\n", qxl->rom->n_surfaces); - + xf86DrvMsg (scrnIndex, X_INFO, "%d KB of video RAM\n", pScrn->videoRam); + xf86DrvMsg (scrnIndex, X_INFO, "%d surfaces\n", qxl->rom->n_surfaces); + /* ddc stuff here */ - clockRanges = xnfcalloc(sizeof(ClockRange), 1); + clockRanges = xnfcalloc (sizeof (ClockRange), 1); clockRanges->next = NULL; clockRanges->minClock = 10000; clockRanges->maxClock = 400000; @@ -1479,100 +2450,100 @@ pScrn->progClock = TRUE; /* override QXL monitor stuff */ - if (pScrn->monitor->nHsync <= 0) { + if (pScrn->monitor->nHsync <= 0) + { pScrn->monitor->hsync[0].lo = 29.0; pScrn->monitor->hsync[0].hi = 160.0; pScrn->monitor->nHsync = 1; } - if (pScrn->monitor->nVrefresh <= 0) { + if (pScrn->monitor->nVrefresh <= 0) + { pScrn->monitor->vrefresh[0].lo = 50; pScrn->monitor->vrefresh[0].hi = 75; pScrn->monitor->nVrefresh = 1; } - /* Add any modes not in xorg's default mode list */ - for (i = 0; i < qxl->num_modes; i++) - if (qxl->modes[i].orientation == 0) { - qxl_add_mode(pScrn, qxl->modes[i].x_res, qxl->modes[i].y_res, - M_T_DRIVER); - if (qxl->modes[i].x_res > max_x) - max_x = qxl->modes[i].x_res; - if (qxl->modes[i].y_res > max_y) - max_y = qxl->modes[i].y_res; - } - - if (pScrn->display->virtualX == 0 && pScrn->display->virtualY == 0) { - /* It is possible for the largest x + largest y size combined leading - to a virtual size which will not fit into the framebuffer when this - happens we prefer max width and make height as large as possible */ - if (max_x * max_y * (pScrn->bitsPerPixel / 8) > - qxl->rom->surface0_area_size) - pScrn->display->virtualY = qxl->rom->surface0_area_size / - (max_x * (pScrn->bitsPerPixel / 8)); - else - pScrn->display->virtualY = max_y; - - pScrn->display->virtualX = max_x; - } - - if (0 >= xf86ValidateModes(pScrn, pScrn->monitor->Modes, - pScrn->display->modes, clockRanges, linePitches, - 128, max_x, 128 * 4, 128, max_y, - pScrn->display->virtualX, - pScrn->display->virtualY, - 128 * 1024 * 1024, LOOKUP_BEST_REFRESH)) + qxl_initialize_x_modes (qxl, pScrn, &max_x, &max_y); + +#if 0 + if (pScrn->display->virtualX == 0 && pScrn->display->virtualY == 0) + { + /* It is possible for the largest x + largest y size combined leading + to a virtual size which will not fit into the framebuffer when this + happens we prefer max width and make height as large as possible */ + if (max_x * max_y * (pScrn->bitsPerPixel / 8) > + qxl->rom->surface0_area_size) + pScrn->display->virtualY = qxl->rom->surface0_area_size / + (max_x * (pScrn->bitsPerPixel / 8)); + else + pScrn->display->virtualY = max_y; + + pScrn->display->virtualX = max_x; + } + + if (0 >= xf86ValidateModes (pScrn, pScrn->monitor->Modes, + pScrn->display->modes, clockRanges, linePitches, + 128, max_x, 128 * 4, 128, max_y, + pScrn->display->virtualX, + pScrn->display->virtualY, + 128 * 1024 * 1024, LOOKUP_BEST_REFRESH)) goto out; +#endif + + CHECK_POINT (); - CHECK_POINT(); + xf86PruneDriverModes (pScrn); - xf86PruneDriverModes(pScrn); - pScrn->currentMode = pScrn->modes; + qxl_init_randr (pScrn, qxl); +#if 0 /* If no modes are specified in xorg.conf, default to 1024x768 */ if (pScrn->display->modes == NULL || pScrn->display->modes[0] == NULL) - for (mode = pScrn->modes; mode; mode = mode->next) - if (mode->HDisplay == 1024 && mode->VDisplay == 768) { - pScrn->currentMode = mode; - break; - } - - xf86PrintModes(pScrn); - xf86SetDpi(pScrn, 0, 0); + for (mode = pScrn->modes; mode; mode = mode->next) + if (mode->HDisplay == 1024 && mode->VDisplay == 768) + { + pScrn->currentMode = mode; + break; + } +#endif + + //xf86PrintModes (pScrn); + xf86SetDpi (pScrn, 0, 0); - if (!xf86LoadSubModule(pScrn, "fb") + if (!xf86LoadSubModule (pScrn, "fb") #ifndef XSPICE - || !xf86LoadSubModule(pScrn, "ramdac") - || !xf86LoadSubModule(pScrn, "vgahw") + || !xf86LoadSubModule (pScrn, "ramdac") + || !xf86LoadSubModule (pScrn, "vgahw") #endif - ) + ) { goto out; } print_modes (qxl, scrnIndex); - + #ifndef XSPICE /* VGA hardware initialisation */ - if (!vgaHWGetHWRec(pScrn)) - return FALSE; - vgaHWSetStdFuncs(VGAHWPTR(pScrn)); + if (!vgaHWGetHWRec (pScrn)) + return FALSE; + vgaHWSetStdFuncs (VGAHWPTR (pScrn)); #endif - + /* hate */ - qxl_unmap_memory(qxl, scrnIndex); + qxl_unmap_memory (qxl); - CHECK_POINT(); + CHECK_POINT (); - xf86DrvMsg(scrnIndex, X_INFO, "PreInit complete\n"); + xf86DrvMsg (scrnIndex, X_INFO, "PreInit complete\n"); #ifdef GIT_VERSION - xf86DrvMsg(scrnIndex, X_INFO, "git commit %s\n", GIT_VERSION); + xf86DrvMsg (scrnIndex, X_INFO, "git commit %s\n", GIT_VERSION); #endif return TRUE; out: if (clockRanges) - free(clockRanges); + free (clockRanges); if (qxl) - free(qxl); + free (qxl); return FALSE; } @@ -1593,140 +2564,143 @@ PCI_VENDOR_RED_HAT, PCI_CHIP_QXL_01FF, PCI_MATCH_ANY, PCI_MATCH_ANY, 0x00000000, 0x00000000, CHIP_QXL_1 }, - + { 0 }, }; #endif -static SymTabRec qxlChips[] = -{ - { PCI_CHIP_QXL_0100, "QXL 1", }, +static SymTabRec qxlChips[] = { + { PCI_CHIP_QXL_0100, "QXL 1", }, { -1, NULL } }; #ifndef XSERVER_LIBPCIACCESS -static PciChipsets qxlPciChips[] = -{ - { PCI_CHIP_QXL_0100, PCI_CHIP_QXL_0100, RES_SHARED_VGA }, +static PciChipsets qxlPciChips[] = { + { PCI_CHIP_QXL_0100, PCI_CHIP_QXL_0100, RES_SHARED_VGA }, { -1, -1, RES_UNDEFINED } }; #endif #endif /* !XSPICE */ static void -qxl_identify(int flags) +qxl_identify (int flags) { #ifndef XSPICE - xf86PrintChipsets("qxl", "Driver for QXL virtual graphics", qxlChips); + xf86PrintChipsets ("qxl", "Driver for QXL virtual graphics", qxlChips); #endif } static void -qxl_init_scrn(ScrnInfoPtr pScrn) +qxl_init_scrn (ScrnInfoPtr pScrn) { pScrn->driverVersion = 0; - pScrn->driverName = pScrn->name = QXL_DRIVER_NAME; - pScrn->PreInit = qxl_pre_init; - pScrn->ScreenInit = qxl_screen_init; - pScrn->SwitchMode = qxl_switch_mode; - pScrn->ValidMode = qxl_valid_mode; - pScrn->EnterVT = qxl_enter_vt; - pScrn->LeaveVT = qxl_leave_vt; + pScrn->driverName = QXL_DRIVER_NAME; + pScrn->name = QXL_DRIVER_NAME; + pScrn->PreInit = qxl_pre_init; + pScrn->ScreenInit = qxl_screen_init; + pScrn->SwitchMode = qxl_switch_mode; + pScrn->ValidMode = NULL, + pScrn->EnterVT = qxl_enter_vt; + pScrn->LeaveVT = qxl_leave_vt; } #ifdef XSPICE static Bool -qxl_probe(struct _DriverRec *drv, int flags) +qxl_probe (struct _DriverRec *drv, int flags) { - ScrnInfoPtr pScrn; - int entityIndex; + ScrnInfoPtr pScrn; + int entityIndex; EntityInfoPtr pEnt; - GDevPtr* device; - - if (flags & PROBE_DETECT) { - return TRUE; - } - - pScrn = xf86AllocateScreen(drv, flags); - qxl_init_scrn(pScrn); - - xf86MatchDevice(QXL_DRIVER_NAME, &device); - entityIndex = xf86ClaimNoSlot(drv, 0, device[0], TRUE); - pEnt = xf86GetEntityInfo(entityIndex); + GDevPtr* device; + + if (flags & PROBE_DETECT) + return TRUE; + + pScrn = xf86AllocateScreen (drv, flags); + qxl_init_scrn (pScrn); + + xf86MatchDevice (QXL_DRIVER_NAME, &device); + entityIndex = xf86ClaimNoSlot (drv, 0, device[0], TRUE); + pEnt = xf86GetEntityInfo (entityIndex); pEnt->driver = drv; - - xf86AddEntityToScreen(pScrn, entityIndex); - + + xf86AddEntityToScreen (pScrn, entityIndex); + return TRUE; } -static Bool qxl_driver_func(ScrnInfoPtr screen_info_ptr, xorgDriverFuncOp xorg_driver_func_op, pointer hw_flags) + +static Bool qxl_driver_func (ScrnInfoPtr screen_info_ptr, xorgDriverFuncOp xorg_driver_func_op, pointer hw_flags) { *(xorgHWFlags*)hw_flags = (xorgHWFlags)HW_SKIP_CONSOLE; return TRUE; } + #else /* normal, not XSPICE */ #ifndef XSERVER_LIBPCIACCESS static Bool -qxl_probe(DriverPtr drv, int flags) +qxl_probe (DriverPtr drv, int flags) { - int i, numUsed; - int numDevSections; - int *usedChips; + int i, numUsed; + int numDevSections; + int * usedChips; GDevPtr *devSections; - - if ((numDevSections = xf86MatchDevice(QXL_NAME, &devSections)) <= 0) + + if ((numDevSections = xf86MatchDevice (QXL_NAME, &devSections)) <= 0) return FALSE; - - if (!xf86GetPciVideoInfo()) + + if (!xf86GetPciVideoInfo ()) return FALSE; - - numUsed = xf86MatchPciInstances(QXL_NAME, PCI_VENDOR_RED_HAT, - qxlChips, qxlPciChips, - devSections, numDevSections, - drv, &usedChips); - - xfree(devSections); - - if (numUsed < 0) { - xfree(usedChips); + + numUsed = xf86MatchPciInstances (QXL_NAME, PCI_VENDOR_RED_HAT, + qxlChips, qxlPciChips, + devSections, numDevSections, + drv, &usedChips); + + xfree (devSections); + + if (numUsed < 0) + { + xfree (usedChips); return FALSE; } - - if (flags & PROBE_DETECT) { - xfree(usedChips); + + if (flags & PROBE_DETECT) + { + xfree (usedChips); return TRUE; } - - for (i = 0; i < numUsed; i++) { + + for (i = 0; i < numUsed; i++) + { ScrnInfoPtr pScrn = NULL; - if ((pScrn = xf86ConfigPciEntity(pScrn, 0, usedChips[i], qxlPciChips, - 0, 0, 0, 0, 0))) - qxl_init_scrn(pScrn); + if ((pScrn = xf86ConfigPciEntity (pScrn, 0, usedChips[i], qxlPciChips, + 0, 0, 0, 0, 0))) + qxl_init_scrn (pScrn); } - - xfree(usedChips); + + xfree (usedChips); return TRUE; } #else /* pciaccess */ static Bool -qxl_pci_probe(DriverPtr drv, int entity, struct pci_device *dev, intptr_t match) +qxl_pci_probe (DriverPtr drv, int entity, struct pci_device *dev, intptr_t match) { qxl_screen_t *qxl; - ScrnInfoPtr pScrn = xf86ConfigPciEntity(NULL, 0, entity, NULL, NULL, - NULL, NULL, NULL, NULL); - + ScrnInfoPtr pScrn = xf86ConfigPciEntity (NULL, 0, entity, NULL, NULL, + NULL, NULL, NULL, NULL); + if (!pScrn) return FALSE; - + if (!pScrn->driverPrivate) - pScrn->driverPrivate = xnfcalloc(sizeof(qxl_screen_t), 1); + pScrn->driverPrivate = xnfcalloc (sizeof (qxl_screen_t), 1); qxl = pScrn->driverPrivate; qxl->pci = dev; - - qxl_init_scrn(pScrn); - + + qxl_init_scrn (pScrn); + return TRUE; } @@ -1757,25 +2731,30 @@ }; static pointer -qxl_setup(pointer module, pointer opts, int *errmaj, int *errmin) +qxl_setup (pointer module, pointer opts, int *errmaj, int *errmin) { static Bool loaded = FALSE; - if (!loaded) { + if (!loaded) + { loaded = TRUE; - xf86AddDriver(&qxl_driver, module, HaveDriverFuncs); + xf86AddDriver (&qxl_driver, module, HaveDriverFuncs); #ifdef XSPICE - xspice_add_input_drivers(module); + xspice_add_input_drivers (module); #endif return (void *)1; - } else { + } + else + { if (errmaj) *errmaj = LDR_ONCEONLY; + return NULL; } } -static XF86ModuleVersionInfo qxl_module_info = { +static XF86ModuleVersionInfo qxl_module_info = +{ QXL_DRIVER_NAME, MODULEVENDORSTRING, MODINFOSTRING1, diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl_edid.c xserver-xorg-video-qxl-0.1.0/src/qxl_edid.c --- xserver-xorg-video-qxl-0.0.17/src/qxl_edid.c 1970-01-01 00:00:00.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl_edid.c 2012-09-05 16:52:20.000000000 +0000 @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2012 Red Hat, Inc. + * + * ------------------------------------------------------------------- + * This code is Based on Virtual Box OSE edid.c, with the following copyright + * notice: + * + * Copyright (C) 2006-2010 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on drmmode_display.c from the X.Org xf86-video-intel + * driver with the following copyright notice: + * + * Copyright © 2007 Red Hat, Inc. + * + * 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 (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 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. + * + * Authors: + * Dave Airlie + */ + +#include +#include +#include +#include + +#include "qxl.h" + +enum { EDID_SIZE = 128 }; + +typedef struct __attribute__ ((__packed__)) { + unsigned char header[8]; + unsigned char manufacturer[2]; + unsigned char product_code[2]; + unsigned char serial[4]; + unsigned char week; + unsigned char year; + unsigned char version[2]; + unsigned char capabilities; + unsigned char horizontal_resolution; + unsigned char vertical_resolution; + unsigned char gamma; + unsigned char features; + unsigned char chromaticity[10]; + unsigned char default_timings[3]; + unsigned char standard_timings[16]; + unsigned char descriptor1[18]; + unsigned char descriptor2[18]; + unsigned char descriptor3[18]; + unsigned char descriptor4[18]; + unsigned char num_extensions; + unsigned char neg_checksum; +} EDIDv13; + +int qxl_compile_time_test_edid_size[(sizeof(EDIDv13) == EDID_SIZE) - 1]; + +static const EDIDv13 edid_base = +{ + .header = {0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, + /* hex(sum([(ord(x) - ord('A') + 1) * 2**(5*i) for i,x in enumerate(reversed('QXL'))])) */ + .manufacturer = {0x47, 0x0c}, /* (QXL) 5 bit per char (A-Z), last bit 0 */ + .product_code = {0x00, 0x00}, + .serial = {0x00, 0x00, 0x00, 0x00}, /* set differently per mode */ + .year = 0x01, + .week = 0x00, + .version = {0x01, 0x03}, + .capabilities = 0x80, /* digital */ + .horizontal_resolution = 0x00, /* horiz. res in cm, zero for projectors */ + .vertical_resolution = 0x00, /* vert. res in cm */ + .gamma = 0x78, /* display gamma (120 == 2.2). Should we ask the host for this? */ + .features = 0xEE, /* features (standby, suspend, off, RGB, standard colour space, + * preferred timing mode) */ + .chromaticity = {0xEE, 0x91, 0xA3, 0x54, 0x4C, 0x99, 0x26, 0x0F, 0x50, 0x54}, + /* chromaticity for standard colour space - should we ask the host? */ + .default_timings = {0x00, 0x00, 0x00}, /* no default timings */ + .standard_timings = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01}, /* no standard timings */ + .descriptor1 = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* descriptor block 1 goes here */ + .descriptor2 = {0x00, 0x00, 0x00, 0xFD, 0x00, /* descriptor block 2, monitor ranges */ + 0x00, 0xC8, 0x00, 0xC8, 0x64, 0x00, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}, + /* 0-200Hz vertical, 0-200KHz horizontal, 1000MHz pixel clock */ + .descriptor3 = {0x00, 0x00, 0x00, 0xFC, 0x00, /* descriptor block 3, monitor name */ + 'Q', 'X', 'L', ' ', '1', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, + .descriptor4 = {0x00, 0x00, 0x00, 0x10, 0x00, /* descriptor block 4: dummy data */ + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}, + .num_extensions = 0x00, /* number of extensions to follow */ + .neg_checksum = 0x00 /* checksum goes here */ +}; + +static void fillDescBlockTimings(unsigned char *pchDescBlock, + DisplayModePtr mode) +{ + struct detailed_timings timing; + + timing.clock = mode->Clock * 1000; + timing.h_active = mode->HDisplay; + timing.h_blanking = mode->HTotal - mode->HDisplay; + timing.v_active = mode->VDisplay; + timing.v_blanking = mode->VTotal - mode->VDisplay; + timing.h_sync_off = mode->HSyncStart - mode->HDisplay; + timing.h_sync_width = mode->HSyncEnd - mode->HSyncStart; + timing.v_sync_off = mode->VSyncStart - mode->VDisplay; + timing.v_sync_width = mode->VSyncEnd - mode->VSyncStart; + pchDescBlock[0] = (timing.clock / 10000) & 0xff; + pchDescBlock[1] = (timing.clock / 10000) >> 8; + pchDescBlock[2] = timing.h_active & 0xff; + pchDescBlock[3] = timing.h_blanking & 0xff; + pchDescBlock[4] = (timing.h_active >> 4) & 0xf0; + pchDescBlock[4] |= (timing.h_blanking >> 8) & 0xf; + pchDescBlock[5] = timing.v_active & 0xff; + pchDescBlock[6] = timing.v_blanking & 0xff; + pchDescBlock[7] = (timing.v_active >> 4) & 0xf0; + pchDescBlock[7] |= (timing.v_blanking >> 8) & 0xf; + pchDescBlock[8] = timing.h_sync_off & 0xff; + pchDescBlock[9] = timing.h_sync_width & 0xff; + pchDescBlock[10] = (timing.v_sync_off << 4) & 0xf0; + pchDescBlock[10] |= timing.v_sync_width & 0xf; + pchDescBlock[11] = (timing.h_sync_off >> 2) & 0xC0; + pchDescBlock[11] |= (timing.h_sync_width >> 4) & 0x30; + pchDescBlock[11] |= (timing.v_sync_off >> 2) & 0xC; + pchDescBlock[11] |= (timing.v_sync_width >> 4) & 0x3; + pchDescBlock[12] = pchDescBlock[13] = pchDescBlock[14] + = pchDescBlock[15] = pchDescBlock[16] + = pchDescBlock[17] = 0; +} + +static void setEDIDChecksum(EDIDv13 *edid) +{ + unsigned i, sum = 0; + unsigned char *p = (unsigned char *)edid; + + for (i = 0; i < EDID_SIZE - 1; ++i) + sum += p[i]; + edid->neg_checksum = (0x100 - (sum & 0xFF)) & 0xFF; +} + +/** + * Construct an EDID for an output given a preferred mode. The main reason for + * doing this is to confound gnome-settings-deamon which tries to reset the + * last mode configuration if the same monitors are plugged in again, which is + * a reasonable thing to do but not what we want in a VM. We evily store + * the (empty) raw EDID data at the end of the structure so that it gets + * freed automatically along with the structure. + */ +Bool qxl_output_edid_set(xf86OutputPtr output, int head, DisplayModePtr mode) +{ + unsigned char *pch; + EDIDv13 *edid; + xf86MonPtr edid_mon; + int eol_pos; + + pch = calloc(1, sizeof(xf86Monitor) + EDID_SIZE); + if (!pch) + { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, + "Can't allocate memory for EDID structure.\n"); + return FALSE; + } + edid = (EDIDv13 *)(pch + sizeof(xf86Monitor)); + *edid = edid_base; + edid->serial[0] = mode ? mode->HDisplay & 0xff : 0x00; + edid->serial[1] = mode ? mode->HDisplay >> 8 : 0x00; + edid->serial[2] = mode ? mode->VDisplay & 0xff : 0x00; + edid->serial[3] = mode ? mode->VDisplay >> 8 : 0x00; + snprintf((char *)&edid->descriptor3[5], 12, "QXL %d\n%n", head + 1, &eol_pos); + edid->descriptor3[5 + eol_pos] = ' '; + + if (mode) { + fillDescBlockTimings(edid->descriptor1, mode); + } + setEDIDChecksum(edid); + edid_mon = xf86InterpretEDID(output->scrn->scrnIndex, (unsigned char *)edid); + if (!edid_mon) + { + free(pch); + return FALSE; + } + memcpy(pch, edid_mon, sizeof(xf86Monitor)); + free(edid_mon); + edid_mon = (xf86MonPtr)pch; + xf86OutputSetEDID(output, edid_mon); + return TRUE; +} diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl_image.c xserver-xorg-video-qxl-0.1.0/src/qxl_image.c --- xserver-xorg-video-qxl-0.0.17/src/qxl_image.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl_image.c 2012-09-07 03:18:50.000000000 +0000 @@ -24,6 +24,10 @@ * \author Søren Sandmann */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -134,7 +138,7 @@ struct QXLImage *image; struct QXLDataChunk *head; struct QXLDataChunk *tail; - int dest_stride = width * Bpp; + int dest_stride = (width * Bpp + 3) & (~3); int h; data += y * stride + x * Bpp; @@ -156,7 +160,7 @@ int chunk_size = MAX (512 * 512, dest_stride); int n_lines = MIN ((chunk_size / dest_stride), h); QXLDataChunk *chunk = - qxl_allocnf (qxl, sizeof *chunk + n_lines * dest_stride); + qxl_allocnf (qxl, sizeof *chunk + n_lines * dest_stride, "image data"); chunk->data_size = n_lines * dest_stride; hash = hash_and_copy (data, stride, @@ -183,7 +187,7 @@ } /* Image */ - image = qxl_allocnf (qxl, sizeof *image); + image = qxl_allocnf (qxl, sizeof *image, "image struct"); image->descriptor.id = 0; image->descriptor.type = SPICE_IMAGE_TYPE_BITMAP; @@ -198,11 +202,11 @@ } else if (Bpp == 1) { - image->bitmap.format = SPICE_BITMAP_FMT_8BIT; + image->bitmap.format = SPICE_BITMAP_FMT_8BIT_A; } else if (Bpp == 4) { - image->bitmap.format = SPICE_BITMAP_FMT_32BIT; + image->bitmap.format = SPICE_BITMAP_FMT_RGBA; } else { @@ -212,14 +216,10 @@ image->bitmap.flags = SPICE_BITMAP_FLAGS_TOP_DOWN; image->bitmap.x = width; image->bitmap.y = height; - image->bitmap.stride = width * Bpp; + image->bitmap.stride = dest_stride; image->bitmap.palette = 0; image->bitmap.data = physical_address (qxl, head, qxl->main_mem_slot); -#if 0 - ErrorF ("%p has size %d %d\n", image, width, height); -#endif - /* Add to hash table if caching is enabled */ if ((fallback && qxl->enable_fallback_cache) || (!fallback && qxl->enable_image_cache)) @@ -276,10 +276,10 @@ chunk = virtual->next_chunk; - qxl_free (qxl->mem, virtual); + qxl_free (qxl->mem, virtual, "image data"); } - qxl_free (qxl->mem, image); + qxl_free (qxl->mem, image, "image struct"); } void diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl_mem.c xserver-xorg-video-qxl-0.1.0/src/qxl_mem.c --- xserver-xorg-video-qxl-0.0.17/src/qxl_mem.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl_mem.c 2012-09-07 03:18:50.000000000 +0000 @@ -20,16 +20,51 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + #include "qxl.h" #include "mspace.h" +#ifdef DEBUG_QXL_MEM +#include +#endif + struct qxl_mem { mspace space; void * base; unsigned long n_bytes; +#ifdef DEBUG_QXL_MEM + size_t used_initial; + int unverifiable; + int missing; +#endif }; +#ifdef DEBUG_QXL_MEM +void +qxl_mem_unverifiable(struct qxl_mem *mem) +{ + mem->unverifiable = 1; +} +#endif + +static void +errout (void *data, const char *format, ...) +{ + va_list va; + + va_start (va, format); + + VErrorF (format, va); + + va_end (va); +} + struct qxl_mem * qxl_mem_create (void *base, unsigned long n_bytes) @@ -42,11 +77,24 @@ ErrorF ("memory space from %p to %p\n", base, (char *)base + n_bytes); + mspace_set_print_func (errout); + mem->space = create_mspace_with_base (base, n_bytes, 0, NULL); mem->base = base; mem->n_bytes = n_bytes; +#ifdef DEBUG_QXL_MEM + { + size_t used; + + mspace_malloc_stats_return(mem->space, NULL, NULL, &used); + mem->used_initial = used; + mem->unverifiable = 0; + mem->missing = 0; + } +#endif + out: return mem; @@ -57,27 +105,57 @@ const char *header) { ErrorF ("%s\n", header); - + mspace_malloc_stats (mem->space); } void * qxl_alloc (struct qxl_mem *mem, - unsigned long n_bytes) + unsigned long n_bytes, + const char *name) { - return mspace_malloc (mem->space, n_bytes); + void *addr = mspace_malloc (mem->space, n_bytes); + +#ifdef DEBUG_QXL_MEM + VALGRIND_MALLOCLIKE_BLOCK(addr, n_bytes, 0, 0); +#ifdef DEBUG_QXL_MEM_VERBOSE + fprintf(stderr, "alloc %p: %ld (%s)\n", addr, n_bytes, name); +#endif +#endif + return addr; } void qxl_free (struct qxl_mem *mem, - void *d) + void *d, + const char * name) { +#if 0 + ErrorF ("%p <= free %s\n", d, name); +#endif mspace_free (mem->space, d); +#ifdef DEBUG_QXL_MEM +#ifdef DEBUG_QXL_MEM_VERBOSE + fprintf(stderr, "free %p %s\n", d, name); +#endif + VALGRIND_FREELIKE_BLOCK(d, 0); +#endif } void qxl_mem_free_all (struct qxl_mem *mem) { +#ifdef DEBUG_QXL_MEM + size_t maxfp, fp, used; + + if (mem->space) + { + mspace_malloc_stats_return(mem->space, &maxfp, &fp, &used); + mem->missing = used - mem->used_initial; + ErrorF ("untracked %zd bytes (%s)", used - mem->used_initial, + mem->unverifiable ? "marked unverifiable" : "oops"); + } +#endif mem->space = create_mspace_with_base (mem->base, mem->n_bytes, 0, NULL); } diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl_option_helpers.c xserver-xorg-video-qxl-0.1.0/src/qxl_option_helpers.c --- xserver-xorg-video-qxl-0.0.17/src/qxl_option_helpers.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl_option_helpers.c 2012-07-25 16:01:01.000000000 +0000 @@ -1,3 +1,7 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl_ring.c xserver-xorg-video-qxl-0.1.0/src/qxl_ring.c --- xserver-xorg-video-qxl-0.0.17/src/qxl_ring.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl_ring.c 2012-09-05 16:52:20.000000000 +0000 @@ -23,6 +23,10 @@ /** \file qxl_ring.c * \author Søren Sandmann */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -128,3 +132,23 @@ mem_barrier(); } } + +void +qxl_ring_request_notify (struct qxl_ring *ring) +{ + ring->ring->header.notify_on_prod = ring->ring->header.prod + 1; + ErrorF("%s: requesting notify on prod %d\n", __func__, + ring->ring->header.notify_on_prod); +} + +int +qxl_ring_cons (struct qxl_ring *ring) +{ + return ring->ring->header.cons; +} + +int +qxl_ring_prod (struct qxl_ring *ring) +{ + return ring->ring->header.prod; +} diff -Nru xserver-xorg-video-qxl-0.0.17/src/qxl_surface.c xserver-xorg-video-qxl-0.1.0/src/qxl_surface.c --- xserver-xorg-video-qxl-0.0.17/src/qxl_surface.c 2012-03-15 17:41:26.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/qxl_surface.c 2012-09-07 03:18:50.000000000 +0000 @@ -43,8 +43,18 @@ * which puts the surface into the 'free' state. * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "qxl.h" +#ifdef DEBUG_SURFACE_LIFECYCLE +#include + +static FILE* surface_log; +#endif + typedef struct evacuated_surface_t evacuated_surface_t; struct qxl_surface_t @@ -72,11 +82,24 @@ int ref_count; PixmapPtr pixmap; - + + struct evacuated_surface_t *evacuated; + union { qxl_surface_t *copy_src; Pixel solid_pixel; + + struct + { + int op; + PicturePtr src_picture; + PicturePtr mask_picture; + PicturePtr dest_picture; + qxl_surface_t *src; + qxl_surface_t *mask; + qxl_surface_t *dest; + } composite; } u; }; @@ -86,6 +109,7 @@ PixmapPtr pixmap; int bpp; + evacuated_surface_t *prev; evacuated_surface_t *next; }; @@ -115,15 +139,59 @@ qxl_surface_t *cached_surfaces[N_CACHED_SURFACES]; }; +#ifdef DEBUG_SURFACE_LIFECYCLE +static void debug_surface_open(void) +{ + if (surface_log) + return; + surface_log = fopen("/tmp/xf86-video-qxl.surface.log", "w+"); + if (!surface_log) + { + fprintf(stderr, "error creating surface log file (DEBUG_SURFACE_LIFECYCLE)\n"); + exit(-1); + } +} + +static int surface_count(qxl_surface_t *surface) +{ + int i; + + for (i = 0; surface ;++i, surface = surface->next); + return i; +} + +static void debug_surface_log(surface_cache_t *cache) +{ + int live_n, free_n; + + debug_surface_open(); + live_n = surface_count(cache->live_surfaces); + free_n = surface_count(cache->free_surfaces); + fprintf(surface_log, "live,free,sum = %d, %d, %d\n", live_n, free_n, + live_n + free_n); + fflush(surface_log); +} + +#else +#define debug_surface_log(cache) +#endif + + static Bool surface_cache_init (surface_cache_t *cache, qxl_screen_t *qxl) { int n_surfaces = qxl->rom->n_surfaces; int i; - cache->all_surfaces = calloc (n_surfaces, sizeof (qxl_surface_t)); if (!cache->all_surfaces) - return FALSE; + { + /* all_surfaces is not freed when evacuating, since surfaces are still + * tied to pixmaps that may be destroyed after evacuation before + * recreation */ + cache->all_surfaces = calloc (n_surfaces, sizeof (qxl_surface_t)); + if (!cache->all_surfaces) + return FALSE; + } memset (cache->all_surfaces, 0, n_surfaces * sizeof (qxl_surface_t)); memset (cache->cached_surfaces, 0, N_CACHED_SURFACES * sizeof (qxl_surface_t *)); @@ -137,6 +205,7 @@ cache->all_surfaces[i].cache = cache; cache->all_surfaces[i].dev_image = NULL; cache->all_surfaces[i].host_image = NULL; + cache->all_surfaces[i].evacuated = NULL; REGION_INIT ( NULL, &(cache->all_surfaces[i].access_region), (BoxPtr)NULL, 0); @@ -161,6 +230,7 @@ if (!cache) return NULL; + memset(cache, 0, sizeof(*cache)); cache->qxl = qxl; if (!surface_cache_init (cache, qxl)) { @@ -243,7 +313,7 @@ break; } } - + static qxl_surface_t * surface_get_from_cache (surface_cache_t *cache, int width, int height, int bpp) { @@ -278,12 +348,18 @@ qxl_surface_t *surface = cache->all_surfaces + id; n_live--; - qxl_free (cache->qxl->surf_mem, surface->address); + qxl_free (cache->qxl->surf_mem, surface->address, "surface memory"); surface->next = cache->free_surfaces; cache->free_surfaces = surface; } +/* + * mode is used for the whole virtual screen, not for a specific head. + * For a single head where virtual size is equal to the head size, they are + * equal. For multiple heads this mode will not match any existing heads and + * will be the containing virtual size. + */ qxl_surface_t * qxl_surface_cache_create_primary (surface_cache_t *cache, struct QXLMode *mode) @@ -321,16 +397,31 @@ create->type = QXL_SURF_TYPE_PRIMARY; create->mem = physical_address (cache->qxl, cache->qxl->ram, cache->qxl->main_mem_slot); - qxl_create_primary(qxl); + qxl_io_create_primary(qxl); dev_addr = (uint8_t *)qxl->ram + mode->stride * (mode->y_res - 1); dev_image = pixman_image_create_bits (format, mode->x_res, mode->y_res, (uint32_t *)dev_addr, -mode->stride); + if (qxl->fb != NULL) + free(qxl->fb); + qxl->fb = calloc (qxl->virtual_x * qxl->virtual_y, 4); + if (!qxl->fb) + return NULL; + host_image = pixman_image_create_bits (format, qxl->virtual_x, qxl->virtual_y, - qxl->fb, qxl->stride); + qxl->fb, mode->stride); +#if 0 + xf86DrvMsg(cache->qxl->pScrn->scrnIndex, X_ERROR, + "testing dev_image memory (%d x %d)\n", + mode->x_res, mode->y_res); + memset(qxl->ram, 0, mode->stride * mode->y_res); + xf86DrvMsg(cache->qxl->pScrn->scrnIndex, X_ERROR, + "testing host_image memory\n"); + memset(qxl->fb, 0, mode->stride * mode->y_res); +#endif surface = malloc (sizeof *surface); surface->id = 0; @@ -340,6 +431,7 @@ surface->bpp = mode->bits; surface->next = NULL; surface->prev = NULL; + surface->evacuated = NULL; REGION_INIT (NULL, &(surface->access_region), (BoxPtr)NULL, 0); surface->access_type = UXA_ACCESS_RO; @@ -353,9 +445,7 @@ struct QXLSurfaceCmd *cmd; qxl_screen_t *qxl = cache->qxl; - qxl_garbage_collect (qxl); - - cmd = qxl_allocnf (qxl, sizeof *cmd); + cmd = qxl_allocnf (qxl, sizeof *cmd, "surface command"); cmd->release_info.id = pointer_to_u64 (cmd) | 2; cmd->type = type; @@ -400,7 +490,8 @@ struct QXLDrawable *drawable; int i; - drawable = qxl_allocnf (qxl, sizeof *drawable); + drawable = qxl_allocnf (qxl, sizeof *drawable, "drawable command"); + assert(drawable); drawable->release_info.id = pointer_to_u64 (drawable); @@ -538,9 +629,9 @@ /* the final + stride is to work around a bug where the device apparently * scribbles after the end of the image */ - qxl_garbage_collect (cache->qxl); + qxl_garbage_collect (qxl); retry2: - address = qxl_alloc (qxl->surf_mem, stride * height + stride); + address = qxl_alloc (qxl->surf_mem, stride * height + stride, "surface memory"); if (!address) { @@ -549,7 +640,7 @@ if (qxl_garbage_collect (qxl)) goto retry2; - ErrorF ("- OOM at %d %d %d\n", width, height, bpp); + ErrorF ("- OOM at %d %d %d (= %d bytes)\n", width, height, bpp, width * height * (bpp / 8)); print_cache_info (cache); if (qxl_handle_oom (qxl)) @@ -572,7 +663,7 @@ if (!qxl_handle_oom (cache->qxl)) { ErrorF (" Out of surfaces\n"); - qxl_free (qxl->surf_mem, address); + qxl_free (qxl->surf_mem, address, "surface memory"); return NULL; } else @@ -594,7 +685,8 @@ push_surface_cmd (cache, cmd); - dev_addr = (uint32_t *)((uint8_t *)surface->address + stride * (height - 1)); + dev_addr + = (uint32_t *)((uint8_t *)surface->address + stride * (height - 1)); surface->dev_image = pixman_image_create_bits ( pformat, width, height, dev_addr, - stride); @@ -622,10 +714,11 @@ if ((bpp & 3) != 0) { - ErrorF (" Bad bpp: %d (%d)\n", bpp, bpp & 7); + ErrorF ("%s: Bad bpp: %d (%d)\n", __FUNCTION__, bpp, bpp & 7); return NULL; } +#if 0 if (bpp == 8) { static int warned; @@ -637,23 +730,24 @@ return NULL; } +#endif if (bpp != 8 && bpp != 16 && bpp != 32 && bpp != 24) { - ErrorF (" Unknown bpp\n"); + ErrorF ("%s: Unknown bpp\n", __FUNCTION__); return NULL; } if (width == 0 || height == 0) { - ErrorF (" Zero width or height\n"); + ErrorF ("%s: Zero width or height\n", __FUNCTION__); return NULL; } if (!(surface = surface_get_from_cache (cache, width, height, bpp))) if (!(surface = surface_send_create (cache, width, height, bpp))) return NULL; - + surface->next = cache->live_surfaces; surface->prev = NULL; if (cache->live_surfaces) @@ -674,10 +768,15 @@ static void unlink_surface (qxl_surface_t *surface) { - if (surface->prev) - surface->prev->next = surface->next; - else - surface->cache->live_surfaces = surface->next; + if (surface->id != 0) + { + if (surface->prev) + surface->prev->next = surface->next; + else + surface->cache->live_surfaces = surface->next; + } + + debug_surface_log(surface->cache); if (surface->next) surface->next->prev = surface->prev; @@ -689,7 +788,7 @@ } static void -send_destroy (qxl_surface_t *surface) +surface_destroy (qxl_surface_t *surface) { struct QXLSurfaceCmd *cmd; @@ -697,9 +796,12 @@ pixman_image_unref (surface->dev_image); if (surface->host_image) pixman_image_unref (surface->host_image); - + +#if 0 + ErrorF("destroy %ld\n", (long int)surface->end - (long int)surface->address); +#endif cmd = make_surface_cmd (surface->cache, surface->id, QXL_SURFACE_CMD_DESTROY); - + push_surface_cmd (surface->cache, cmd); } @@ -726,7 +828,6 @@ if (n_surfaces == N_CACHED_SURFACES) { - int i; destroy_id = cache->cached_surfaces[oldest]->id; destroy_surface = cache->cached_surfaces[oldest]; @@ -782,16 +883,39 @@ qxl_surface_t *surface = cache->all_surfaces + id; if (--surface->ref_count == 0) - send_destroy (surface); + surface_destroy (surface); } } void qxl_surface_kill (qxl_surface_t *surface) { + struct evacuated_surface_t *ev = surface->evacuated; + + if (ev) + { + /* server side surface is already destroyed (via reset), don't + * resend a destroy. Just mark surface as not to be recreated */ + ev->pixmap = NULL; + if (ev->image) + pixman_image_unref (ev->image); + if (ev->next) + ev->next->prev = ev->prev; + if (ev->prev) + ev->prev->next = ev->next; + free(ev); + surface->evacuated = NULL; + return; + } + unlink_surface (surface); + if (!surface->cache->all_surfaces) { + return; + } + if (surface->id != 0 && + surface->host_image && pixman_image_get_width (surface->host_image) >= 128 && pixman_image_get_height (surface->host_image) >= 128) { @@ -810,6 +934,16 @@ /* access */ static void +download_box_no_update (qxl_surface_t *surface, int x1, int y1, int x2, int y2) +{ + pixman_image_composite (PIXMAN_OP_SRC, + surface->dev_image, + NULL, + surface->host_image, + x1, y1, 0, 0, x1, y1, x2 - x1, y2 - y1); +} + +static void download_box (qxl_surface_t *surface, int x1, int y1, int x2, int y2) { struct QXLRam *ram_header = get_ram_header (surface->cache->qxl); @@ -823,11 +957,7 @@ qxl_update_area(surface->cache->qxl); - pixman_image_composite (PIXMAN_OP_SRC, - surface->dev_image, - NULL, - surface->host_image, - x1, y1, 0, 0, x1, y1, x2 - x1, y2 - y1); + download_box_no_update(surface, x1, y1, x2, y2); } Bool @@ -839,9 +969,8 @@ int n_boxes; BoxPtr boxes; ScreenPtr pScreen = pixmap->drawable.pScreen; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); RegionRec new; - int stride, height; if (!pScrn->vtSema) return FALSE; @@ -857,9 +986,6 @@ n_boxes = REGION_NUM_RECTS (region); boxes = REGION_RECTS (region); - stride = pixman_image_get_stride (surface->dev_image); - height = pixman_image_get_height (surface->dev_image); - if (n_boxes < 25) { while (n_boxes--) @@ -1015,7 +1141,7 @@ { if (cache->cached_surfaces[i]) { - send_destroy (cache->cached_surfaces[i]); + surface_destroy (cache->cached_surfaces[i]); cache->cached_surfaces[i] = NULL; } } @@ -1044,16 +1170,17 @@ unlink_surface (s); evacuated->next = evacuated_surfaces; + if (evacuated_surfaces) + evacuated_surfaces->prev = evacuated; evacuated_surfaces = evacuated; + s->evacuated = evacuated; s = next; } - free (cache->all_surfaces); - cache->all_surfaces = NULL; cache->live_surfaces = NULL; cache->free_surfaces = NULL; - + return evacuated_surfaces; } @@ -1209,7 +1336,7 @@ } else { - struct QXLImage *image = qxl_allocnf (qxl, sizeof *image); + struct QXLImage *image = qxl_allocnf (qxl, sizeof *image, "surface image struct"); dest->u.copy_src->ref_count++; @@ -1252,6 +1379,189 @@ push_drawable (qxl, drawable); } +/* composite */ +Bool +qxl_surface_prepare_composite (int op, + PicturePtr src_picture, + PicturePtr mask_picture, + PicturePtr dest_picture, + qxl_surface_t * src, + qxl_surface_t * mask, + qxl_surface_t * dest) +{ + dest->u.composite.op = op; + dest->u.composite.src_picture = src_picture; + dest->u.composite.mask_picture = mask_picture; + dest->u.composite.dest_picture = dest_picture; + dest->u.composite.src = src; + dest->u.composite.mask = mask; + dest->u.composite.dest = dest; + + return TRUE; +} + +static QXLImage * +image_from_picture (qxl_screen_t *qxl, + PicturePtr picture, + qxl_surface_t *surface, + int *force_opaque) +{ + struct QXLImage *image = qxl_allocnf (qxl, sizeof *image, "image struct for picture"); + + image->descriptor.id = 0; + image->descriptor.type = SPICE_IMAGE_TYPE_SURFACE; + image->descriptor.width = 0; + image->descriptor.height = 0; + image->surface_image.surface_id = surface->id; + + if (picture->format == PICT_x8r8g8b8) + *force_opaque = TRUE; + else + *force_opaque = FALSE; + + return image; +} + +static QXLTransform * +get_transform (qxl_screen_t *qxl, PictTransform *transform) +{ + if (transform) + { + QXLTransform *qxform = qxl_allocnf (qxl, sizeof (QXLTransform), "transform"); + + qxform->t00 = transform->matrix[0][0]; + qxform->t01 = transform->matrix[0][1]; + qxform->t02 = transform->matrix[0][2]; + qxform->t10 = transform->matrix[1][0]; + qxform->t11 = transform->matrix[1][1]; + qxform->t12 = transform->matrix[1][2]; + + return qxform; + } + else + { + return NULL; + } +} + +static QXLRect +full_rect (qxl_surface_t *surface) +{ + QXLRect r; + int w = pixman_image_get_width (surface->host_image); + int h = pixman_image_get_height (surface->host_image); + + r.left = r.top = 0; + r.right = w; + r.bottom = h; + + return r; +} + +void +qxl_surface_composite (qxl_surface_t *dest, + int src_x, int src_y, + int mask_x, int mask_y, + int dest_x, int dest_y, + int width, int height) +{ + qxl_screen_t *qxl = dest->cache->qxl; + PicturePtr src = dest->u.composite.src_picture; + qxl_surface_t *qsrc = dest->u.composite.src; + PicturePtr mask = dest->u.composite.mask_picture; + qxl_surface_t *qmask = dest->u.composite.mask; + int op = dest->u.composite.op; + struct QXLDrawable *drawable; + QXLComposite *composite; + QXLRect rect; + QXLImage *img; + QXLTransform *trans; + int n_deps = 0; + int force_opaque; + +#if 0 + ErrorF ("QXL Composite: src: %x (%d %d) id: %d; \n" + " mask: id: %d\n" + " dest: %x %d %d %d %d (id: %d)\n", + dest->u.composite.src_picture->format, + dest->u.composite.src_picture->pDrawable->width, + dest->u.composite.src_picture->pDrawable->height, + dest->u.composite.src->id, + dest->u.composite.mask? dest->u.composite.mask->id : -1, + dest->u.composite.dest_picture->format, + dest_x, dest_y, width, height, + dest->id + ); +#endif + + rect.left = dest_x; + rect.right = dest_x + width; + rect.top = dest_y; + rect.bottom = dest_y + height; + + drawable = make_drawable (qxl, dest->id, QXL_DRAW_COMPOSITE, &rect); + + composite = &drawable->u.composite; + + composite->flags = 0; + + if (dest->u.composite.dest_picture->format == PICT_x8r8g8b8) + composite->flags |= SPICE_COMPOSITE_DEST_OPAQUE; + + composite->flags |= (op & 0xff); + + img = image_from_picture (qxl, src, qsrc, &force_opaque); + if (force_opaque) + composite->flags |= SPICE_COMPOSITE_SOURCE_OPAQUE; + composite->src = physical_address (qxl, img, qxl->main_mem_slot); + composite->flags |= (src->filter << 8); + composite->flags |= (src->repeat << 14); + trans = get_transform (qxl, src->transform); + composite->src_transform = trans? + physical_address (qxl, trans, qxl->main_mem_slot) : 0x00000000; + + drawable->surfaces_dest[n_deps] = qsrc->id; + drawable->surfaces_rects[n_deps] = full_rect (qsrc); + + n_deps++; + + if (mask) + { + img = image_from_picture (qxl, mask, qmask, &force_opaque); + if (force_opaque) + composite->flags |= SPICE_COMPOSITE_MASK_OPAQUE; + composite->mask = physical_address (qxl, img, qxl->main_mem_slot); + composite->flags |= (mask->filter << 11); + composite->flags |= (mask->repeat << 16); + composite->flags |= (mask->componentAlpha << 18); + + drawable->surfaces_dest[n_deps] = qmask->id; + drawable->surfaces_rects[n_deps] = full_rect (qmask); + n_deps++; + + trans = get_transform (qxl, src->transform); + composite->mask_transform = trans? + physical_address (qxl, trans, qxl->main_mem_slot) : 0x00000000; + } + else + { + composite->mask = 0x00000000; + composite->mask_transform = 0x00000000; + } + + drawable->surfaces_dest[n_deps] = dest->id; + drawable->surfaces_rects[n_deps] = full_rect (dest); + + composite->src_origin.x = src_x; + composite->src_origin.y = src_y; + composite->mask_origin.x = mask_x; + composite->mask_origin.y = mask_y; + + drawable->effect = QXL_EFFECT_BLEND; + + push_drawable (qxl, drawable); +} + Bool qxl_surface_put_image (qxl_surface_t *dest, int x, int y, int width, int height, diff -Nru xserver-xorg-video-qxl-0.0.17/src/spiceqxl_display.c xserver-xorg-video-qxl-0.1.0/src/spiceqxl_display.c --- xserver-xorg-video-qxl-0.0.17/src/spiceqxl_display.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/spiceqxl_display.c 2012-09-05 16:52:17.000000000 +0000 @@ -19,6 +19,9 @@ * 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. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include @@ -64,8 +67,8 @@ /* XSpice: - * We only need a single identify slot, no need to change it for the lifetime - * We actually need no slots, but less changes if we leave one. + * We only need a single static identity slot. + * We actually need no slots, but less changes if we use one. * We currently add it during attache_worker - should not be called more * then once during lifetime (but we don't check) */ diff -Nru xserver-xorg-video-qxl-0.0.17/src/spiceqxl_driver.c xserver-xorg-video-qxl-0.1.0/src/spiceqxl_driver.c --- xserver-xorg-video-qxl-0.0.17/src/spiceqxl_driver.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/spiceqxl_driver.c 2012-07-25 16:01:02.000000000 +0000 @@ -26,6 +26,9 @@ * most of the code is still in qxl_driver.c, but for clarity parts are moved * here, and only used / compiled if XSPICE is defined */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "qxl.h" #include "spiceqxl_driver.h" diff -Nru xserver-xorg-video-qxl-0.0.17/src/spiceqxl_inputs.c xserver-xorg-video-qxl-0.1.0/src/spiceqxl_inputs.c --- xserver-xorg-video-qxl-0.0.17/src/spiceqxl_inputs.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/spiceqxl_inputs.c 2012-09-05 16:52:20.000000000 +0000 @@ -23,6 +23,9 @@ /* Handle inputs channel for spice, and register the X parts, * a mouse and a keyboard device pair. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include #include @@ -282,7 +285,7 @@ static void tablet_set_logical_size(SpiceTabletInstance* sin, int width, int height) { - XSpicePointer *pointer = container_of(sin, XSpicePointer, tablet); + XSpicePointer *spice_pointer = container_of(sin, XSpicePointer, tablet); if (height < 16) { height = 16; @@ -290,23 +293,23 @@ if (width < 16) { width = 16; } - pointer->width = width; - pointer->height = height; + spice_pointer->width = width; + spice_pointer->height = height; } static void tablet_position(SpiceTabletInstance* sin, int x, int y, uint32_t buttons_state) { - XSpicePointer *pointer = container_of(sin, XSpicePointer, tablet); + XSpicePointer *spice_pointer = container_of(sin, XSpicePointer, tablet); // TODO: don't ignore buttons_state - xf86PostMotionEvent(pointer->pInfo->dev, 1, 0, 2, x, y); + xf86PostMotionEvent(spice_pointer->pInfo->dev, 1, 0, 2, x, y); } static void tablet_buttons(SpiceTabletInstance *sin, uint32_t buttons_state) { - XSpicePointer *pointer = container_of(sin, XSpicePointer, tablet); + XSpicePointer *spice_pointer = container_of(sin, XSpicePointer, tablet); static uint32_t old_buttons_state = 0; int i; @@ -321,7 +324,7 @@ for (i = 0; i < BUTTONS; i++) { if ((buttons_state ^ old_buttons_state) & (1 << i)) { int action = (buttons_state & (1 << i)); - xf86PostButtonEvent(pointer->pInfo->dev, 0, i + 1, action, 0, 0); + xf86PostButtonEvent(spice_pointer->pInfo->dev, 0, i + 1, action, 0, 0); } } old_buttons_state = buttons_state; @@ -369,13 +372,13 @@ static int XSpicePointerPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) { - XSpicePointer *pointer; + XSpicePointer *spice_pointer; - pointer = calloc(sizeof(*pointer), 1); - pointer->mouse.base.sif = &mouse_interface.base; - pointer->tablet.base.sif = &tablet_interface.base; - pointer->absolute = TRUE; - pointer->pInfo = pInfo; + spice_pointer = calloc(sizeof(*spice_pointer), 1); + spice_pointer->mouse.base.sif = &mouse_interface.base; + spice_pointer->tablet.base.sif = &tablet_interface.base; + spice_pointer->absolute = TRUE; + spice_pointer->pInfo = pInfo; pInfo->private = NULL; pInfo->type_name = "UNKNOWN"; @@ -383,7 +386,7 @@ pInfo->read_input = NULL; pInfo->switch_mode = NULL; - spice_server_add_interface(xspice_get_spice_server(), &pointer->tablet.base); + spice_server_add_interface(xspice_get_spice_server(), &spice_pointer->tablet.base); return Success; } diff -Nru xserver-xorg-video-qxl-0.0.17/src/spiceqxl_io_port.c xserver-xorg-video-qxl-0.1.0/src/spiceqxl_io_port.c --- xserver-xorg-video-qxl-0.0.17/src/spiceqxl_io_port.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/spiceqxl_io_port.c 2012-09-05 16:52:20.000000000 +0000 @@ -19,6 +19,9 @@ * 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. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include #include @@ -55,7 +58,7 @@ static int spiceqxl_io_port_debug_level = -1; -static void dprint(int _level, const char *_fmt, ...) +static void __attribute__ ((format (printf, 2, 3))) dprint(int _level, const char *_fmt, ...) { if (spiceqxl_io_port_debug_level == -1) { if (getenv("XSPICE_IO_PORT_DEBUG_LEVEL")) { @@ -172,7 +175,7 @@ static void qxl_set_mode(qxl_screen_t *qxl, int modenr) { struct QXLMode *mode = qxl->modes + modenr; - uint64_t devmem = (uint64_t)qxl->ram; + uint64_t devmem = pointer_to_u64(qxl->ram); QXLSurfaceCreate surface = { .width = mode->x_res, .height = mode->y_res, @@ -249,10 +252,10 @@ qxl_hard_reset(qxl); break; case QXL_IO_MEMSLOT_ADD: - dprint(1, "QXL_IO_MEMSLOT_ADD - should not be called (this is XSpice)\n"); + dprint(1, "QXL_IO_MEMSLOT_ADD - should not be called (this is Xspice)\n"); break; case QXL_IO_MEMSLOT_DEL: - dprint(1, "QXL_IO_MEMSLOT_DEL - should not be called (this is XSpice)\n"); + dprint(1, "QXL_IO_MEMSLOT_DEL - should not be called (this is Xspice)\n"); break; case QXL_IO_CREATE_PRIMARY: assert(val == 0); @@ -272,6 +275,10 @@ case QXL_IO_DESTROY_ALL_SURFACES: qxl->worker->destroy_surfaces(qxl->worker); break; + case QXL_IO_FLUSH_SURFACES_ASYNC: + fprintf(stderr, "ERROR: async callback Unimplemented\n"); + spice_qxl_flush_surfaces_async(&qxl->display_sin, 0); + break; default: fprintf(stderr, "%s: ioport=0x%x, abort()\n", __FUNCTION__, io_port); abort(); diff -Nru xserver-xorg-video-qxl-0.0.17/src/spiceqxl_main_loop.c xserver-xorg-video-qxl-0.1.0/src/spiceqxl_main_loop.c --- xserver-xorg-video-qxl-0.0.17/src/spiceqxl_main_loop.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/spiceqxl_main_loop.c 2012-09-05 16:52:17.000000000 +0000 @@ -19,6 +19,9 @@ * 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. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include @@ -312,9 +315,24 @@ } } +static int no_write_watches(Ring *w) +{ + SpiceWatch *watch; + RingItem *link; + RingItem *next; + + RING_FOREACH_SAFE(link, next, w) { + watch = (SpiceWatch*)link; + if (!watch->remove && (watch->event_mask & SPICE_WATCH_EVENT_WRITE)) + return 0; + } + + return 1; +} + static void xspice_wakeup_handler(pointer data, int nfds, pointer readmask) { - if (!nfds) { + if (!nfds && no_write_watches(&watches)) { return; } select_and_check_watches(); diff -Nru xserver-xorg-video-qxl-0.0.17/src/spiceqxl_spice_server.c xserver-xorg-video-qxl-0.1.0/src/spiceqxl_spice_server.c --- xserver-xorg-video-qxl-0.0.17/src/spiceqxl_spice_server.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/spiceqxl_spice_server.c 2012-07-25 16:01:02.000000000 +0000 @@ -25,6 +25,9 @@ * * spice server helpers for spiceqxl. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "qxl.h" #include "qxl_option_helpers.h" diff -Nru xserver-xorg-video-qxl-0.0.17/src/uxa/Makefile.in xserver-xorg-video-qxl-0.1.0/src/uxa/Makefile.in --- xserver-xorg-video-qxl-0.0.17/src/uxa/Makefile.in 2012-03-15 17:46:35.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/uxa/Makefile.in 2012-09-20 23:08:26.000000000 +0000 @@ -95,6 +95,7 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASE_CFLAGS = @BASE_CFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ diff -Nru xserver-xorg-video-qxl-0.0.17/src/uxa/uxa-accel.c xserver-xorg-video-qxl-0.1.0/src/uxa/uxa-accel.c --- xserver-xorg-video-qxl-0.0.17/src/uxa/uxa-accel.c 2011-01-26 13:25:05.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/uxa/uxa-accel.c 2012-09-05 16:52:17.000000000 +0000 @@ -31,8 +31,6 @@ #include #endif #include "uxa-priv.h" -#include -#include "dixfontstr.h" #include "uxa.h" #include "mipict.h" diff -Nru xserver-xorg-video-qxl-0.0.17/src/uxa/uxa-damage.c xserver-xorg-video-qxl-0.1.0/src/uxa/uxa-damage.c --- xserver-xorg-video-qxl-0.0.17/src/uxa/uxa-damage.c 2011-07-14 17:36:47.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/uxa/uxa-damage.c 2012-09-05 16:52:17.000000000 +0000 @@ -30,7 +30,6 @@ #include #include "scrnintstr.h" #include "windowstr.h" -#include #include "dixfontstr.h" #include "gcstruct.h" #include "picturestr.h" diff -Nru xserver-xorg-video-qxl-0.0.17/src/uxa/uxa-glyphs.c xserver-xorg-video-qxl-0.1.0/src/uxa/uxa-glyphs.c --- xserver-xorg-video-qxl-0.0.17/src/uxa/uxa-glyphs.c 2011-01-26 13:25:05.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/uxa/uxa-glyphs.c 2012-09-07 03:18:50.000000000 +0000 @@ -221,7 +221,7 @@ GlyphPtr glyph, int x, int y) { - PicturePtr pGlyphPicture = GlyphPicture(glyph)[screen->myNum]; + PicturePtr pGlyphPicture = GetGlyphPicture(glyph, screen); PixmapPtr pGlyphPixmap = (PixmapPtr) pGlyphPicture->pDrawable; PixmapPtr pCachePixmap = (PixmapPtr) cache->picture->pDrawable; PixmapPtr scratch; @@ -430,7 +430,7 @@ INT16 xSrc, INT16 ySrc, int nlist, GlyphListPtr list, GlyphPtr * glyphs) { - int screen = dst->pDrawable->pScreen->myNum; + ScreenPtr pScreen = dst->pDrawable->pScreen; pixman_image_t *image; PixmapPtr scratch; PicturePtr mask; @@ -494,7 +494,7 @@ n = list->len; while (n--) { GlyphPtr glyph = *glyphs++; - PicturePtr g = GlyphPicture(glyph)[screen]; + PicturePtr g = GetGlyphPicture(glyph, pScreen); if (g) { if (maskFormat) { CompositePicture(PictOpAdd, g, NULL, mask, @@ -560,7 +560,7 @@ uxa_glyph_cache(ScreenPtr screen, GlyphPtr glyph, int *out_x, int *out_y) { uxa_screen_t *uxa_screen = uxa_get_screen(screen); - PicturePtr glyph_picture = GlyphPicture(glyph)[screen->myNum]; + PicturePtr glyph_picture = GetGlyphPicture(glyph, screen); uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[PICT_FORMAT_RGB(glyph_picture->format) != 0]; struct uxa_glyph *priv = NULL; int size, mask, pos, s; @@ -760,7 +760,7 @@ this_atlas = uxa_glyph_cache(screen, glyph, &mask_x, &mask_y); if (this_atlas == NULL) { /* no cache for this glyph */ - this_atlas = GlyphPicture(glyph)[screen->myNum]; + this_atlas = GetGlyphPicture(glyph, screen); mask_x = mask_y = 0; } } @@ -932,6 +932,11 @@ uxa_clear_pixmap(screen, uxa_screen, pixmap); + if (!uxa_pixmap_is_offscreen(pixmap)) { + screen->DestroyPixmap(pixmap); + return 1; + } + component_alpha = NeedsComponent(maskFormat->format); mask = CreatePicture(0, &pixmap->drawable, maskFormat, CPComponentAlpha, @@ -970,7 +975,7 @@ this_atlas = uxa_glyph_cache(screen, glyph, &src_x, &src_y); if (this_atlas == NULL) { /* no cache for this glyph */ - this_atlas = GlyphPicture(glyph)[screen->myNum]; + this_atlas = GetGlyphPicture(glyph, screen); src_x = src_y = 0; } } @@ -987,8 +992,10 @@ if (!uxa_screen->info->prepare_composite(PictOpAdd, this_atlas, NULL, mask, - src_pixmap, NULL, pixmap)) + src_pixmap, NULL, pixmap)) { + FreePicture(mask, 0); return -1; + } glyph_atlas = this_atlas; } diff -Nru xserver-xorg-video-qxl-0.0.17/src/uxa/uxa-priv.h xserver-xorg-video-qxl-0.1.0/src/uxa/uxa-priv.h --- xserver-xorg-video-qxl-0.0.17/src/uxa/uxa-priv.h 2011-01-26 13:25:05.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/uxa/uxa-priv.h 2012-09-05 16:52:20.000000000 +0000 @@ -60,6 +60,7 @@ #endif #include "damage.h" +#include "../compat-api.h" /* Provide substitutes for gcc's __FUNCTION__ on other compilers */ #if !defined(__GNUC__) && !defined(__FUNCTION__) # if defined(__STDC__) && (__STDC_VERSION__>=199901L) /* C99 */ @@ -110,7 +111,7 @@ #define UXA_NUM_SOLID_CACHE 16 -typedef void (*EnableDisableFBAccessProcPtr) (int, Bool); +typedef void (*EnableDisableFBAccessProcPtr) (SCRN_ARG_TYPE, Bool); typedef struct { uxa_driver_t *info; CreateGCProcPtr SavedCreateGC; diff -Nru xserver-xorg-video-qxl-0.0.17/src/uxa/uxa.c xserver-xorg-video-qxl-0.1.0/src/uxa/uxa.c --- xserver-xorg-video-qxl-0.0.17/src/uxa/uxa.c 2012-03-14 16:49:59.000000000 +0000 +++ xserver-xorg-video-qxl-0.1.0/src/uxa/uxa.c 2012-09-05 16:52:20.000000000 +0000 @@ -35,8 +35,6 @@ #include #include "uxa-priv.h" -#include -#include "dixfontstr.h" #include "uxa.h" #if HAS_DEVPRIVATEKEYREC @@ -279,7 +277,7 @@ fbValidateGC(pGC, changes, pDrawable); } - pGC->ops = (GCOps *) & uxa_ops; + pGC->ops = (GCOps *)&uxa_ops; } static GCFuncs uxaGCFuncs = { @@ -361,10 +359,11 @@ return ret; } -static void uxa_xorg_enable_disable_fb_access(int index, Bool enable) +static void uxa_xorg_enable_disable_fb_access(SCRN_ARG_TYPE arg, Bool enable) { - ScreenPtr screen = screenInfo.screens[index]; - uxa_screen_t *uxa_screen = uxa_get_screen(screen); + SCRN_INFO_PTR(arg); + ScreenPtr pScreen = pScrn->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); if (!enable && uxa_screen->disableFbCount++ == 0) uxa_screen->swappedOut = TRUE; @@ -373,7 +372,7 @@ uxa_screen->swappedOut = FALSE; if (uxa_screen->SavedEnableDisableFBAccess) - uxa_screen->SavedEnableDisableFBAccess(index, enable); + uxa_screen->SavedEnableDisableFBAccess(arg, enable); } void uxa_set_fallback_debug(ScreenPtr screen, Bool enable) @@ -401,10 +400,10 @@ * uxa_close_screen() unwraps its wrapped screen functions and tears down UXA's * screen private, before calling down to the next CloseSccreen. */ -static Bool uxa_close_screen(int i, ScreenPtr pScreen) +static Bool uxa_close_screen(CLOSE_SCREEN_ARGS_DECL) { uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); - ScrnInfoPtr scrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen); #ifdef RENDER PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); #endif @@ -447,7 +446,7 @@ free(uxa_screen); - return (*pScreen->CloseScreen) (i, pScreen); + return (*pScreen->CloseScreen) (CLOSE_SCREEN_ARGS); } /** @@ -478,7 +477,7 @@ Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver) { uxa_screen_t *uxa_screen; - ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + ScrnInfoPtr scrn = xf86ScreenToScrn(screen); if (!uxa_driver) return FALSE;