@@ -243,6 +243,8 @@ def __init__(self, target: CMakeTarget, env: 'Environment', for_machine: Machine
243243 self .compile_opts : T .Dict [str , T .List [str ]] = {}
244244 self .public_compile_opts : T .List [str ] = []
245245 self .pie = False
246+ self .version : T .Optional [str ] = None
247+ self .soversion : T .Optional [str ] = None
246248
247249 # Project default override options (c_std, cpp_std, etc.)
248250 self .override_options : T .List [str ] = []
@@ -357,6 +359,8 @@ def postprocess(self, output_target_map: OutputTargetMap, root_src_dir: Path, su
357359 tgt = trace .targets .get (self .cmake_name )
358360 if tgt :
359361 self .depends_raw = trace .targets [self .cmake_name ].depends
362+ self .version = trace .targets [self .cmake_name ].properties .get ('VERSION' , [None ])[0 ]
363+ self .soversion = trace .targets [self .cmake_name ].properties .get ('SOVERSION' , [None ])[0 ]
360364
361365 rtgt = resolve_cmake_trace_targets (self .cmake_name , trace , self .env , clib_compiler = self .clib_compiler )
362366 self .includes += [Path (x ) for x in rtgt .include_directories ]
@@ -1172,6 +1176,12 @@ def process_target(tgt: ConverterTarget) -> None:
11721176 'objects' : [method (x , 'extract_all_objects' ) for x in objec_libs ],
11731177 }
11741178
1179+ # Only set version if we know it
1180+ if tgt .version :
1181+ tgt_kwargs ['version' ] = tgt .version
1182+ if tgt .soversion :
1183+ tgt_kwargs ['soversion' ] = tgt .soversion
1184+
11751185 # Only set if installed and only override if it is set
11761186 if install_tgt and tgt .install_dir :
11771187 tgt_kwargs ['install_dir' ] = tgt .install_dir
0 commit comments