Skip to content

Commit 668e1b5

Browse files
VitozzRi0n
authored andcommitted
Started merging Psi and Psi+ projects.
Applied 0010,9970,9990,9999 patches. Added new option PSI_PLUS to CMake to build Psi+ client instead of Psi. Added psi+ icons. Fixed iconsets.qrc tabs changed to spaces. Added new iconsets-plus.qrc iconsets/system/default/icondef-plus.xml files to separate psi and psi+ icons depending on build flags. TODO: fix version detection iconsets.qrc and iconsets/system/default/icondef.xml files now generating by CMake from iconsets.qrc.in and icondef.xml.in files. removed no longer needed iconsets-plus.qrc and iconsets/system/default/icondef-plus.xml now CMake copies only jisp and README files with prepare-bin target now CMake copies default iconsets to build directory fixed aboutdlg. Updated src/CMakeLists.txt and icondef.xml.in. LOGO_FILE variable is using instead of LOGO_PNG_FILE Fixed logo substitution for Psi+ or Psi. Use PSILOGO_PREFIX instead of LOGO_FILE. Removed not needed actTip acion. Fix for desktop-file generation. Removed not needed icon file. Exclude default icons from installation Applied 0070, 0080 and 0130 patches from Psi+ repo Removed obsolete psimedia deps. Fixed codestyle. Work with qt-translations for WIN32 and APPLE. Fixed windeployqt target. Removed unsupported ARGS parameter An attempt to fix CMake warnings on Apple. Updated CMake policies Upadted icondef.xml.in. Tabs changed to spaces Moved screenshotplugin icons from psiplus folder. Removed unused icons Updated CMake files. Improved search of plugins API. First of all we are searching API in local repository and only then we are searching for installed API. Updated file variables.cmake.in. Added function of plugin version detection. Relinked submodules: iris, qite, libpsi. Added USE_ASPELL option to CMake. Updated CMake files. Improved version detection Fixed get-version.cmake after previous commit Added error handling for git Set CONFIG=psiplus and -DPSI_PLUS for qmake-based project remove original iconsets.qrc to not confuse compiler
1 parent 6d429fd commit 668e1b5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1651
-227
lines changed

.qmake.cache.in

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
top_srcdir="@@source_dir@@"
2-
top_builddir="@@build_dir@@"
3-
top_iris_builddir="@@build_dir@@/iris"
1+
top_srcdir="@source_dir@"
2+
top_builddir="@build_dir@"
3+
top_iris_builddir="@build_dir@/iris"

Readme-dev-cmake-ru.txt

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
./cmake/modules/win32-prepare-deps.cmake - генерирует список файлов для установки
4040
командой make prepare-bin-libs, которая установит библиотеки зависимостей
4141
в выходной каталог сборки. Если доступно использует windeployqt
42+
по команде make windeploy
4243
./cmake/modules/generate_desktopfile.cmake - генерирует .desktop файл
4344
./cmake/modules/fix-codestyle.cmake - исправляет стиль кода исходников по make fix-codestyle
4445

cmake/modules/FindPsiPluginsApi.cmake

+29-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2727
#=============================================================================
2828

29-
if(PsiPluginsApi_INCLUDE_DIR)
29+
#Prevent extra messages on searching
30+
if(PsiPluginsApi_INCLUDE_DIR AND PsiPluginsApi_DIR)
3031
# in cache already
3132
set(PsiPluginsApi_FIND_QUIETLY TRUE)
3233
endif()
@@ -37,10 +38,34 @@ endif()
3738
get_filename_component(ABS_CURRENT_DIR "${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE)
3839
get_filename_component(ABS_PARENT_DIR "${ABS_CURRENT_DIR}/.." ABSOLUTE)
3940

41+
if(EXISTS "${ABS_PLUGINS_ROOT_DIR}/cmake/modules/variables.cmake")
42+
set(PLUGINS_PATH "${ABS_PLUGINS_ROOT_DIR}")
43+
elseif(EXISTS "${ABS_CURRENT_DIR}/src/plugins/cmake/modules/variables.cmake")
44+
set(PLUGINS_PATH "${ABS_CURRENT_DIR}/src/plugins")
45+
elseif(EXISTS "${ABS_PARENT_DIR}/src/plugins/cmake/modules/variables.cmake")
46+
set(PLUGINS_PATH "${ABS_CURRENT_DIR}/src/plugins")
47+
endif()
48+
4049
if(CMAKE_CROSSCOMPILING OR CMAKE_CROSS_COMPILING OR (EXISTS "${ABS_PLUGINS_ROOT_DIR}/include"))
4150
set(SEARCH_FLAG NO_CMAKE_SYSTEM_PATH CMAKE_FIND_ROOT_PATH_BOTH)
4251
endif()
4352

53+
if(PLUGINS_PATH)
54+
if(EXISTS "${PLUGINS_PATH}/cmake/modules/variables.cmake")
55+
set(PsiPluginsApi_DIR "${PLUGINS_PATH}/cmake/modules")
56+
endif()
57+
if(EXISTS "${PLUGINS_PATH}/include/applicationinfoaccessor.h")
58+
set(PsiPluginsApi_INCLUDE_DIR "${PLUGINS_PATH}/include")
59+
endif()
60+
endif()
61+
62+
#Double check in case while api was found in local repo
63+
if(PsiPluginsApi_INCLUDE_DIR AND PsiPluginsApi_DIR)
64+
# in cache already
65+
set(PsiPluginsApi_FIND_QUIETLY TRUE)
66+
endif()
67+
68+
if(NOT PsiPluginsApi_DIR)
4469
find_path(
4570
PsiPluginsApi_DIR
4671
NAMES
@@ -55,7 +80,8 @@ find_path(
5580
share/psi-plus/plugins
5681
${SEARCH_FLAG}
5782
)
58-
83+
endif()
84+
if(NOT PsiPluginsApi_INCLUDE_DIR)
5985
find_path(
6086
PsiPluginsApi_INCLUDE_DIR
6187
NAMES
@@ -70,7 +96,7 @@ find_path(
7096
include/psi-plus/plugins
7197
${SEARCH_FLAG}
7298
)
73-
99+
endif()
74100
include(FindPackageHandleStandardArgs)
75101
find_package_handle_standard_args(
76102
PsiPluginsApi

cmake/modules/generate_desktopfile.cmake

+36-32
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,41 @@ ${PART2_CONTENTS}"
1111
)
1212
unset(DESK_FILE_CONTENTS)
1313
unset(PART2_CONTENTS)
14-
if(VERBOSE_PROGRAM_NAME)
15-
if(IS_PSIPLUS)
16-
set(NAME_PREFIX "Psi+")
17-
set(EXEC_REGEXP "Exec=psi-plus ")
18-
set(NAME_REGEXP "Name=Psi\\+")
19-
set(ICON_REGEXP "Icon=psi-plus")
20-
else()
21-
set(NAME_PREFIX "Psi")
22-
set(EXEC_REGEXP "Exec=psi ")
23-
set(NAME_REGEXP "Name=Psi")
24-
set(ICON_REGEXP "Icon=psi")
25-
endif()
26-
set(TMP_DESK_FILE "${CMAKE_CURRENT_BINARY_DIR}/${VERBOSED_NAME}.desktop.in")
27-
file(WRITE ${TMP_DESK_FILE} "")
28-
file(READ ${OUT_DESK_FILE} DESK_FILE_CONTENTS)
29-
#hack for desktop file generaion
30-
string(REGEX REPLACE "${EXEC_REGEXP}" "Exec=${VERBOSED_NAME} " FIX1 "${DESK_FILE_CONTENTS}")
31-
string(REGEX REPLACE "${ICON_REGEXP}" "Icon=${VERBOSED_NAME}" FIX2 "${FIX1}")
32-
if(IS_WEBENGINE)
33-
string(REGEX REPLACE "${NAME_REGEXP}" "Name=${NAME_PREFIX} Webengine" FIX3 "${FIX2}")
34-
elseif(IS_WEBKIT)
35-
string(REGEX REPLACE "${NAME_REGEXP}" "Name=${NAME_PREFIX} Webkit" FIX3 "${FIX2}")
36-
endif()
37-
if(FIX3)
38-
file(APPEND ${TMP_DESK_FILE} "${FIX3}")
39-
elseif(FIX2)
40-
file(APPEND ${TMP_DESK_FILE} "${FIX2}")
41-
else()
42-
file(APPEND ${TMP_DESK_FILE} "${FIX1}")
43-
endif()
44-
configure_file(${TMP_DESK_FILE} ${OUT_DESK_FILE} COPYONLY)
45-
unset(DESK_FILE_CONTENTS)
14+
15+
set(EXEC_REGEXP "Exec=psi ")
16+
set(NAME_REGEXP "Name=Psi")
17+
set(ICON_REGEXP "Icon=psi")
18+
set(WMCLASS_REGEXP "StartupWMClass=Psi")
19+
if(IS_PSIPLUS)
20+
set(WMCLASS_NAME "Psi-plus")
21+
else()
22+
set(WMCLASS_NAME "Psi")
23+
endif()
24+
25+
set(TMP_DESK_FILE "${CMAKE_CURRENT_BINARY_DIR}/${VERBOSED_NAME}.desktop.in")
26+
file(WRITE ${TMP_DESK_FILE} "")
27+
file(READ ${OUT_DESK_FILE} DESK_FILE_CONTENTS)
28+
#hack for desktop file generaion
29+
string(REGEX REPLACE "${EXEC_REGEXP}" "Exec=${VERBOSED_NAME} " FIX1 "${DESK_FILE_CONTENTS}")
30+
string(REGEX REPLACE "${ICON_REGEXP}" "Icon=${VERBOSED_NAME}" FIX2 "${FIX1}")
31+
if(IS_WEBENGINE AND VERBOSE_PROGRAM_NAME)
32+
string(REGEX REPLACE "${NAME_REGEXP}" "Name=${CLIENT_NAME} Webengine" FIX3 "${FIX2}")
33+
elseif(IS_WEBKIT AND VERBOSE_PROGRAM_NAME)
34+
string(REGEX REPLACE "${NAME_REGEXP}" "Name=${CLIENT_NAME} Webkit" FIX3 "${FIX2}")
35+
else()
36+
string(REGEX REPLACE "${NAME_REGEXP}" "Name=${CLIENT_NAME}" FIX3 "${FIX2}")
4637
endif()
38+
string(REGEX REPLACE "${WMCLASS_REGEXP}" "StartupWMClass=${WMCLASS_NAME}" FIX4 "${FIX3}")
39+
if(FIX4)
40+
file(APPEND ${TMP_DESK_FILE} "${FIX4}")
41+
elseif(FIX3)
42+
file(APPEND ${TMP_DESK_FILE} "${FIX3}")
43+
elseif(FIX2)
44+
file(APPEND ${TMP_DESK_FILE} "${FIX2}")
45+
else()
46+
file(APPEND ${TMP_DESK_FILE} "${FIX1}")
47+
endif()
48+
configure_file(${TMP_DESK_FILE} ${OUT_DESK_FILE} COPYONLY)
49+
unset(DESK_FILE_CONTENTS)
50+
4751
message(STATUS "${OUT_DESK_FILE} file generated")

cmake/modules/get-version.cmake

+115-34
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,111 @@
11
cmake_minimum_required(VERSION 3.1.0)
22

33
set(VER_FILE ${PROJECT_SOURCE_DIR}/version)
4-
set(DEFAULT_VER "1.4") #updated manually
54
unset(APP_VERSION)
65
unset(PSI_REVISION)
76
unset(PSI_PLUS_REVISION)
8-
set(VERSION_OBTAINED OFF)
7+
set(DEFAULT_VER "1.4")
98

10-
function(obtain_psi_version VERSION_LINES)
11-
set(_VLINES ${VERSION_LINES})
12-
string(REGEX MATCH "^[0-9]+\\.[0-9]+" _VER_LINE ${_VLINES})
13-
if(_VER_LINE)
14-
set(_APP_VERSION ${_VER_LINE})
15-
message(STATUS "Psi version found: ${_VER_LINE}")
9+
function(read_version_file VF_RESULT)
10+
if(EXISTS "${VER_FILE}")
11+
message(STATUS "Found Psi version file: ${VER_FILE}")
12+
file(STRINGS "${VER_FILE}" VER_LINES)
13+
if(VER_LINES)
14+
set(${VF_RESULT} ${VER_LINES} PARENT_SCOPE)
15+
else()
16+
message(FATAL_ERROR "Can't read ${VER_FILE} contents")
17+
endif()
18+
unset(VER_LINES)
1619
else()
17-
message(WARNING "Psi version not found! ${DEFAULT_VER} version will be set")
18-
set(_APP_VERSION ${DEFAULT_VER})
20+
message(FATAL_ERROR "${VER_FILE} not found")
1921
endif()
20-
if(_APP_VERSION)
21-
set(APP_VERSION ${_APP_VERSION} PARENT_SCOPE)
22-
set(VERSION_OBTAINED ON PARENT_SCOPE)
22+
endfunction()
23+
24+
function(obtain_git_psi_version GIT_PSI_VERSION)
25+
if(EXISTS "${PROJECT_SOURCE_DIR}/\.git")
26+
find_program(GIT_BIN git DOC "Path to git utility")
27+
if(GIT_BIN)
28+
message(STATUS "Git utility found ${GIT_BIN}")
29+
execute_process(
30+
COMMAND ${GIT_BIN} describe --tags --abbrev=0
31+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
32+
OUTPUT_VARIABLE MAIN_VER
33+
OUTPUT_STRIP_TRAILING_WHITESPACE
34+
ERROR_VARIABLE ERROR_1
35+
)
36+
if(MAIN_VER)
37+
set(APP_VERSION "${MAIN_VER}" PARENT_SCOPE)
38+
set(${GIT_PSI_VERSION} ${MAIN_VER} PARENT_SCOPE)
39+
elseif(ERROR_1)
40+
message("Can't detect last tag ${ERROR_1}")
41+
endif()
42+
endif()
43+
endif()
44+
endfunction()
45+
46+
function(obtain_git_psi_plus_version GIT_PSI_PLUS_VERSION)
47+
if(EXISTS "${PROJECT_SOURCE_DIR}/\.git")
48+
find_program(GIT_BIN git DOC "Path to git utility")
49+
if(GIT_BIN)
50+
obtain_git_psi_version(GIT_VER)
51+
if(GIT_VER)
52+
execute_process(
53+
COMMAND ${GIT_BIN} rev-list --count ${GIT_VER}\.\.HEAD
54+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
55+
OUTPUT_VARIABLE COMMITS
56+
OUTPUT_STRIP_TRAILING_WHITESPACE
57+
ERROR_VARIABLE ERROR_2
58+
)
59+
if(COMMITS)
60+
execute_process(
61+
COMMAND ${GIT_BIN} rev-parse --short HEAD
62+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
63+
OUTPUT_VARIABLE VER_HASH
64+
OUTPUT_STRIP_TRAILING_WHITESPACE
65+
ERROR_VARIABLE ERROR_3
66+
)
67+
elseif(ERROR_2)
68+
message("Can't count commits number: ${ERROR_2}")
69+
endif()
70+
if(ERROR_3)
71+
message("Can't detect HEAD hash: ${ERROR_3}")
72+
endif()
73+
if(COMMITS AND VER_HASH)
74+
set(PSI_REVISION ${VER_HASH} PARENT_SCOPE)
75+
set(APP_VERSION "${GIT_VER}.${COMMITS}" PARENT_SCOPE)
76+
set(${GIT_PSI_PLUS_VERSION} "${GIT_VER}.${COMMITS} \(${PSI_COMPILATION_DATE}, ${VER_HASH}${PSI_VER_SUFFIX}\)" PARENT_SCOPE)
77+
endif()
78+
endif()
79+
endif()
2380
endif()
2481
endfunction()
2582

26-
function(obtain_psi_plus_version VERSION_LINES)
27-
set(_VLINES ${VERSION_LINES})
28-
string(REGEX MATCHALL "^([0-9]+\\.[0-9]+\\.[0-9]+)+.+Psi:([a-fA-F0-9]+)+.+Psi\\+:([a-fA-F0-9]+)+" VER_LINE_A ${VER_LINES})
29-
if(${CMAKE_MATCH_COUNT} EQUAL 3)
83+
function(obtain_psi_file_version VERSION_LINES OUTPUT_VERSION)
84+
string(REGEX MATCHALL "^([0-9]+(\\.[0-9]+)+)+(.+Psi:([a-fA-F0-9]+)?.+Psi\\+:([a-fA-F0-9]+)?)?" VER_LINE_A ${VERSION_LINES})
85+
if(${CMAKE_MATCH_COUNT} EQUAL 5)
86+
set(P_P ON)
3087
if(CMAKE_MATCH_1)
3188
set(_APP_VERSION ${CMAKE_MATCH_1})
3289
endif()
33-
if(CMAKE_MATCH_2)
34-
set(_PSI_REVISION ${CMAKE_MATCH_2})
90+
if(CMAKE_MATCH_4)
91+
set(_PSI_REVISION ${CMAKE_MATCH_4})
92+
endif()
93+
if(CMAKE_MATCH_5)
94+
set(_PSI_PLUS_REVISION ${CMAKE_MATCH_5})
3595
endif()
36-
if(CMAKE_MATCH_3)
37-
set(_PSI_PLUS_REVISION ${CMAKE_MATCH_3})
96+
elseif(${CMAKE_MATCH_COUNT} EQUAL 2)
97+
set(P_P OFF)
98+
if(CMAKE_MATCH_1)
99+
set(_APP_VERSION ${CMAKE_MATCH_1})
38100
endif()
39101
endif()
40102
if(_APP_VERSION)
41103
set(APP_VERSION ${_APP_VERSION} PARENT_SCOPE)
42104
message(STATUS "Psi version found: ${_APP_VERSION}")
43105
else()
44106
message(WARNING "Psi+ version not found! ${DEFAULT_VER} version will be set")
45-
set(APP_VERSION ${DEFAULT_VER} PARENT_SCOPE)
107+
set(_APP_VERSION ${DEFAULT_VER})
108+
set(APP_VERSION ${_APP_VERSION} PARENT_SCOPE)
46109
endif()
47110
if(_PSI_REVISION)
48111
set(PSI_REVISION ${_PSI_REVISION} PARENT_SCOPE)
@@ -52,26 +115,44 @@ function(obtain_psi_plus_version VERSION_LINES)
52115
set(PSI_PLUS_REVISION ${_PSI_PLUS_REVISION} PARENT_SCOPE)
53116
message(STATUS "Psi+ revision found: ${_PSI_PLUS_REVISION}")
54117
endif()
55-
if(_APP_VERSION AND ( _PSI_REVISION AND _PSI_PLUS_REVISION ))
56-
set(VERSION_OBTAINED ON PARENT_SCOPE)
118+
if(_APP_VERSION AND (_PSI_REVISION AND _PSI_PLUS_REVISION ))
119+
set(${OUTPUT_VERSION} "${_APP_VERSION} \(${PSI_COMPILATION_DATE}, Psi:${_PSI_REVISION}, Psi+:${_PSI_PLUS_REVISION}${PSI_VER_SUFFIX}\)" PARENT_SCOPE)
120+
else()
121+
if(PRODUCTION)
122+
set(${OUTPUT_VERSION} "${_APP_VERSION}" PARENT_SCOPE)
123+
else()
124+
set(${OUTPUT_VERSION} "${_APP_VERSION} \(${PSI_COMPILATION_DATE}${PSI_VER_SUFFIX}\)" PARENT_SCOPE)
125+
endif()
57126
endif()
58127
endfunction()
59128

60-
if(NOT PSI_VERSION AND (EXISTS "${VER_FILE}"))
61-
message(STATUS "Found Psi version file: ${VER_FILE}")
62-
file(STRINGS "${VER_FILE}" VER_LINES)
129+
if(NOT PSI_VERSION)
63130
if(IS_PSIPLUS)
64-
obtain_psi_plus_version("${VER_LINES}")
65-
if(VERSION_OBTAINED)
66-
set(PSI_VERSION "${APP_VERSION} \(${PSI_COMPILATION_DATE}, Psi:${PSI_REVISION}, Psi+:${PSI_PLUS_REVISION}${PSI_VER_SUFFIX}\)")
131+
obtain_git_psi_plus_version(GITVER)
132+
if(GITVER)
133+
message(STATUS "Git Version ${GITVER}")
134+
set(PSI_VERSION "${GITVER}")
135+
else()
136+
read_version_file(VER_LINES)
137+
obtain_psi_file_version("${VER_LINES}" FILEVER)
138+
if(FILEVER)
139+
set(PSI_VERSION "${FILEVER}")
140+
endif()
67141
endif()
68142
else()
69-
obtain_psi_version("${VER_LINES}")
70-
if(VERSION_OBTAINED)
143+
obtain_git_psi_version(GITVER)
144+
if(GITVER)
145+
message(STATUS "Git Version ${GITVER}")
71146
if(PRODUCTION)
72-
set(PSI_VERSION "${APP_VERSION}")
147+
set(PSI_VERSION "${GITVER}")
73148
else()
74-
set(PSI_VERSION "${APP_VERSION} \(${PSI_COMPILATION_DATE}${PSI_VER_SUFFIX}\)")
149+
set(PSI_VERSION "${GITVER} \(${PSI_COMPILATION_DATE}${PSI_VER_SUFFIX}\)")
150+
endif()
151+
else()
152+
read_version_file(VER_LINES)
153+
obtain_psi_file_version("${VER_LINES}" FILEVER)
154+
if(FILEVER)
155+
set(PSI_VERSION "${FILEVER}")
75156
endif()
76157
endif()
77158
endif()

0 commit comments

Comments
 (0)