add project/global args and include_dirs (useful for module maps) to swift targets

pull/1163/head
Goncalo Carvalho 8 years ago committed by Jussi Pakkanen
parent f12ece4547
commit bcb2556c69
  1. 19
      mesonbuild/backend/ninjabackend.py
  2. 5
      test cases/swift/6 modulemap/main.swift
  3. 8
      test cases/swift/6 modulemap/meson.build
  4. 5
      test cases/swift/6 modulemap/module.modulemap
  5. 5
      test cases/swift/6 modulemap/mylib.c
  6. 3
      test cases/swift/6 modulemap/mylib.h
  7. 5
      test cases/swift/7 modulemap subdir/main.swift
  8. 6
      test cases/swift/7 modulemap subdir/meson.build
  9. 4
      test cases/swift/7 modulemap subdir/mylib/meson.build
  10. 5
      test cases/swift/7 modulemap subdir/mylib/module.modulemap
  11. 5
      test cases/swift/7 modulemap subdir/mylib/mylib.c
  12. 3
      test cases/swift/7 modulemap subdir/mylib/mylib.h

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

@ -0,0 +1,5 @@
import mylib
let num = getNumber()
print("The number returned from C code is: \(num).")

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

@ -0,0 +1,5 @@
module mylib [extern_c] {
header "mylib.h"
link "mylib"
export *
}

@ -0,0 +1,5 @@
#include"mylib.h"
int getNumber() {
return 42;
}

@ -0,0 +1,3 @@
#pragma once
int getNumber();

@ -0,0 +1,5 @@
import mylib
let num = getNumber()
print("The number returned from C code is: \(num).")

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

@ -0,0 +1,4 @@
i = include_directories('.')
lib = static_library('mylib', 'mylib.c')
dep = declare_dependency(include_directories : i, link_with : lib)

@ -0,0 +1,5 @@
module mylib [extern_c] {
header "mylib.h"
link "mylib"
export *
}

@ -0,0 +1,5 @@
#include"mylib.h"
int getNumber() {
return 42;
}

@ -0,0 +1,3 @@
#pragma once
int getNumber();
Loading…
Cancel
Save