diff options
-rw-r--r-- | girepository/gi-dump-types.c | 21 | ||||
-rw-r--r-- | girepository/meson.build | 4 | ||||
-rw-r--r-- | meson.build | 3 |
3 files changed, 22 insertions, 6 deletions
diff --git a/girepository/gi-dump-types.c b/girepository/gi-dump-types.c index 69d8b12d..aeef774c 100644 --- a/girepository/gi-dump-types.c +++ b/girepository/gi-dump-types.c @@ -1,16 +1,29 @@ /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include "gdump.c" -#include <gio/gunixoutputstream.h> +#ifdef G_OS_WIN32 + #include <windows.h> + #include <io.h> /* For _get_osfhandle() */ + #include <gio/gwin32outputstream.h> +#else + #include <gio/gunixoutputstream.h> +#endif int main (int argc, char **argv) { int i; - GOutputStream *stdout; + GOutputStream *Stdout; GModule *self; - stdout = g_unix_output_stream_new (1, FALSE); +#if defined(G_OS_WIN32) + HANDLE *hnd = (HANDLE) _get_osfhandle (1); + + g_return_val_if_fail (hnd && hnd != INVALID_HANDLE_VALUE, 1); + Stdout = g_win32_output_stream_new (hnd, FALSE); +#else + Stdout = g_unix_output_stream_new (1, FALSE); +#endif self = g_module_open (NULL, 0); @@ -26,7 +39,7 @@ main (int argc, g_clear_error (&error); } else - dump_type (type, argv[i], stdout); + dump_type (type, argv[i], Stdout); } return 0; diff --git a/girepository/meson.build b/girepository/meson.build index 6cd8fd30..c8ef6aa9 100644 --- a/girepository/meson.build +++ b/girepository/meson.build @@ -204,7 +204,7 @@ gthash_test = executable('gthash-test', 'gthash-test.c', test('gthash-test', gthash_test) -if giounix_dep.found() +if giounix_dep.found() or giowin_dep.found() executable('gi-dump-types', 'gi-dump-types.c', - dependencies: [girepo_dep, giounix_dep]) + dependencies: [girepo_dep, giounix_dep, giowin_dep]) endif diff --git a/meson.build b/meson.build index 658727d8..04426515 100644 --- a/meson.build +++ b/meson.build @@ -144,12 +144,15 @@ gmodule_dep = dependency('gmodule-2.0', version : glib_version, if host_system != 'windows' giounix_dep = dependency('gio-unix-2.0', version : glib_version, fallback: ['glib', 'libgiounix_dep']) + giowin_dep = dependency('', required : false) else # Don't even try to look for gio-unix-2.0 on Windows because Meson will # fruitlessly try to find it in the glib subproject even when we don't want # it to look in the subproject at all. Just use a not-found dependency. giounix_dep = dependency('', required : false) # XXX: Autotools doesn't build girs for gio-win32-2.0, but maybe we should? + giowin_dep = dependency('gio-windows-2.0', version : glib_version, + fallback: ['glib', 'libgiowin32_dep']) endif libffi_dep = dependency('libffi', fallback : ['libffi', 'ffi_dep']) |