diff --git a/lutin/image.py b/lutin/image.py index 46de944..e245d7f 100644 --- a/lutin/image.py +++ b/lutin/image.py @@ -40,7 +40,7 @@ def resize(src_file, dest_file, x, y, cmd_file=None): if os.path.exists(src_file) == False: debug.error("Request a resize an image that does not existed : '" + src_file + "'") cmd_line = "resize Image : " + src_file + " ==> " + dest_file + " newSize=(" + str(x) + "x" + str(y) + ")" - if False==depend.need_re_build(dest_file, src_file, file_cmd=cmd_file , cmd_line=cmd_line): + if depend.need_re_build(dest_file, src_file, file_cmd=cmd_file , cmd_line=cmd_line) == False: return # add cmdLine ... x = get_pow_2_multiple(x) diff --git a/lutin/module.py b/lutin/module.py index 5bedb76..034c419 100644 --- a/lutin/module.py +++ b/lutin/module.py @@ -476,26 +476,29 @@ class Module: package_name, target, self.sub_heritage_list, + flags = self.flags, name = self.name, basic_path = self.origin_path) self.local_heritage.add_lib_static(res_file) except ValueError: debug.error(" UN-SUPPORTED link format: '.a'") - if self.type == 'LIBRARY' \ - or self.type == 'LIBRARY_DYNAMIC': - try: - tmp_builder = builder.get_builder_with_output("so"); - list_file = tools.filter_extention(list_sub_file_needed_to_build, tmp_builder.get_input_type()) - if len(list_file) > 0: - res_file = tmp_builder.link(list_file, - package_name, - target, - self.sub_heritage_list, - name = self.name, - basic_path = self.origin_path) - self.local_heritage.add_lib_dynamic(res_file) - except ValueError: - debug.error(" UN-SUPPORTED link format: '.so'/'.dynlib'/'.dll'") + if target.support_dynamic_link == True: + if self.type == 'LIBRARY' \ + or self.type == 'LIBRARY_DYNAMIC': + try: + tmp_builder = builder.get_builder_with_output("so"); + list_file = tools.filter_extention(list_sub_file_needed_to_build, tmp_builder.get_input_type()) + if len(list_file) > 0: + res_file = tmp_builder.link(list_file, + package_name, + target, + self.sub_heritage_list, + flags = self.flags, + name = self.name, + basic_path = self.origin_path) + self.local_heritage.add_lib_dynamic(res_file) + except ValueError: + debug.error(" UN-SUPPORTED link format: '.so'/'.dynlib'/'.dll'") try: tmp_builder = builder.get_builder_with_output("jar"); list_file = tools.filter_extention(list_sub_file_needed_to_build, tmp_builder.get_input_type()) @@ -504,6 +507,7 @@ class Module: package_name, target, self.sub_heritage_list, + flags = self.flags, name = self.name, basic_path = self.origin_path) self.local_heritage.add_lib_interpreted('java', res_file) @@ -513,7 +517,7 @@ class Module: or self.type == 'BINARY_SHARED' \ or self.type == 'BINARY_STAND_ALONE': shared_mode = False - if target.name=="Android": + if target.name == "Android": debug.warning("Android mode ...") # special case for android ... for elem in self.sub_heritage_list.src['src']: @@ -523,8 +527,9 @@ class Module: shared_mode = True break; static_mode = True - if self.type == 'BINARY_SHARED': - static_mode = False + if target.support_dynamic_link == True: + if self.type == 'BINARY_SHARED': + static_mode = False if shared_mode == True: try: tmp_builder = builder.get_builder_with_output("so"); @@ -533,6 +538,7 @@ class Module: package_name, target, self.sub_heritage_list, + flags = self.flags, name = self.name, basic_path = self.origin_path, static = static_mode) @@ -547,6 +553,7 @@ class Module: package_name, target, self.sub_heritage_list, + flags = self.flags, name = self.name, basic_path = self.origin_path) self.local_heritage.add_sources(res_file) @@ -559,13 +566,14 @@ class Module: package_name, target, self.sub_heritage_list, + flags = self.flags, name = self.name, basic_path = self.origin_path, static = static_mode) except ValueError: debug.error(" UN-SUPPORTED link format: '.bin'") elif self.type == "PACKAGE": - if target.name=="Android": + if target.name == "Android": # special case for android wrapper: try: tmp_builder = builder.get_builder_with_output("so"); @@ -574,6 +582,7 @@ class Module: package_name, target, self.sub_heritage_list, + flags = self.flags, name = "lib" + self.name, basic_path = self.origin_path) self.local_heritage.add_sources(res_file) @@ -587,6 +596,7 @@ class Module: package_name, target, self.sub_heritage_list, + flags = self.flags, name = self.name, basic_path = self.origin_path) self.local_heritage.add_sources(res_file) @@ -599,6 +609,7 @@ class Module: package_name, target, self.sub_heritage_list, + flags = self.flags, name = self.name, basic_path = self.origin_path) except ValueError: diff --git a/lutin/target.py b/lutin/target.py index ced3c61..df48553 100644 --- a/lutin/target.py +++ b/lutin/target.py @@ -134,6 +134,8 @@ class Target: self.pkg_path_readme_file = "readme.txt" self.pkg_path_change_log_file = "changelog.txt" + # special case for IOS (example) no build dynamicly ... + self.support_dynamic_link = True def update_path_tree(self): self.path_out = os.path.join("out", self.name + "_" + self.config["arch"] + "_" + self.config["bus-size"], self.config["mode"]) @@ -531,9 +533,9 @@ class Target: return if module.get_type() == 'BINARY' \ or module.get_type() == 'BINARY_STAND_ALONE': - self.make_package_generic_binary(pkg_name, pkg_properties, base_pkg_path, heritage_list, static = True) + self.make_package_binary(pkg_name, pkg_properties, base_pkg_path, heritage_list, static = True) if module.get_type() == 'BINARY_SHARED': - self.make_package_generic_binary(pkg_name, pkg_properties, base_pkg_path, heritage_list, static = False) + self.make_packages_binary(pkg_name, pkg_properties, base_pkg_path, heritage_list, static = False) if module.get_type() == 'PACKAGE': debug.info("Can not create package for package"); return diff --git a/lutin/z_builder/lutinBuilder_binary.py b/lutin/z_builder/lutinBuilder_binary.py index 1a5efe4..ed9a616 100644 --- a/lutin/z_builder/lutinBuilder_binary.py +++ b/lutin/z_builder/lutinBuilder_binary.py @@ -40,7 +40,7 @@ def get_output_type(): ## ## @brief Commands for running gcc to link an executable. ## -def link(file, binary, target, depancy, name, basic_path, static = False): +def link(file, binary, target, depancy, flags, name, basic_path, static = False): file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "bin") debug.extreme_verbose("list files = " + str(depancy.src)) list_static = [] diff --git a/lutin/z_builder/lutinBuilder_libraryDynamic.py b/lutin/z_builder/lutinBuilder_libraryDynamic.py index bb28c4c..e59f391 100644 --- a/lutin/z_builder/lutinBuilder_libraryDynamic.py +++ b/lutin/z_builder/lutinBuilder_libraryDynamic.py @@ -38,7 +38,7 @@ def get_output_type(): ## ## @brief Commands for running gcc to link a shared library. ## -def link(file, binary, target, depancy, name, basic_path, static=False): +def link(file, binary, target, depancy, flags, name, basic_path, static=False): file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "lib-shared") list_static = [] list_dynamic = [] @@ -101,6 +101,10 @@ def link(file, binary, target, depancy, name, basic_path, static=False): cmd.append(flags["local"]["link"]) except: pass + try: + cmd.append(flags["export"]["link"]) + except: + pass try: cmd.append(depancy.flags["link"]) except: diff --git a/lutin/z_builder/lutinBuilder_libraryStatic.py b/lutin/z_builder/lutinBuilder_libraryStatic.py index 4411b84..7bb51d5 100644 --- a/lutin/z_builder/lutinBuilder_libraryStatic.py +++ b/lutin/z_builder/lutinBuilder_libraryStatic.py @@ -38,7 +38,7 @@ def get_output_type(): ## ## @brief Commands for running ar. ## -def link(file, binary, target, depancy, name, basic_path): +def link(file, binary, target, depancy, flags, name, basic_path): file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "lib-static") #$(Q)$(TARGET_AR) $(TARGET_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@ $(PRIVATE_ALL_OBJECTS) cmd = [ diff --git a/lutin/z_target/lutinTarget_Android.py b/lutin/z_target/lutinTarget_Android.py index 108cf56..d4a8f5b 100644 --- a/lutin/z_target/lutinTarget_Android.py +++ b/lutin/z_target/lutinTarget_Android.py @@ -213,7 +213,7 @@ class Target(target.Target): return self.get_staging_path(binary_name) + self.path_data """ - def make_package_generic_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static): + def make_package_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static): debug.debug("------------------------------------------------------------------------") debug.info("Generate package '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"])) debug.debug("------------------------------------------------------------------------") diff --git a/lutin/z_target/lutinTarget_IOs.py b/lutin/z_target/lutinTarget_IOs.py index e454b57..5f4a2b1 100644 --- a/lutin/z_target/lutinTarget_IOs.py +++ b/lutin/z_target/lutinTarget_IOs.py @@ -82,6 +82,8 @@ class Target(target.Target): self.pkg_path_lib = "lib" self.pkg_path_license = "license" + # Disable capabiliteis to compile in shared mode + self.support_dynamic_link = False def make_package_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static): debug.debug("------------------------------------------------------------------------") @@ -109,23 +111,23 @@ class Target(target.Target): # Resize all icon needed for Ios ... # TODO : Do not regenerate if source resource is not availlable # TODO : Add a colored background ... - debug.print_element("pkg", "iTunesArtwork.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "iTunesArtwork.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "iTunesArtwork.png"), 512, 512) - debug.print_element("pkg", "iTunesArtwork@2x.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "iTunesArtwork@2x.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "iTunesArtwork@2x.png"), 1024, 1024) - debug.print_element("pkg", "Icon-60@2x.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-60@2x.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-60@2x.png"), 120, 120) - debug.print_element("pkg", "Icon-76.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-76.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-76.png"), 76, 76) - debug.print_element("pkg", "Icon-76@2x.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-76@2x.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-76@2x.png"), 152, 152) - debug.print_element("pkg", "Icon-Small-40.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-Small-40.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small-40.png"), 40, 40) - debug.print_element("pkg", "Icon-Small-40@2x.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-Small-40@2x.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small-40@2x.png"), 80, 80) - debug.print_element("pkg", "Icon-Small.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-Small.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small.png"), 29, 29) - debug.print_element("pkg", "Icon-Small@2x.png", "<==", pkg_properties["ICON"]) + debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-Small@2x.png") image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small@2x.png"), 58, 58) ## Create the info file: @@ -177,9 +179,9 @@ class Target(target.Target): data_file += " \n" data_file += " \n" data_file += " CFBundleShortVersionString\n" - data_file += " "+pkg_properties["VERSION"]+"\n" + data_file += " "+tools.version_to_string(pkg_properties["VERSION"])+"\n" data_file += " CFBundleVersion\n" - data_file += " "+pkg_properties["VERSION_CODE"]+"\n" + data_file += " "+str(pkg_properties["VERSION_CODE"])+"\n" data_file += " \n" data_file += " CFBundleResourceSpecification\n" data_file += " ResourceRules.plist\n" @@ -312,8 +314,10 @@ class Target(target.Target): # Must create the tarball of the application #cd $(TARGET_OUT_FINAL)/; tar -cf $(PROJECT_NAME).tar $(PROJECT_NAME).app #cd $(TARGET_OUT_FINAL)/; tar -czf $(PROJECT_NAME).tar.gz $(PROJECT_NAME).app - if self.sumulator == False: + if "APPLE_APPLICATION_IOS_ID" not in pkg_properties: + pkg_properties["APPLE_APPLICATION_IOS_ID"] = "00000000" + debug.warning("Missing package property : APPLE_APPLICATION_IOS_ID USE " + pkg_properties["APPLE_APPLICATION_IOS_ID"] + " ID ... ==> CAN NOT WORK ..." ) # Create the info file tmpFile = open(os.path.join(target_outpath, pkg_name + ".xcent"), 'w') tmpFile.write("\n") @@ -321,15 +325,12 @@ class Target(target.Target): tmpFile.write("\n") tmpFile.write(" \n") tmpFile.write(" application-identifier\n") - try: - tmpFile.write(" " + pkg_properties["APPLE_APPLICATION_IOS_ID"] + "." + pkg_properties["COMPAGNY_TYPE"] + "." + pkg_properties["COMPAGNY_NAME2"] + "." + pkg_name + "\n") - except: - debug.error("Missing package property : APPLE_APPLICATION_IOS_ID") + tmpFile.write(" " + pkg_properties["APPLE_APPLICATION_IOS_ID"] + "." + pkg_properties["COMPAGNY_TYPE"] + "." + pkg_properties["COMPAGNY_NAME2"] + "." + pkg_name + "\n") tmpFile.write(" get-task-allow\n") tmpFile.write(" \n") tmpFile.write(" keychain-access-groups\n") tmpFile.write(" \n") - tmpFile.write(" " + pkg_properties["APPLE_APPLICATION_IOS_ID"] + ".atriasoft.worddown\n") + tmpFile.write(" " + pkg_properties["APPLE_APPLICATION_IOS_ID"] + "." + pkg_properties["COMPAGNY_TYPE"] + "." + pkg_properties["COMPAGNY_NAME2"] + "." + pkg_name + "\n") tmpFile.write(" \n") tmpFile.write(" \n") tmpFile.write("\n") @@ -342,18 +343,12 @@ class Target(target.Target): debug.error("To sign an application we need to have a signing key in the file '" + iosDevelopperKeyFile + "' \n it is represented like: 'iPhone Developer: Francis DUGENOUX (YRRQE5KGTH)'\n you can obtain it with : 'certtool y | grep \"Developer\"'") signatureKey = tools.file_read_data(iosDevelopperKeyFile) signatureKey = re.sub('\n', '', signatureKey) - cmdLine = 'codesign --force --sign ' - # to get this key ; certtool y | grep "Developer" + cmdLine = 'codesign --force --sign ' + # to get this key ; certtool y | grep "Developer" cmdLine += ' "' + signatureKey + '" ' cmdLine += ' --entitlements ' + self.get_build_path(pkg_name) + '/worddown.xcent' cmdLine += ' ' + self.get_staging_path(pkg_name) multiprocess.run_command(cmdLine) - - # --force --sign "iPhone Developer: Edouard DUPIN (SDFGSDFGSDFG)" - # --resource-rules=/Users/edouarddupin/Library/Developer/Xcode/DerivedData/worddown-cmuvjchgtiteexdiacyqoexsyadg/Build/Products/Debug-iphoneos/worddown.app/ResourceRules.plist - # --entitlements /Users/edouarddupin/Library/Developer/Xcode/DerivedData/worddown-cmuvjchgtiteexdiacyqoexsyadg/Build/Intermediates/worddown.build/Debug-iphoneos/worddown.build/worddown.xcent - # /Users/edouarddupin/Library/Developer/Xcode/DerivedData/worddown-cmuvjchgtiteexdiacyqoexsyadg/Build/Products/Debug-iphoneos/worddown.app - def createRandomNumber(self, len): out = "" diff --git a/lutin/z_target/lutinTarget_Linux.py b/lutin/z_target/lutinTarget_Linux.py index 2d063d6..95f863d 100644 --- a/lutin/z_target/lutinTarget_Linux.py +++ b/lutin/z_target/lutinTarget_Linux.py @@ -73,7 +73,7 @@ class Target(target.Target): * *--> YY *--> sources """ - def make_package_generic_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static): + def make_package_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static): debug.debug("------------------------------------------------------------------------") debug.info("Generate generic '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"])) debug.debug("------------------------------------------------------------------------") diff --git a/lutin/z_target/lutinTarget_MacOs.py b/lutin/z_target/lutinTarget_MacOs.py index 2e03208..adfe3cc 100644 --- a/lutin/z_target/lutinTarget_MacOs.py +++ b/lutin/z_target/lutinTarget_MacOs.py @@ -128,8 +128,8 @@ class Target(target.Target): debug.info("disk image: " + output_file_name) ## user information: - debug.info("You can have an shell interface by executing : ") - debug.info(" sudo cp " + shell_file_name + " /usr/local/bin") + #debug.info("You can have an shell interface by executing : ") + #debug.info(" sudo cp " + shell_file_name + " /usr/local/bin") def install_package(self, pkg_name): debug.debug("------------------------------------------------------------------------") diff --git a/lutin/z_target/lutinTarget_Windows.py b/lutin/z_target/lutinTarget_Windows.py index 78437e4..79a9830 100644 --- a/lutin/z_target/lutinTarget_Windows.py +++ b/lutin/z_target/lutinTarget_Windows.py @@ -70,7 +70,7 @@ class Target(target.Target): def get_staging_path_data(self, binary_name, heritage_list): return self.get_staging_path(binary_name) + self.path_data - def make_package_generic_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static): + def make_package_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static): debug.debug("------------------------------------------------------------------------") debug.info("Generate package '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"])) debug.debug("------------------------------------------------------------------------")