@@ -49,20 +49,21 @@ endif()
4949
5050# Determine environment
5151if (DEFINED ENV{GITHUB_ACTIONS})
52- message (STATUS "Detected CI environment, skipping file deployment" )
53- set (DEPLOY_FILES FALSE )
52+ message (STATUS "Detected CI environment, skipping qt deployment" )
53+ set (QT_DEPLOY_FILES FALSE )
5454else ()
5555 message (STATUS "Detected local dev environment" )
56- if (PACKAGE_BUILD)
57- set (DEST_DIR "$<TARGET_FILE_DIR:SerialPrograms>/Output" )
58- set (DEPLOY_DIR "${DEST_DIR} /Binaries64" )
59- else ()
60- set (DEST_DIR "$<TARGET_FILE_DIR:SerialPrograms>" )
61- set (DEPLOY_DIR "${DEST_DIR} " )
62- endif ()
56+ set (QT_DEPLOY_FILES TRUE )
57+ endif ()
6358
64- set (DEPLOY_FILES TRUE )
59+ if (PACKAGE_BUILD)
60+ set (DEST_DIR "$<TARGET_FILE_DIR:SerialPrograms>/Output" )
61+ set (DEPLOY_DIR "${DEST_DIR} /Binaries64" )
62+ else ()
63+ set (DEST_DIR "$<TARGET_FILE_DIR:SerialPrograms>" )
64+ set (DEPLOY_DIR "${DEST_DIR} " )
6565endif ()
66+
6667#Find threads library
6768set (THREADS_PREFER_PTHREAD_FLAG ON )
6869find_package (Threads REQUIRED)
@@ -73,7 +74,7 @@ if(NOT QT_MAJOR)
7374endif ()
7475
7576# Find Qt and windeployqt.exe relative to the Qt bin dir. If CI, not Windows, or not deploying, just find_package()
76- if (WIN32 AND DEPLOY_FILES )
77+ if (WIN32 AND QT_DEPLOY_FILES )
7778 # Define the base Qt installation directory
7879 if (PREFERRED_QT_DIR AND PREFERRED_QT_VER)
7980 set (QT_CANDIDATE_DIR "${PREFERRED_QT_DIR} /${PREFERRED_QT_VER} /msvc2022_64/lib/cmake" )
@@ -155,18 +156,6 @@ if (APPLE)
155156 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR} /cmake/MacOSXBundleInfo.plist.in
156157 RESOURCE ${SerialPrograms_ICON}
157158 )
158-
159- # make sure Packages repo, https://github.com/PokemonAutomation/Packages is placed in the same folder as this Arduino-Source repo
160- # so the post-build command can copy the resources folder Packages/SerialPrograms/Resources/ into the built app bundle:
161- set (RESOURCES_PATH "${REPO_ROOT_DIR} /../Packages/SerialPrograms/Resources" )
162- message (STATUS "Set Resources folder path from Packages repo: ${RESOURCES_PATH} " )
163- add_custom_command (
164- TARGET SerialPrograms
165- POST_BUILD
166- COMMAND ${CMAKE_COMMAND} -E copy_directory
167- "${RESOURCES_PATH} "
168- "$<TARGET_FILE_DIR:SerialPrograms>/../Resources"
169- )
170159else ()
171160 add_executable (SerialPrograms WIN32 ${EXECUTABLE_SOURCES} )
172161endif ()
@@ -202,6 +191,51 @@ endfunction()
202191apply_common_target_properties(SerialProgramsLib)
203192apply_common_target_properties(SerialPrograms)
204193
194+ set (PACKAGES_DIR "${REPO_ROOT_DIR} /Packages" )
195+ set (FIRMWARE_DIR "${PACKAGES_DIR} /PABotBase/PABotBase-Switch" )
196+ set (SCRIPTS_DIR "${PACKAGES_DIR} /SerialPrograms/Scripts" )
197+ set (RESOURCES_DIR "${PACKAGES_DIR} /SerialPrograms/Resources" )
198+
199+ # Clone Packages repo if not already present
200+ if (NOT EXISTS "${PACKAGES_DIR} " )
201+ message (STATUS "Cloning Packages repo at configure time..." )
202+ execute_process (
203+ COMMAND git clone --branch master https://github.com/PokemonAutomation/Packages "${PACKAGES_DIR} "
204+ WORKING_DIRECTORY "${REPO_ROOT_DIR} "
205+ )
206+ add_custom_target (clone_packages DEPENDS "${PACKAGES_DIR} " )
207+ add_dependencies (SerialPrograms clone_packages)
208+ else ()
209+ add_custom_target (clone_packages COMMENT "Packages repo already present, skipping clone." )
210+ endif ()
211+
212+ # Copy resources if not already present
213+ if (NOT EXISTS "${DEST_DIR} /Resources" )
214+ add_custom_command (
215+ TARGET SerialPrograms POST_BUILD
216+ COMMAND ${CMAKE_COMMAND} -E echo "[Deploy] Copying resources"
217+ COMMAND ${CMAKE_COMMAND} -E copy_directory "${RESOURCES_DIR} " "${DEST_DIR} /Resources"
218+ )
219+ endif ()
220+
221+ # Copy firmware if not already present
222+ if (NOT EXISTS "${DEST_DIR} /Firmware" )
223+ add_custom_command (
224+ TARGET SerialPrograms POST_BUILD
225+ COMMAND ${CMAKE_COMMAND} -E echo "[Deploy] Copying firmware"
226+ COMMAND ${CMAKE_COMMAND} -E copy_directory "${FIRMWARE_DIR} " "${DEST_DIR} /Firmware"
227+ )
228+ endif ()
229+
230+ # Copy scripts if not already present
231+ if (NOT EXISTS "${DEST_DIR} /Scripts" )
232+ add_custom_command (
233+ TARGET SerialPrograms POST_BUILD
234+ COMMAND ${CMAKE_COMMAND} -E echo "[Deploy] Copying scripts"
235+ COMMAND ${CMAKE_COMMAND} -E copy_directory "${SCRIPTS_DIR} " "${DEST_DIR} /Scripts"
236+ )
237+ endif ()
238+
205239if (WIN32 )
206240 add_library (OpenCV_lib IMPORTED UNKNOWN)
207241 target_include_directories (SerialProgramsLib SYSTEM PRIVATE ../3rdParty/opencv-4.11.0/)
@@ -543,31 +577,7 @@ SET_SOURCE_FILES_PROPERTIES(
543577)
544578endif ()
545579
546- if (WIN32 AND NOT DEPLOY_FILES)
547- file (GLOB MY_DLLS
548- "../3rdPartyBinaries/*.dll"
549- )
550- file (COPY ${MY_DLLS} DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
551-
552- message (STATUS "Extracting opencv_world4110d" )
553- file (ARCHIVE_EXTRACT
554- INPUT ${REPO_ROOT_DIR} /3rdPartyBinaries/opencv_world4110d.zip
555- DESTINATION ${REPO_ROOT_DIR} /3rdPartyBinaries/
556- )
557-
558- set (DISCORD_SDK_ZIP "${REPO_ROOT_DIR} /3rdPartyBinaries/discord_social_sdk_win.zip" )
559- set (DISCORD_SDK_DIR "${REPO_ROOT_DIR} /3rdPartyBinaries/discord_social_sdk_win" )
560- if (EXISTS "${DISCORD_SDK_ZIP} " AND NOT EXISTS "${DISCORD_SDK_DIR} " )
561- message (STATUS "Extracting Social SDK" )
562- file (ARCHIVE_EXTRACT
563- INPUT "${DISCORD_SDK_ZIP} "
564- DESTINATION "${REPO_ROOT_DIR} /3rdPartyBinaries"
565- )
566- endif ()
567- endif ()
568-
569- if (WIN32 AND DEPLOY_FILES)
570- set (PACKAGES_DIR "${REPO_ROOT_DIR} /Packages" )
580+ if (WIN32 )
571581 set (OPENCV_DEBUG_ZIP "${REPO_ROOT_DIR} /3rdPartyBinaries/opencv_world4110d.zip" )
572582 set (OPENCV_DEBUG_DLL "${REPO_ROOT_DIR} /3rdPartyBinaries/opencv_world4110d.dll" )
573583
@@ -576,63 +586,21 @@ if (WIN32 AND DEPLOY_FILES)
576586 set (DISCORD_DLL_DEBUG "${REPO_ROOT_DIR} /3rdPartyBinaries/discord_social_sdk_win/bin/debug/discord_partner_sdk.dll" )
577587 set (DISCORD_DLL_RELEASE "${REPO_ROOT_DIR} /3rdPartyBinaries/discord_social_sdk_win/bin/release/discord_partner_sdk.dll" )
578588
579- set (FIRMWARE_DIR "${PACKAGES_DIR} /PABotBase/PABotBase-Switch" )
580- set (SCRIPTS_DIR "${PACKAGES_DIR} /SerialPrograms/Scripts" )
581- set (RESOURCES_DIR "${PACKAGES_DIR} /SerialPrograms/Resources" )
582-
583- # Clone Packages repo if not already present
584- if (NOT EXISTS "${PACKAGES_DIR} " )
585- message (STATUS "Cloning Packages repo at configure time..." )
586- execute_process (
587- COMMAND git clone --branch master https://github.com/PokemonAutomation/Packages "${PACKAGES_DIR} "
588- WORKING_DIRECTORY "${REPO_ROOT_DIR} "
589- )
590- add_custom_target (clone_packages DEPENDS "${PACKAGES_DIR} " )
591- add_dependencies (SerialPrograms clone_packages)
592- else ()
593- add_custom_target (clone_packages COMMENT "Packages repo already present, skipping clone." )
594- endif ()
595-
596- # Copy resources if not already present
597- if (NOT EXISTS "${DEST_DIR} /Resources" )
598- add_custom_command (
599- TARGET SerialPrograms POST_BUILD
600- COMMAND ${CMAKE_COMMAND} -E echo "[Deploy] Copying resources"
601- COMMAND ${CMAKE_COMMAND} -E copy_directory "${RESOURCES_DIR} " "${DEST_DIR} /Resources"
602- )
603- endif ()
604-
605- # Copy firmware if not already present
606- if (NOT EXISTS "${DEST_DIR} /Firmware" )
607- add_custom_command (
608- TARGET SerialPrograms POST_BUILD
609- COMMAND ${CMAKE_COMMAND} -E echo "[Deploy] Copying firmware"
610- COMMAND ${CMAKE_COMMAND} -E copy_directory "${FIRMWARE_DIR} " "${DEST_DIR} /Firmware"
611- )
612- endif ()
613-
614- # Copy scripts if not already present
615- if (NOT EXISTS "${DEST_DIR} /Scripts" )
616- add_custom_command (
617- TARGET SerialPrograms POST_BUILD
618- COMMAND ${CMAKE_COMMAND} -E echo "[Deploy] Copying scripts"
619- COMMAND ${CMAKE_COMMAND} -E copy_directory "${SCRIPTS_DIR} " "${DEST_DIR} /Scripts"
620- )
621- endif ()
622-
623- # Run windeployqt if Qt DLLs are missing
624- if (WINDEPLOYQT_EXECUTABLE AND NOT EXISTS "${DEPLOY_DIR} /Qt6Core.dll" )
625- add_custom_command (
626- TARGET SerialPrograms POST_BUILD
627- COMMAND ${CMAKE_COMMAND} -E echo "[Deploy] Running windeployqt"
628- COMMAND "${WINDEPLOYQT_EXECUTABLE} "
629- --dir "${DEPLOY_DIR} "
630- $<IF:$<CONFIG:Debug>,--debug,--release>
631- $<TARGET_FILE:SerialPrograms>
632- )
633- add_custom_target (run_windeployqt DEPENDS $<TARGET_FILE:SerialPrograms>)
634- else ()
635- message (WARNING "windeployqt not found, skipping Qt deployment." )
589+ if (QT_DEPLOY_FILES)
590+ # Run windeployqt if Qt DLLs are missing
591+ if (WINDEPLOYQT_EXECUTABLE AND NOT EXISTS "${DEPLOY_DIR} /Qt6Core.dll" )
592+ add_custom_command (
593+ TARGET SerialPrograms POST_BUILD
594+ COMMAND ${CMAKE_COMMAND} -E echo "[Deploy] Running windeployqt"
595+ COMMAND "${WINDEPLOYQT_EXECUTABLE} "
596+ --dir "${DEPLOY_DIR} "
597+ $<IF:$<CONFIG:Debug>,--debug,--release>
598+ $<TARGET_FILE:SerialPrograms>
599+ )
600+ add_custom_target (run_windeployqt DEPENDS $<TARGET_FILE:SerialPrograms>)
601+ else ()
602+ message (WARNING "windeployqt not found, skipping Qt deployment." )
603+ endif ()
636604 endif ()
637605
638606 # Copy Discord SDK DLL
0 commit comments