@@ -464,91 +464,93 @@ def run(self):
464
464
if self ._ran_build :
465
465
return
466
466
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 ])
552
554
553
555
if self .editable_mode :
554
556
self ._ran_build = True
0 commit comments