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()