[v2] edid-decode: build: add support for building with meson
Commit Message
This also removes the old Makefile based build-system.
The immediate reason for adding support for meson is that this allows us
to include edid-decode as a subproject in libdisplay-info.
v2:
* Remove the make build-system
* Adjust the README on how to build/install with meson
* Fix installing for the wasm-build
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
---
Makefile | 50 ---------------------------
README | 28 +++++++++------
emscripten/wasm-crossfile.txt | 14 ++++++++
meson.build | 65 +++++++++++++++++++++++++++++++++++
4 files changed, 96 insertions(+), 61 deletions(-)
delete mode 100644 Makefile
create mode 100644 emscripten/wasm-crossfile.txt
create mode 100644 meson.build
Comments
Hi Sebastian,
Sorry for the delay, I was on vacation.
I still need to look at this since I have to be certain that it doesn't break
installation (esp. the emscripten part). I hope to find the time for that later
this week.
I am also considering moving edid-decode into https://git.linuxtv.org/v4l-utils.git/
That way it is actually part of proper releases with a version number and tarballs,
which is something that has been requested a few times.
What is your opinion on that? Or would that just make life harder for you?
Regards,
Hans
On 05/03/2024 12:54, Sebastian Wick wrote:
> This also removes the old Makefile based build-system.
>
> The immediate reason for adding support for meson is that this allows us
> to include edid-decode as a subproject in libdisplay-info.
>
> v2:
> * Remove the make build-system
> * Adjust the README on how to build/install with meson
> * Fix installing for the wasm-build
>
> Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
> ---
> Makefile | 50 ---------------------------
> README | 28 +++++++++------
> emscripten/wasm-crossfile.txt | 14 ++++++++
> meson.build | 65 +++++++++++++++++++++++++++++++++++
> 4 files changed, 96 insertions(+), 61 deletions(-)
> delete mode 100644 Makefile
> create mode 100644 emscripten/wasm-crossfile.txt
> create mode 100644 meson.build
>
> diff --git a/Makefile b/Makefile
> deleted file mode 100644
> index 375fedb..0000000
> --- a/Makefile
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -ifeq ($(OS),Windows_NT)
> - bindir ?= /usr/bin
> - mandir ?= /usr/share/man
> -else
> - UNAME_S := $(shell uname -s)
> - ifeq ($(UNAME_S),Darwin)
> - bindir ?= /usr/local/sbin
> - mandir ?= /usr/local/share/man
> - else
> - bindir ?= /usr/bin
> - mandir ?= /usr/share/man
> - endif
> -endif
> -
> -EMXX ?= em++
> -
> -SOURCES = $(wildcard *.cpp)
> -OBJECTS := $(patsubst %.cpp, %.o, $(SOURCES))
> -EMOBJECTS := $(patsubst %.cpp, emscripten/%.o, $(SOURCES))
> -
> -WARN_FLAGS = -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wimplicit-fallthrough
> -
> -all: edid-decode
> -
> -sha = -DSHA=$(shell if test -d .git ; then git rev-parse --short=12 HEAD ; fi)
> -date = -DDATE=$(shell if test -d .git ; then TZ=UTC git show --quiet --date='format-local:"%F %T"' --format='%cd'; fi)
> -
> -edid-decode: $(OBJECTS)
> - $(CXX) $(LDFLAGS) -g -o $@ $(OBJECTS) -lm
> -
> -edid-decode.js: emscripten/edid-decode.js
> -
> -emscripten/edid-decode.js: $(EMOBJECTS)
> - $(EMXX) $(LDFLAGS) -s EXPORTED_FUNCTIONS='["_parse_edid"]' -s EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' -o $@ $(EMOBJECTS) -lm
> -
> -%.o: %.cpp edid-decode.h oui.h Makefile
> - $(CXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(WARN_FLAGS) -g $(sha) $(date) -o $@ -c $<
> -
> -emscripten/%.o: %.cpp edid-decode.h oui.h Makefile
> - $(EMXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(WARN_FLAGS) $(sha) $(date) -o $@ -c $<
> -
> -clean:
> - rm -f *.o emscripten/*.o
> - rm -f edid-decode emscripten/edid-decode.js emscripten/edid-decode.wasm
> -
> -install:
> - mkdir -p $(DESTDIR)$(bindir)
> - install -m 0755 edid-decode $(DESTDIR)$(bindir)
> - mkdir -p $(DESTDIR)$(mandir)/man1
> - install -m 0644 edid-decode.1 $(DESTDIR)$(mandir)/man1
> diff --git a/README b/README
> index 4c2b7fe..bf4e668 100644
> --- a/README
> +++ b/README
> @@ -6,8 +6,9 @@ To build this do:
>
> git clone git://linuxtv.org/edid-decode.git
> cd edid-decode
> -make
> -make install
> +meson setup _build
> +meson compile -C _build
> +meson install -C _build
>
> Patches and bug reports can be sent to the linux-media@vger.kernel.org
> mailinglist (see https://www.linuxtv.org/lists.php). Please make sure
> @@ -46,15 +47,20 @@ https://hverkuil.home.xs4all.nl/edid-decode/edid-decode.html
>
> This is updated regularly with the latest edid-decode. It uses emscripten
> and the html file is maintained in the emscripten directory of edid-decode.
> -To build edid-decode.js/wasm run 'make edid-decode.js'. This assumes
> -that emscripten is installed, of course.
> -
> -You can use the konqueror browser to run it locally:
> -
> - konqueror emscripten/edid-decode.html
> -
> -For other browsers you need to serve the files using a local webserver.
> -See also https://emscripten.org/docs/getting_started/Tutorial.html
> +To build it, set the project up using the provided crossfile:
> +
> + meson setup _build-wasm \
> + --cross-file ./emscripten/wasm-crossfile.txt \
> + --prefix=$(pwd)/_install-wasm
> + meson install _build-wasm
> + # serve the files using a local webserver
> + cd _install-wasm/bin
> + python3 -m http.server
> +
> +This assumes that emscripten is installed, of course. The location of the
> +toolchain can be adjusted in emscripten/wasm-crossfile.txt.
> +See also https://emscripten.org/docs/getting_started/Tutorial.html and
> +https://mesonbuild.com/Cross-compilation.html.
>
> You can find a very large collection of EDIDs here:
> https://github.com/linuxhw/EDID
> diff --git a/emscripten/wasm-crossfile.txt b/emscripten/wasm-crossfile.txt
> new file mode 100644
> index 0000000..a41f46c
> --- /dev/null
> +++ b/emscripten/wasm-crossfile.txt
> @@ -0,0 +1,14 @@
> +[binaries]
> +c = '/usr/lib/emscripten/emcc'
> +cpp = '/usr/lib/emscripten/em++'
> +ar = '/usr/lib/emscripten/emar'
> +strip = '/usr/lib/emscripten/emstrip'
> +
> +[built-in options]
> +default_library = 'static'
> +
> +[host_machine]
> +system = 'emscripten'
> +cpu_family = 'wasm32'
> +cpu = 'wasm32'
> +endian = 'little'
> \ No newline at end of file
> diff --git a/meson.build b/meson.build
> new file mode 100644
> index 0000000..3a5bc71
> --- /dev/null
> +++ b/meson.build
> @@ -0,0 +1,65 @@
> +project(
> + 'edid-decode',
> + 'cpp',
> +)
> +
> +edid_decode_args = [
> + '-Wno-missing-field-initializers',
> + '-Wno-unused-parameter',
> + '-Wimplicit-fallthrough',
> +]
> +edid_decode_link_args = []
> +
> +git = find_program('git', native: true, required: false)
> +if git.found()
> + git_commit = run_command(
> + [git, 'rev-parse', '--short=12', 'HEAD'],
> + check: false,
> + )
> + git_date = run_command(
> + [git, 'show', '--quiet', '--date=format-local:%F %T', '--format=%cd'],
> + env: {'TZ': 'UTC'},
> + check: false,
> + )
> +
> + if git_commit.returncode() == 0
> + edid_decode_args += ['-DSHA=' + git_commit.stdout().strip()]
> + endif
> + if git_date.returncode() == 0
> + edid_decode_args += ['-DDATE=' + git_date.stdout().strip()]
> + endif
> +endif
> +
> +if target_machine.system() == 'emscripten'
> + edid_decode_link_args += [
> + '-sEXPORTED_FUNCTIONS=_parse_edid',
> + '-sEXPORTED_RUNTIME_METHODS=ccall,cwrap'
> + ]
> +
> + fs = import('fs')
> + foreach filename : ['edid-decode.html', 'edid-decode.ico']
> + fs.copyfile(
> + 'emscripten' / filename,
> + install: true,
> + install_dir: 'bin',
> + )
> + endforeach
> +endif
> +
> +executable(
> + 'edid-decode',
> + 'calc-gtf-cvt.cpp',
> + 'calc-ovt.cpp',
> + 'edid-decode.cpp',
> + 'parse-base-block.cpp',
> + 'parse-cta-block.cpp',
> + 'parse-di-ext-block.cpp',
> + 'parse-displayid-block.cpp',
> + 'parse-ls-ext-block.cpp',
> + 'parse-vtb-ext-block.cpp',
> + cpp_args : edid_decode_args,
> + link_args: edid_decode_link_args,
> + install : true,
> +)
> +
> +install_man('edid-decode.1')
> \ No newline at end of file
Hi Hans,
On Tue, Apr 2, 2024 at 6:35 PM Hans Verkuil <hverkuil@xs4all.nl> wrote:
>
> Hi Sebastian,
>
> Sorry for the delay, I was on vacation.
>
> I still need to look at this since I have to be certain that it doesn't break
> installation (esp. the emscripten part). I hope to find the time for that later
> this week.
Great! Send out a new version as well because I forgot to make the
executable available when used as a subproject.
> I am also considering moving edid-decode into https://git.linuxtv.org/v4l-utils.git/
> That way it is actually part of proper releases with a version number and tarballs,
> which is something that has been requested a few times.
>
> What is your opinion on that? Or would that just make life harder for you?
It should be fine for us. We can use get_variable() on the subproject
to get to edid-decode even if there are other things being built.
Might have to change the meson files to support building just
edid-decode but that should be doable as well.
> Regards,
>
> Hans
>
> On 05/03/2024 12:54, Sebastian Wick wrote:
> > This also removes the old Makefile based build-system.
> >
> > The immediate reason for adding support for meson is that this allows us
> > to include edid-decode as a subproject in libdisplay-info.
> >
> > v2:
> > * Remove the make build-system
> > * Adjust the README on how to build/install with meson
> > * Fix installing for the wasm-build
> >
> > Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
> > ---
> > Makefile | 50 ---------------------------
> > README | 28 +++++++++------
> > emscripten/wasm-crossfile.txt | 14 ++++++++
> > meson.build | 65 +++++++++++++++++++++++++++++++++++
> > 4 files changed, 96 insertions(+), 61 deletions(-)
> > delete mode 100644 Makefile
> > create mode 100644 emscripten/wasm-crossfile.txt
> > create mode 100644 meson.build
> >
> > diff --git a/Makefile b/Makefile
> > deleted file mode 100644
> > index 375fedb..0000000
> > --- a/Makefile
> > +++ /dev/null
> > @@ -1,50 +0,0 @@
> > -ifeq ($(OS),Windows_NT)
> > - bindir ?= /usr/bin
> > - mandir ?= /usr/share/man
> > -else
> > - UNAME_S := $(shell uname -s)
> > - ifeq ($(UNAME_S),Darwin)
> > - bindir ?= /usr/local/sbin
> > - mandir ?= /usr/local/share/man
> > - else
> > - bindir ?= /usr/bin
> > - mandir ?= /usr/share/man
> > - endif
> > -endif
> > -
> > -EMXX ?= em++
> > -
> > -SOURCES = $(wildcard *.cpp)
> > -OBJECTS := $(patsubst %.cpp, %.o, $(SOURCES))
> > -EMOBJECTS := $(patsubst %.cpp, emscripten/%.o, $(SOURCES))
> > -
> > -WARN_FLAGS = -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wimplicit-fallthrough
> > -
> > -all: edid-decode
> > -
> > -sha = -DSHA=$(shell if test -d .git ; then git rev-parse --short=12 HEAD ; fi)
> > -date = -DDATE=$(shell if test -d .git ; then TZ=UTC git show --quiet --date='format-local:"%F %T"' --format='%cd'; fi)
> > -
> > -edid-decode: $(OBJECTS)
> > - $(CXX) $(LDFLAGS) -g -o $@ $(OBJECTS) -lm
> > -
> > -edid-decode.js: emscripten/edid-decode.js
> > -
> > -emscripten/edid-decode.js: $(EMOBJECTS)
> > - $(EMXX) $(LDFLAGS) -s EXPORTED_FUNCTIONS='["_parse_edid"]' -s EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' -o $@ $(EMOBJECTS) -lm
> > -
> > -%.o: %.cpp edid-decode.h oui.h Makefile
> > - $(CXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(WARN_FLAGS) -g $(sha) $(date) -o $@ -c $<
> > -
> > -emscripten/%.o: %.cpp edid-decode.h oui.h Makefile
> > - $(EMXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(WARN_FLAGS) $(sha) $(date) -o $@ -c $<
> > -
> > -clean:
> > - rm -f *.o emscripten/*.o
> > - rm -f edid-decode emscripten/edid-decode.js emscripten/edid-decode.wasm
> > -
> > -install:
> > - mkdir -p $(DESTDIR)$(bindir)
> > - install -m 0755 edid-decode $(DESTDIR)$(bindir)
> > - mkdir -p $(DESTDIR)$(mandir)/man1
> > - install -m 0644 edid-decode.1 $(DESTDIR)$(mandir)/man1
> > diff --git a/README b/README
> > index 4c2b7fe..bf4e668 100644
> > --- a/README
> > +++ b/README
> > @@ -6,8 +6,9 @@ To build this do:
> >
> > git clone git://linuxtv.org/edid-decode.git
> > cd edid-decode
> > -make
> > -make install
> > +meson setup _build
> > +meson compile -C _build
> > +meson install -C _build
> >
> > Patches and bug reports can be sent to the linux-media@vger.kernel.org
> > mailinglist (see https://www.linuxtv.org/lists.php). Please make sure
> > @@ -46,15 +47,20 @@ https://hverkuil.home.xs4all.nl/edid-decode/edid-decode.html
> >
> > This is updated regularly with the latest edid-decode. It uses emscripten
> > and the html file is maintained in the emscripten directory of edid-decode.
> > -To build edid-decode.js/wasm run 'make edid-decode.js'. This assumes
> > -that emscripten is installed, of course.
> > -
> > -You can use the konqueror browser to run it locally:
> > -
> > - konqueror emscripten/edid-decode.html
> > -
> > -For other browsers you need to serve the files using a local webserver.
> > -See also https://emscripten.org/docs/getting_started/Tutorial.html
> > +To build it, set the project up using the provided crossfile:
> > +
> > + meson setup _build-wasm \
> > + --cross-file ./emscripten/wasm-crossfile.txt \
> > + --prefix=$(pwd)/_install-wasm
> > + meson install _build-wasm
> > + # serve the files using a local webserver
> > + cd _install-wasm/bin
> > + python3 -m http.server
> > +
> > +This assumes that emscripten is installed, of course. The location of the
> > +toolchain can be adjusted in emscripten/wasm-crossfile.txt.
> > +See also https://emscripten.org/docs/getting_started/Tutorial.html and
> > +https://mesonbuild.com/Cross-compilation.html.
> >
> > You can find a very large collection of EDIDs here:
> > https://github.com/linuxhw/EDID
> > diff --git a/emscripten/wasm-crossfile.txt b/emscripten/wasm-crossfile.txt
> > new file mode 100644
> > index 0000000..a41f46c
> > --- /dev/null
> > +++ b/emscripten/wasm-crossfile.txt
> > @@ -0,0 +1,14 @@
> > +[binaries]
> > +c = '/usr/lib/emscripten/emcc'
> > +cpp = '/usr/lib/emscripten/em++'
> > +ar = '/usr/lib/emscripten/emar'
> > +strip = '/usr/lib/emscripten/emstrip'
> > +
> > +[built-in options]
> > +default_library = 'static'
> > +
> > +[host_machine]
> > +system = 'emscripten'
> > +cpu_family = 'wasm32'
> > +cpu = 'wasm32'
> > +endian = 'little'
> > \ No newline at end of file
> > diff --git a/meson.build b/meson.build
> > new file mode 100644
> > index 0000000..3a5bc71
> > --- /dev/null
> > +++ b/meson.build
> > @@ -0,0 +1,65 @@
> > +project(
> > + 'edid-decode',
> > + 'cpp',
> > +)
> > +
> > +edid_decode_args = [
> > + '-Wno-missing-field-initializers',
> > + '-Wno-unused-parameter',
> > + '-Wimplicit-fallthrough',
> > +]
> > +edid_decode_link_args = []
> > +
> > +git = find_program('git', native: true, required: false)
> > +if git.found()
> > + git_commit = run_command(
> > + [git, 'rev-parse', '--short=12', 'HEAD'],
> > + check: false,
> > + )
> > + git_date = run_command(
> > + [git, 'show', '--quiet', '--date=format-local:%F %T', '--format=%cd'],
> > + env: {'TZ': 'UTC'},
> > + check: false,
> > + )
> > +
> > + if git_commit.returncode() == 0
> > + edid_decode_args += ['-DSHA=' + git_commit.stdout().strip()]
> > + endif
> > + if git_date.returncode() == 0
> > + edid_decode_args += ['-DDATE=' + git_date.stdout().strip()]
> > + endif
> > +endif
> > +
> > +if target_machine.system() == 'emscripten'
> > + edid_decode_link_args += [
> > + '-sEXPORTED_FUNCTIONS=_parse_edid',
> > + '-sEXPORTED_RUNTIME_METHODS=ccall,cwrap'
> > + ]
> > +
> > + fs = import('fs')
> > + foreach filename : ['edid-decode.html', 'edid-decode.ico']
> > + fs.copyfile(
> > + 'emscripten' / filename,
> > + install: true,
> > + install_dir: 'bin',
> > + )
> > + endforeach
> > +endif
> > +
> > +executable(
> > + 'edid-decode',
> > + 'calc-gtf-cvt.cpp',
> > + 'calc-ovt.cpp',
> > + 'edid-decode.cpp',
> > + 'parse-base-block.cpp',
> > + 'parse-cta-block.cpp',
> > + 'parse-di-ext-block.cpp',
> > + 'parse-displayid-block.cpp',
> > + 'parse-ls-ext-block.cpp',
> > + 'parse-vtb-ext-block.cpp',
> > + cpp_args : edid_decode_args,
> > + link_args: edid_decode_link_args,
> > + install : true,
> > +)
> > +
> > +install_man('edid-decode.1')
> > \ No newline at end of file
>
deleted file mode 100644
@@ -1,50 +0,0 @@
-ifeq ($(OS),Windows_NT)
- bindir ?= /usr/bin
- mandir ?= /usr/share/man
-else
- UNAME_S := $(shell uname -s)
- ifeq ($(UNAME_S),Darwin)
- bindir ?= /usr/local/sbin
- mandir ?= /usr/local/share/man
- else
- bindir ?= /usr/bin
- mandir ?= /usr/share/man
- endif
-endif
-
-EMXX ?= em++
-
-SOURCES = $(wildcard *.cpp)
-OBJECTS := $(patsubst %.cpp, %.o, $(SOURCES))
-EMOBJECTS := $(patsubst %.cpp, emscripten/%.o, $(SOURCES))
-
-WARN_FLAGS = -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wimplicit-fallthrough
-
-all: edid-decode
-
-sha = -DSHA=$(shell if test -d .git ; then git rev-parse --short=12 HEAD ; fi)
-date = -DDATE=$(shell if test -d .git ; then TZ=UTC git show --quiet --date='format-local:"%F %T"' --format='%cd'; fi)
-
-edid-decode: $(OBJECTS)
- $(CXX) $(LDFLAGS) -g -o $@ $(OBJECTS) -lm
-
-edid-decode.js: emscripten/edid-decode.js
-
-emscripten/edid-decode.js: $(EMOBJECTS)
- $(EMXX) $(LDFLAGS) -s EXPORTED_FUNCTIONS='["_parse_edid"]' -s EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' -o $@ $(EMOBJECTS) -lm
-
-%.o: %.cpp edid-decode.h oui.h Makefile
- $(CXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(WARN_FLAGS) -g $(sha) $(date) -o $@ -c $<
-
-emscripten/%.o: %.cpp edid-decode.h oui.h Makefile
- $(EMXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(WARN_FLAGS) $(sha) $(date) -o $@ -c $<
-
-clean:
- rm -f *.o emscripten/*.o
- rm -f edid-decode emscripten/edid-decode.js emscripten/edid-decode.wasm
-
-install:
- mkdir -p $(DESTDIR)$(bindir)
- install -m 0755 edid-decode $(DESTDIR)$(bindir)
- mkdir -p $(DESTDIR)$(mandir)/man1
- install -m 0644 edid-decode.1 $(DESTDIR)$(mandir)/man1
@@ -6,8 +6,9 @@ To build this do:
git clone git://linuxtv.org/edid-decode.git
cd edid-decode
-make
-make install
+meson setup _build
+meson compile -C _build
+meson install -C _build
Patches and bug reports can be sent to the linux-media@vger.kernel.org
mailinglist (see https://www.linuxtv.org/lists.php). Please make sure
@@ -46,15 +47,20 @@ https://hverkuil.home.xs4all.nl/edid-decode/edid-decode.html
This is updated regularly with the latest edid-decode. It uses emscripten
and the html file is maintained in the emscripten directory of edid-decode.
-To build edid-decode.js/wasm run 'make edid-decode.js'. This assumes
-that emscripten is installed, of course.
-
-You can use the konqueror browser to run it locally:
-
- konqueror emscripten/edid-decode.html
-
-For other browsers you need to serve the files using a local webserver.
-See also https://emscripten.org/docs/getting_started/Tutorial.html
+To build it, set the project up using the provided crossfile:
+
+ meson setup _build-wasm \
+ --cross-file ./emscripten/wasm-crossfile.txt \
+ --prefix=$(pwd)/_install-wasm
+ meson install _build-wasm
+ # serve the files using a local webserver
+ cd _install-wasm/bin
+ python3 -m http.server
+
+This assumes that emscripten is installed, of course. The location of the
+toolchain can be adjusted in emscripten/wasm-crossfile.txt.
+See also https://emscripten.org/docs/getting_started/Tutorial.html and
+https://mesonbuild.com/Cross-compilation.html.
You can find a very large collection of EDIDs here:
https://github.com/linuxhw/EDID
new file mode 100644
@@ -0,0 +1,14 @@
+[binaries]
+c = '/usr/lib/emscripten/emcc'
+cpp = '/usr/lib/emscripten/em++'
+ar = '/usr/lib/emscripten/emar'
+strip = '/usr/lib/emscripten/emstrip'
+
+[built-in options]
+default_library = 'static'
+
+[host_machine]
+system = 'emscripten'
+cpu_family = 'wasm32'
+cpu = 'wasm32'
+endian = 'little'
\ No newline at end of file
new file mode 100644
@@ -0,0 +1,65 @@
+project(
+ 'edid-decode',
+ 'cpp',
+)
+
+edid_decode_args = [
+ '-Wno-missing-field-initializers',
+ '-Wno-unused-parameter',
+ '-Wimplicit-fallthrough',
+]
+edid_decode_link_args = []
+
+git = find_program('git', native: true, required: false)
+if git.found()
+ git_commit = run_command(
+ [git, 'rev-parse', '--short=12', 'HEAD'],
+ check: false,
+ )
+ git_date = run_command(
+ [git, 'show', '--quiet', '--date=format-local:%F %T', '--format=%cd'],
+ env: {'TZ': 'UTC'},
+ check: false,
+ )
+
+ if git_commit.returncode() == 0
+ edid_decode_args += ['-DSHA=' + git_commit.stdout().strip()]
+ endif
+ if git_date.returncode() == 0
+ edid_decode_args += ['-DDATE=' + git_date.stdout().strip()]
+ endif
+endif
+
+if target_machine.system() == 'emscripten'
+ edid_decode_link_args += [
+ '-sEXPORTED_FUNCTIONS=_parse_edid',
+ '-sEXPORTED_RUNTIME_METHODS=ccall,cwrap'
+ ]
+
+ fs = import('fs')
+ foreach filename : ['edid-decode.html', 'edid-decode.ico']
+ fs.copyfile(
+ 'emscripten' / filename,
+ install: true,
+ install_dir: 'bin',
+ )
+ endforeach
+endif
+
+executable(
+ 'edid-decode',
+ 'calc-gtf-cvt.cpp',
+ 'calc-ovt.cpp',
+ 'edid-decode.cpp',
+ 'parse-base-block.cpp',
+ 'parse-cta-block.cpp',
+ 'parse-di-ext-block.cpp',
+ 'parse-displayid-block.cpp',
+ 'parse-ls-ext-block.cpp',
+ 'parse-vtb-ext-block.cpp',
+ cpp_args : edid_decode_args,
+ link_args: edid_decode_link_args,
+ install : true,
+)
+
+install_man('edid-decode.1')
\ No newline at end of file