# Run python setup.py to generate wheel file, rename wheel file and copy it to install path.
 
# Set the variable passed from configure_file in package.cmake/package_fc.cmake
set(GIT_HASH "@GIT_HASH@")
set(Python3_EXECUTABLE @Python3_EXECUTABLE@)
set(PYTHON_LIBPATH  @PYTHON_LIBPATH@)
set(DATASYSTEM_WHEEL_PATH @DATASYSTEM_WHEEL_PATH@)
set(DATASYSTEM_SETUP_PATH @DATASYSTEM_SETUP_PATH@)
set(CMAKE_INSTALL_PATH @ARG_CMAKE_INSTALL_PATH@)
set(ENV{COMMIT_ID} "${GIT_HASH}")
 
# Copy all libs file and exclude sym file.
message("cmake install prefix: ${CMAKE_INSTALL_PREFIX}")
if(EXISTS ${PYTHON_LIBPATH})
    file(COPY ${PYTHON_LIBPATH}/
         DESTINATION ${DATASYSTEM_WHEEL_PATH}/lib
         REGEX ".*sym$" EXCLUDE)
endif()
file(GLOB_RECURSE FILE_LIST ${CMAKE_INSTALL_PREFIX}/datasystem/sdk/cpp/lib/*so*)
file(WRITE "${DATASYSTEM_WHEEL_PATH}/sdk_lib_list" "")
foreach(FILE ${FILE_LIST})
    get_filename_component(FILENAME ${FILE} NAME)
    file(APPEND "${DATASYSTEM_WHEEL_PATH}/sdk_lib_list" "${FILENAME}\n")
endforeach()

find_program(CMAKE_STRIP NAMES strip)
file(GLOB SO_FILES "${DATASYSTEM_WHEEL_PATH}/lib/*.so*")
# acl_plugin and cuda_plugin need check sha256 at runtime, can not strip
foreach(SO_FILE ${SO_FILES})
    if (NOT SO_FILE MATCHES "lib(acl|cuda)_plugin\\.so$")
        execute_process(COMMAND ${CMAKE_STRIP} ${SO_FILE})
    endif()
endforeach()

# Run python setup.py bdist_wheel to generate origin wheel file.
execute_process(
    COMMAND ${Python3_EXECUTABLE} setup.py bdist_wheel
    WORKING_DIRECTORY ${DATASYSTEM_SETUP_PATH}
    RESULT_VARIABLE result
)
if(NOT result EQUAL 0)
    message(FATAL_ERROR "build wheel failed with exit code ${result}")
endif()
file(GLOB ORIGIN_WHEEL "dist/dist/*.whl")


file(COPY ${ORIGIN_WHEEL} DESTINATION ${CMAKE_INSTALL_PATH}/)
# Remove temporary package path
file(REMOVE_RECURSE ${DATASYSTEM_SETUP_PATH})