Skip to content

Commit d4986b0

Browse files
committed
wip: github action to build on windows
1 parent 0e47d76 commit d4986b0

File tree

4 files changed

+32
-167
lines changed

4 files changed

+32
-167
lines changed

.github/workflows/windows-qt.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Build Qt App on Windows
2+
3+
on:
4+
push:
5+
branches: ['**']
6+
pull_request:
7+
branches: ['**']
8+
9+
jobs:
10+
build:
11+
runs-on: windows-latest
12+
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
17+
- name: Set up vcpkg
18+
uses: lukka/run-vcpkg@v11
19+
20+
- name: Configure CMake
21+
run: cmake --preset vcpkg -S . -B build

CMakeLists.txt

Lines changed: 0 additions & 167 deletions
Original file line numberDiff line numberDiff line change
@@ -17,170 +17,3 @@ configure_file(installer.iss.in installer.iss @ONLY)
1717

1818
find_package(Qt6 6.7 COMPONENTS Concurrent Quick QuickControls2 Widgets QuickWidgets Xml Core5Compat Bluetooth SerialPort LinguistTools Multimedia REQUIRED)
1919

20-
find_package(hidapi REQUIRED)
21-
find_package(KDSingleApplication-qt6 CONFIG REQUIRED)
22-
23-
find_package(gdk REQUIRED COMPONENT green_gdk_full)
24-
25-
find_package(ZXing REQUIRED)
26-
27-
include(CMakePrintHelpers)
28-
cmake_print_properties(TARGETS gdk::green_gdk_full PROPERTIES
29-
INTERFACE_INCLUDE_DIRECTORIES
30-
INTERFACE_LINK_LIBRARIES
31-
IMPORTED_LOCATION_RELEASE
32-
)
33-
34-
find_library(COUNTLY_LIB NAMES libcountly.a REQUIRED)
35-
find_library(LIBSERIALPORT_LIB NAMES libserialport.a REQUIRED)
36-
find_library(LIBGPGME_LIB NAMES libgpgme.a REQUIRED)
37-
find_library(LIBASSUAN_LIB NAMES libassuan.a REQUIRED)
38-
find_library(LIBGPGERROR_LIB NAMES libgpg-error.a REQUIRED)
39-
40-
41-
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
42-
43-
if (WIN32)
44-
find_library(HID_LIB NAMES libhid.a REQUIRED)
45-
set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++ -fstack-protector")
46-
elseif (APPLE)
47-
find_library(SECURITY Security REQUIRED)
48-
elseif (UNIX)
49-
find_library(AVCODEC NAMES libavcodec.a REQUIRED)
50-
find_library(AVDEVICE NAMES libavdevice.a REQUIRED)
51-
find_library(AVFILTER NAMES libavfilter.a REQUIRED)
52-
find_library(AVFORMAT NAMES libavformat.a REQUIRED)
53-
find_library(AVUTIL NAMES libavutil.a REQUIRED)
54-
find_library(SWSCALE NAMES libswscale.a REQUIRED)
55-
find_library(SWRESAMPLE NAMES libswresample.a REQUIRED)
56-
find_library(POSTPROC NAMES libpostproc.a REQUIRED)
57-
set(FFMPEG_LIBRARIES /depends/linux-x86_64/plugins/multimedia/libffmpegmediaplugin.a ${AVDEVICE} ${AVFILTER} ${AVFORMAT} ${AVCODEC} ${POSTPROC} ${SWRESAMPLE} ${SWSCALE} ${AVUTIL} Xrandr Xrender)
58-
message(STATUS "FFMPEG_LIBRARIES: ${FFMPEG_LIBRARIES}")
59-
60-
if (GREEN_WAYLAND)
61-
find_package(Qt6 6.4 COMPONENTS WaylandClient REQUIRED)
62-
endif()
63-
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -fstack-protector -Wl,--wrap=__divmoddi4 -Wl,--wrap=log2f")
64-
endif()
65-
66-
set(CMAKE_AUTOMOC ON)
67-
set(CMAKE_CXX_STANDARD 17)
68-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
69-
70-
# https://gitlab.kitware.com/cmake/cmake/issues/20256
71-
if(APPLE)
72-
find_program(DSYMUTIL_PROGRAM dsymutil)
73-
if(DSYMUTIL_PROGRAM)
74-
foreach(lang C CXX)
75-
foreach(var LINK_EXECUTABLE CREATE_SHARED_LIBRARY)
76-
set(CMAKE_${lang}_${var} "${CMAKE_${lang}_${var}}" "${DSYMUTIL_PROGRAM} <TARGET>")
77-
endforeach()
78-
endforeach()
79-
endif()
80-
endif()
81-
82-
add_definitions(-DNO_ICONV)
83-
add_definitions(-DGDK_STATIC_DEFINE)
84-
85-
include(src.cmake)
86-
87-
set(app_icon_macos "${CMAKE_CURRENT_SOURCE_DIR}/assets/icons/green.icns")
88-
set_source_files_properties(${app_icon_macos} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
89-
90-
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
91-
enable_language("RC")
92-
set(app_icon_win "${CMAKE_CURRENT_SOURCE_DIR}/green.rc")
93-
endif()
94-
95-
qt_add_executable(green WIN32 MACOSX_BUNDLE
96-
${TARGET_SOURCES}
97-
${app_icon_macos}
98-
${app_icon_win}
99-
)
100-
101-
set_target_properties(green PROPERTIES
102-
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/Info.plist.in
103-
MACOSX_BUNDLE TRUE
104-
WIN32_EXECUTABLE TRUE
105-
LINK_SEARCH_START_STATIC ON
106-
LINK_SEARCH_END_STATIC ON
107-
)
108-
109-
target_link_libraries(green
110-
PRIVATE
111-
ZXing::Core
112-
gdk::green_gdk_full
113-
${COUNTLY_LIB}
114-
${LIBSERIALPORT_LIB}
115-
Qt6::Concurrent Qt6::Quick Qt6::QuickControls2 Qt6::Widgets Qt6::QuickWidgets Qt6::Xml Qt6::Core5Compat Qt6::Bluetooth Qt6::SerialPort Qt6::Multimedia
116-
${SECURITY}
117-
hidapi::hidapi
118-
KDAB::kdsingleapplication
119-
${FFMPEG_LIBRARIES}
120-
${LIBGPGME_LIB}
121-
${LIBASSUAN_LIB}
122-
${LIBGPGERROR_LIB}
123-
)
124-
125-
if(ENABLE_SENTRY)
126-
find_package(PkgConfig REQUIRED)
127-
pkg_check_modules(BREAKPAD REQUIRED breakpad)
128-
129-
find_library(LIBBREAKPAD_LIB NAMES libbreakpad.a REQUIRED)
130-
find_library(LIBDISASM_LIB NAMES libdisasm.a REQUIRED)
131-
132-
add_compile_definitions(ENABLE_SENTRY)
133-
134-
if (UNIX AND NOT APPLE)
135-
find_package(CURL REQUIRED)
136-
endif()
137-
138-
find_package(crashpad REQUIRED)
139-
140-
get_target_property(CRASHPAD_INCLUDE crashpad::client INTERFACE_INCLUDE_DIRECTORIES)
141-
142-
target_include_directories(green PRIVATE
143-
${CRASHPAD_INCLUDE}
144-
${CRASHPAD_INCLUDE}/..
145-
${BREAKPAD_INCLUDE_DIRS}
146-
)
147-
target_link_libraries(green PRIVATE
148-
crashpad::client
149-
crashpad::handler
150-
crashpad::minidump
151-
crashpad::snapshot
152-
crashpad::tools
153-
crashpad::util
154-
crashpad::zlib
155-
${LIBBREAKPAD_LIB} ${LIBDISASM_LIB}
156-
)
157-
endif()
158-
159-
if (WIN32)
160-
target_link_libraries(green PRIVATE hid ntdll)
161-
elseif (APPLE)
162-
set_target_properties(green PROPERTIES OUTPUT_NAME "Blockstream Green")
163-
elseif (UNIX)
164-
target_link_libraries(green PRIVATE dl Xrender)
165-
qt_import_plugins(green INCLUDE Qt6::QXcbIntegrationPlugin Qt6::QFFmpegMediaPlugin)
166-
if (GREEN_WAYLAND)
167-
target_link_libraries(green PRIVATE Qt6::WaylandClient Xrender)
168-
qt_import_plugins(green INCLUDE Qt6::QWaylandIntegrationPlugin Qt6::QFFmpegMediaPlugin)
169-
endif()
170-
endif()
171-
172-
install(TARGETS green
173-
BUNDLE DESTINATION .
174-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
175-
176-
get_target_property(GDK_INCLUDE gdk::green_gdk_full INTERFACE_INCLUDE_DIRECTORIES)
177-
178-
target_include_directories(green PRIVATE
179-
src src/jade src/resolvers src/controllers src/ledger src/handlers
180-
${GDK_INCLUDE}/libwally-core/
181-
"${CMAKE_CURRENT_BINARY_DIR}"
182-
)
183-
184-
include(qml.cmake)
185-
include(assets.cmake)
186-
include(translations.cmake)

vcpkg-configuration.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"default-registry": {
3+
"kind": "builtin",
4+
"baseline": "d8ad13c401b30c2836d00b8923c9127f05f591c7"
5+
}
6+
}

vcpkg.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"dependencies": [
3+
"qt"
4+
]
5+
}

0 commit comments

Comments
 (0)