1--- old/cargokit/cmake/cargokit.cmake 2024-11-08 13:36:13.345889693 +0800
2+++ new/cargokit/cmake/cargokit.cmake 2024-11-08 13:45:26.019632176 +0800
3@@ -17,83 +17,22 @@
4 function(apply_cargokit target manifest_dir lib_name any_symbol_name)
5
6 set(CARGOKIT_LIB_NAME "${lib_name}")
7- set(CARGOKIT_LIB_FULL_NAME "${CMAKE_SHARED_MODULE_PREFIX}${CARGOKIT_LIB_NAME}${CMAKE_SHARED_MODULE_SUFFIX}")
8- if (CMAKE_CONFIGURATION_TYPES)
9- set(CARGOKIT_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>")
10- set(OUTPUT_LIB "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${CARGOKIT_LIB_FULL_NAME}")
11- else()
12- set(CARGOKIT_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
13- set(OUTPUT_LIB "${CMAKE_CURRENT_BINARY_DIR}/${CARGOKIT_LIB_FULL_NAME}")
14- endif()
15- set(CARGOKIT_TEMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/cargokit_build")
16-
17- if (FLUTTER_TARGET_PLATFORM)
18- set(CARGOKIT_TARGET_PLATFORM "${FLUTTER_TARGET_PLATFORM}")
19- else()
20- set(CARGOKIT_TARGET_PLATFORM "windows-x64")
21- endif()
22-
23- set(CARGOKIT_ENV
24- "CARGOKIT_CMAKE=${CMAKE_COMMAND}"
25- "CARGOKIT_CONFIGURATION=$<CONFIG>"
26- "CARGOKIT_MANIFEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${manifest_dir}"
27- "CARGOKIT_TARGET_TEMP_DIR=${CARGOKIT_TEMP_DIR}"
28- "CARGOKIT_OUTPUT_DIR=${CARGOKIT_OUTPUT_DIR}"
29- "CARGOKIT_TARGET_PLATFORM=${CARGOKIT_TARGET_PLATFORM}"
30- "CARGOKIT_TOOL_TEMP_DIR=${CARGOKIT_TEMP_DIR}/tool"
31- "CARGOKIT_ROOT_PROJECT_DIR=${CMAKE_SOURCE_DIR}"
32- )
33-
34- if (WIN32)
35- set(SCRIPT_EXTENSION ".cmd")
36- set(IMPORT_LIB_EXTENSION ".lib")
37- else()
38- set(SCRIPT_EXTENSION ".sh")
39- set(IMPORT_LIB_EXTENSION "")
40- execute_process(COMMAND chmod +x "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}")
41- endif()
42-
43- # Using generators in custom command is only supported in CMake 3.20+
44- if (CMAKE_CONFIGURATION_TYPES AND ${CMAKE_VERSION} VERSION_LESS "3.20.0")
45- foreach(CONFIG IN LISTS CMAKE_CONFIGURATION_TYPES)
46- add_custom_command(
47- OUTPUT
48- "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG}/${CARGOKIT_LIB_FULL_NAME}"
49- "${CMAKE_CURRENT_BINARY_DIR}/_phony_"
50- COMMAND ${CMAKE_COMMAND} -E env ${CARGOKIT_ENV}
51- "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}" build-cmake
52- VERBATIM
53- )
54- endforeach()
55- else()
56- add_custom_command(
57- OUTPUT
58- ${OUTPUT_LIB}
59- "${CMAKE_CURRENT_BINARY_DIR}/_phony_"
60- COMMAND ${CMAKE_COMMAND} -E env ${CARGOKIT_ENV}
61- "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}" build-cmake
62- VERBATIM
63- )
64- endif()
65-
66-
67- set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/_phony_" PROPERTIES SYMBOLIC TRUE)
68
69 if (TARGET ${target})
70 # If we have actual cmake target provided create target and make existing
71 # target depend on it
72- add_custom_target("${target}_cargokit" DEPENDS ${OUTPUT_LIB})
73+ add_custom_target("${target}_cargokit" DEPENDS @output_lib@)
74 add_dependencies("${target}" "${target}_cargokit")
75- target_link_libraries("${target}" PRIVATE "${OUTPUT_LIB}${IMPORT_LIB_EXTENSION}")
76+ target_link_libraries("${target}" PRIVATE @output_lib@)
77 if(WIN32)
78 target_link_options(${target} PRIVATE "/INCLUDE:${any_symbol_name}")
79 endif()
80 else()
81 # Otherwise (FFI) just use ALL to force building always
82- add_custom_target("${target}_cargokit" ALL DEPENDS ${OUTPUT_LIB})
83+ add_custom_target("${target}_cargokit" ALL DEPENDS @output_lib@)
84 endif()
85
86 # Allow adding the output library to plugin bundled libraries
87- set("${target}_cargokit_lib" ${OUTPUT_LIB} PARENT_SCOPE)
88+ set("${target}_cargokit_lib" @output_lib@ PARENT_SCOPE)
89
90 endfunction()