@@ -464,91 +464,93 @@ def run(self):
464464 if self ._ran_build :
465465 return
466466
467- # try:
468- # from backends.qualcomm.scripts.download_qnn_sdk import (
469- # _download_qnn_sdk,
470- # LLVM_VERSION,
471- # SDK_DIR,
472- # )
473-
474- # qnn sdk setup
475- # print(
476- # "SDK_DIR: ",
477- # SDK_DIR,
478- # "type: ",
479- # type(SDK_DIR),
480- # "exists: ",
481- # os.path.exists(SDK_DIR),
482- # )
483- # _download_qnn_sdk()
484-
485- # sdk_path = Path(SDK_DIR).resolve() # full absolute path
486- # print("sdk_path: ", sdk_path)
487- # if not sdk_path:
488- # raise RuntimeError("Qualcomm SDK not found, cannot build backend")
489-
490- # # Determine paths
491- # prj_root = Path(__file__).parent.resolve()
492- # print("prj_root: ", prj_root)
493- # build_sh = prj_root / "backends/qualcomm/scripts/build.sh"
494- # build_root = prj_root / "build-x86"
495-
496- # if not build_sh.exists():
497- # raise FileNotFoundError(f"{build_sh} not found")
498-
499- # # Run build.sh with SDK path exported
500- # env = dict(**os.environ)
501- # print("str(sdk_path): ", str(sdk_path))
502- # env["QNN_SDK_ROOT"] = str(sdk_path)
503- # subprocess.check_call([str(build_sh), "--skip_aarch64"], env=env)
504-
505- # # Copy the main .so into the wheel package
506- # so_src = build_root / "backends/qualcomm/libqnn_executorch_backend.so"
507- # so_dst = Path(
508- # self.get_ext_fullpath("executorch.backends.qualcomm.qnn_backend")
509- # )
510- # self.mkpath(so_dst.parent) # ensure destination exists
511- # self.copy_file(str(so_src), str(so_dst))
512- # print(f"Copied Qualcomm backend: {so_src} -> {so_dst}")
513-
514- # # --- CLEANUP SECTION ---
515- # # 1. Remove Qualcomm SDK staging folder so it doesn’t get packaged
516- # if os.path.exists(SDK_DIR):
517- # try:
518- # shutil.rmtree(SDK_DIR)
519- # print(f"Removed Qualcomm SDK folder: {SDK_DIR}")
520- # except Exception as e:
521- # print(f"Failed to remove SDK_DIR {SDK_DIR}: {e}")
522-
523- # # 2. Also remove the entire packaged SDK tree
524- # pkg_sdk_dir = prj_root / "backends/qualcomm/sdk"
525- # if pkg_sdk_dir.exists():
526- # try:
527- # shutil.rmtree(pkg_sdk_dir)
528- # print(f"Removed packaged Qualcomm SDK: {pkg_sdk_dir}")
529- # except Exception as e:
530- # print(f"Failed to remove packaged SDK dir {pkg_sdk_dir}: {e}")
531-
532- # so_files = [
533- # (
534- # "executorch.backends.qualcomm.python.PyQnnManagerAdaptor",
535- # prj_root
536- # / "backends/qualcomm/python/PyQnnManagerAdaptor.cpython-310-x86_64-linux-gnu.so",
537- # ),
538- # (
539- # "executorch.backends.qualcomm.python.PyQnnWrapperAdaptor",
540- # prj_root
541- # / "backends/qualcomm/python/PyQnnWrapperAdaptor.cpython-310-x86_64-linux-gnu.so",
542- # ),
543- # ]
544-
545- # for module_name, so_src in so_files:
546- # so_dst = Path(self.get_ext_fullpath(module_name))
547- # self.mkpath(str(so_dst.parent))
548- # self.copy_file(str(so_src), str(so_dst))
549- # print(f"Copied Qualcomm backend: {so_src} -> {so_dst}")
550- # except ImportError:
551- # print("Import error: ", sys.exc_info()[0])
467+ try :
468+ from backends .qualcomm .scripts .download_qnn_sdk import (
469+ _download_qnn_sdk ,
470+ LLVM_VERSION ,
471+ SDK_DIR ,
472+ )
473+
474+ os .environ ["EXECUTORCH_BUILDING_WHEEL" ] = "1"
475+
476+ # qnn sdk setup
477+ print (
478+ "SDK_DIR: " ,
479+ SDK_DIR ,
480+ "type: " ,
481+ type (SDK_DIR ),
482+ "exists: " ,
483+ os .path .exists (SDK_DIR ),
484+ )
485+ _download_qnn_sdk ()
486+
487+ sdk_path = Path (SDK_DIR ).resolve () # full absolute path
488+ print ("sdk_path: " , sdk_path )
489+ if not sdk_path :
490+ raise RuntimeError ("Qualcomm SDK not found, cannot build backend" )
491+
492+ # Determine paths
493+ prj_root = Path (__file__ ).parent .resolve ()
494+ print ("prj_root: " , prj_root )
495+ build_sh = prj_root / "backends/qualcomm/scripts/build.sh"
496+ build_root = prj_root / "build-x86"
497+
498+ if not build_sh .exists ():
499+ raise FileNotFoundError (f"{ build_sh } not found" )
500+
501+ # Run build.sh with SDK path exported
502+ env = dict (** os .environ )
503+ print ("str(sdk_path): " , str (sdk_path ))
504+ env ["QNN_SDK_ROOT" ] = str (sdk_path )
505+ subprocess .check_call ([str (build_sh ), "--skip_aarch64" ], env = env )
506+
507+ # Copy the main .so into the wheel package
508+ so_src = build_root / "backends/qualcomm/libqnn_executorch_backend.so"
509+ so_dst = Path (
510+ self .get_ext_fullpath ("executorch.backends.qualcomm.qnn_backend" )
511+ )
512+ self .mkpath (so_dst .parent ) # ensure destination exists
513+ self .copy_file (str (so_src ), str (so_dst ))
514+ print (f"Copied Qualcomm backend: { so_src } -> { so_dst } " )
515+
516+ # --- CLEANUP SECTION ---
517+ # 1. Remove Qualcomm SDK staging folder so it doesn’t get packaged
518+ if os .path .exists (SDK_DIR ):
519+ try :
520+ shutil .rmtree (SDK_DIR )
521+ print (f"Removed Qualcomm SDK folder: { SDK_DIR } " )
522+ except Exception as e :
523+ print (f"Failed to remove SDK_DIR { SDK_DIR } : { e } " )
524+
525+ # 2. Also remove the entire packaged SDK tree
526+ pkg_sdk_dir = prj_root / "backends/qualcomm/sdk"
527+ if pkg_sdk_dir .exists ():
528+ try :
529+ shutil .rmtree (pkg_sdk_dir )
530+ print (f"Removed packaged Qualcomm SDK: { pkg_sdk_dir } " )
531+ except Exception as e :
532+ print (f"Failed to remove packaged SDK dir { pkg_sdk_dir } : { e } " )
533+
534+ so_files = [
535+ (
536+ "executorch.backends.qualcomm.python.PyQnnManagerAdaptor" ,
537+ prj_root
538+ / "backends/qualcomm/python/PyQnnManagerAdaptor.cpython-310-x86_64-linux-gnu.so" ,
539+ ),
540+ (
541+ "executorch.backends.qualcomm.python.PyQnnWrapperAdaptor" ,
542+ prj_root
543+ / "backends/qualcomm/python/PyQnnWrapperAdaptor.cpython-310-x86_64-linux-gnu.so" ,
544+ ),
545+ ]
546+
547+ for module_name , so_src in so_files :
548+ so_dst = Path (self .get_ext_fullpath (module_name ))
549+ self .mkpath (str (so_dst .parent ))
550+ self .copy_file (str (so_src ), str (so_dst ))
551+ print (f"Copied Qualcomm backend: { so_src } -> { so_dst } " )
552+ except ImportError :
553+ print ("Import error: " , sys .exc_info ()[0 ])
552554
553555 if self .editable_mode :
554556 self ._ran_build = True
0 commit comments