Refactor build system

The client was built with Meson, the server with Gradle, and were run by
a Makefile.

Add a Meson script for the server (which delegates to Gradle), and a
parent script to build and install both the client and the server to the
system, typically with:

    meson --buildtype release build
    cd build
    ninja
    sudo ninja install

In addition, use a separate Makefile to build a "portable" version of
the application (where the client expects the server to be in the
current directory). Typically:

    make release-portable
    cd dist/scrcpy
    ./scrcpy

This is especially useful for Windows builds, which are not "installed".
This commit is contained in:
Romain Vimont 2018-02-13 11:55:12 +01:00
commit ff94462d8a
9 changed files with 109 additions and 42 deletions

11
server/meson.build Normal file
View file

@ -0,0 +1,11 @@
project('scrcpy-server', 'c') # not really c, but meson expects something
# does not track dependencies, so meson does not guarantees that server is up to date
# call "touch server" or "ninja -t clean server/scrcpy-server.jar" before to rebuild
custom_target('scrcpy-server',
build_always: false, # do not enable, otherwise "sudo ninja install" will execute gradle!
input: '.',
output: 'scrcpy-server.jar',
command: [find_program('./scripts/build-wrapper.sh'), '@INPUT@', '@OUTPUT@', get_option('buildtype')],
install: true,
install_dir: 'share/scrcpy')