Skip to content

Commit 6e955fa

Browse files
authored
Fixes msvc release. Adds build artifacts so non release exes can be accessed. Reworks installer (#89)
* Use winqtdeploy in msvc. add build artifacts * Update ServerPlugin.cpp * try cpack * Update LICENSE to GPLv3 Co-authored-by: Robert Colton <[email protected]>
1 parent d282ab6 commit 6e955fa

File tree

8 files changed

+817
-120
lines changed

8 files changed

+817
-120
lines changed

CMakeLists.txt

+43-86
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
cmake_minimum_required(VERSION 3.11)
22

3-
if (CMAKE_BUILD_TYPE EQUAL "Debug")
3+
if (CMAKE_BUILD_TYPE MATCHES "Debug")
44
set(EXE "RadialGM-Debug")
55
else()
66
set(EXE "RadialGM")
77
endif()
88

9-
set(EXE_VERSION "0.1")
109
set(EXE_DESCRIPTION "ENIGMA IDE")
1110

1211
project(RadialGM)
@@ -29,21 +28,6 @@ set(CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/Dialogs")
2928
set(ENIGMA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Submodules/enigma-dev)
3029
include_directories("${CMAKE_BINARY_DIR}/Submodules/enigma-dev/CommandLine/libEGM/libProtocols" "${ENIGMA_DIR}/CommandLine/libEGM")
3130

32-
if(WIN32)
33-
if(MSVC)
34-
file(TO_CMAKE_PATH ${VCPKG_ROOT} VCPKG_ROOT)
35-
if(CMAKE_BUILD_TYPE MATCHES Debug)
36-
set (DEBUG_POSTFIX d)
37-
set(DLL_DIR "${VCPKG_ROOT}/installed/${VCPKG_TARGET_TRIPLET}/debug/bin")
38-
else()
39-
set(DLL_DIR "${VCPKG_ROOT}/installed/${VCPKG_TARGET_TRIPLET}/bin")
40-
endif()
41-
else()
42-
# Hack to get msys path
43-
get_filename_component(DLL_DIR ${CMAKE_C_COMPILER} DIRECTORY)
44-
endif()
45-
endif()
46-
4731
# Populate a CMake variable with the sources
4832
set(RGM_SOURCES
4933
Plugins/RGMPlugin.cpp
@@ -178,11 +162,7 @@ endif()
178162
set(CMAKE_INSTALL_RPATH "${ENIGMA_DIR}")
179163

180164
# Tell CMake to create the RadialGM executable
181-
if(WIN32)
182-
add_executable(${EXE} WIN32 ${RGM_UI} ${RGM_HEADERS} ${RGM_SOURCES} ${EDITOR_SOURCES} ${RGM_RC})
183-
else()
184-
add_executable(${EXE} ${RGM_UI} ${RGM_HEADERS} ${RGM_SOURCES} ${EDITOR_SOURCES} ${RGM_RC})
185-
endif(WIN32)
165+
add_executable(${EXE} WIN32 ${RGM_UI} ${RGM_HEADERS} ${RGM_SOURCES} ${EDITOR_SOURCES} ${RGM_RC})
186166

187167
# we do this even in release mode for "Editor Diagnostics"
188168
target_compile_definitions(${EXE} PUBLIC QT_MESSAGELOGCONTEXT)
@@ -225,7 +205,7 @@ find_package(yaml-cpp CONFIG REQUIRED)
225205
target_link_libraries(${EXE} PRIVATE yaml-cpp)
226206

227207
#Find gRPC
228-
if (WIN32) # Windows actually does something right for once
208+
if (MSVC) # Windows actually does something right for once
229209
find_package(gRPC CONFIG REQUIRED)
230210
target_link_libraries(${EXE} PRIVATE gRPC::gpr gRPC::grpc gRPC::grpc++)
231211
else() # https://tinyurl.com/arch-grpc-bug
@@ -281,74 +261,51 @@ if(WIN32)
281261
target_link_libraries(${EXE} PRIVATE Ws2_32 Wtsapi32 Wldap32 Crypt32 Winmm Userenv Netapi32 version Dwmapi Imm32)
282262
endif(WIN32)
283263

284-
install(TARGETS ${EXE} DESTINATION "${ENIGMA_DIR}")
264+
install(TARGETS ${EXE} RUNTIME DESTINATION .)
285265

286-
if(WIN32)
287-
if (MSVC)
266+
if(MSVC)
288267
# Default MSVC warnings are overkill. Set to Lvl 2
289268
target_compile_options(${EXE} PRIVATE /W1)
290269
target_compile_options("EGM" PRIVATE /W1)
291270
target_compile_options("Protocols" PRIVATE /W1)
271+
endif()
292272

293-
install(FILES
294-
"${DLL_DIR}/libprotobuf${DEBUG_POSTFIX}.dll"
295-
"${DLL_DIR}/Qt5PrintSupport${DEBUG_POSTFIX}.dll"
296-
"${DLL_DIR}/Qt5MultiMedia${DEBUG_POSTFIX}.dll"
297-
"${DLL_DIR}/Qt5Widgets${DEBUG_POSTFIX}.dll"
298-
"${DLL_DIR}/Qt5Gui${DEBUG_POSTFIX}.dll"
299-
"${DLL_DIR}/Qt5Core${DEBUG_POSTFIX}.dll"
300-
"${DLL_DIR}/Qt5Network${DEBUG_POSTFIX}.dll"
301-
"${DLL_DIR}/zlib${DEBUG_POSTFIX}1.dll"
302-
"${DLL_DIR}/libpng16${DEBUG_POSTFIX}.dll"
303-
"${DLL_DIR}/pugixml.dll"
304-
"${DLL_DIR}/libssl-1_1-x64.dll"
305-
"${DLL_DIR}/libcrypto-1_1-x64.dll"
306-
"${DLL_DIR}/cares.dll"
307-
"${DLL_DIR}/harfbuzz.dll"
308-
"${DLL_DIR}/icuin${DEBUG_POSTFIX}65.dll"
309-
"${DLL_DIR}/icuuc${DEBUG_POSTFIX}65.dll"
310-
"${DLL_DIR}/pcre2-16${DEBUG_POSTFIX}.dll"
311-
"${DLL_DIR}/freetype${DEBUG_POSTFIX}.dll"
312-
"${DLL_DIR}/icudt${DEBUG_POSTFIX}65.dll"
313-
"${DLL_DIR}/bz2${DEBUG_POSTFIX}.dll"
314-
DESTINATION "${ENIGMA_DIR}")
273+
install(TARGETS "Protocols" DESTINATION .)
274+
install(TARGETS "EGM" DESTINATION .)
275+
276+
set(APPS "${CMAKE_INSTALL_PREFIX}/${EXE}${CMAKE_EXECUTABLE_SUFFIX}")
277+
278+
if (MSVC)
279+
file(TO_CMAKE_PATH ${VCPKG_ROOT} VCPKG_ROOT)
280+
if (CMAKE_BUILD_TYPE MATCHES "Debug")
281+
set(SEARCH_PATHS "${VCPKG_ROOT}/installed/x64-windows/debug/bin/")
315282
else()
316-
find_file(LIB_GCC NAMES libgcc_s_dw2-1.dll libgcc_s_seh-1.dll PATHS "${DLL_DIR}")
317-
find_file(LIB_SSL NAMES libssl-1_1.dll libssl-1_1-x64.dll PATHS "${DLL_DIR}")
318-
find_file(LIB_CRYPTO NAMES libcrypto-1_1.dll libcrypto-1_1-x64.dll PATHS "${DLL_DIR}")
319-
install(CODE "execute_process(COMMAND windeployqt.exe --no-translations ${ENIGMA_DIR}/${EXE}.exe)")
320-
install(FILES
321-
"${LIB_GCC}"
322-
"${LIB_SSL}"
323-
"${LIB_CRYPTO}"
324-
"${DLL_DIR}/libwinpthread-1.dll"
325-
"${DLL_DIR}/libstdc++-6.dll"
326-
"${DLL_DIR}/libgrpc++_unsecure.dll"
327-
"${DLL_DIR}/libprotobuf.dll"
328-
"${DLL_DIR}/zlib1.dll"
329-
"${DLL_DIR}/libpng16-16.dll"
330-
"${DLL_DIR}/libpugixml.dll"
331-
"${DLL_DIR}/libgpr.dll"
332-
"${DLL_DIR}/libgrpc_unsecure.dll"
333-
"${DLL_DIR}/libgrpc.dll"
334-
"${DLL_DIR}/libgrpc++.dll"
335-
"${DLL_DIR}/yaml-cpp.dll"
336-
"${DLL_DIR}/libdouble-conversion.dll"
337-
"${DLL_DIR}/libicuuc65.dll"
338-
"${DLL_DIR}/libicuin65.dll"
339-
"${DLL_DIR}/libpcre2-16-0.dll"
340-
"${DLL_DIR}/libcares-3.dll"
341-
"${DLL_DIR}/libaddress_sorting.dll"
342-
"${DLL_DIR}/libharfbuzz-0.dll"
343-
"${DLL_DIR}/libzstd.dll"
344-
"${DLL_DIR}/libicudt65.dll"
345-
"${DLL_DIR}/libglib-2.0-0.dll"
346-
"${DLL_DIR}/libfreetype-6.dll"
347-
"${DLL_DIR}/libgraphite2.dll"
348-
"${DLL_DIR}/libbz2-1.dll"
349-
"${DLL_DIR}/libintl-8.dll"
350-
"${DLL_DIR}/libpcre-1.dll"
351-
"${DLL_DIR}/libiconv-2.dll"
352-
DESTINATION "${ENIGMA_DIR}")
283+
set(SEARCH_PATHS "${VCPKG_ROOT}/installed/x64-windows/bin/")
284+
endif()
285+
else()
286+
set(LIBS "${CMAKE_INSTALL_PREFIX}/${CMAKE_SHARED_LIBRARY_PREFIX}EGM${CMAKE_SHARED_LIBRARY_SUFFIX}"
287+
"${CMAKE_INSTALL_PREFIX}/${CMAKE_SHARED_LIBRARY_PREFIX}Protocols${CMAKE_SHARED_LIBRARY_SUFFIX}")
288+
endif()
289+
290+
if (WIN32)
291+
292+
set(WINDEPLOY_ARGS "--no-translations --no-angle")
293+
294+
if (MSVC)
295+
if (CMAKE_BUILD_TYPE MATCHES "Debug")
296+
set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE)
297+
set(WINDEPLOY_ARGS "${WINDEPLOY_ARGS} --pdb --no-compiler-runtime")
298+
else()
299+
set(WINDEPLOY_ARGS "${WINDEPLOY_ARGS} --no-compiler-runtime")
300+
endif()
301+
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
302+
include(InstallRequiredSystemLibraries)
303+
install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION .)
353304
endif()
354-
endif()
305+
306+
install(CODE "
307+
include(BundleUtilities)
308+
fixup_bundle(\"${APPS}\" \"${LIBS}\" \"${SEARCH_PATHS}\")
309+
execute_process(COMMAND windeployqt.exe ${WINDEPLOY_ARGS} ${APPS})
310+
")
311+
endif()

0 commit comments

Comments
 (0)