-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
151 lines (110 loc) · 5.37 KB
/
CMakeLists.txt
File metadata and controls
151 lines (110 loc) · 5.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# SPDX-FileCopyrightText: 2026 Igor Mironchik <igor.mironchik@gmail.com>
# SPDX-License-Identifier: GPL-3.0-or-later
cmake_minimum_required(VERSION 3.19)
project(markdown-tools)
option(BUILD_MDPDF_TESTS "Build tests? Default OFF." OFF)
option(BUILD_WITH_SYSTEM_LIBS "Build with system's libraries? Default OFF." OFF)
set(ENV{PKG_CONFIG_PATH} "${CMAKE_CURRENT_BINARY_DIR}")
list(PREPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_BINARY_DIR})
list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR})
list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(KF_MIN_VERSION "6")
set(KF_MAJOR_VERSION "6")
find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}")
include(ECMEnableSanitizers)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
execute_process(COMMAND git rev-parse --short HEAD
OUTPUT_VARIABLE MARKDOWN_TOOLS_VERSION_MINOR
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(MD_TOOLS_VERSION_NUMBER "0.16.29")
set(HomeDir "@HomeDir@")
string(TIMESTAMP MD_CURRENT_DATE "%Y-%m-%d")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.xml.in ${CMAKE_CURRENT_SOURCE_DIR}/installer/config/config.xml @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/package.xml.in ${CMAKE_CURRENT_SOURCE_DIR}/installer/packages/mironchik.igor.markdown/meta/package.xml @ONLY)
set(MD_TOOLS_VERSION "${MD_TOOLS_VERSION_NUMBER} build ${MARKDOWN_TOOLS_VERSION_MINOR}")
set(MD_TOOLS_COMMIT "${MARKDOWN_TOOLS_VERSION_MINOR}")
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core)
if(UNIX AND NOT APPLE)
list(PREPEND CMAKE_INSTALL_RPATH "\$ORIGIN/../lib")
else()
list(PREPEND CMAKE_INSTALL_RPATH "@executable_path/../lib")
list(PREPEND CMAKE_INSTALL_RPATH "@loader_path/../lib")
endif()
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_MACOSX_RPATH TRUE)
link_directories(${CMAKE_BINARY_DIR}/lib)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release"
CACHE STRING "Choose the type of build."
FORCE)
endif(NOT CMAKE_BUILD_TYPE)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT DEFINED _DISABLE_INSTALLATION)
set(_DISABLE_INSTALLATION FALSE)
macro(install)
if(NOT _DISABLE_INSTALLATION)
_install(${ARGN})
endif()
endmacro()
endif()
install(FILES "markdown-tools.desktop" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/applications/")
set(_DISABLE_INSTALLATION TRUE)
if(NOT BUILD_WITH_SYSTEM_LIBS)
set(PODOFO_BUILD_LIB_ONLY ON CACHE INTERNAL "" FORCE)
add_subdirectory(3rdparty/podofo)
else()
find_package(podofo REQUIRED)
add_library(podofo_shared ALIAS podofo::podofo_shared)
endif()
add_subdirectory(3rdparty/MicroTeX)
set(BUILD_MD4QT_TESTS OFF CACHE INTERNAL "" FORCE)
add_subdirectory(3rdparty/KDE/md4qt)
include_directories(${md4qt_INCLUDE_DIRECTORIES}/../..)
set(_DISABLE_INSTALLATION FALSE)
if (NOT BUILD_WITH_SYSTEM_LIBS)
install(TARGETS podofo_shared)
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg.version RESVG_VERSION)
file(ARCHIVE_EXTRACT
INPUT ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}.tar.xz
DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty)
add_library(resvg UNKNOWN IMPORTED)
add_custom_target(build_resvg ALL
COMMAND cargo build --release
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}/crates/c-api"
BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX})
if(UNIX AND NOT APPLE)
add_custom_command(TARGET build_resvg POST_BUILD
COMMAND patchelf --set-soname libresvg.so libresvg.so
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}/target/release")
endif()
if(WIN32)
set_target_properties(resvg PROPERTIES
IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}
TYPE BIN)
else()
set_target_properties(resvg PROPERTIES
IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}
TYPE LIB)
endif()
set_target_properties(resvg PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg-${RESVG_VERSION}/crates/c-api)
add_dependencies(resvg build_resvg)
else()
find_package(resvg REQUIRED)
endif()
string(REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
string(REPLACE "-DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
add_subdirectory(src)
if(BUILD_MDPDF_TESTS)
enable_testing()
add_subdirectory(tests)
endif()