gplugin/gplugin
Clone
Summary
Browse
Changes
Graph
Use windows subsystem for GTK viewer
6 months ago, Elliott Sales de Andrade
80064de29bcd
Use windows subsystem for GTK viewer
This stops a console window from popping up if you run the viewer directly (from Explorer or a shortcut, etc.)
Also, modernize the `GOptionEntry` list.
Testing Done:
Compiled on Windows, and opened the viewer from Explorer.
Reviewed at https://reviews.imfreedom.org/r/2819/
###############################################################################
# Project Info
###############################################################################
project
(
'gplugin'
,
'c'
,
license
:
'LGPL-2.0-or-later'
,
version
:
'0.42.0-dev'
,
meson_version
:
'>=0.61.0'
,
default_options
:
[
'c_std=c17'
,
'warning_level=2'
])
parts
=
meson
.
project_version
().
split
(
'-'
)
if
parts
.
length
()
>
1
extra
=
parts
[
1
]
else
extra
=
''
endif
parts
=
parts
[
0
].
split
(
'.'
)
GPLUGIN_MAJOR_VERSION
=
parts
[
0
]
GPLUGIN_MINOR_VERSION
=
parts
[
1
]
GPLUGIN_MICRO_VERSION
=
parts
[
2
]
GPLUGIN_EXTRA_VERSION
=
extra
GPLUGIN_VERSION
=
meson
.
project_version
()
version_conf
=
configuration_data
()
version_conf
.
set
(
'GPLUGIN_MAJOR_VERSION'
,
GPLUGIN_MAJOR_VERSION
)
version_conf
.
set
(
'GPLUGIN_MINOR_VERSION'
,
GPLUGIN_MINOR_VERSION
)
version_conf
.
set
(
'GPLUGIN_MICRO_VERSION'
,
GPLUGIN_MICRO_VERSION
)
version_conf
.
set
(
'GPLUGIN_EXTRA_VERSION'
,
GPLUGIN_EXTRA_VERSION
)
version_conf
.
set
(
'GPLUGIN_VERSION'
,
GPLUGIN_VERSION
)
###############################################################################
# Dependencies
###############################################################################
gnome
=
import
(
'gnome'
)
pkgconfig
=
import
(
'pkgconfig'
)
if
get_option
(
'help2man'
)
help2man
=
find_program
(
'help2man'
)
endif
GLIB
=
dependency
(
'glib-2.0'
,
version
:
'>=2.76.0'
)
GIO
=
dependency
(
'gio-2.0'
)
GOBJECT
=
dependency
(
'gobject-2.0'
)
# we separate gmodule out so our test aren't linked to it
GMODULE
=
dependency
(
'gmodule-2.0'
)
add_project_arguments
(
'-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_76'
,
'-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_76'
,
language
:
'c'
,
)
###############################################################################
# devenv
#
# This sets up the meson devenv stuff. See
# https://mesonbuild.com/Commands.html#devenv for more information.
###############################################################################
devenv
=
environment
()
config_home
=
get_option
(
'devenv-config-dir'
)
if
config_home
==
''
config_home
=
meson
.
project_build_root
()
/
'config'
endif
devenv
.
set
(
'XDG_CONFIG_HOME'
,
config_home
)
meson
.
add_devenv
(
devenv
)
###############################################################################
# NLS
###############################################################################
GETTEXT_PACKAGE
=
'gplugin'
LOCALE_DIR
=
get_option
(
'prefix'
)
/
get_option
(
'localedir'
)
add_project_arguments
(
f
'-DLOCALEDIR="@LOCALE_DIR@"'
,
language
:
'c'
)
add_project_arguments
(
f
'-DGETTEXT_PACKAGE="@GETTEXT_PACKAGE@"'
,
language
:
'c'
)
if
get_option
(
'nls'
)
i18n
=
import
(
'i18n'
)
endif
###############################################################################
# Build Info
###############################################################################
compiler
=
meson
.
get_compiler
(
'c'
)
add_project_arguments
(
'-DPREFIX="@0@"'
.
format
(
get_option
(
'prefix'
)),
'-DLIBDIR="@0@"'
.
format
(
get_option
(
'libdir'
)),
'-DGPLUGIN_WEBSITE="https://keep.imfreedom.org/gplugin/gplugin"'
,
language
:
'c'
)
if
compiler
.
has_argument
(
'-Wformat'
)
add_project_arguments
(
'-Wformat'
,
language
:
'c'
)
if
compiler
.
has_multi_arguments
([
'-Wformat'
,
'-Werror=format-security'
])
add_project_arguments
(
'-Werror=format-security'
,
language
:
'c'
)
endif
endif
toplevel_inc
=
include_directories
(
'.'
)
###############################################################################
# Documentation
###############################################################################
if
get_option
(
'doc'
)
and
not
get_option
(
'introspection'
)
error
(
'Documentation requires GObject Introspection.'
)
endif
dependency
(
'gi-docgen'
,
version
:
'>= 2021.1'
,
fallback
:
[
'gi-docgen'
,
'dummy_dep'
],
required
:
get_option
(
'doc'
)
)
gidocgen
=
find_program
(
'gi-docgen'
,
required
:
get_option
(
'doc'
))
docs_dir
=
get_option
(
'prefix'
)
/
get_option
(
'datadir'
)
/
'doc'
doc_targets
=
[]
###############################################################################
# Subdirectories
###############################################################################
subdir
(
'gplugin'
)
subdir
(
'gplugin-introspection'
)
subdir
(
'gplugin-gtk4'
)
subdir
(
'gplugin-gtk4-viewer'
,
if_found
:
GTK4
)
subdir
(
'gplugin-query'
)
subdir
(
'po'
)
subdir
(
'lua'
)
subdir
(
'python3'
)
subdir
(
'vala'
)
if
get_option
(
'doc'
)
alias_target
(
'doc'
,
doc_targets
)
endif
if
meson
.
backend
()
==
'ninja'
run_target
(
'turtles'
,
command
:
[
'ninja'
,
'-C'
,
'@BUILD_ROOT@'
,
'gplugin-pot'
,
'all'
,
'test'
])
endif
###############################################################################
# Install stuff
###############################################################################
# documentation
install_data
(
'ChangeLog'
,
'INSTALL.md'
,
'README.md'
,
'HACKING.md'
,
install_dir
:
get_option
(
'datadir'
)
/
'doc'
/
'gplugin'
)
summary
({
'api reference'
:
get_option
(
'doc'
),
'GTK4 widgets'
:
GTK4
,
'man pages'
:
get_option
(
'help2man'
),
},
bool_yn
:
true
,
section
:
'Miscellaneous'
)
summary
({
'introspection'
:
get_option
(
'introspection'
),
'vapi'
:
get_option
(
'vapi'
),
},
bool_yn
:
true
,
section
:
'Bindings'
)