提交 ec3cef2e authored 作者: Arnaud Bergeron's avatar Arnaud Bergeron

Optionally pass the c compiler to headers() and libraries() of ops.

上级 e5b19522
...@@ -930,15 +930,19 @@ class CLinker(link.Linker): ...@@ -930,15 +930,19 @@ class CLinker(link.Linker):
"-Wno-unused-variable", # idem as the precedent "-Wno-unused-variable", # idem as the precedent
"-Wno-write-strings", # generated by our code generator... "-Wno-write-strings", # generated by our code generator...
] ]
c_compiler = self.c_compiler()
for x in [y.type for y in self.variables] + [ for x in [y.type for y in self.variables] + [
y.op for y in self.node_order]: y.op for y in self.node_order]:
try: try:
try:
ret += x.c_compile_args(c_compiler)
except TypeError:
ret += x.c_compile_args() ret += x.c_compile_args()
except utils.MethodNotDefined: except utils.MethodNotDefined:
pass pass
c_compiler = self.c_compiler()
ret = utils.uniq(ret) # to remove duplicate ret = utils.uniq(ret) # to remove duplicate
# The args set by the compiler include the user flags. We do not want # The args set by the compiler include the user flags. We do not want
# to reorder them # to reorder them
...@@ -946,7 +950,11 @@ class CLinker(link.Linker): ...@@ -946,7 +950,11 @@ class CLinker(link.Linker):
for x in [y.type for y in self.variables] + [ for x in [y.type for y in self.variables] + [
y.op for y in self.node_order]: y.op for y in self.node_order]:
try: try:
for i in x.c_no_compile_args(): try:
no_comp = x.c_no_compile_args(c_compiler)
except TypeError:
no_comp = x.c_no_compile_args()
for i in no_comp:
try: try:
ret.remove(i) ret.remove(i)
except ValueError: except ValueError:
...@@ -966,9 +974,13 @@ class CLinker(link.Linker): ...@@ -966,9 +974,13 @@ class CLinker(link.Linker):
""" """
ret = [] ret = []
c_compiler = self.c_compiler()
for x in [y.type for y in self.variables] + [ for x in [y.type for y in self.variables] + [
y.op for y in self.node_order]: y.op for y in self.node_order]:
try: try:
try:
ret += x.c_headers(c_compiler)
except TypeError:
ret += x.c_headers() ret += x.c_headers()
except utils.MethodNotDefined: except utils.MethodNotDefined:
pass pass
...@@ -1023,9 +1035,13 @@ class CLinker(link.Linker): ...@@ -1023,9 +1035,13 @@ class CLinker(link.Linker):
""" """
ret = [] ret = []
c_compiler = self.c_compiler()
for x in [y.type for y in self.variables] + [ for x in [y.type for y in self.variables] + [
y.op for y in self.node_order]: y.op for y in self.node_order]:
try: try:
try:
ret += x.c_header_dirs(c_compiler)
except TypeError:
ret += x.c_header_dirs() ret += x.c_header_dirs()
except utils.MethodNotDefined: except utils.MethodNotDefined:
pass pass
...@@ -1042,9 +1058,13 @@ class CLinker(link.Linker): ...@@ -1042,9 +1058,13 @@ class CLinker(link.Linker):
""" """
ret = [] ret = []
c_compiler = self.c_compiler()
for x in [y.type for y in self.variables] + [ for x in [y.type for y in self.variables] + [
y.op for y in self.node_order]: y.op for y in self.node_order]:
try: try:
try:
ret += x.c_libraries(c_compiler)
except TypeError:
ret += x.c_libraries() ret += x.c_libraries()
except utils.MethodNotDefined: except utils.MethodNotDefined:
pass pass
...@@ -1061,9 +1081,13 @@ class CLinker(link.Linker): ...@@ -1061,9 +1081,13 @@ class CLinker(link.Linker):
""" """
ret = [] ret = []
c_compiler = self.c_compiler()
for x in [y.type for y in self.variables] + [ for x in [y.type for y in self.variables] + [
y.op for y in self.node_order]: y.op for y in self.node_order]:
try: try:
try:
ret += x.c_lib_dirs(c_compiler)
except TypeError:
ret += x.c_lib_dirs() ret += x.c_lib_dirs()
except utils.MethodNotDefined: except utils.MethodNotDefined:
pass pass
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论