diff options
author | Goncalo Carvalho <glslang@gmail.com> | 2017-06-25 21:36:11 +0100 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-06-29 11:04:57 -0400 |
commit | bcb2556c69eddd3e34fbe89f36a23ae8821c682d (patch) | |
tree | 45267cfa29542173e82bb9bb7320f1d101701d7d | |
parent | f12ece4547f7882027e7ebd916a5e5de13129ce8 (diff) | |
download | meson-bcb2556c69eddd3e34fbe89f36a23ae8821c682d.zip meson-bcb2556c69eddd3e34fbe89f36a23ae8821c682d.tar.gz meson-bcb2556c69eddd3e34fbe89f36a23ae8821c682d.tar.bz2 |
add project/global args and include_dirs (useful for module maps) to swift targets
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 19 | ||||
-rw-r--r-- | test cases/swift/6 modulemap/main.swift | 5 | ||||
-rw-r--r-- | test cases/swift/6 modulemap/meson.build | 8 | ||||
-rw-r--r-- | test cases/swift/6 modulemap/module.modulemap | 5 | ||||
-rw-r--r-- | test cases/swift/6 modulemap/mylib.c | 5 | ||||
-rw-r--r-- | test cases/swift/6 modulemap/mylib.h | 3 | ||||
-rw-r--r-- | test cases/swift/7 modulemap subdir/main.swift | 5 | ||||
-rw-r--r-- | test cases/swift/7 modulemap subdir/meson.build | 6 | ||||
-rw-r--r-- | test cases/swift/7 modulemap subdir/mylib/meson.build | 4 | ||||
-rw-r--r-- | test cases/swift/7 modulemap subdir/mylib/module.modulemap | 5 | ||||
-rw-r--r-- | test cases/swift/7 modulemap subdir/mylib/mylib.c | 5 | ||||
-rw-r--r-- | test cases/swift/7 modulemap subdir/mylib/mylib.h | 3 |
12 files changed, 73 insertions, 0 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 61b5f18..7f974ee 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1290,7 +1290,21 @@ int dummy; os.makedirs(self.get_target_private_dir_abs(target), exist_ok=True) compile_args = swiftc.get_compile_only_args() compile_args += swiftc.get_module_args(module_name) + compile_args += self.build.get_project_args(swiftc, target.subproject) + compile_args += self.build.get_global_args(swiftc) + for i in reversed(target.get_include_dirs()): + basedir = i.get_curdir() + for d in i.get_incdirs(): + if d not in ('', '.'): + expdir = os.path.join(basedir, d) + else: + expdir = basedir + srctreedir = os.path.normpath(os.path.join(self.environment.get_build_dir(), self.build_to_src, expdir)) + sargs = swiftc.get_include_args(srctreedir) + compile_args += sargs link_args = swiftc.get_output_args(os.path.join(self.environment.get_build_dir(), self.get_target_filename(target))) + link_args += self.build.get_project_link_args(swiftc, target.subproject) + link_args += self.build.get_global_link_args(swiftc) rundir = self.get_target_private_dir(target) out_module_name = self.swift_module_file_name(target) in_module_files = self.determine_swift_dep_modules(target) @@ -1300,6 +1314,11 @@ int dummy; module_includes += swiftc.get_include_args(x) link_deps = self.get_swift_link_deps(target) abs_link_deps = [os.path.join(self.environment.get_build_dir(), x) for x in link_deps] + for d in target.link_targets: + reldir = self.get_target_dir(d) + if reldir == '': + reldir = '.' + link_args += ['-L', os.path.normpath(os.path.join(self.environment.get_build_dir(), reldir))] (rel_generated, _) = self.split_swift_generated_sources(target) abs_generated = [os.path.join(self.environment.get_build_dir(), x) for x in rel_generated] # We need absolute paths because swiftc needs to be invoked in a subdir diff --git a/test cases/swift/6 modulemap/main.swift b/test cases/swift/6 modulemap/main.swift new file mode 100644 index 0000000..1a38c25 --- /dev/null +++ b/test cases/swift/6 modulemap/main.swift @@ -0,0 +1,5 @@ +import mylib + +let num = getNumber() + +print("The number returned from C code is: \(num).") diff --git a/test cases/swift/6 modulemap/meson.build b/test cases/swift/6 modulemap/meson.build new file mode 100644 index 0000000..f1c90db --- /dev/null +++ b/test cases/swift/6 modulemap/meson.build @@ -0,0 +1,8 @@ +project('mixed', 'c', 'swift') + +i = include_directories('.') +lib = static_library('mylib', 'mylib.c') +exe = executable('prog', 'main.swift', + include_directories : [i], + link_with : lib) +test('c module', exe) diff --git a/test cases/swift/6 modulemap/module.modulemap b/test cases/swift/6 modulemap/module.modulemap new file mode 100644 index 0000000..5aab62e --- /dev/null +++ b/test cases/swift/6 modulemap/module.modulemap @@ -0,0 +1,5 @@ +module mylib [extern_c] { + header "mylib.h" + link "mylib" + export * +} diff --git a/test cases/swift/6 modulemap/mylib.c b/test cases/swift/6 modulemap/mylib.c new file mode 100644 index 0000000..e091836 --- /dev/null +++ b/test cases/swift/6 modulemap/mylib.c @@ -0,0 +1,5 @@ +#include"mylib.h" + +int getNumber() { + return 42; +} diff --git a/test cases/swift/6 modulemap/mylib.h b/test cases/swift/6 modulemap/mylib.h new file mode 100644 index 0000000..21bd9eb --- /dev/null +++ b/test cases/swift/6 modulemap/mylib.h @@ -0,0 +1,3 @@ +#pragma once + +int getNumber(); diff --git a/test cases/swift/7 modulemap subdir/main.swift b/test cases/swift/7 modulemap subdir/main.swift new file mode 100644 index 0000000..1a38c25 --- /dev/null +++ b/test cases/swift/7 modulemap subdir/main.swift @@ -0,0 +1,5 @@ +import mylib + +let num = getNumber() + +print("The number returned from C code is: \(num).") diff --git a/test cases/swift/7 modulemap subdir/meson.build b/test cases/swift/7 modulemap subdir/meson.build new file mode 100644 index 0000000..cd769eb --- /dev/null +++ b/test cases/swift/7 modulemap subdir/meson.build @@ -0,0 +1,6 @@ +project('mixed', 'c', 'swift') +add_project_arguments('-embed-bitcode', language : 'swift') +subdir('mylib') +exe = executable('prog', 'main.swift', + dependencies : dep) +test('c module', exe) diff --git a/test cases/swift/7 modulemap subdir/mylib/meson.build b/test cases/swift/7 modulemap subdir/mylib/meson.build new file mode 100644 index 0000000..2549e2b --- /dev/null +++ b/test cases/swift/7 modulemap subdir/mylib/meson.build @@ -0,0 +1,4 @@ + +i = include_directories('.') +lib = static_library('mylib', 'mylib.c') +dep = declare_dependency(include_directories : i, link_with : lib) diff --git a/test cases/swift/7 modulemap subdir/mylib/module.modulemap b/test cases/swift/7 modulemap subdir/mylib/module.modulemap new file mode 100644 index 0000000..5aab62e --- /dev/null +++ b/test cases/swift/7 modulemap subdir/mylib/module.modulemap @@ -0,0 +1,5 @@ +module mylib [extern_c] { + header "mylib.h" + link "mylib" + export * +} diff --git a/test cases/swift/7 modulemap subdir/mylib/mylib.c b/test cases/swift/7 modulemap subdir/mylib/mylib.c new file mode 100644 index 0000000..e091836 --- /dev/null +++ b/test cases/swift/7 modulemap subdir/mylib/mylib.c @@ -0,0 +1,5 @@ +#include"mylib.h" + +int getNumber() { + return 42; +} diff --git a/test cases/swift/7 modulemap subdir/mylib/mylib.h b/test cases/swift/7 modulemap subdir/mylib/mylib.h new file mode 100644 index 0000000..21bd9eb --- /dev/null +++ b/test cases/swift/7 modulemap subdir/mylib/mylib.h @@ -0,0 +1,3 @@ +#pragma once + +int getNumber(); |