diff --git a/cmake/onnx_model.cmake b/cmake/onnx_model.cmake index 3cfd5b58b..7b60f4813 100644 --- a/cmake/onnx_model.cmake +++ b/cmake/onnx_model.cmake @@ -1,12 +1,22 @@ file(GLOB_RECURSE __PPLNN_MODEL_ONNX_SRC__ src/ppl/nn/models/onnx/*.cc) +list(REMOVE_ITEM __PPLNN_MODEL_ONNX_SRC__ ${PROJECT_SOURCE_DIR}/src/ppl/nn/models/onnx/generated/onnx.pb.cc) if(PPLNN_PROTOBUF_VERSION AND NOT PPLNN_ONNX_GENERATED_LIBS) message(FATAL_ERROR "`PPLNN_PROTOBUF_VERSION` is set to be [${PPLNN_PROTOBUF_VERSION}], but `PPLNN_ONNX_GENERATED_LIBS` is not set.") endif() -# replace default *.pb.* files -if(PPLNN_ONNX_GENERATED_LIBS) - list(REMOVE_ITEM __PPLNN_MODEL_ONNX_SRC__ ${PROJECT_SOURCE_DIR}/src/ppl/nn/models/onnx/generated/onnx.pb.cc) +if(NOT TARGET libprotobuf) + include(cmake/protobuf.cmake) +endif() + +# use default *.pb.* files +if(NOT PPLNN_ONNX_GENERATED_LIBS) + add_library(pplnn_onnx_pb_generated_static ${PROJECT_SOURCE_DIR}/src/ppl/nn/models/onnx/generated/onnx.pb.cc) + target_link_libraries(pplnn_onnx_pb_generated_static PUBLIC libprotobuf) + target_include_directories(pplnn_onnx_pb_generated_static PUBLIC + ${protobuf_SOURCE_DIR}/src + ${PROJECT_SOURCE_DIR}/src/ppl/nn/models/onnx/generated) + set(PPLNN_ONNX_GENERATED_LIBS pplnn_onnx_pb_generated_static) endif() # if external sources are set, remove `default_register_resources.cc` @@ -18,22 +28,13 @@ add_library(pplnn_onnx_static STATIC ${__PPLNN_MODEL_ONNX_SRC__} ${PPLNN_SOURCE_ unset(__PPLNN_MODEL_ONNX_SRC__) -if(PPLNN_ONNX_GENERATED_LIBS) - target_link_libraries(pplnn_onnx_static PRIVATE ${PPLNN_ONNX_GENERATED_LIBS}) -else() - target_include_directories(pplnn_onnx_static PRIVATE ${PROJECT_SOURCE_DIR}/src/ppl/nn/models/onnx/generated) -endif() - target_compile_definitions(pplnn_onnx_static PUBLIC PPLNN_ENABLE_ONNX_MODEL) target_link_libraries(pplnn_onnx_static PUBLIC pplnn_basic_static) - -include(cmake/protobuf.cmake) -target_link_libraries(pplnn_onnx_static PUBLIC libprotobuf) -target_include_directories(pplnn_onnx_static PRIVATE ${protobuf_SOURCE_DIR}/src) +target_link_libraries(pplnn_onnx_static PRIVATE ${PPLNN_ONNX_GENERATED_LIBS}) target_link_libraries(pplnn_static INTERFACE pplnn_onnx_static) if(PPLNN_INSTALL) install(DIRECTORY include/ppl/nn/models/onnx DESTINATION include/ppl/nn/models) - install(TARGETS pplnn_onnx_static DESTINATION lib) + install(TARGETS pplnn_onnx_static ${PPLNN_ONNX_GENERATED_LIBS} DESTINATION lib) endif() diff --git a/cmake/pplnn-config.cmake.in b/cmake/pplnn-config.cmake.in index 561d42003..01fc5f2ac 100644 --- a/cmake/pplnn-config.cmake.in +++ b/cmake/pplnn-config.cmake.in @@ -118,14 +118,14 @@ if(PPLNN_USE_LLM_CUDA) list(APPEND __LINK_LIBS__ ${NCCL_LIBRARIES}) endif() - get_filename_component(__LIB_PATH__ "${__PPLNN_PACKAGE_ROOTDIR__}/lib/@HPCC_STATIC_LIB_PREFIX@ppl_llm_cuda_static@HPCC_STATIC_LIB_SUFFIX@" ABSOLUTE) + get_filename_component(__PPLNN_LIB_PATH__ "${__PPLNN_PACKAGE_ROOTDIR__}/lib/@HPCC_STATIC_LIB_PREFIX@ppl_llm_cuda_static@HPCC_STATIC_LIB_SUFFIX@" ABSOLUTE) add_library(ppl_llm_cuda_static STATIC IMPORTED) set_target_properties(ppl_llm_cuda_static PROPERTIES INTERFACE_LINK_LIBRARIES "${__LINK_LIBS__}" - IMPORTED_LOCATION "${__LIB_PATH__}" - IMPORTED_LOCATION_DEBUG "${__LIB_PATH__}" - IMPORTED_LOCATION_RELEASE "${__LIB_PATH__}") - unset(__LIB_PATH__) + IMPORTED_LOCATION "${__PPLNN_LIB_PATH__}" + IMPORTED_LOCATION_DEBUG "${__PPLNN_LIB_PATH__}" + IMPORTED_LOCATION_RELEASE "${__PPLNN_LIB_PATH__}") + unset(__PPLNN_LIB_PATH__) unset(__LINK_LIBS__) @@ -147,10 +147,18 @@ if(PPLNN_ENABLE_ONNX_MODEL) include(${__PPLNN_PACKAGE_ROOTDIR__}/lib/cmake/protobuf/protobuf-config.cmake) endif() + get_filename_component(__PPLNN_LIB_PATH__ "${__PPLNN_PACKAGE_ROOTDIR__}/lib/@HPCC_STATIC_LIB_PREFIX@@PPLNN_ONNX_GENERATED_LIBS@@HPCC_STATIC_LIB_SUFFIX@" ABSOLUTE) + add_library(pplnn_onnx_generated_static STATIC IMPORTED) + set_target_properties(pplnn_onnx_generated_static PROPERTIES + INTERFACE_LINK_LIBRARIES "protobuf::libprotobuf" + IMPORTED_LOCATION "${__PPLNN_LIB_PATH__}" + IMPORTED_LOCATION_DEBUG "${__PPLNN_LIB_PATH__}" + IMPORTED_LOCATION_RELEASE "${__PPLNN_LIB_PATH__}") + get_filename_component(__PPLNN_LIB_PATH__ "${__PPLNN_PACKAGE_ROOTDIR__}/lib/@HPCC_STATIC_LIB_PREFIX@pplnn_onnx_static@HPCC_STATIC_LIB_SUFFIX@" ABSOLUTE) add_library(pplnn_onnx_static STATIC IMPORTED) set_target_properties(pplnn_onnx_static PROPERTIES - INTERFACE_LINK_LIBRARIES "pplnn_basic_static;protobuf::libprotobuf" + INTERFACE_LINK_LIBRARIES "pplnn_basic_static;pplnn_onnx_generated_static" IMPORTED_LOCATION "${__PPLNN_LIB_PATH__}" IMPORTED_LOCATION_DEBUG "${__PPLNN_LIB_PATH__}" IMPORTED_LOCATION_RELEASE "${__PPLNN_LIB_PATH__}")