build: Replace Autotools with Meson

Quick rundown of benefits:

- Much faster:
  - Autotools (with autogen): 22 seconds
  - Meson: 7 seconds
  - Meson (with ccache): 2 seconds

- Simpler:
  - ~1000 lines smaller
  - Single simple language

- Potentially better Windows (Visual Studio) support

What is not done:

- Complete Windows support
- OSX support (easy)

Closes #2013
Closes #1937
Closes #1803
This commit is contained in:
Patrick Griffis
2016-12-13 16:12:03 -05:00
parent 2edf50d4dd
commit 628100c19f
71 changed files with 979 additions and 2097 deletions

View File

@@ -1,35 +0,0 @@
noinst_LIBRARIES = libhexchatdbus.a
libhexchatdbus_a_SOURCES = \
dbus-plugin.c \
dbus-plugin.h \
dbus-client.c \
dbus-client.h
EXTRA_DIST = \
remote-object.xml \
example.py \
org.hexchat.service.service.in
BUILT_SOURCES = \
remote-object-glue.h
# Dbus service file
servicedir = $(DBUS_SERVICES_DIR)
service_in_files = org.hexchat.service.service.in
service_DATA = $(service_in_files:.service.in=.service)
CLEANFILES = $(BUILT_SOURCES) $(service_DATA)
AM_CPPFLAGS = -I$(top_srcdir)/src/common $(COMMON_CFLAGS) $(DBUS_CFLAGS)
noinst_PROGRAMS = example
example_SOURCES = example.c
example_LDADD = $(DBUS_LIBS) $(GLIB_LIBS)
remote-object-glue.h: remote-object.xml
$(AM_V_GEN) $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=remote_object --mode=glib-server --output=$@ $<
# Rule to make the service file with bindir expanded
$(service_DATA): $(service_in_files) Makefile
@sed -e "s|\@bindir\@|$(bindir)|" $< > $@

View File

@@ -0,0 +1,44 @@
dbus_deps = [
dependency('dbus-glib-1')
]
dbus_sources = [
'dbus-plugin.c',
'dbus-client.c'
]
dbus_includes = [
include_directories('..'),
config_h_include
]
dbus_service_dir = join_paths(get_option('datadir'), 'dbus-1/services')
dbus_conf = configuration_data()
dbus_conf.set('bindir', join_paths(get_option('prefix'), get_option('bindir')))
configure_file(
input: 'org.hexchat.service.service.in',
output: 'org.hexchat.service.service',
configuration: dbus_conf,
install: true,
install_dir: dbus_service_dir
)
dbus_binding_tool = find_program('dbus-binding-tool')
dbus_remote_object = custom_target('remote-object-glue',
input: 'remote-object.xml',
output: 'remote-object-glue.h',
command: [dbus_binding_tool, '--prefix=remote_object', '--mode=glib-server',
'--output=@OUTPUT@', '@INPUT@']
)
hexchat_dbus = static_library('hexchatdbus',
sources: [dbus_remote_object, marshal] + dbus_sources,
dependencies: common_deps + dbus_deps,
include_directories: dbus_includes,
pic: true
)
hexchat_dbus_dep = declare_dependency(
link_with: hexchat_dbus
)