meson: fix gallium-osmesa to build for windows
authorDylan Baker <dylan@pnwbakers.com>
Wed, 18 Apr 2018 20:29:26 +0000 (13:29 -0700)
committerDylan Baker <dylan@pnwbakers.com>
Thu, 10 Oct 2019 23:33:04 +0000 (16:33 -0700)
v2: - set so_version to '' (only affects windows)
    - always set lib prefix to 'lib', even on msvc
v5: - key NO_EXPORTS on shared glapi instead of gles.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
meson.build
src/gallium/state_trackers/osmesa/meson.build
src/gallium/targets/osmesa/meson.build

index 6657de4de620ce8332766ca29ff46f9a834c4f6f..8c5ae52ba3769979e6d5092a4b7458084ee78876 100644 (file)
@@ -1450,7 +1450,11 @@ if with_osmesa != 'none'
   if with_osmesa == 'gallium' and not with_gallium_softpipe
     error('OSMesa gallium requires gallium softpipe or llvmpipe.')
   endif
-  osmesa_lib_name = 'OSMesa'
+  if host_machine.system() == 'windows'
+    osmesa_lib_name = 'osmesa'
+  else
+    osmesa_lib_name = 'OSMesa'
+  endif
   osmesa_bits = get_option('osmesa-bits')
   if osmesa_bits != '8'
     if with_dri or with_glx != 'disabled'
index 1e49de875b168afe5c22f3e0865e58d67ec44229..e5848fd9934afc22119a14122e6c2d095ab8f350 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright © 2017 Intel Corporation
+# Copyright © 2017-2018 Intel Corporation
 
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 # SOFTWARE.
 
+osmesa_st_c_args = []
+if with_platform_windows
+  osmesa_st_c_args += ['-DBUILD_GL32', '-DWIN32_LEAN_AND_MEAN']
+  if not with_shared_glapi
+    osmesa_st_c_args += ['-D_GLAPI_NO_EXPORTS']
+  endif
+endif
+
 libosmesa_st = static_library(
   'osmesa_st',
   'osmesa.c',
+  c_args : osmesa_st_c_args,
   include_directories : [
     inc_include, inc_src, inc_gallium, inc_gallium_aux, inc_mapi, inc_mesa,
   ],
index 1612908d01644930f24808f1b72f20ede2c84a42..7792aa1e2fc18a5e74c75c533fe9c1c3bae1b2bf 100644 (file)
@@ -32,12 +32,19 @@ if with_ld_version_script
   osmesa_link_deps += files('osmesa.sym')
 endif
 
+if cc.get_id() == 'gcc' and host_machine.cpu_family() != 'x86_64'
+  osmesa_def = 'osmesa.mingw.def'
+else
+  osmesa_def = 'osmesa.def'
+endif
+
 libosmesa = shared_library(
   osmesa_lib_name,
   'target.c',
   c_args : [c_vis_args],
   cpp_args : cpp_vis_args,
   link_args : [ld_args_gc_sections, osmesa_link_args],
+  vs_module_defs : osmesa_def,
   include_directories : [
     inc_include, inc_src, inc_gallium, inc_gallium_aux, inc_gallium_winsys,
     inc_gallium_drivers,
@@ -48,9 +55,10 @@ libosmesa = shared_library(
     libmesa_gallium, libgallium, libws_null, osmesa_link_with,
   ],
   dependencies : [
-    dep_selinux, dep_thread, dep_clock, dep_unwind,
+    dep_ws2_32, dep_selinux, dep_thread, dep_clock, dep_unwind,
     driver_swrast, driver_swr,
   ],
+  soversion : host_machine.system() == 'windows' ? '' : '8',
   version : '8.0.0',
   install : true,
 )