Re: [PATCH v2] edid-decode: build: add support for building with meson

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hans,

On Tue, Apr 2, 2024 at 6:35 PM Hans Verkuil <hverkuil@xxxxxxxxx> 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@xxxxxxxxxx>
> > ---
> >  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@xxxxxxxxxxxxxxx
> >  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
>






[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux