PageRenderTime 49ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/CMakeLists.txt

https://gitlab.com/m.schmidt/zuluCrypt
CMake | 290 lines | 212 code | 64 blank | 14 comment | 35 complexity | 8b7290c940b8d59a3c7fdd6ad76e35f6 MD5 | raw file
Possible License(s): BSD-3-Clause-No-Nuclear-License-2014, BSD-2-Clause
  1. cmake_minimum_required(VERSION 2.6)
  2. cmake_policy(SET CMP0017 OLD)
  3. add_definitions( -D_DEFAULT_SOURCE -fstack-protector-all -D_FORTIFY_SOURCE=2 --param ssp-buffer-size=4 )
  4. include_directories( ${PROJECT_BINARY_DIR} )
  5. # uninstall target
  6. configure_file(
  7. "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
  8. "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  9. IMMEDIATE @ONLY )
  10. add_custom_target( uninstall
  11. COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake )
  12. add_definitions( -I${PROJECT_BINARY_DIR}/zuluCrypt-gui/lxqt_wallet/frontend )
  13. INCLUDE(CMakeDependentOption)
  14. INCLUDE(FindPkgConfig)
  15. # options
  16. option(NOGUI "Don't build the GUI" OFF)
  17. cmake_dependent_option(WITH_PWQUALITY "Build with pwquality support" ON
  18. "NOT NOGUI" OFF)
  19. option(NOGNOME "Build without gnome support" OFF)
  20. cmake_dependent_option(NOKDE "Build without kde support" OFF
  21. "NOT NOGUI" ON)
  22. option(UDEVSUPPORT "Build without udev support" ON)
  23. if( NOT NOGNOME )
  24. pkg_check_modules( LIBSECRET libsecret-1 )
  25. else( NOT NOGNOME )
  26. set( NOSECRETSUPPORT "true" )
  27. endif( NOT NOGNOME )
  28. if( NOKDE )
  29. set( NOKDESUPPORT "true" )
  30. endif( NOKDE )
  31. pkg_check_modules( CRYPTSETUP libcryptsetup )
  32. pkg_check_modules( BLKID blkid )
  33. if ( WITH_PWQUALITY )
  34. pkg_check_modules( PWQUALITY pwquality )
  35. endif ( WITH_PWQUALITY )
  36. set( PGR_VERSION "4.7.7" )
  37. set( LIB_VERSION "1.2.0" )
  38. set( LIB_PLUGIN_VERSION "1.0.0" )
  39. file( WRITE ${PROJECT_BINARY_DIR}/version_1.h "
  40. #ifndef THIS_VERSION
  41. #define THIS_VERSION \"${PGR_VERSION}\"
  42. #endif
  43. \n" )
  44. file( WRITE ${PROJECT_BINARY_DIR}/version.h "
  45. #ifndef ZULUCRYPT_VERSION
  46. #define ZULUCRYPT_VERSION
  47. #define VERSION_STRING \"Version : ${PGR_VERSION}\\nCopyright: 2011-2015 Francis Banyikwa,mhogomchungu@gmail.com\\nLicense : GPLv2+\"
  48. #endif
  49. \n" )
  50. if( NOT BLKID_FOUND )
  51. message ( FATAL_ERROR "ERROR: could not find blkid package" )
  52. else( NOT BLKID_FOUND )
  53. #add_definitions( "${BLKID_CFLAGS}" )
  54. find_library( blkid_lib libblkid.so )
  55. if( blkid_lib )
  56. set( blkid "${blkid_lib}" )
  57. else( blkid_lib )
  58. message ( FATAL_ERROR "ERROR: could not find libblkid.so" )
  59. endif( blkid_lib )
  60. endif( NOT BLKID_FOUND )
  61. if( NOT CRYPTSETUP_FOUND )
  62. message ( FATAL_ERROR "ERROR: could not find cryptsetup package" )
  63. else( NOT CRYPTSETUP_FOUND )
  64. #add_definitions( "${CRYPTSETUP_CFLAGS}" )
  65. find_library( cryptsetup_lib libcryptsetup.so )
  66. if( NOT cryptsetup_lib )
  67. message ( FATAL_ERROR "ERROR: could not find libcryptsetup.so" )
  68. endif( NOT cryptsetup_lib )
  69. endif( NOT CRYPTSETUP_FOUND )
  70. find_file( GCRYPT_INCLUDE_FILE gcrypt.h )
  71. find_library( GCRYPT_LIBRARY gcrypt )
  72. if( NOT GCRYPT_INCLUDE_FILE )
  73. MESSAGE( FATAL_ERROR "could not find gcrypt header file" )
  74. else()
  75. MESSAGE( STATUS "found gcrypt header file: ${GCRYPT_INCLUDE_FILE}" )
  76. endif()
  77. if( NOT GCRYPT_LIBRARY )
  78. MESSAGE( FATAL_ERROR "could not find gcrypt library(libgcrypt.so)" )
  79. else()
  80. MESSAGE( STATUS "found gcrypt library: ${GCRYPT_LIBRARY}" )
  81. endif()
  82. if( LIB_SUFFIX )
  83. set ( LIB_PATH "${CMAKE_INSTALL_PREFIX}/${LIB_SUFFIX}" )
  84. else( LIB_SUFFIX )
  85. if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  86. set ( LIB_PATH "${CMAKE_INSTALL_PREFIX}/lib64" )
  87. else( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  88. set ( LIB_PATH "${CMAKE_INSTALL_PREFIX}/lib" )
  89. endif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  90. endif( LIB_SUFFIX )
  91. set( PLUGINPATH "${LIB_PATH}/zuluCrypt" )
  92. file( WRITE ${PROJECT_BINARY_DIR}/plugin_path.h "\n#define ZULUCRYPTpluginPath \"${PLUGINPATH}/\"\n" )
  93. file( APPEND ${PROJECT_BINARY_DIR}/plugin_path.h "\n#define ZULUCRYPTTestPlugin \"${PLUGINPATH}/zuluCrypt-testKey\"\n" )
  94. set( BUILD_TCPLAY "true" )
  95. set( TCPLAY_NEW_API "true" )
  96. set( STATIC_TCPLAY "true" )
  97. file( WRITE ${PROJECT_BINARY_DIR}/truecrypt_support_1.h "\n#define TRUECRYPT_CREATE 1\n#include \"tcplay_api.h\"\n" )
  98. file( APPEND ${PROJECT_BINARY_DIR}/truecrypt_support_1.h "\n#define TCPLAY_NEW_API 1\n" )
  99. file( APPEND ${PROJECT_BINARY_DIR}/truecrypt_support_1.h "\n#define VERACRYPT_CREATE 1\n" )
  100. file( WRITE ${PROJECT_BINARY_DIR}/tcplay_support.h "\n#define TCPLAY_OPEN 1\n#include \"tcplay_api.h\"\n" )
  101. file( WRITE ${PROJECT_BINARY_DIR}/veracrypt_support.h "\n#define VERACRYPT_SUPPORT 1\n" )
  102. file( WRITE ${PROJECT_BINARY_DIR}/truecrypt_support.h "\n#define TRUECRYPT_CRYPTSETUP 1\n#define TRUECRYPT_TCPLAY 1" )
  103. ADD_SUBDIRECTORY( external_libraries/tc-play )
  104. add_definitions( -I${PROJECT_SOURCE_DIR}/external_libraries/tc-play )
  105. message ( STATUS "---------------------------------------------------------------------------" )
  106. message ( STATUS "internal version of tcplay will be used to create and open TrueCrypt and VeraCrypt volumes." )
  107. message ( STATUS "internal version of tcplay will be used to create and restore TrueCrypt volume headers." )
  108. message ( STATUS "creation and restoration of VeraCrypt volumes is currently disabled." )
  109. message ( STATUS "---------------------------------------------------------------------------" )
  110. if( HOMEMOUNTPREFIX )
  111. file( WRITE ${PROJECT_BINARY_DIR}/mount_prefix_path.h "\n#define USE_HOME_PATH_AS_MOUNT_PREFIX 1\n" )
  112. else()
  113. file( WRITE ${PROJECT_BINARY_DIR}/mount_prefix_path.h "\n#define USE_HOME_PATH_AS_MOUNT_PREFIX 0\n" )
  114. endif()
  115. add_library( crypt_buffer STATIC plugins/network_key/crypt_buffer.c zuluCrypt-cli/utility/socket/socket.c )
  116. set_target_properties( crypt_buffer PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64 -Wextra -Wall -s -fPIC -pthread -pedantic " )
  117. TARGET_LINK_LIBRARIES( crypt_buffer -lgcrypt )
  118. ADD_SUBDIRECTORY( zuluCrypt-cli )
  119. ADD_SUBDIRECTORY( zuluSafe )
  120. if( NOT NOGUI )
  121. ADD_SUBDIRECTORY( zuluCrypt-gui/lxqt_wallet )
  122. if( WITH_PWQUALITY AND PWQUALITY_FOUND )
  123. find_file ( header_pwquality pwquality.h PATHS ${PWQUALITY_INCLUDE_DIRS} )
  124. find_library ( library_pwquality libpwquality.so )
  125. set( BUILDPWQUALITY "true" )
  126. if( library_pwquality )
  127. if( header_pwquality )
  128. file( WRITE ${PROJECT_BINARY_DIR}/can_build_pwquality.h "#define BUILD_PWQUALITY 1\n" )
  129. file( APPEND ${PROJECT_BINARY_DIR}/can_build_pwquality.h "extern \"C\"\n{\n#include <${header_pwquality}>\n}" )
  130. else( header_pwquality )
  131. file( WRITE ${PROJECT_BINARY_DIR}/can_build_pwquality.h "#define BUILD_PWQUALITY 0\n" )
  132. endif( header_pwquality )
  133. else( library_pwquality )
  134. file( WRITE ${PROJECT_BINARY_DIR}/can_build_pwquality.h "#define BUILD_PWQUALITY 0\n" )
  135. endif( library_pwquality )
  136. else( WITH_PWQUALITY AND PWQUALITY_FOUND )
  137. file( WRITE ${PROJECT_BINARY_DIR}/can_build_pwquality.h "#define BUILD_PWQUALITY 0\n" )
  138. endif( WITH_PWQUALITY AND PWQUALITY_FOUND )
  139. if( QT5 )
  140. find_package( Qt5Widgets REQUIRED )
  141. find_package( Qt5Core REQUIRED )
  142. find_package( Qt5Network REQUIRED )
  143. set( CMAKE_INCLUDE_CURRENT_DIR ON )
  144. include_directories( ${Qt5Widgets_INCLUDE_DIRS} )
  145. add_definitions( ${Qt5Widgets_DEFINITIONS} )
  146. else()
  147. find_package( Qt4 REQUIRED QtCore QtGui QtNetwork )
  148. add_definitions( -I${Qt4_INCLUDE_DIR} )
  149. add_definitions( -I${QT_HEADERS_DIR} )
  150. INCLUDE( ${QT_USE_FILE} )
  151. INCLUDE( ${QT_USE_FILE} )
  152. endif()
  153. ADD_SUBDIRECTORY( zuluCrypt-gui/md5 )
  154. ADD_SUBDIRECTORY( zuluCrypt-gui/sharedObjects )
  155. ADD_SUBDIRECTORY( zuluCrypt-gui )
  156. ADD_SUBDIRECTORY( plugins )
  157. ADD_SUBDIRECTORY( zuluMount-gui )
  158. else( NOT NOGUI )
  159. if( QT5 )
  160. #adding this one just to silence a warning
  161. endif()
  162. endif( NOT NOGUI )
  163. file( WRITE ${PROJECT_BINARY_DIR}/locale_path.h "\n#define TRANSLATION_PATH \"${CMAKE_INSTALL_PREFIX}/share/zuluCrypt/translations/\"\n")
  164. message ( STATUS "---------------------------------------------------------------------------" )
  165. message ( STATUS "optional functionality that will be build" )
  166. if( NOT NOGUI )
  167. message( STATUS "GUI front ends,zuluCrypt-gui and zuluMount-gui" )
  168. endif( NOT NOGUI )
  169. if( BUILDPWQUALITY )
  170. message( STATUS "pwquality library support to give passphrase strength measure" )
  171. endif( BUILDPWQUALITY )
  172. if( UDEVSUPPORT )
  173. message( STATUS "udev support will be enabled" )
  174. endif( UDEVSUPPORT )
  175. if( BUILD_TCPLAY )
  176. message( STATUS "tcplay adds the ability to create truecrypt compatible encrypted containers" )
  177. endif( BUILD_TCPLAY )
  178. if( CRYPTSETUP_VERSION VERSION_GREATER "1.6.3" )
  179. file( WRITE ${PROJECT_BINARY_DIR}/support_whirlpool.h "\n#define SUPPORT_WHIRLPOOL 1\n" )
  180. else()
  181. file( WRITE ${PROJECT_BINARY_DIR}/support_whirlpool.h "\n#define SUPPORT_WHIRLPOOL 0\n" )
  182. endif()
  183. if( CRYPTSETUP_VERSION VERSION_GREATER "1.6.0" )
  184. file( WRITE ${PROJECT_BINARY_DIR}/check_tcrypt.h "\n#define CHECK_TCRYPT 1\n" )
  185. else()
  186. file( WRITE ${PROJECT_BINARY_DIR}/check_tcrypt.h "\n#define CHECK_TCRYPT 0\n" )
  187. endif()
  188. message ( STATUS "---------------------------------------------------------------------------" )
  189. message ( STATUS "---------------------------------------------------------------------------" )
  190. message ( STATUS "optional functionality that will NOT be build" )
  191. if( NOGUI )
  192. message( STATUS "GUI front ends,zuluCrypt-gui and zuluMount-gui\n" )
  193. endif( NOGUI )
  194. if( NOT BUILDPWQUALITY )
  195. message( STATUS "pwquality library used to measure passphrase strength" )
  196. message( STATUS "sources can be found at: https://fedorahosted.org/libpwquality/\n" )
  197. endif( NOT BUILDPWQUALITY )
  198. if( NOT UDEVSUPPORT )
  199. message( STATUS "udev support\n" )
  200. endif( NOT UDEVSUPPORT )
  201. message ( STATUS "---------------------------------------------------------------------------" )
  202. message ( STATUS "\n" )
  203. if( CRYPTSETUP_VERSION VERSION_GREATER "1.4.0" )
  204. file( WRITE ${PROJECT_BINARY_DIR}/luks_external_header.h "\n#define LUKS_EXTERNAL_HEADER 1\n" )
  205. else( CRYPTSETUP_VERSION VERSION_GREATER "1.4.0" )
  206. file( WRITE ${PROJECT_BINARY_DIR}/luks_external_header.h "\n#define LUKS_EXTERNAL_HEADER 0\n" )
  207. endif( CRYPTSETUP_VERSION VERSION_GREATER "1.4.0" )
  208. if( UDEVSUPPORT )
  209. file( WRITE ${PROJECT_BINARY_DIR}/udev_support.h "\n#define UDEV_SUPPORT 1\n")
  210. message ( STATUS "udev will be consulted when deciding if a volume is system or not." )
  211. message ( STATUS "please read \"udev_support\" file for more information about udev support and associated problems.\n\n" )
  212. else( UDEVSUPPORT )
  213. file( WRITE ${PROJECT_BINARY_DIR}/udev_support.h "\n#define UDEV_SUPPORT 0\n")
  214. message ( STATUS "udev will NOT be consulted when deciding if a volume is system or not." )
  215. message ( STATUS "please read \"udev_support\" file for more information about udev support and how to enable it." )
  216. message ( STATUS "It is probably a good idea to enable it if you are creating a package for distribution.\n\n" )
  217. endif( UDEVSUPPORT )
  218. install ( FILES zuluCrypt-cli.1 DESTINATION share/man/man1 )
  219. install ( FILES zuluCrypt-gui.1 DESTINATION share/man/man1 )
  220. install ( FILES zuluMount-cli.1 DESTINATION share/man/man1 )
  221. install ( FILES zuluMount-gui.1 DESTINATION share/man/man1 )
  222. install ( FILES zuluSafe-cli.1 DESTINATION share/man/man1 )
  223. install ( FILES docs/zuluCrypt.pdf DESTINATION share/zuluCrypt )
  224. file( WRITE ${PROJECT_BINARY_DIR}/pdf_path.h "\n#define PDF_PATH \" ${CMAKE_INSTALL_PREFIX}/share/zuluCrypt/zuluCrypt.pdf\"\n" )
  225. #install ( FILES translations/zuluMount/de_DE.qm DESTINATION share/zuluCrypt/translations/zuluMount-gui )
  226. #install ( FILES translations/zuluCrypt/de_DE.qm DESTINATION share/zuluCrypt/translations/zuluCrypt-gui )