1- # Copyright 2022-2023 Intel Corporation.
1+ # Copyright 2022-2025 Intel Corporation.
22#
33# This software and the related documents are Intel copyrighted materials, and
44# your use of them is governed by the express license under which they were
@@ -15,65 +15,88 @@ include(compiler_source.cmake)
1515include (ProcessorCount)
1616ProcessorCount(PARALLEL_PROCESSES)
1717
18- set (NPU_COMPILER_BINARY_DIR "${NPU_PLUGIN_PREFIX_DIR} /build-cid " )
18+ set (NPU_COMPILER_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /build_npu_compiler " )
1919file (MAKE_DIRECTORY ${NPU_COMPILER_BINARY_DIR} )
2020
21- set (NPU_COMPILER_INCLUDE_DIR "${NPU_PLUGIN_SOURCE_DIR} /src/vpux_driver_compiler/include" )
22- file (MAKE_DIRECTORY ${NPU_COMPILER_INCLUDE_DIR} )
23-
2421set (THREADING "TBB" CACHE STRING "Build NPU Compiler with specific THREADING option" )
2522
26- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DCMAKE_TOOLCHAIN_FILE:FILEPATH =${CMAKE_TOOLCHAIN_FILE} )
27- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DCMAKE_MAKE_PROGRAM:FILEPATH =${CMAKE_MAKE_PROGRAM} )
28- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DBUILD_COMPILER_FOR_DRIVER=ON )
29- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DBUILD_SHARED_LIBS=OFF )
30- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Release)
31- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_CLANG_FORMAT=OFF )
32- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_GAPI_PREPROCESSING=OFF )
33- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_HETERO=OFF )
34- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_INTEL_CPU=OFF )
35- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_INTEL_GNA=OFF )
36- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_INTEL_GPU=OFF )
37- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_IR_V7_READER=OFF )
38- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_MULTI=OFF )
39- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_IR_FRONTEND=ON )
40- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_ONNX_FRONTEND=OFF )
41- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_PADDLE_FRONTEND=OFF )
42- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_TF_FRONTEND=OFF )
43- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_TF_LITE_FRONTEND=OFF )
44- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_PYTHON=OFF )
45- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_TEMPLATE=OFF )
46- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_TESTS=OFF )
47- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_WHEEL=OFF )
48- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_NCC_STYLE=OFF )
49- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DTHREADING=${THREADING} )
50- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DOPENVINO_EXTRA_MODULES=${NPU_PLUGIN_SOURCE_DIR} )
51- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DOUTPUT_ROOT=${NPU_COMPILER_BINARY_DIR} )
52-
53- # TODO: Temporary WA for building LLVM from plugin source
54- list (APPEND NPU_COMPILER_CMAKE_FLAGS -DLLVM_ENABLE_ZLIB=OFF )
23+ set (NPU_COMPILER_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR} /npu_compiler)
24+ set (NPU_COMPILER_PACKAGE_DIR ${NPU_COMPILER_INSTALL_PREFIX} /cid)
5525
56- # TODO: Temporary WA for buidling NPU tools that tries to find gflags dependency in system
57- list (APPEND NPU_COMPILER_CMAKE_FLAGS -Dgflags_DIR=${CMAKE_CURRENT_SOURCE_DIR} /openvino_modules)
26+ include (ExternalProject)
5827
5928ExternalProject_Add(
6029 npu_compiler_build
6130 DOWNLOAD_COMMAND ""
62- DEPENDS npu_plugin_source openvino_source
63- PREFIX ${OPENVINO_PREFIX_DIR}
64- SOURCE_DIR ${OPENVINO_SOURCE_DIR}
31+ DEPENDS npu_compiler_source ${NPU_COMPILER_BUILD_DEPENDS}
32+ SOURCE_DIR ${NPU_COMPILER_OPENVINO_SOURCE_DIR}
6533 BINARY_DIR ${NPU_COMPILER_BINARY_DIR}
66- CMAKE_ARGS ${NPU_COMPILER_CMAKE_FLAGS}
34+ CMAKE_ARGS
35+ -D CMAKE_BUILD_TYPE =Release
36+ -D CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
37+ -D CMAKE_MAKE_PROGRAM =${CMAKE_MAKE_PROGRAM}
38+ -D BUILD_COMPILER_FOR_DRIVER=ON
39+ -D BUILD_SHARED_LIBS =OFF
40+ # CLANG_FORMAT and NCC_STYLE is set to OFF to avoid LLVMDemangle doubled target issue
41+ -D ENABLE_CLANG_FORMAT=OFF
42+ -D ENABLE_NCC_STYLE=OFF
43+ # Copied from "how_to_build_driver_compiler" document
44+ -D ENABLE_AUTO=OFF
45+ -D ENABLE_AUTO_BATCH=OFF
46+ -D ENABLE_BLOB_DUMP=OFF
47+ -D ENABLE_FUNCTIONAL_TESTS=OFF
48+ -D ENABLE_HETERO=OFF
49+ -D ENABLE_INTEL_CPU=OFF
50+ -D ENABLE_INTEL_GPU=OFF
51+ -D ENABLE_JS=OFF
52+ -D ENABLE_MULTI=OFF
53+ -D ENABLE_INTEL_NPU_PROTOPIPE=OFF
54+ -D ENABLE_OV_IR_FRONTEND=ON
55+ -D ENABLE_OV_JAX_FRONTEND=OFF
56+ -D ENABLE_OV_ONNX_FRONTEND=OFF
57+ -D ENABLE_OV_PADDLE_FRONTEND=OFF
58+ -D ENABLE_OV_PYTORCH_FRONTEND=OFF
59+ -D ENABLE_OV_TF_FRONTEND=OFF
60+ -D ENABLE_OV_TF_LITE_FRONTEND=OFF
61+ -D ENABLE_PROXY=OFF
62+ -D ENABLE_SAMPLES=OFF
63+ -D ENABLE_TBBBIND_2_5=OFF
64+ -D ENABLE_TEMPLATE=OFF
65+ -D ENABLE_TESTS=OFF
66+ # WA in case libgflags is installed in system
67+ -D gflags_DIR=${CMAKE_CURRENT_SOURCE_DIR} /openvino_modules
68+ -D OPENVINO_EXTRA_MODULES=${NPU_COMPILER_SOURCE_DIR}
69+ -D OUTPUT_ROOT=${NPU_COMPILER_BINARY_DIR}
70+ -D THREADING=${THREADING}
6771 BUILD_COMMAND
68- ${CMAKE_COMMAND}
72+ ${CMAKE_COMMAND}
6973 --build ${NPU_COMPILER_BINARY_DIR}
70- --target npu_driver_compiler
74+ --config Release
75+ --target compilerTest profilingTest vpuxCompilerL0Test loaderTest
7176 --parallel ${PARALLEL_PROCESSES}
7277 INSTALL_COMMAND
73- cp ${NPU_COMPILER_BINARY_DIR} /bin/intel64/Release/libnpu_driver_compiler.so
74- ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /
75- BUILD_BYPRODUCTS
76- ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /libnpu_driver_compiler.so)
78+ ${CMAKE_COMMAND}
79+ --install ${NPU_COMPILER_BINARY_DIR}
80+ --prefix ${NPU_COMPILER_INSTALL_PREFIX}
81+ --component CiD
82+ BYPRODUCTS
83+ ${NPU_COMPILER_PACKAGE_DIR} /lib/libnpu_driver_compiler.so
84+ ${NPU_COMPILER_PACKAGE_DIR} /vpux_elf/lib/Release/libnpu_elf.a
85+ )
86+
87+ add_dependencies (npu_compiler npu_compiler_build)
88+
89+ # Extra command to prepare a standalone package with NPU compiler
90+ set (NPU_COMPILER_PACKAGE_NAME "npu-drv-compiler-${TARGET_DISTRO} -${NPU_COMPILER_TAG} -${BUILD_NUMBER} " )
91+
92+ add_custom_target (npu_compiler_package
93+ COMMAND
94+ tar -C ${NPU_COMPILER_INSTALL_PREFIX} -czf ${CMAKE_BINARY_DIR} /${NPU_COMPILER_PACKAGE_NAME} .tar.gz --transform='s,/cid,/npu_compiler,' ./cid/
95+ DEPENDS npu_compiler_build
96+ BYPRODUCTS ${CMAKE_BINARY_DIR} /${NPU_COMPILER_PACKAGE_NAME} .tar.gz)
7797
78- set (NPU_COMPILER_DEPENDENCY npu_compiler_build)
79- list (APPEND NPU_COMPILER_LIBS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /libnpu_driver_compiler.so)
98+ install (
99+ FILES ${CMAKE_BINARY_DIR} /${NPU_COMPILER_PACKAGE_NAME} .tar.gz
100+ DESTINATION .
101+ COMPONENT npu_compiler_package
102+ EXCLUDE_FROM_ALL )
0 commit comments