forked from KDE/okteta
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
156 lines (133 loc) · 3.82 KB
/
CMakeLists.txt
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
152
153
154
155
156
set(OKTETACORE_VERSION ${OKTETALIBS_LIB_VERSION})
set(OKTETACORE_SO_VERSION ${OKTETALIBS_LIB_SOVERSION})
okteta_add_library(Core NAMESPACE Okteta
PUBLIC
Qt5::Core
PRIVATE
KF5::I18n
VERSION ${OKTETACORE_VERSION}
SOVERSION ${OKTETACORE_SO_VERSION}
ABIVERSION ${OKTETALIBS_ABI_VERSION}
NO_TARGET_NAMESPACE
NO_VERSIONED_EXPORTED_TARGET_NAME
NO_VERSIONED_INCLUDEDIR
NO_VERSIONED_PACKAGE_NAME
)
target_compile_definitions(OktetaCore PRIVATE -DTRANSLATION_DOMAIN=\"liboktetacore\")
ecm_qt_declare_logging_category(OktetaCore
HEADER "logging.hpp"
IDENTIFIER "LOG_OKTETA_CORE"
CATEGORY_NAME "okteta.core"
DESCRIPTION "Okteta Core library"
EXPORT OKTETA
)
macro(OKTETACORE_ADD_SUBLIBRARY _subdir)
okteta_add_sublibrary(Core NAMESPACE Okteta
SUBDIR ${_subdir}
${ARGN}
)
endmacro()
oktetacore_add_sublibrary(charcodecs
PRIVATE
CharCodec
USASCIICharCodec
EBCDIC1047CharCodec
IBM874CharCodec
JISX0201CharCodec
TextCharCodec
)
oktetacore_add_sublibrary(valuecodecs
PRIVATE
BinaryByteCodec
ValueCodec
DecimalByteCodec
HexadecimalByteCodec
OctalByteCodec
)
oktetacore_add_sublibrary(piecetable
PRIVATE
PieceList
PieceTable
AbstractPieceTableChange
# FillPieceTableChange
InsertPieceTableChange
RemovePieceTableChange
ReplacePieceTableChange
SwapRangesPieceTableChange
GroupPieceTableChange
PieceTableChangehistory
RevertablePiecetable
)
okteta_add_sublibrary(Core NAMESPACE Okteta
PUBLIC
OktetaCore
Range
NumberRange
Address
AddressRange
Size
Byte
AbstractByteArrayModel
Versionable
Bookmarkable
ChangesDescribable
ChangeHistory
ByteArrayModel
#FileByteArrayModel
PieceTableByteArrayModel
Character
ArrayChangeMetrics
ArrayChangeMetricsList
ByteArrayChange
Bookmark
BookmarksConstIteratorAdapter # TODO: make private or move adapter class to iterator
BookmarksConstIterator
TextByteArrayAnalyzer
ValueCodec
CharCodec
PRIVATE
FileByteArrayModel
FixedSizeByteArrayModel
BookmarkListConstIteratorAdapter
AddressRangeList
BookmarkList
)
okteta_add_cmakeconfig(Core NAMESPACE Okteta
DEPS
Qt5Core ${Qt5_VERSION}
)
okteta_add_qmakeconfig(Core NAMESPACE Okteta
DEPS core
)
okteta_add_pkgconfig(Core NAMESPACE Okteta
DEPS Qt5Core
DESCRIPTION "Okteta Core"
)
if(BUILD_TESTING)
#don't compile sources twice by using object libraries
#add_library( oktetacore_objs OBJECT ${oktetacore_LIB_SRCS} )
#target_include_directories( oktetacore_objs PUBLIC $<TARGET_PROPERTY:Qt5::Core,INTERFACE_INCLUDE_DIRECTORIES> )
#set( oktetacore_LIB_OBJS $<TARGET_OBJECTS:oktetacore_objs>)
# compile flags don't get set for object libraries, since cannot link to target
#TODO: find out how to properly use targets for object libraries
add_library(TestOktetaCore STATIC)
get_property(oktetacore_LIB_OBJS TARGET OktetaCore PROPERTY SOURCES)
target_sources(TestOktetaCore PRIVATE ${oktetacore_LIB_OBJS})
# Configure export macros to be setup as with a static lib
# as the source files are reused for static TestOktetaCore
# Saves doing a separate export header.
target_compile_definitions(TestOktetaCore
PUBLIC
OKTETACORE_STATICLIB
PRIVATE
TRANSLATION_DOMAIN=\"liboktetacore\"
)
target_link_libraries(TestOktetaCore
PUBLIC
Qt5::Core
PRIVATE
KF5::I18n
)
add_subdirectory(piecetable/tests)
add_subdirectory(tests)
endif()