/* -*- C -*- */ #include static BundleMonoAPI mono_api; void initialize_mono_api (const BundleMonoAPI *info) { if (info == NULL) { mkbundle_log_error ("mkbundle: missing Mono API info\n"); exit (1); } mono_api.mono_register_bundled_assemblies = info->mono_register_bundled_assemblies; mono_api.mono_register_config_for_assembly = info->mono_register_config_for_assembly; mono_api.mono_jit_set_aot_mode = info->mono_jit_set_aot_mode; mono_api.mono_aot_register_module = info->mono_aot_register_module; mono_api.mono_config_parse_memory = info->mono_config_parse_memory; mono_api.mono_register_machine_config = info->mono_register_machine_config; } #ifdef USE_COMPRESSED_ASSEMBLY static int validate_api_pointer (const char *name, void *ptr) { if (ptr != NULL) return 0; mkbundle_log_error ("mkbundle: Mono API pointer '%s' missing\n", name); return 1; } static void validate_api_struct () { int missing = 0; missing += validate_api_pointer ("mono_register_bundled_assemblies", mono_api.mono_register_bundled_assemblies); missing += validate_api_pointer ("mono_register_config_for_assembly", mono_api.mono_register_config_for_assembly); missing += validate_api_pointer ("mono_jit_set_aot_mode", mono_api.mono_jit_set_aot_mode); missing += validate_api_pointer ("mono_aot_register_module", mono_api.mono_aot_register_module); missing += validate_api_pointer ("mono_config_parse_memory", mono_api.mono_config_parse_memory); missing += validate_api_pointer ("mono_register_machine_config", mono_api.mono_register_machine_config); if (missing <= 0) return; mkbundle_log_error ("mkbundle: bundle not initialized properly, %d Mono API pointers are missing\n", missing); exit (1); } #ifdef USE_DEFAULT_MONO_API_STRUCT // We don't export in jit.h // So declare here, and get it from mono void mono_aot_register_module (void *aot_info); #endif // USE_DEFAULT_MONO_API_STRUCT static void init_default_mono_api_struct () { #ifdef USE_DEFAULT_MONO_API_STRUCT mono_api.mono_register_bundled_assemblies = mono_register_bundled_assemblies; mono_api.mono_register_config_for_assembly = mono_register_config_for_assembly; mono_api.mono_jit_set_aot_mode = mono_jit_set_aot_mode; mono_api.mono_aot_register_module = mono_aot_register_module; mono_api.mono_config_parse_memory = mono_config_parse_memory; mono_api.mono_register_machine_config = mono_register_machine_config; #endif // USE_DEFAULT_MONO_API_STRUCT } #endif