#!/usr/bin/env python Import("env") Import("env_modules") env_gdnative = env_modules.Clone() env_gdnative.add_source_files(env.modules_sources, "gdnative.cpp") env_gdnative.add_source_files(env.modules_sources, "register_types.cpp") env_gdnative.add_source_files(env.modules_sources, "android/*.cpp") env_gdnative.add_source_files(env.modules_sources, "gdnative/*.cpp") env_gdnative.add_source_files(env.modules_sources, "nativescript/*.cpp") env_gdnative.add_source_files(env.modules_sources, "gdnative_library_singleton_editor.cpp") env_gdnative.add_source_files(env.modules_sources, "gdnative_library_editor_plugin.cpp") env_gdnative.Prepend(CPPPATH=["#modules/gdnative/include/"]) Export("env_gdnative") SConscript("net/SCsub") SConscript("arvr/SCsub") SConscript("pluginscript/SCsub") SConscript("videodecoder/SCsub") from platform_methods import run_in_subprocess import gdnative_builders _, gensource = env_gdnative.CommandNoCache( ["include/gdnative_api_struct.gen.h", "gdnative_api_struct.gen.cpp"], "gdnative_api.json", run_in_subprocess(gdnative_builders.build_gdnative_api_struct), ) env_gdnative.add_source_files(env.modules_sources, [gensource]) env.use_ptrcall = True if ARGUMENTS.get("gdnative_wrapper", False): (gensource,) = env_gdnative.CommandNoCache( "gdnative_wrapper_code.gen.cpp", "gdnative_api.json", run_in_subprocess(gdnative_builders.build_gdnative_wrapper_code), ) gd_wrapper_env = env.Clone() gd_wrapper_env.Prepend(CPPPATH=["#modules/gdnative/include/"]) if gd_wrapper_env["use_lto"]: if not env.msvc: gd_wrapper_env.Append(CCFLAGS=["-fno-lto"]) gd_wrapper_env.Append(LINKFLAGS=["-fno-lto"]) else: gd_wrapper_env.Append(CCFLAGS=["/GL-"]) gd_wrapper_env.Append(LINKFLAGS=["/LTCG:OFF"]) if not env.msvc: gd_wrapper_env.Append(CCFLAGS=["-fPIC"]) lib = gd_wrapper_env.add_library("#bin/gdnative_wrapper_code", [gensource])