From c35e1d3a24f37e5344115178101bf7aa193613d1 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Mon, 18 Jan 2016 21:48:23 +0100 Subject: [PATCH] [DEBUG] Android build in multithread ==> java build is now mono threaded --- lutin/module.py | 14 ++++++++++++-- lutin/z_builder/lutinBuilder_binary.py | 7 +++++++ lutin/z_builder/lutinBuilder_c.py | 8 ++++++++ lutin/z_builder/lutinBuilder_cpp.py | 8 ++++++++ lutin/z_builder/lutinBuilder_jar.py | 8 ++++++++ lutin/z_builder/lutinBuilder_java.py | 8 ++++++++ lutin/z_builder/lutinBuilder_javah.py | 8 ++++++++ lutin/z_builder/lutinBuilder_libraryDynamic.py | 8 ++++++++ lutin/z_builder/lutinBuilder_libraryStatic.py | 8 ++++++++ lutin/z_builder/lutinBuilder_m.py | 10 +++++++++- lutin/z_builder/lutinBuilder_mm.py | 8 ++++++++ lutin/z_builder/lutinBuilder_s.py | 8 ++++++++ 12 files changed, 100 insertions(+), 3 deletions(-) diff --git a/lutin/module.py b/lutin/module.py index 5366367..d80aa6f 100644 --- a/lutin/module.py +++ b/lutin/module.py @@ -332,7 +332,7 @@ class Module: # call here to build the module def build(self, target, package_name): # ckeck if not previously build - if target.is_module_build(self.name)==True: + if target.is_module_build(self.name) == True: if self.sub_heritage_list == None: self.local_heritage = heritage.heritage(self, target) return self.sub_heritage_list @@ -417,6 +417,9 @@ class Module: fileExt = file.split(".")[-1] try: tmp_builder = builder.get_builder(fileExt); + multithreading = tmp_builder.get_support_multithreading() + if multithreading == False: + multiprocess.pool_synchrosize() res_file = tmp_builder.compile(file, package_name, target, @@ -426,6 +429,8 @@ class Module: name = self.name, basic_path = self.origin_path, module_src = self.src) + if multithreading == False: + multiprocess.pool_synchrosize() if res_file["action"] == "add": list_sub_file_needed_to_build.append(res_file["file"]) elif res_file["action"] == "path": @@ -440,7 +445,10 @@ class Module: #debug.info(" " + self.name + " <== " + file); fileExt = file.split(".")[-1] try: - tmp_builder = builder.get_builder(fileExt); + tmp_builder = builder.get_builder(fileExt) + multithreading = tmp_builder.get_support_multithreading() + if multithreading == False: + multiprocess.pool_synchrosize() res_file = tmp_builder.compile(file, package_name, target, @@ -450,6 +458,8 @@ class Module: name = self.name, basic_path = self.origin_path, module_src = self.src) + if multithreading == False: + multiprocess.pool_synchrosize() if res_file["action"] == "add": list_sub_file_needed_to_build.append(res_file["file"]) elif res_file["action"] == "path": diff --git a/lutin/z_builder/lutinBuilder_binary.py b/lutin/z_builder/lutinBuilder_binary.py index 8a61438..4a16ebc 100644 --- a/lutin/z_builder/lutinBuilder_binary.py +++ b/lutin/z_builder/lutinBuilder_binary.py @@ -36,6 +36,13 @@ def get_input_type(): def get_output_type(): return ["", "exe", "bin"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return False ## ## @brief Commands for running gcc to link an executable. diff --git a/lutin/z_builder/lutinBuilder_c.py b/lutin/z_builder/lutinBuilder_c.py index 90bd9ca..4a65f0c 100644 --- a/lutin/z_builder/lutinBuilder_c.py +++ b/lutin/z_builder/lutinBuilder_c.py @@ -37,6 +37,14 @@ def get_input_type(): def get_output_type(): return ["o"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return True + ## ## @brief Commands for running gcc to compile a C file in object file. ## diff --git a/lutin/z_builder/lutinBuilder_cpp.py b/lutin/z_builder/lutinBuilder_cpp.py index 2994bfa..bc8aa59 100644 --- a/lutin/z_builder/lutinBuilder_cpp.py +++ b/lutin/z_builder/lutinBuilder_cpp.py @@ -36,6 +36,14 @@ def get_input_type(): def get_output_type(): return ["o"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return True + def remove_element(data, to_remove): out = [] for elem in data: diff --git a/lutin/z_builder/lutinBuilder_jar.py b/lutin/z_builder/lutinBuilder_jar.py index 831a580..b5db93b 100644 --- a/lutin/z_builder/lutinBuilder_jar.py +++ b/lutin/z_builder/lutinBuilder_jar.py @@ -35,6 +35,14 @@ def get_input_type(): def get_output_type(): return ["jar"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return False + ## ## @brief Commands for running gcc to link a shared library. ## diff --git a/lutin/z_builder/lutinBuilder_java.py b/lutin/z_builder/lutinBuilder_java.py index 42254c7..7d98e05 100644 --- a/lutin/z_builder/lutinBuilder_java.py +++ b/lutin/z_builder/lutinBuilder_java.py @@ -33,6 +33,14 @@ def get_input_type(): def get_output_type(): return ["class"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return False + def create_dependency_files(target, src, heritage_src, basic_path): depend = [] for elem in src: diff --git a/lutin/z_builder/lutinBuilder_javah.py b/lutin/z_builder/lutinBuilder_javah.py index ee73cc0..ff3c9de 100644 --- a/lutin/z_builder/lutinBuilder_javah.py +++ b/lutin/z_builder/lutinBuilder_javah.py @@ -33,6 +33,14 @@ def get_input_type(): def get_output_type(): return ["h"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return False + def create_dependency_files(target, src, heritage_src, basic_path): depend = [] for elem in src: diff --git a/lutin/z_builder/lutinBuilder_libraryDynamic.py b/lutin/z_builder/lutinBuilder_libraryDynamic.py index 0ddb791..82b9f1b 100644 --- a/lutin/z_builder/lutinBuilder_libraryDynamic.py +++ b/lutin/z_builder/lutinBuilder_libraryDynamic.py @@ -35,6 +35,14 @@ def get_input_type(): def get_output_type(): return ["so", "dynlib", "dll"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return False + ## ## @brief Commands for running gcc to link a shared library. ## diff --git a/lutin/z_builder/lutinBuilder_libraryStatic.py b/lutin/z_builder/lutinBuilder_libraryStatic.py index 128416c..cf6101d 100644 --- a/lutin/z_builder/lutinBuilder_libraryStatic.py +++ b/lutin/z_builder/lutinBuilder_libraryStatic.py @@ -35,6 +35,14 @@ def get_input_type(): def get_output_type(): return ["a"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return False + ## ## @brief Commands for running ar. ## diff --git a/lutin/z_builder/lutinBuilder_m.py b/lutin/z_builder/lutinBuilder_m.py index 5971d08..436911a 100644 --- a/lutin/z_builder/lutinBuilder_m.py +++ b/lutin/z_builder/lutinBuilder_m.py @@ -38,6 +38,14 @@ def get_input_type(): def get_output_type(): return ["o"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return True + ## ## @brief Commands for running gcc to compile a m file in object file. ## @@ -94,7 +102,7 @@ def compile(file, binary, target, depancy, flags, path, name, basic_path, module # Create cmd line cmdLine=tools.list_to_str(cmd) # check the dependency for this file : - if False==depend.need_re_build(file_dst, file_src, file_depend, file_cmd, cmdLine): + if depend.need_re_build(file_dst, file_src, file_depend, file_cmd, cmdLine) == False: return {"action":"add", "file":file_dst} tools.create_directory_of_file(file_dst) comment = ["m", name, "<==", file] diff --git a/lutin/z_builder/lutinBuilder_mm.py b/lutin/z_builder/lutinBuilder_mm.py index a222682..ddb68fb 100644 --- a/lutin/z_builder/lutinBuilder_mm.py +++ b/lutin/z_builder/lutinBuilder_mm.py @@ -38,6 +38,14 @@ def get_input_type(): def get_output_type(): return ["o"] +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return True + ## ## @brief Commands for running gcc to compile a m++ file in object file. ## diff --git a/lutin/z_builder/lutinBuilder_s.py b/lutin/z_builder/lutinBuilder_s.py index 6d5f3dc..8656a0c 100644 --- a/lutin/z_builder/lutinBuilder_s.py +++ b/lutin/z_builder/lutinBuilder_s.py @@ -31,3 +31,11 @@ def get_input_type(): ## def get_output_type(): return ["o"] + +## +## @brief Get builder support multi-threading or not +## @return True Multithreading supported +## @return False Multithreading NOT supported +## +def get_support_multithreading(): + return True