From 3931dba9881119766946213b175cbc90e25b2e90 Mon Sep 17 00:00:00 2001 From: Relintai Date: Thu, 27 May 2021 15:46:20 +0200 Subject: [PATCH] Now a custom module folder list can be added as a parameter aswell. --- SConstruct | 97 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 40 deletions(-) diff --git a/SConstruct b/SConstruct index e45852a..4891a7c 100644 --- a/SConstruct +++ b/SConstruct @@ -71,44 +71,6 @@ env_base.msvc = False # avoid issues when building with different versions of python out of the same directory env_base.SConsignFile(".sconsign{0}.dblite".format(pickle.HIGHEST_PROTOCOL)) -database_list = [] - -for x in sorted(glob.glob("database/*")): - if not os.path.isdir(x) or not os.path.exists(x + "/detect.py"): - continue - tmppath = "./" + x - - sys.path.insert(0, tmppath) - import detect - - if detect.is_active() and detect.can_build(): - x = x.replace("database/", "") # rest of world - x = x.replace("database\\", "") # win32 - database_list += [x] - - sys.path.remove(tmppath) - sys.modules.pop("detect") - -module_list = [] - -for x in sorted(glob.glob("modules/*")): - if not os.path.isdir(x) or not os.path.exists(x + "/detect.py"): - continue - - tmppath = "./" + x - - sys.path.insert(0, tmppath) - import detect - - if detect.is_active() and detect.can_build(): - x = x.replace("modules/", "") # rest of world - x = x.replace("modules\\", "") # win32 - module_list += [x] - - sys.path.remove(tmppath) - sys.modules.pop("detect") - - # Build options opts = Variables([], ARGUMENTS) @@ -117,6 +79,7 @@ opts.Add(EnumVariable("target", "Compilation target", "debug", ("debug", "releas opts.Add("folders", "App folders to compile", "") opts.Add("main_file", "The main file", "") +opts.Add("module_folders", "App module folders to compile", "") # Compilation environment setup opts.Add("CXX", "C++ compiler") @@ -148,6 +111,60 @@ if scons_ver >= (4, 0, 0): env_base.Tool("compilation_db") +database_list = [] + +for x in sorted(glob.glob("database/*")): + if not os.path.isdir(x) or not os.path.exists(x + "/detect.py"): + continue + tmppath = "./" + x + + sys.path.insert(0, tmppath) + import detect + + if detect.is_active() and detect.can_build(): + x = x.replace("database/", "") # rest of world + x = x.replace("database\\", "") # win32 + database_list += [x] + + sys.path.remove(tmppath) + sys.modules.pop("detect") + + +modfol = env_base["module_folders"].split(";") +modfol.append("modules") +module_folders = list() + +for fol in modfol: + folt = fol.strip() + + if folt == "": + continue + + module_folders.append(os.path.abspath(folt) + "/*") + +module_list = [] + +for mf in module_folders: + for x in sorted(glob.glob(mf)): + if not os.path.isdir(x) or not os.path.exists(x + "/detect.py"): + continue + + tmppath = os.path.realpath(os.path.expanduser(os.path.expandvars(x))) + "/" + + sys.path.insert(0, tmppath) + import detect + + if detect.is_active() and detect.can_build(): + #x = x.replace("/", "") # rest of world + x = x.replace("\\", "/") # win32 + + tx = x.split("/") + + module_list.append([ tx[len(tx) - 1], tmppath ]) + + sys.path.remove(tmppath) + sys.modules.pop("detect") + env = env_base.Clone() if scons_ver >= (4, 0, 0): @@ -181,7 +198,7 @@ for d in database_list: sys.modules.pop("detect") for m in module_list: - tmppath = "./modules/" + m + tmppath = m[1] sys.path.insert(0, tmppath) import detect @@ -202,7 +219,7 @@ for m in module_list: Export("env_mod") - SConscript("modules/" + m + "/SCsub") + SConscript(m[1] + "/SCsub") sys.path.remove(tmppath) sys.modules.pop("detect")