Skip to content

Commit 18e652d

Browse files
authored
Simplify cmake file (#708)
1 parent 46dc842 commit 18e652d

File tree

2 files changed

+79
-128
lines changed

2 files changed

+79
-128
lines changed

.github/workflows/cpp-ci-serial-programs.yml

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,7 @@ jobs:
3333
steps:
3434
- uses: actions/checkout@v4
3535
with:
36-
path: Arduino-Source
3736
submodules: 'recursive'
38-
- uses: actions/checkout@v4
39-
with:
40-
repository: 'PokemonAutomation/Packages'
41-
path: Packages
4237
- uses: jurplel/install-qt-action@v4
4338
with:
4439
version: ${{ matrix.qt_version }}
@@ -55,30 +50,18 @@ jobs:
5550
brew install opencv onnxruntime
5651
- name: Generate binaries
5752
run: |
58-
cd Arduino-Source/SerialPrograms
53+
cd SerialPrograms
5954
mkdir bin
6055
cd bin
6156
cmake .. -DQT_MAJOR:STRING=${{ matrix.qt_version_major }} ${{ matrix.cmake_additional_param }}
62-
cmake --build . --config Release --parallel 10
63-
- name: Copy resources
57+
cmake --build . --config RelWithDebInfo --parallel 10
58+
- name: Prepare upload folder
6459
if: startsWith(matrix.os, 'windows')
6560
run: |
66-
robocopy Packages/SerialPrograms/Resources Output/Resources /s
67-
robocopy Packages/PABotBase/PABotBase-Switch Output/PABotBase /s
68-
robocopy Arduino-Source/SerialPrograms/bin Output/Binaries *.dll
69-
robocopy Arduino-Source/SerialPrograms/bin/Release Output/Binaries SerialPrograms.exe
70-
echo https://github.com/${{github.repository}}/commit/${{github.sha}} > Output/version.txt
71-
write-host "Robocopy exited with exit code:" $lastexitcode
72-
if ($lastexitcode -eq 1)
73-
{
74-
exit 0
75-
}
76-
else
77-
{
78-
exit 1
79-
}
61+
del SerialPrograms/bin/RelWithDebInfo/SerialProgramsLib.lib
62+
echo https://github.com/${{github.repository}}/commit/${{github.sha}} > SerialPrograms/bin/RelWithDebInfo/version.txt
8063
- uses: actions/upload-artifact@v4
8164
if: startsWith(matrix.os, 'windows')
8265
with:
8366
name: Serial Programs (os=${{ matrix.os }} - compiler=${{ matrix.compiler }} - qt_version=${{ matrix.qt_version }})
84-
path: Output
67+
path: SerialPrograms/bin/RelWithDebInfo

SerialPrograms/CMakeLists.txt

Lines changed: 73 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,21 @@ endif()
4949

5050
# Determine environment
5151
if(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)
5454
else()
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}")
6565
endif()
66+
6667
#Find threads library
6768
set(THREADS_PREFER_PTHREAD_FLAG ON)
6869
find_package(Threads REQUIRED)
@@ -73,7 +74,7 @@ if(NOT QT_MAJOR)
7374
endif()
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-
)
170159
else()
171160
add_executable(SerialPrograms WIN32 ${EXECUTABLE_SOURCES})
172161
endif()
@@ -202,6 +191,51 @@ endfunction()
202191
apply_common_target_properties(SerialProgramsLib)
203192
apply_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+
205239
if (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
)
544578
endif()
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

Comments
 (0)