diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f5615c7..bff39a05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,12 +72,23 @@ if (APPLE) endforeach() qt5_import_plugins(${CMAKE_PROJECT_NAME} INCLUDE_BY_TYPE sqldrivers) -elseif(WIN32) - - set(QT_USE_QTMAIN TRUE) - endif() +macro(guid content) + string( + UUID GUID NAMESPACE f243d4ea-d51d-42fc-a3c0-4eb186c55d34 + NAME ${content} TYPE SHA1 + ) + message("GUID " ${content} " " ${GUID}) +endmacro() + +macro(WixFile filename content) + file(WRITE ${filename} "\n" + "\n\n" + ${content} + "\n\n") +endmacro() + ##### Sub directories add_subdirectory(lib) @@ -99,6 +110,11 @@ set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") ############################################### ##### Host specific settings +get_target_property(qmake_executable Qt5::qmake IMPORTED_LOCATION) +get_filename_component(_qt_bin_dir "${qmake_executable}" DIRECTORY) +find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}") +find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}") + if(APPLE) if (DEFINED ENV{APPLE_DEVELOPER}) set(APPLE_CERT_3PARTY_INST "3rd Party Mac Developer Installer: $ENV{APPLE_DEVELOPER}") @@ -112,9 +128,6 @@ if(APPLE) MACOSX_BUNDLE TRUE RESOURCE "${APP_RESOURCES}" ) - get_target_property(qmake_executable Qt5::qmake IMPORTED_LOCATION) - get_filename_component(_qt_bin_dir "${qmake_executable}" DIRECTORY) - find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}") add_custom_command(TARGET ${CMAKE_PROJECT_NAME} COMMAND "${MACDEPLOYQT_EXECUTABLE}" "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.app" @@ -126,8 +139,26 @@ if(APPLE) set(CPACK_GENERATOR "DragNDrop") #;productbuild") elseif(WIN32) + add_custom_command(TARGET ${CMAKE_PROJECT_NAME} + COMMAND "${WINDEPLOYQT_EXECUTABLE}" + --dir "${CMAKE_BINARY_DIR}/OUT" + "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.exe" + COMMENT "Running windeployqt..." + ) set(QT_USE_QTMAIN TRUE) set(CPACK_GENERATOR WIX) + set(CPACK_PACKAGE_VENDOR "Christian Hohnstädt") + set(CPACK_WIX_TEMPLATE "${PROJECT_SOURCE_DIR}/misc/xca.wxs") + set(CPACK_WIX_UPGRADE_GUID "23fdacfe-3ef8-45b4-81e8-b0c90244c217") + set(CPACK_WIX_UI_BANNER "${PROJECT_SOURCE_DIR}/img/banner.bmp") + set(CPACK_WIX_UI_DIALOG "${PROJECT_SOURCE_DIR}/img/dialog.bmp") + set(CPACK_WIX_LICENSE_RTF "${PROJECT_SOURCE_DIR}/misc/copyright.rtf") + set(CPACK_WIX_EXTRA_SOURCES + ${CMAKE_BINARY_DIR}/openssl.wxs + ${CMAKE_BINARY_DIR}/language.wxs + ${CMAKE_BINARY_DIR}/doc/documentation.wxs + ${CMAKE_BINARY_DIR}/misc/misc.wxs + ) else() if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX /usr/local CACHE PATH diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 8e3b763c..2c2ee92e 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -16,9 +16,26 @@ foreach(file ${FILENAMES}) list(APPEND RST_SOURCE "${S}/rst/${file}.rst") list(APPEND RST_DEST "${D}/rst/${file}.rst") list(APPEND HTML_DEST "${D}/html/${file}.html") + list(APPEND HTML_FILE "${file}.html") list(APPEND QTHELP_DEST "${D}/qthelp/${file}.html") endforeach() +foreach(doc ${HTML_FILE} xca.qhc xca.qch) + string(REPLACE "-" "" id ${doc}) + guid(${doc}) + list(APPEND DOC_COMPREFS " \n") + list(APPEND DOC_COMPS " + + \n") +endforeach() + +string(APPEND WIX_DOC_CONTENT +"\n" ${DOC_COMPS} "\n" +"\n" ${DOC_COMPREFS} "" +) + +WixFile(${D}/documentation.wxs ${WIX_DOC_CONTENT}) + if(SPHINX) configure_file(${S}/conf.py.in ${D}/rst/conf.py) add_custom_command( diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index 8ee4874d..a50666e0 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -1,15 +1,33 @@ set(S "${PROJECT_SOURCE_DIR}/lang") -set(D "${PROJECT_BINARY_DIR}/lang") -file(MAKE_DIRECTORY "${D}") +set(D "${PROJECT_BINARY_DIR}") -set(TS_FILES -${S}/xca_fr.ts ${S}/xca_ja.ts ${S}/xca_tr.ts ${S}/xca.ts -${S}/xca_de.ts ${S}/xca_hr.ts ${S}/xca_nl.ts ${S}/xca_ru.ts -${S}/xca_es.ts ${S}/xca_it.ts ${S}/xca_pl.ts ${S}/xca_sk.ts -${S}/xca_zh_CN.ts ${S}/xca_pt_BR.ts ${S}/xca_id.ts +list(APPEND XCA_LANGUAGES id hr nl pt_BR zh_CN) +list(APPEND XCAQM_LANGUAGES de fr ja pl ru tr es it sk) + +foreach(lang ${XCA_LANGUAGES} ${XCAQM_LANGUAGES}) + list(APPEND TS_FILES ${S}/xca_${lang}.ts) +endforeach() + +foreach(lang ${XCA_LANGUAGES} ${XCAQM_LANGUAGES}) + guid(${lang}) + list(APPEND LANG_COMPREFS " \n") + set(LANG_COMPS " + \n") + if(${lang} IN_LIST XCAQM_LANGUAGES) + string(APPEND LANG_COMPS " \n") + endif() + string(APPEND LANG_COMPS " \n") + list(APPEND LANG_ALLCOMPS ${LANG_COMPS}) +endforeach() + +string(APPEND WIX_LANG_CONTENT + "\n" ${LANG_ALLCOMPS} "\n" + "\n" ${LANG_COMPREFS} "" ) +WixFile(${D}/language.wxs ${WIX_LANG_CONTENT}) + qt5_add_translation(QM_FILES ${TS_FILES}) list(APPEND APP_RESOURCES ${QM_FILES}) diff --git a/misc/CMakeLists.txt b/misc/CMakeLists.txt index 0ea057ab..0d9a6574 100644 --- a/misc/CMakeLists.txt +++ b/misc/CMakeLists.txt @@ -11,8 +11,8 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY MACOSX_BUNDLE_INFO_PLIST "${D}/Info.plist") ##### XCA Templates - -foreach(templ CA.xca TLS_server.xca TLS_client.xca) +set(TEMPLATES CA.xca TLS_server.xca TLS_client.xca) +foreach(templ ${TEMPLATES}) list(APPEND XCA_TEMPLATES ${S}/${templ}) endforeach() target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${XCA_TEMPLATES}) @@ -34,6 +34,21 @@ Text_header(dn) Text_header(eku) Text_header(oids) +foreach(misc_name ${TEXT_FILES} ${XCA_TEMPLATES}) + string(REGEX REPLACE ".*/" "" misc_basename ${misc_name}) + guid(${misc_basename}) + list(APPEND MISC_COMPREFS " \n") + list(APPEND MISC_COMPS " + + \n") +endforeach() + +string(APPEND WIX_MISC_CONTENT +"\n" ${MISC_COMPS} " +\n" ${MISC_COMPREFS} "") + +WixFile(${D}/misc.wxs ${WIX_MISC_CONTENT}) + target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${TEXT_FILES}) list(APPEND APP_RESOURCES ${TEXT_FILES}) diff --git a/misc/xca.wxs b/misc/xca.wxs index 52325a5c..90c53a79 100644 --- a/misc/xca.wxs +++ b/misc/xca.wxs @@ -1,22 +1,18 @@ - - + + - - + Manufacturer="$(var.CPACK_PACKAGE_VENDOR)" > - - - + + + @@ -51,8 +47,11 @@ - - + @@ -124,35 +123,17 @@ - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -304,15 +169,17 @@ + + + + @@ -322,13 +189,6 @@ - - - - @@ -371,56 +230,10 @@ - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -428,10 +241,11 @@ Description="Contains the main application, required Qt5 libraries and the SQLite driver."> + - + @@ -443,6 +257,7 @@ Description="Access to ODBC databases like Microsoft SQL Server"> + +