]> git.sven.stormbind.net Git - sven/vym.git/blob - CMakeLists.txt
Replace Pierre as the maintainer
[sven/vym.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.12)
2
3 project(ViewYourMind-release)
4
5 find_package(Qt5 COMPONENTS Widgets LinguistTools REQUIRED)
6
7 set(QtComponents
8     LinguistTools
9     Network
10     PrintSupport
11     Script
12     Svg
13     Widgets
14     Xml
15 )
16
17 set(QtLibraries
18     Qt5::Network
19     Qt5::PrintSupport
20     Qt5::Script
21     Qt5::Svg
22     Qt5::Widgets
23     Qt5::Xml
24 )
25
26 # Switch on Debug mode with one of below:
27 # cmake -DCMAKE_BUILD_TYPE=Debug .
28 # set(CMAKE_BUILD_TYPE Debug)
29
30 set(CMAKE_AUTOMOC ON)
31 set(CMAKE_AUTOUIC ON)
32 set(CMAKE_AUTORCC ON)
33
34 # On Linux DBUS is used for IPC with vym
35 # On openSUSE install it using:  zypper install dbus-1-devel
36
37 if (UNIX)
38     find_package(DBus1)
39
40     if(DBus1_FOUND)
41         LIST(APPEND QtComponents DBus)
42         LIST(APPEND QtLibraries Qt5::DBus)
43     endif()
44 endif()
45
46 if(WIN32)
47     set(OPENSSL_ROOT_DIR "C:/OpenSSL-Win64")
48     find_package(OpenSSL)
49
50     if( OPENSSL_FOUND )
51         include_directories(${OPENSSL_INCLUDE_DIRS})
52         link_directories(${OPENSSL_LIBRARIES})
53         message(STATUS "Using OpenSSL version: ${OPENSSL_VERSION}")
54     else()
55         message(STATUS "No openSSL found?!")
56         # Error; with REQUIRED, pkg_search_module() will throw an error by it's own
57     endif()
58
59     #target_link_libraries(${YOUR_TARGET_HERE} ${OPENSSL_LIBRARIES})
60     #target_link_libraries(project_name /path/of/libssl.so /path/of/libcrypto.so)
61
62     set(CMAKE_INSTALL_DATAROOTDIR ".")
63  endif()
64
65 include(GNUInstallDirs)
66
67 find_package(Qt5 COMPONENTS ${QtComponents} REQUIRED)
68 set(CMAKE_AUTOMOC ON)
69 set(CMAKE_AUTORCC ON)
70 set(CMAKE_AUTOUIC ON)
71 list(APPEND CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_SOURCE_DIR}/forms")
72
73 get_target_property(QtLibraryType Qt5::Widgets TYPE)
74
75 if(QtLibraryType STREQUAL STATIC_LIBRARY)
76     message(STATUS "Static Qt linkage")
77     list(APPEND QtLibraries Qt5::QSvgPlugin)
78 endif()
79
80 include_directories(
81     ${CMAKE_SOURCE_DIR}
82 )
83
84 # Source files
85 file(GLOB VymSources RELATIVE ${CMAKE_SOURCE_DIR} "src/*.cpp")
86
87 if(WIN32)
88     list(APPEND VymSources
89         src/mkdtemp.cpp
90         vym.rc
91     )
92     ADD_COMPILE_DEFINITIONS(_USE_MATH_DEFINES)
93 endif()
94
95
96 # Add DBUS interfaces, if DBUS is available on platform
97 if(DBus1_FOUND)
98     list(APPEND VymSources src/dbus/adaptormodel.cpp src/dbus/adaptorvym.cpp)
99     include_directories(${CMAKE_SOURCE_DIR}/src/dbus ${CMAKE_SOURCE_DIR}/src)
100     ADD_COMPILE_DEFINITIONS(VYM_DBUS)
101 endif()
102
103 # Translations  (release)
104
105     # To update the translation files based on source code changes 
106     # first call manually 
107     # lupdate-qt5 src/ -ts lang/*.ts
108     #
109     # Qt6 will have a dedicated macro:
110     # https://doc.qt.io/qt-6/qtlinguist-cmake-qt-add-lrelease.html
111
112 #file(GLOB ts_files ABSOLUTE ${CMAKE_BINARY_DIR} "lang/*.ts")
113 file(GLOB ts_files RELATIVE ${CMAKE_SOURCE_DIR} "lang/*.ts")
114 message(STATUS "Creating ${CMAKE_BINARY_DIR}/translations")
115 file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/translations")
116 set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION ${CMAKE_BINARY_DIR}/translations)
117 #set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION ${CMAKE_SOURCE_DIR}/translations)
118
119 #QT5_create_translation(qm_files ${CMAKE_SOURCE_DIR} ${ts_files})
120 #QT5_create_translation(qm_files ${CMAKE_BINARY_DIR} ${ts_files})
121 #QT5_create_translation(qm_files ${CMAKE_SOURCE_DIR}/src)
122
123 QT5_add_translation(qm_files ${ts_files})
124 add_compile_definitions(CMAKE_SOURCE_DIR)
125
126 message(STATUS "CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")
127 message(STATUS "ts_files: ${ts_files}")
128 message(STATUS "qm_files: ${qm_files}")
129
130 ADD_COMPILE_DEFINITIONS(VYMBASEDIR="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}")
131
132 add_executable(vym ${VymSources} vym.qrc ${qm_files})
133 target_link_libraries(vym ${QtLibraries})
134
135 if(WIN32)
136     set_target_properties(vym PROPERTIES WIN32_EXECUTABLE TRUE)
137     install(TARGETS vym DESTINATION "${CMAKE_INSTALL_PREFIX}")
138 else()
139     install(TARGETS vym DESTINATION bin)
140 endif()
141
142 if(APPLE)
143     message(STATUS "Detected APPLE")
144     set_target_properties(vym PROPERTIES MACOSX_BUNDLE TRUE )
145
146     # Add property to Info.plist
147     set(MACOSX_BUNDLE_ICON_FILE vym.icns)
148
149     # tell CMake where to find and install the file itself
150     set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/icons/vym.icns)
151     set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES
152            MACOSX_PACKAGE_LOCATION "Resources")
153
154 #FIXME-0    add_executable(vym MACOSX_BUNDLE main.cpp ${APP_ICON_MACOSX})
155 target_sources(vym PUBLIC ${APP_ICON_MACOSX})
156 endif()
157
158 add_custom_target(make-translations-directory ALL
159     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/translations)
160 add_dependencies(vym make-translations-directory)
161
162 install(DIRECTORY demos DESTINATION ${CMAKE_INSTALL_DATAROOTDIR})
163 install(DIRECTORY doc DESTINATION ${CMAKE_INSTALL_DOCDIR} FILES_MATCHING PATTERN "*.pdf")
164 install(FILES doc/vym.1.gz DESTINATION ${CMAKE_INSTALL_MANDIR})
165 install(FILES README.md LICENSE.txt DESTINATION ${CMAKE_INSTALL_DOCDIR})
166 install(DIRECTORY exports flags icons macros ${CMAKE_BINARY_DIR}/translations scripts styles DESTINATION ${CMAKE_INSTALL_DATAROOTDIR})
167
168 if(UNIX)
169     install(FILES icons/vym.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps)
170     file(CREATE_LINK ../apps/vym.png application-x-vym.png SYMBOLIC)
171     install(FILES ${CMAKE_BINARY_DIR}/application-x-vym.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes)
172     install(FILES config/vym.xml DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mime/packages)
173     install(FILES config/vym.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
174 endif()