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 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@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