From ff18ce28ebf34944f45f6ef9f18a5e80afc3cf25 Mon Sep 17 00:00:00 2001 From: pentarctagon Date: Thu, 29 Mar 2018 01:57:11 -0500 Subject: [PATCH] Adds OpenGL/GLEW checks to scons. Taken mostly verbatim from 3e2eba22a96cb2c6c69ee5109059b806f22a372f --- SConstruct | 12 +++-------- scons/gl.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 scons/gl.py diff --git a/SConstruct b/SConstruct index d2b21e8e5381..80ff5017572f 100755 --- a/SConstruct +++ b/SConstruct @@ -308,7 +308,7 @@ def Warning(message): from metasconf import init_metasconf configure_args = dict( - custom_tests = init_metasconf(env, ["ieee_754", "cplusplus", "python_devel", "sdl", "boost", "cairo", "pango", "pkgconfig", "gettext_tool", "lua"]), + custom_tests = init_metasconf(env, ["ieee_754", "cplusplus", "python_devel", "sdl", "boost", "cairo", "pango", "pkgconfig", "gettext_tool", "lua", "gl"]), config_h = "$build_dir/config.h", log_file="$build_dir/config.log", conf_dir="$build_dir/sconf_temp") @@ -389,6 +389,8 @@ if env["prereqs"]: conf.CheckOgg())) & \ conf.CheckPNG() & \ conf.CheckJPG() & \ + conf.CheckOpenGL() and \ + conf.CheckGLEW() and \ conf.CheckCairo(min_version = "1.10") & \ conf.CheckPango("cairo", require_version = "1.22.0") & \ conf.CheckPKG("fontconfig") & \ @@ -417,14 +419,6 @@ if env["prereqs"]: if env["history"]: client_env.Append(CPPDEFINES = ["HAVE_HISTORY"]) - if env["PLATFORM"] == 'darwin': - client_env.Append(FRAMEWORKS = "OpenGL") - client_env.AppendUnique(LIBS = ["GLEW"]) - elif env["PLATFORM"] == 'posix': - opengl_config = check_output(["pkg-config", "--libs", "--cflags", "gl", "glew"]) - opengl_flags = client_env.ParseFlags(opengl_config) - client_env.MergeFlags(opengl_flags) - if env["forum_user_handler"]: mysql_config = check_output(["mysql_config", "--libs", "--cflags"]).replace("\n", " ").replace("-DNDEBUG", "") mysql_flags = env.ParseFlags(mysql_config) diff --git a/scons/gl.py b/scons/gl.py new file mode 100644 index 000000000000..a62aa527bd6c --- /dev/null +++ b/scons/gl.py @@ -0,0 +1,59 @@ +# vi: syntax=python:et:ts=4 + +def CheckOpenGL(context): + context.Message("Checking for OpenGL... ") + env = context.env + backup = env.Clone().Dictionary() + + test_program = "" + + if env["PLATFORM"] == "win32": + env.AppendUnique(LIBS = ["opengl32"]) + test_program += "#include \n" + elif env["PLATFORM"] == "darwin": + env.AppendUnique(FRAMEWORKS = "OpenGL") + test_program += "#include \n" + else: + env.AppendUnique(LIBS = ["GL"]) + test_program += "#include \n" + + test_program += "int main()\n{}\n" + + if context.TryLink(test_program, ".c"): + context.Result("yes") + return True + else: + env.Replace(**backup) + context.Result("no") + return False + +def CheckGLEW(context): + context.Message("Checking for OpenGL Extension Wrangler... ") + env = context.env + backup = env.Clone().Dictionary() + + if env["PLATFORM"] == "win32": + env.AppendUnique(LIBS = ["glew32", "opengl32"]) + elif env["PLATFORM"] == "darwin": + env.AppendUnique(LIBS = ["GLEW"]) + env.AppendUnique(FRAMEWORKS = "OpenGL") + else: + env.AppendUnique(LIBS = ["GLEW", "GL"]) + + test_program = """ + #include + int main() + { + glewInit(); + } +""" + + if context.TryLink(test_program, ".c"): + context.Result("yes") + return True + else: + env.Replace(**backup) + context.Result("no") + return False + +config_checks = { "CheckOpenGL" : CheckOpenGL, "CheckGLEW" : CheckGLEW }