Explorar o código

gen_odin.py: fix C library imports

Andre Weissflog %!s(int64=3) %!d(string=hai) anos
pai
achega
c8c07b1722
Modificáronse 1 ficheiros con 20 adicións e 2 borrados
  1. 20 2
      bindgen/gen_odin.py

+ 20 - 2
bindgen/gen_odin.py

@@ -334,9 +334,27 @@ def funcdecl_result_odin(decl, prefix):
     return map_type(check_override(f'{func_name}.RESULT', default=res_c_type), prefix, 'odin_arg')
 
 def gen_c_imports(inp):
-    l(f'// FIXME: foreign import...\n')
+    clib_prefix = f'sokol_{inp["module"]}'
+    clib_import = f'{clib_prefix}_clib'
+    l('when ODIN_OS == .Windows {')
+    l(f'    when ODIN_DEBUG == true {{ foreign import {clib_import} "{clib_prefix}_windows_x64_d3d11_debug.lib" }}')
+    l(f'    else                    {{ foreign import {clib_import} "{clib_prefix}_windows_x64_d3d11_release.lib" }}')
+    l('}')
+    l('else when ODIN_OS == .Darwin {')
+    l('    when ODIN_ARCH == .arm64 {')
+    l(f'        when ODIN_DEBUG == true {{ foreign import {clib_import} "{clib_prefix}_macos_arm64_metal_debug.lib" }}')
+    l(f'        else                    {{ foreign import {clib_import} "{clib_prefix}_macos_arm64_metal_release.lib" }}')
+    l('   } else {')
+    l(f'        when ODIN_DEBUG == true {{ foreign import {clib_import} "{clib_prefix}_macos_x64_metal_debug.lib" }}')
+    l(f'        else                    {{ foreign import {clib_import} "{clib_prefix}_macos_x64_metal_release.lib" }}')
+    l('    }')
+    l('}')
+    l('else {')
+    l(f'    when ODIN_DEBUG == true {{ foreign import {clib_import} "{clib_prefix}_linux_x64_gl_debug.lib" }}')
+    l(f'    else                    {{ foreign import {clib_import} "{clib_prefix}_linux_x64_gl_release.lib" }}')
+    l('}')
     l('@(default_calling_convention="c")')
-    l(f"foreign sokol_{inp['module']}_clib {{")
+    l(f"foreign {clib_import} {{")
     prefix = inp['prefix']
     for decl in inp['decls']:
         if decl['kind'] == 'func' and not decl['is_dep'] and not check_ignore(decl['name']):