Mercurial > irccd
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 ()