changeset 267:c26567bba526

CMake: install MinGW DLLs automatically, closes #539
author David Demelier <markand@malikania.fr>
date Fri, 16 Sep 2016 13:44:20 +0200
parents 85a53bc2116c
children 4f4b9c290395
files win32/CMakeLists.txt win32/amd64/libeay32.dll win32/amd64/libgcc_s_seh-1.dll win32/amd64/libstdc++-6.dll win32/amd64/libwinpthread-1.dll win32/amd64/ssleay32.dll win32/x86/libeay32.dll win32/x86/libgcc_s_dw2-1.dll win32/x86/libstdc++-6.dll win32/x86/libwinpthread-1.dll win32/x86/ssleay32.dll
diffstat 11 files changed, 62 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/win32/CMakeLists.txt	Fri Sep 16 12:38:21 2016 +0200
+++ b/win32/CMakeLists.txt	Fri Sep 16 13:44:20 2016 +0200
@@ -1,7 +1,7 @@
 #
 # CMakeLists.txt -- CMake build system for irccd
 #
-# Copyright (c) 2013-2015 David Demelier <markand@malikania.fr>
+# Copyright (c) 2013-2016 David Demelier <markand@malikania.fr>
 #
 # Permission to use, copy, modify, and/or distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -17,28 +17,70 @@
 #
 
 #
-# Copy MinGW runtimes into the WITH_BINDIR directory and then put them in the Qt IFW installer hierarchy so that
-# they are also installed.
+# This file consists of installing required .dll files for Windows.
+#
+# It currently only supports MinGW.
+#
+
+project(win32)
+
+#
+# MinGW libraries.
+# -------------------------------------------------------------------
 #
-if (IRCCD_64BITS)
-    set(ARCH "amd64")
-    set(LIBGCC libgcc_s_seh-1.dll)
-else ()
-    set(ARCH "x86")
-    set(LIBGCC libgcc_s_dw2-1.dll)
+
+if (MINGW)
+    if (IRCCD_64BITS)
+        find_program(LIBGCC_DLL libgcc_s_seh-1.dll)
+    else ()
+        find_program(LIBGCC_DLL libgcc_s_sjlj-1.dll)
+    endif ()
+
+    find_program(LIBWINPTHREAD_DLL libwinpthread-1.dll)
+    find_program(LIBSTDCPP_DLL libstdc++-6.dll)
+
+    set(WITH_LIBGCC_DLL "${LIBGCC_DLL}" CACHE STRING
+        "Path to libgcc dll")
+    set(WITH_LIBWINPTHREAD_DLL "${LIBWINPTHREAD_DLL}" CACHE STRING
+        "Path to libwinpthread dll")
+    set(WITH_LIBSTDCPP_DLL "${LIBSTDCPP_DLL}" CACHE STRING
+        "Path to libstdc++ dll")
+
+    if (EXISTS ${WITH_LIBGCC_DLL} AND
+        EXISTS ${WITH_LIBWINPTHREAD_DLL} AND
+        EXISTS ${WITH_LIBSTDCPP_DLL})
+        install(
+            PROGRAMS
+                ${WITH_LIBGCC_DLL}
+                ${WITH_LIBWINPTHREAD_DLL}
+                ${WITH_LIBSTDCPP_DLL}
+            COMPONENT libirccd
+            DESTINATION bin
+        )
+    endif ()
 endif ()
 
-set(
-    FILES
-    ${CMAKE_CURRENT_SOURCE_DIR}/${ARCH}/libeay32.dll
-    ${CMAKE_CURRENT_SOURCE_DIR}/${ARCH}/libstdc++-6.dll
-    ${CMAKE_CURRENT_SOURCE_DIR}/${ARCH}/libwinpthread-1.dll
-    ${CMAKE_CURRENT_SOURCE_DIR}/${ARCH}/ssleay32.dll
-    ${CMAKE_CURRENT_SOURCE_DIR}/${ARCH}/${LIBGCC}
-)
+#
+# SSL libraries.
+# -------------------------------------------------------------------
+#
+
+if (WITH_SSL)
+    find_program(SSL_EAY_DLL libeay32.dll)
+    find_program(SSL_LIB_DLL ssleay32.dll)
 
-install(FILES ${FILES} DESTINATION ${WITH_BINDIR})
+    set(WITH_SSL_EAY_DLL "${SSL_EAY_DLL}" CACHE STRING
+        "Path to ssleay32.dll")
+    set(WITH_SSL_LIB_DLL "${SSL_LIB_DLL}" CACHE STRING
+        "Path to libeay32.dll")
 
-if (IRCCD_PACKAGE)
-    file(COPY ${FILES} DESTINATION ${CMAKE_BINARY_DIR}/installer/packages/base/data/${WITH_BINDIR})
+    if (EXISTS ${WITH_SSL_EAY_DLL} AND EXISTS ${WITH_SSL_LIB_DLL})
+        install(
+            PROGRAMS
+                ${WITH_SSL_EAY_DLL}
+                ${WITH_SSL_LIB_DLL}
+            COMPONENT libirccd
+            DESTINATION bin
+        )
+    endif ()
 endif ()
Binary file win32/amd64/libeay32.dll has changed
Binary file win32/amd64/libgcc_s_seh-1.dll has changed
Binary file win32/amd64/libstdc++-6.dll has changed
Binary file win32/amd64/libwinpthread-1.dll has changed
Binary file win32/amd64/ssleay32.dll has changed
Binary file win32/x86/libeay32.dll has changed
Binary file win32/x86/libgcc_s_dw2-1.dll has changed
Binary file win32/x86/libstdc++-6.dll has changed
Binary file win32/x86/libwinpthread-1.dll has changed
Binary file win32/x86/ssleay32.dll has changed