godot-cpp/SConstruct

63 lines
2.0 KiB
Python
Raw Normal View History

#!python
import os, subprocess
# Local dependency paths, adapt them to your setup
2017-10-20 23:42:10 +00:00
godot_headers_path = ARGUMENTS.get("headers", os.getenv("GODOT_HEADERS", "../godot_headers/"))
godot_bin_path = ARGUMENTS.get("godotbinpath", os.getenv("GODOT_BIN_PATH", "../godot_fork/bin/godot.x11.tools.64.llvm"))
2017-07-29 12:25:57 +00:00
target = ARGUMENTS.get("target", "debug")
2017-10-20 23:42:10 +00:00
platform = ARGUMENTS.get("p", ARGUMENTS.get("platform", "linux"))
2017-07-29 12:25:57 +00:00
# This makes sure to keep the session environment variables on windows,
# that way you can run scons in a vs 2017 prompt and it will find all the required tools
env = Environment()
if platform == "windows":
env = Environment(ENV = os.environ)
2017-03-09 02:03:21 +00:00
2017-03-15 22:19:58 +00:00
if ARGUMENTS.get("use_llvm", "no") == "yes":
2017-03-09 02:03:21 +00:00
env["CXX"] = "clang++"
2017-03-06 07:49:24 +00:00
def add_sources(sources, directory):
for file in os.listdir(directory):
if file.endswith('.cpp'):
sources.append(directory + '/' + file)
2017-06-16 13:50:48 +00:00
if platform == "osx":
env.Append(CCFLAGS = ['-g','-O3', '-std=c++14', '-arch', 'x86_64'])
env.Append(LINKFLAGS = ['-arch', 'x86_64', '-framework', 'Cocoa', '-Wl,-undefined,dynamic_lookup'])
if platform == "linux":
env.Append(CCFLAGS = ['-fPIC', '-g','-O3', '-std=c++14'])
2017-03-06 07:49:24 +00:00
env.Append(CPPPATH=['.', godot_headers_path, 'include', 'include/core'])
if platform == "windows":
if target == "debug":
env.Append(CCFLAGS = ['-EHsc', '-D_DEBUG', '/MDd'])
else:
env.Append(CCFLAGS = ['-O2', '-EHsc', '-DNDEBUG', '/MD'])
sources = []
add_sources(sources, "src/core")
2017-04-18 00:41:39 +00:00
if ARGUMENTS.get("generate_bindings", "no") == "yes":
# TODO Generating the API should be done only if the Godot build is more recent than the JSON file
json_api_file = 'godot_api.json'
2017-06-16 13:50:48 +00:00
2018-01-19 10:53:09 +00:00
subprocess.call([os.path.expanduser(godot_bin_path), '--gdnative-generate-json-api', json_api_file])
2017-03-06 07:49:24 +00:00
# actually create the bindings here
import binding_generator
binding_generator.generate_bindings(json_api_file)
2017-03-06 07:49:24 +00:00
add_sources(sources, "src")
2017-03-06 07:49:24 +00:00
library = env.StaticLibrary(target='bin/godot_cpp_bindings', source=sources)
Default(library)