diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2018-06-17 17:28:09 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-17 17:28:09 +0300 |
commit | 8014a42f57af04620ff0625aa727864779479f1a (patch) | |
tree | 1fc5bba59443c99da9662ed2672d263a984f2bf4 | |
parent | cd63ca9c194c328e9a05b1c81898657c3acfe498 (diff) | |
parent | 4bc6b68bae3a11d9a77ac5511d3dd54aa2d9ff3b (diff) | |
download | meson-8014a42f57af04620ff0625aa727864779479f1a.zip meson-8014a42f57af04620ff0625aa727864779479f1a.tar.gz meson-8014a42f57af04620ff0625aa727864779479f1a.tar.bz2 |
Merge pull request #3715 from jon-turney/duplicate-rsrc-script-name
Use a unique name for windows resource compilation custom target
10 files changed, 55 insertions, 2 deletions
diff --git a/mesonbuild/modules/windows.py b/mesonbuild/modules/windows.py index fb5bacf..7dd87f2 100644 --- a/mesonbuild/modules/windows.py +++ b/mesonbuild/modules/windows.py @@ -88,8 +88,10 @@ class WindowsModule(ExtensionModule): 'depend_files': wrc_deps, } - if isinstance(src, (str, mesonlib.File)): - name = 'file {!r}'.format(str(src)) + if isinstance(src, str): + name = 'file {!r}'.format(os.path.join(state.subdir, src)) + elif isinstance(src, mesonlib.File): + name = 'file {!r}'.format(src.relative_name()) elif isinstance(src, build.CustomTarget): if len(src.get_outputs()) > 1: raise MesonException('windows.compile_resources does not accept custom targets with more than 1 output.') diff --git a/test cases/windows/16 resource scripts with duplicate filenames/a/meson.build b/test cases/windows/16 resource scripts with duplicate filenames/a/meson.build new file mode 100644 index 0000000..73f18c8 --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/a/meson.build @@ -0,0 +1 @@ +a = win.compile_resources('rsrc.rc') diff --git a/test cases/windows/16 resource scripts with duplicate filenames/a/rsrc.rc b/test cases/windows/16 resource scripts with duplicate filenames/a/rsrc.rc new file mode 100644 index 0000000..1997b8e --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/a/rsrc.rc @@ -0,0 +1 @@ +a RCDATA { "a" } diff --git a/test cases/windows/16 resource scripts with duplicate filenames/b/meson.build b/test cases/windows/16 resource scripts with duplicate filenames/b/meson.build new file mode 100644 index 0000000..d0b0aab --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/b/meson.build @@ -0,0 +1,2 @@ +bf = files('rsrc.rc') +b = win.compile_resources(bf) diff --git a/test cases/windows/16 resource scripts with duplicate filenames/b/rsrc.rc b/test cases/windows/16 resource scripts with duplicate filenames/b/rsrc.rc new file mode 100644 index 0000000..a8e3b27 --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/b/rsrc.rc @@ -0,0 +1 @@ +b RCDATA { "b" } diff --git a/test cases/windows/16 resource scripts with duplicate filenames/c/meson.build b/test cases/windows/16 resource scripts with duplicate filenames/c/meson.build new file mode 100644 index 0000000..a7b7e30 --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/c/meson.build @@ -0,0 +1,2 @@ +cf = files('rsrc.rc') +c = win.compile_resources(cf) diff --git a/test cases/windows/16 resource scripts with duplicate filenames/c/rsrc.rc b/test cases/windows/16 resource scripts with duplicate filenames/c/rsrc.rc new file mode 100644 index 0000000..1fa2c1c --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/c/rsrc.rc @@ -0,0 +1 @@ +c RCDATA { "c" } diff --git a/test cases/windows/16 resource scripts with duplicate filenames/meson.build b/test cases/windows/16 resource scripts with duplicate filenames/meson.build new file mode 100644 index 0000000..4073a8e --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/meson.build @@ -0,0 +1,19 @@ +project('foobar', 'c') + +win = import('windows') + +subdir('a') +subdir('b') +subdir('c') + +main = win.compile_resources('rsrc.rc') + +testa = executable('testa', 'verify.c', a) +testb = executable('testb', 'verify.c', b) +testc = executable('testc', 'verify.c', c) +testmain = executable('testmain', 'verify.c', main) + +test('a', testa, args: 'a') +test('b', testb, args: 'b') +test('c', testc, args: 'c') +test('main', testmain, args: 'main') diff --git a/test cases/windows/16 resource scripts with duplicate filenames/rsrc.rc b/test cases/windows/16 resource scripts with duplicate filenames/rsrc.rc new file mode 100644 index 0000000..8f6aa1f --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/rsrc.rc @@ -0,0 +1 @@ +main RCDATA { "main" } diff --git a/test cases/windows/16 resource scripts with duplicate filenames/verify.c b/test cases/windows/16 resource scripts with duplicate filenames/verify.c new file mode 100644 index 0000000..4d2ccf0 --- /dev/null +++ b/test cases/windows/16 resource scripts with duplicate filenames/verify.c @@ -0,0 +1,23 @@ +#include <assert.h> +#include <windows.h> + +int main(int arc, char *argv[]) +{ + // verify that the expected resource exists and has the expected contents + HRSRC hRsrc; + unsigned int size; + HGLOBAL hGlobal; + void* data; + + hRsrc = FindResource(NULL, argv[1], RT_RCDATA); + assert(hRsrc); + + size = SizeofResource(NULL, hRsrc); + hGlobal = LoadResource(NULL, hRsrc); + data = LockResource(hGlobal); + + assert(size == strlen(argv[1])); + assert(memcmp(data, argv[1], size) == 0); + + return 0; +} |