@@ -361,7 +361,7 @@ def __parse_lib(self, builder: NodeBuilder) -> None:
361
361
# We always call the list of dependencies "dependencies",
362
362
# if there are dependencies we can add them. There could
363
363
# be an empty dependencies section, so account for that
364
- if self .manifest .get ('dependencies' ) or self .manifest .get ('target' ):
364
+ if self .manifest .get ('dependencies' ) or self .manifest .get ('target' ) or self . manifest [ 'package' ]. get ( 'links' ) :
365
365
fbuilder .keyword ('dependencies' , builder .id ('dependencies' ))
366
366
367
367
# Always mark everything as build by default false, that way meson will
@@ -586,6 +586,18 @@ def __emit_dependencies(self, builder: NodeBuilder) -> None:
586
586
if isinstance (dep , str ) or not dep .get ('optional' , False ):
587
587
arbuilder .positional (self .__get_dependency (builder , name ))
588
588
589
+ # If we need to link with a system library, we'll first try a
590
+ # dependency
591
+ #
592
+ # TODO: if that doesn't work, we need to fall back to adding a C
593
+ # compiler and running c.find_library()
594
+ if self .manifest ['package' ].get ('links' ):
595
+ with builder .assignment_builder ('link_library' ) as abuilder :
596
+ with abuilder .function_builder ('dependency' ) as argbuilder :
597
+ argbuilder .positional (self .manifest ['package' ]['links' ])
598
+ with builder .plus_assignment_builder ('dependencies' ) as pabuilder :
599
+ pabuilder .reference ('link_library' )
600
+
589
601
# If it's optional, then we need to check that the feature that
590
602
# it depends on is available, then add it to the dependency array.
591
603
for name , requires in self .features_to_deps .items ():
@@ -691,7 +703,7 @@ def parse(self) -> T.Tuple['mparser.CodeBlockNode', 'mparser.CodeBlockNode']:
691
703
692
704
# Create a list of dependencies which will be added to the library (if
693
705
# there is one).
694
- if self .manifest .get ('dependencies' ) or self .manifest .get ('target' ):
706
+ if self .manifest .get ('dependencies' ) or self .manifest .get ('target' ) or self . manifest [ 'package' ]. get ( 'links' ) :
695
707
self .__emit_dependencies (builder )
696
708
if self .manifest .get ('dev-dependencies' ):
697
709
self .__emit_dev_dependencies (builder )
0 commit comments