diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 579988f06..6b5c4a489 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -763,6 +763,10 @@ class Compiler: # directory. This breaks reproducible builds. rel_rpaths = [] for p in rpath_paths: + # p can be an empty string for build_dir (relative path), but + # os.path.relpath() below won't like that. + if p == '': + p = build_dir if p == from_dir: relative = '' # relpath errors out in this case else: diff --git a/test cases/common/154 library at root/lib.c b/test cases/common/154 library at root/lib.c new file mode 100644 index 000000000..a5b3dc3b8 --- /dev/null +++ b/test cases/common/154 library at root/lib.c @@ -0,0 +1,6 @@ +#if defined _WIN32 || defined __CYGWIN__ +__declspec(dllexport) +#endif +int fn(void) { + return -1; +} diff --git a/test cases/common/154 library at root/main/main.c b/test cases/common/154 library at root/main/main.c new file mode 100644 index 000000000..c4e1b4ee3 --- /dev/null +++ b/test cases/common/154 library at root/main/main.c @@ -0,0 +1,5 @@ +extern int fn(void); + +int main() { + return 1 + fn(); +} diff --git a/test cases/common/154 library at root/main/meson.build b/test cases/common/154 library at root/main/meson.build new file mode 100644 index 000000000..557378ae5 --- /dev/null +++ b/test cases/common/154 library at root/main/meson.build @@ -0,0 +1,2 @@ +exe = executable('main', 'main.c', link_with : lib) +test('stuff works', exe) diff --git a/test cases/common/154 library at root/meson.build b/test cases/common/154 library at root/meson.build new file mode 100644 index 000000000..bfdd869d7 --- /dev/null +++ b/test cases/common/154 library at root/meson.build @@ -0,0 +1,3 @@ +project('lib@root', 'c') +lib = shared_library('lib', 'lib.c') +subdir('main')