Just curious, how does Meson address / plan to address the top-level build issue? Thanks Christophe > On 28 Sep 2018, at 13:15, Marc-André Lureau <marcandre.lureau@xxxxxxxxx> wrote: > > Hi > > On Fri, Sep 28, 2018 at 2:19 PM Christophe Fergeau <cfergeau@xxxxxxxxxx> wrote: >> >> Hey, >> >> We just added meson support to spice/spice-gtk, I'd rather we don't add >> a 3rd way to build spice, 2 is already error-prone enough :) >> > > I agree, I would rather focus on making meson the only build-sys, by > fixing the remaining issues (dist'ing for ex). > >> Christophe >> >> >> On Thu, Sep 27, 2018 at 05:33:37PM +0200, Christophe de Dinechin wrote: >>> From: Christophe de Dinechin <dinechin@xxxxxxxxxx> >>> >>> Make-it-Quick is a make-only build system that uses makefiles >>> for autoconfiguration. For SPICE, it provides a faster, easier to >>> maintain and more flexible build system. >>> >>> A key feature made possible by this build system is top-level builds. >>> Top-level builds are made from a 'spice' directory that has protocol, >>> common, server and client as its sub-directories. This makes it easy >>> to make changes in protocol or common and rebuild all impacted server >>> and client code, with proper header dependency tracking. >>> >>> The make-it-quick system is still evolving rapidly. In its current >>> incarnation, it does not yet offer all the usual targets expected from >>> a makefile generated by automake. >>> >>> Reminder: You need the corresponding RFC in spice-common >>> >>> Github review link: https://github.com/c3d/spice-server/commits/c3d-build >>> >>> Signed-off-by: Christophe de Dinechin <dinechin@xxxxxxxxxx> >>> --- >>> Makefile | 15 +++ >>> docs/Makefile | 19 +++ >>> docs/manual/Makefile | 22 ++++ >>> server/Makefile | 160 +++++++++++++++++++++++ >>> server/config/check_lz4_compress_fast_continue.c | 16 +++ >>> subprojects/spice-common | 2 +- >>> 6 files changed, 233 insertions(+), 1 deletion(-) >>> create mode 100644 Makefile >>> create mode 100644 docs/Makefile >>> create mode 100644 docs/manual/Makefile >>> create mode 100644 server/Makefile >>> create mode 100644 server/config/check_lz4_compress_fast_continue.c >>> >>> diff --git a/Makefile b/Makefile >>> new file mode 100644 >>> index 00000000..bde2edc0 >>> --- /dev/null >>> +++ b/Makefile >>> @@ -0,0 +1,15 @@ >>> +PACKAGE_NAME=spice-server >>> +PACKAGE_VERSION=0.13 >>> +PACKAGE_DESCRIPTION=SPICE server library >>> +PACKAGE_REQUIRES=spice-protocol >= 0.12.14 >>> +PACKAGE_URL=http://spice-space.org >>> + >>> +MIQ=make-it-quick/ >>> + >>> +SUBDIRS= server docs >>> + >>> +# Set srcdir which is used by GNUmakefile in this directory >>> +srcdir=. >>> +include $(MIQ)rules.mk >>> +$(MIQ)rules.mk: >>> + git clone http://github.com/c3d/make-it-quick >>> diff --git a/docs/Makefile b/docs/Makefile >>> new file mode 100644 >>> index 00000000..7fed8c6f >>> --- /dev/null >>> +++ b/docs/Makefile >>> @@ -0,0 +1,19 @@ >>> +TOP=../ >>> +MIQ=$(TOP)make-it-quick/ >>> + >>> +ASCIIDOC=asciidoc >>> +ASCIIDOC_FLAGS=-a icons -a toc >>> + >>> +HTML_FILES=spice_style.html spice_threading_model.html >>> +TO_CLEAN+=$(HTML_FILES) >>> + >>> +SUBDIRS=manual >>> + >>> +include $(MIQ)rules.mk >>> +$(MIQ)rules.mk: >>> + cd $(TOP) && make $(TARGET) >>> + >>> +build: $(HTML_FILES) >>> + >>> +%.html: %.txt >>> + $(PRINT_GENERATE) $(ASCIIDOC) -n $(ASCIIDOC_FLAGS) -o $@ $< >>> diff --git a/docs/manual/Makefile b/docs/manual/Makefile >>> new file mode 100644 >>> index 00000000..96cd6422 >>> --- /dev/null >>> +++ b/docs/manual/Makefile >>> @@ -0,0 +1,22 @@ >>> +TOP=../ >>> +MIQ=$(MIQ)rules.mk >>> + >>> +ASCIIDOC=asciidoc >>> +A2X=a2x >>> +ASCIIDOC_FLAGS=-a icons -a toc >>> + >>> +DOC_FILES=manual.html manual.chunked >>> +DOC_DIR=$(OBJDIR)manual-chunked/ >>> +TO_CLEAN+=$(DOC_FILES) >>> + >>> +include $(MIQ)rules.mk >>> +$(MIQ)rules.mk: >>> + cd $(TOP) && make $(TARGET) >>> + >>> +%.html: %.txt >>> + $(PRINT_GENERATE) $(ASCIIDOC) $(ASCIIDOC_FLAGS) -o $@ $< >>> + >>> +manual.chunked: manual.txt $(DOC_DIR).mkdir-only >>> + $(PRINT_GENERATE) $(A2X) -f chunked -D $(DOC_DIR) $(ASCIIDOC_FLAGS) $< >>> + >>> +build: $(DOC_FILES) >>> diff --git a/server/Makefile b/server/Makefile >>> new file mode 100644 >>> index 00000000..8e00a5ad >>> --- /dev/null >>> +++ b/server/Makefile >>> @@ -0,0 +1,160 @@ >>> +TOP=../ >>> +MIQ=$(TOP)make-it-quick/ >>> + >>> +PRODUCTS= spice-server.dll >>> +PRODUCTS_VERSION=1.12.5 >>> + >>> +SPICE_SERVER_VERSION=\"$(shell ../build-aux/git-version-gen ../.tarball-version)\" >>> + >>> +PACKAGE_NAME=spice-server >>> +PACKAGE_VERSION=0.13 >>> +PACKAGE_DESCRIPTION=SPICE server library >>> +PACKAGE_URL=https://spice-space.org >>> +PACKAGE_REQUIRES=spice-protocol >= 0.12.14 >>> +PACKAGE_BUGS=spice-devel@xxxxxxxxxxxxxxxxxxxxx >>> +PACKAGE_DIR= # Goes directly in $(PREFIX)/lib/ >>> + >>> +PREFIX_DLL=$(PREFIX_LIB) >>> + >>> +PKGCONFIGS= pixman-1 \ >>> + openssl \ >>> + liblz4? \ >>> + gobject-2.0 \ >>> + glib-2.0 \ >>> + gio-2.0 \ >>> + zlib \ >>> + opus \ >>> + libjpeg? \ >>> + gstreamer-1.0 \ >>> + gstreamer-base-1.0 \ >>> + gstreamer-app-1.0 \ >>> + gstreamer-video-1.0 \ >>> + gstreamer-audio-1.0 \ >>> + gstreamer-plugins-base-1.0 \ >>> + orc-0.4 >>> + >>> +LDFLAGS_SPICE= --version-script=./spice-server.syms >>> +LDFLAGS_BUILDENV_linux=$(LDFLAGS_SPICE:%=-Wl,%) >>> + >>> +SPICE_COMMON?=$(TOP)subprojects/spice-common/ >>> + >>> +ifndef SPICE_PROTOCOL >>> +PKGCONFIGS+= spice-protocol >>> +endif >>> + >>> +CONFIG= <lz4.h> \ >>> + libjpeg \ >>> + lz4_compress_fast_continue >>> + >>> +GENERATED= spice-server-enums.h \ >>> + spice-server-enums.c \ >>> + spice-version.h >>> + >>> +SOURCES= $(filter %.c, $(GENERATED)) \ >>> + agent-msg-filter.c \ >>> + char-device.c \ >>> + common-graphics-channel.c \ >>> + cursor-channel.c \ >>> + cursor-channel-client.c \ >>> + dcc.c \ >>> + dcc-send.c \ >>> + dispatcher.c \ >>> + display-channel.c \ >>> + event-loop.c \ >>> + glz-encoder.c \ >>> + glz-encoder-dict.c \ >>> + image-cache.c \ >>> + image-encoders.c \ >>> + inputs-channel.c \ >>> + inputs-channel-client.c \ >>> + jpeg-encoder.c \ >>> + main-channel.c \ >>> + main-channel-client.c \ >>> + main-dispatcher.c \ >>> + memslot.c \ >>> + mjpeg-encoder.c \ >>> + net-utils.c \ >>> + pixmap-cache.c \ >>> + red-channel.c \ >>> + red-channel-capabilities.c \ >>> + red-channel-client.c \ >>> + red-client.c \ >>> + red-parse-qxl.c \ >>> + red-pipe-item.c \ >>> + red-qxl.c \ >>> + red-record-qxl.c \ >>> + red-replay-qxl.c \ >>> + reds.c \ >>> + red-stream.c \ >>> + red-worker.c \ >>> + sound.c \ >>> + spice-bitmap-utils.c \ >>> + spicevmc.c \ >>> + stat-file.c \ >>> + video-stream.c \ >>> + stream-channel.c \ >>> + red-stream-device.c \ >>> + sw-canvas.c \ >>> + tree.c \ >>> + utils.c \ >>> + zlib-encoder.c \ >>> + $(HAVE_LZ4_H:%= \ >>> + lz4-encoder.c) \ >>> + $(HAVE_SMARTCARD:%= \ >>> + smartcard.c \ >>> + smartcard-channel-client.c) \ >>> + $(HAVE_GSTREAMER_1_0:%= \ >>> + gstreamer-encoder.c) \ >>> + >>> +DEFINES= HAVE_CONFIG_H \ >>> + SPICE_SERVER_INTERNAL \ >>> + $(DEFINES_$(OS_NAME)) \ >>> + $(EXTRA_CHECKS_$(TARGET)) \ >>> + VERSION=$(SPICE_SERVER_VERSION) >>> + >>> +DEFINES_macosx= MSG_NOSIGNAL=0 >>> + >>> +EXTRA_CHECKS_debug= ENABLE_EXTRA_CHECKS=1 >>> +EXTRA_CHECKS_opt= ENABLE_EXTRA_CHECKS=0 >>> +EXTRA_CHECKS_release= ENABLE_EXTRA_CHECKS=0 >>> + >>> +INCLUDES= . \ >>> + $(SPICE_PROTOCOL) \ >>> + $(SPICE_COMMON) >>> + >>> +LIBRARIES= $(SPICE_COMMON)spice-common-server.dll >>> + >>> +PREFIX_HDR= $(PREFIX)include/spice-server/ >>> +HEADERS= spice-audio.h \ >>> + spice-char.h \ >>> + spice-core.h \ >>> + spice-experimental.h \ >>> + spice-input.h \ >>> + spice-migration.h \ >>> + spice-qxl.h \ >>> + spice-server.h \ >>> + spice-version.h \ >>> + spice-replay.h \ >>> + spice.h >>> + >>> +TO_CLEAN= $(GENERATED) >>> + >>> +include $(MIQ)rules.mk >>> +$(MIQ)rules.mk: >>> + cd $(TOP) && make $(TARGET) >>> + >>> +.prebuild: $(GENERATED) >>> + >>> +spice-server-enums.c: spice-server.h spice-server-enums.c.tmpl >>> + $(PRINT_GENERATE) glib-mkenums --template spice-server-enums.c.tmpl $< > $@ >>> + >>> +spice-server-enums.h: spice-server.h spice-server-enums.h.tmpl >>> + $(PRINT_GENERATE) glib-mkenums --template spice-server-enums.h.tmpl $< > $@ >>> + >>> +spice-version.h: spice-version.h.in >>> + $(PRINT_GENERATE) $(GEN_$@) >>> +GEN_spice-version.h= \ >>> + sed < $< > $@ \ >>> + -e 's|@SPICE_SERVER_VERSION@|$(SPICE_SERVER_VERSION)|g' >>> + >>> +$(GENERATED): $(MIQ_MAKEDEPS) >>> diff --git a/server/config/check_lz4_compress_fast_continue.c b/server/config/check_lz4_compress_fast_continue.c >>> new file mode 100644 >>> index 00000000..91937729 >>> --- /dev/null >>> +++ b/server/config/check_lz4_compress_fast_continue.c >>> @@ -0,1 +1,16 @@ >>> +#include <lz4.h> >>> + >>> +int main() >>> +{ >>> + if (0) { >>> + LZ4_stream_t *stream = NULL; >>> + const char *in_buf = NULL; >>> + char *compressed_buf = NULL; >>> + int in_size = 0; >>> + int bound_size = 0; >>> + LZ4_compress_fast_continue(stream, >>> + in_buf, compressed_buf, >>> + in_size, bound_size, 1); >>> + } >>> + return 0; >>> +} >>> -- >>> 2.13.5 (Apple Git-94) >>> _______________________________________________ >>> Spice-devel mailing list >>> Spice-devel@xxxxxxxxxxxxxxxxxxxxx >>> https://lists.freedesktop.org/mailman/listinfo/spice-devel >> _______________________________________________ >> Spice-devel mailing list >> Spice-devel@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/spice-devel > > > > -- > Marc-André Lureau _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel