ALib C++ Library
Library Version: 2511 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
ALibSources.cmake
1# ##################################################################################################
2# ALibSources.cmake - CMake file for projects using ALib
3#
4# Copyright 2013-2025 A-Worx GmbH, Germany
5# Published under 'Boost Software License' (a free software license, see LICENSE.txt)
6#
7# Notes:
8# Selects source files in lists depending on the selected modules listed in variable
9# ALibBuild. The lists are:
10# - ALIB_MPP: C++20 Module files (respectively aggregation headers with legacy builds)
11# - ALIB_INL: C++ declarations
12# - ALIB_CPP: Compilation units.
13# - ALIB_HPP: Legacy Header files which are not exported, for example, "platformincludes.hpp"
14# - ALIB_H: Module includes. The only files a using code may include.
15# If variable ALIB_SOURCE_COPY_TARGET_DIR is defined, then the sources are copied to the
16# directory specified.
17#
18# This CMake file is included by "ALib.cmake" automatically and is not intended for manual
19# inclusion. Its contents was separated into a separated cmake file solely for clarity.
20# ##################################################################################################
21if( NOT DEFINED ALIB_SOURCE_DIR )
22 set ( ALIB_SOURCE_DIR ${ALIB_BASE_DIR}/src )
23endif()
24
25SET( ALIB_H "" )
26SET( ALIB_INL "" )
27SET( ALIB_MPP "" )
28SET( ALIB_CPP "" )
29SET( ALIB_HPP "" )
30
31# ---------- general files, always included -------
32
33# alib
34list( APPEND ALIB_H ALib.Lang.CIFunctions.H )
35list( APPEND ALIB_H ALib.Lang.CIMethods.H )
36
37list( APPEND ALIB_INL alib.inl )
38
39list( APPEND ALIB_INL assert.inl )
40list( APPEND ALIB_CPP assert.cpp )
41list( APPEND ALIB_INL mainargs.inl )
42list( APPEND ALIB_CPP mainargs.cpp )
43list( APPEND ALIB_INL chk_nc.inl )
44list( APPEND ALIB_HPP platformincludes.hpp )
45
46#alib.Bootstrap
47list( APPEND ALIB_H ALib.Bootstrap.H )
48list( APPEND ALIB_MPP bootstrap/bootstrap.mpp )
49list( APPEND ALIB_HPP bootstrap/bootstrap.prepro.hpp )
50list( APPEND ALIB_CPP bootstrap/bootstrap.cpp )
51
52
53# alib::lang
54list( APPEND ALIB_H ALib.Lang.H )
55list( APPEND ALIB_MPP lang/lang.mpp )
56list( APPEND ALIB_INL lang/allocation.inl )
57list( APPEND ALIB_INL lang/bidilist.inl )
58list( APPEND ALIB_INL lang/bits.inl )
59list( APPEND ALIB_INL lang/bitset.inl )
60list( APPEND ALIB_INL lang/callerinfo.inl )
61list( APPEND ALIB_INL lang/commonenumdefs.inl )
62list( APPEND ALIB_INL lang/dbgcriticalsections.inl )
63list( APPEND ALIB_CPP lang/dbgcriticalsections.cpp )
64list( APPEND ALIB_INL lang/dbgtypedemangler.inl )
65list( APPEND ALIB_CPP lang/dbgtypedemangler.cpp )
66list( APPEND ALIB_INL lang/integers.inl )
67list( APPEND ALIB_INL lang/owner.inl )
68list( APPEND ALIB_INL lang/placeholder.inl )
69list( APPEND ALIB_INL lang/plugins.inl )
70list( APPEND ALIB_INL lang/sidilist.inl )
71list( APPEND ALIB_INL lang/stdtypeinfofunctors.inl )
72list( APPEND ALIB_INL lang/tmp.inl )
73
74# alib::time
75list( APPEND ALIB_H ALib.Time.H )
76list( APPEND ALIB_MPP time/time.mpp )
77list( APPEND ALIB_INL time/datetime.inl )
78list( APPEND ALIB_CPP time/datetime.cpp )
79list( APPEND ALIB_INL time/stopwatch.inl )
80list( APPEND ALIB_INL time/tickconverter.inl )
81list( APPEND ALIB_CPP time/tickconverter.cpp )
82list( APPEND ALIB_INL time/ticks.inl )
83list( APPEND ALIB_INL time/timepointbase.inl )
84list( APPEND ALIB_CPP time/time.cpp )
85
86# alib::threads
87list( APPEND ALIB_H ALib.Threads.H )
88list( APPEND ALIB_MPP threads/threads.mpp )
89list( APPEND ALIB_INL threads/thread.inl )
90list( APPEND ALIB_INL threads/lock.inl )
91list( APPEND ALIB_INL threads/recursivelock.inl )
92list( APPEND ALIB_INL threads/recursivetimedlock.inl )
93list( APPEND ALIB_INL threads/sharedlock.inl )
94list( APPEND ALIB_INL threads/sharedtimedlock.inl )
95list( APPEND ALIB_INL threads/timedlock.inl )
96
97if( NOT ALIB_SINGLE_THREADED )
98 list( APPEND ALIB_INL threads/dbgasserters.inl )
99 list( APPEND ALIB_CPP threads/dbgasserters.cpp )
100 list( APPEND ALIB_INL threads/condition.inl )
101 list( APPEND ALIB_INL threads/promise.inl )
102 list( APPEND ALIB_CPP threads/promise.cpp )
103
104 list( APPEND ALIB_CPP threads/thread.cpp )
105 list( APPEND ALIB_CPP threads/locks.cpp )
106endif()
107
108list( APPEND ALIB_INL characters/chartypes.inl )
109list( APPEND ALIB_INL characters/chartraits.inl )
110
111list( APPEND ALIB_H ALib.Characters.Functions.H )
112list( APPEND ALIB_MPP characters/functions.mpp )
113list( APPEND ALIB_INL characters/functions.inl )
114list( APPEND ALIB_CPP characters/functions.cpp )
115list( APPEND ALIB_H ALib.Compatibility.QTCharacters.H )
116
117list( APPEND ALIB_H ALib.EnumOps.H )
118list( APPEND ALIB_MPP enumops/enumops.mpp )
119list( APPEND ALIB_HPP enumops/enumops.prepro.hpp )
120list( APPEND ALIB_INL enumops/underlyingintegral.inl )
121list( APPEND ALIB_INL enumops/arithmetical.inl )
122list( APPEND ALIB_INL enumops/bitwise.inl )
123list( APPEND ALIB_INL enumops/iterable.inl )
124list( APPEND ALIB_INL enumops/iterablebitset.inl )
125list( APPEND ALIB_INL enumops/bitwise_iterable_conversion.inl )
126
127
128################################# Normal Modules #############################
129
130if( "ALOX" IN_LIST ALibBuild )
131 list( APPEND ALIB_H ALib.ALox.H )
132 list( APPEND ALIB_H ALib.ALox.Impl.H )
133 list( APPEND ALIB_MPP alox/alox_init.mpp )
134 list( APPEND ALIB_INL alox/alox_init.inl )
135 list( APPEND ALIB_MPP alox/alox_impl.mpp )
136 list( APPEND ALIB_MPP alox/alox.mpp )
137 list( APPEND ALIB_HPP alox/alox.prepro.hpp )
138 list( APPEND ALIB_INL alox/aloxcamp.inl )
139 list( APPEND ALIB_INL alox/log.inl )
140 list( APPEND ALIB_INL alox/logtools.inl )
141 list( APPEND ALIB_INL alox/lox.inl )
142
143 list( APPEND ALIB_CPP alox/aloxcamp.cpp )
144 list( APPEND ALIB_CPP alox/aloxinit.cpp )
145 list( APPEND ALIB_CPP alox/alox.cpp )
146 list( APPEND ALIB_CPP alox/logtools.cpp )
147#
148 list( APPEND ALIB_INL alox/detail/domain.inl )
149 list( APPEND ALIB_INL alox/detail/logger.inl )
150 list( APPEND ALIB_INL alox/detail/loxpimpl.inl )
151 list( APPEND ALIB_INL alox/detail/scopedump.inl )
152 list( APPEND ALIB_INL alox/detail/scopeinfo.inl )
153 list( APPEND ALIB_INL alox/detail/scopestore.inl )
154
155 list( APPEND ALIB_CPP alox/detail/domain.cpp )
156 list( APPEND ALIB_CPP alox/detail/loxpimpl.cpp )
157 list( APPEND ALIB_CPP alox/detail/scopedump.cpp )
158 list( APPEND ALIB_CPP alox/detail/scopeinfo.cpp )
159 list( APPEND ALIB_CPP alox/detail/scopestore.cpp )
160
161 list( APPEND ALIB_INL alox/textlogger/plaintextlogger.inl )
162 list( APPEND ALIB_INL alox/textlogger/textlogger.inl )
163 list( APPEND ALIB_INL alox/textlogger/variables.inl )
164 list( APPEND ALIB_CPP alox/textlogger/plaintextlogger.cpp )
165 list( APPEND ALIB_CPP alox/textlogger/textlogger.cpp )
166 list( APPEND ALIB_CPP alox/textlogger/variables.cpp )
167
168 list( APPEND ALIB_INL alox/loggers/ansilogger.inl )
169 list( APPEND ALIB_INL alox/loggers/consolelogger.inl )
170 list( APPEND ALIB_INL alox/loggers/memorylogger.inl )
171 list( APPEND ALIB_INL alox/loggers/textfilelogger.inl )
172 list( APPEND ALIB_INL alox/loggers/vstudiologger.inl )
173 list( APPEND ALIB_INL alox/loggers/windowsconsolelogger.inl )
174
175 list( APPEND ALIB_CPP alox/loggers/ansilogger.cpp )
176 list( APPEND ALIB_CPP alox/loggers/consolelogger.cpp )
177 list( APPEND ALIB_CPP alox/loggers/textfilelogger.cpp )
178 list( APPEND ALIB_CPP alox/loggers/vstudiologger.cpp )
179 list( APPEND ALIB_CPP alox/loggers/windowsconsolelogger.cpp )
180
181endif()
182
183if( "BITBUFFER" IN_LIST ALibBuild )
184 list( APPEND ALIB_H ALib.BitBuffer.H )
185 list( APPEND ALIB_MPP bitbuffer/bitbuffer.mpp )
186 list( APPEND ALIB_HPP bitbuffer/bitbuffer.prepro.hpp )
187 list( APPEND ALIB_INL bitbuffer/arraycompressor.inl )
188 list( APPEND ALIB_INL bitbuffer/bitbuffer.inl )
189 list( APPEND ALIB_INL bitbuffer/ac_v1/acalgos.inl.inl )
190 list( APPEND ALIB_INL bitbuffer/ac_v1/ac.inl )
191 list( APPEND ALIB_INL bitbuffer/ac_v1/huffman.inl )
192
193 list( APPEND ALIB_CPP bitbuffer/bitbuffer.cpp )
194 list( APPEND ALIB_CPP bitbuffer/ac_v1/ac.cpp )
195 list( APPEND ALIB_CPP bitbuffer/ac_v1/huffman.cpp )
196endif()
197
198if( "BOXING" IN_LIST ALibBuild )
199 list( APPEND ALIB_H ALib.Boxing.H )
200 list( APPEND ALIB_MPP boxing/boxing.mpp )
201 list( APPEND ALIB_HPP boxing/boxing.prepro.hpp )
202 list( APPEND ALIB_INL boxing/box.inl )
203 list( APPEND ALIB_INL boxing/boxes.inl )
204 list( APPEND ALIB_INL boxing/boxstrap.inl )
205 list( APPEND ALIB_INL boxing/enum.inl )
206 list( APPEND ALIB_INL boxing/placeholder.inl )
207 list( APPEND ALIB_INL boxing/boxingtraits.inl )
208 list( APPEND ALIB_INL boxing/boxing_debug.inl )
209
210 list( APPEND ALIB_INL boxing/boxingcustoms.inl.inl )
211 list( APPEND ALIB_INL boxing/functiondecls.inl )
212 list( APPEND ALIB_INL boxing/functiondefs.inl.inl )
213 list( APPEND ALIB_INL boxing/detail/vtable.inl )
214
215 list( APPEND ALIB_CPP boxing/boxstrap.cpp )
216 list( APPEND ALIB_CPP boxing/boxes.cpp )
217 list( APPEND ALIB_CPP boxing/box.cpp )
218 list( APPEND ALIB_CPP boxing/detail/vtable.cpp )
219 list( APPEND ALIB_CPP boxing/detail/boxingcustoms.cpp )
220 list( APPEND ALIB_CPP boxing/detail/dbgdoublelengthcheck.cpp )
221 list( APPEND ALIB_CPP boxing/boxing_debug.cpp )
222
223 list( APPEND ALIB_H ALib.Boxing.StdFunctors.H )
224 list( APPEND ALIB_H ALib.Compatibility.StdBoxtraits.H )
225 list( APPEND ALIB_H ALib.Compatibility.QTBoxing.H )
226
227 if( "STRINGS" IN_LIST ALibBuild )
228 list( APPEND ALIB_INL boxing/strings_appendables.inl )
229 list( APPEND ALIB_INL boxing/extensions/strings_tfield.inl )
230 list( APPEND ALIB_CPP boxing/extensions/strings_tfield.cpp )
231
232 endif()
233endif()
234
235if( "CAMP" IN_LIST ALibBuild )
236 list( APPEND ALIB_H ALib.Camp.H )
237 list( APPEND ALIB_MPP camp/camp.mpp )
238 list( APPEND ALIB_HPP camp/camp.prepro.hpp )
239 list( APPEND ALIB_INL camp/camp.inl )
240
241 # additions from lower-level modules
242 list( APPEND ALIB_INL camp/loadtokens.inl )
243
244 # Basecamp
245 list( APPEND ALIB_H ALib.Camp.Base.H )
246 list( APPEND ALIB_MPP camp/basecamp.mpp )
247 list( APPEND ALIB_CPP camp/basecamp.cpp )
248endif()
249
250if( "CLI" IN_LIST ALibBuild )
251 list( APPEND ALIB_H ALib.CLI.H )
252 list( APPEND ALIB_MPP cli/cli.mpp )
253 list( APPEND ALIB_INL cli/arguments.inl )
254 list( APPEND ALIB_INL cli/clicamp.inl )
255 list( APPEND ALIB_INL cli/cliutil.inl )
256 list( APPEND ALIB_INL cli/commandline.inl )
257
258 list( APPEND ALIB_CPP cli/arguments.cpp )
259 list( APPEND ALIB_CPP cli/clicamp.cpp )
260 list( APPEND ALIB_CPP cli/cliutil.cpp )
261 list( APPEND ALIB_CPP cli/commandline.cpp )
262endif()
263
264if( "VARIABLES" IN_LIST ALibBuild )
265 list( APPEND ALIB_H ALib.Variables.H )
266 list( APPEND ALIB_MPP variables/variables.mpp )
267 list( APPEND ALIB_HPP variables/variables.prepro.hpp )
268 list( APPEND ALIB_INL variables/erpriority.inl )
269 list( APPEND ALIB_INL variables/vmeta.inl )
270 list( APPEND ALIB_INL variables/declaration.inl )
271 list( APPEND ALIB_INL variables/configuration.inl )
272 list( APPEND ALIB_CPP variables/configuration.cpp )
273 list( APPEND ALIB_CPP variables/vmeta.cpp )
274 list( APPEND ALIB_CPP variables/variable.cpp )
275
276 list( APPEND ALIB_H ALib.Variables.Plugins.H )
277 list( APPEND ALIB_MPP variables/plugins.mpp )
278 list( APPEND ALIB_CPP variables/plugins.cpp )
279
280 list( APPEND ALIB_H ALib.Variables.IniFile.H )
281 list( APPEND ALIB_MPP variables/inifile.mpp )
282 list( APPEND ALIB_INL variables/inifile.inl )
283 list( APPEND ALIB_INL variables/inifilefeeder.inl )
284 list( APPEND ALIB_CPP variables/inifile.cpp )
285 list( APPEND ALIB_CPP variables/inifilefeeder.cpp )
286
287 list( APPEND ALIB_H ALib.Variables.ResourcePool.H )
288 list( APPEND ALIB_MPP variables/configresourcepool.mpp )
289 list( APPEND ALIB_CPP variables/configresourcepool.cpp )
290
291
292
293endif()
294
295if( "CONTAINERS" IN_LIST ALibBuild )
296 list( APPEND ALIB_HPP containers/containers.prepro.hpp )
297 list( APPEND ALIB_INL containers/recycling.inl )
298 list( APPEND ALIB_INL containers/valuedescriptor.inl )
299
300 list( APPEND ALIB_H ALib.Containers.FixedCapacityVector.H )
301 list( APPEND ALIB_MPP containers/fixedcapacityvector.mpp )
302 list( APPEND ALIB_INL containers/fixedcapacityvector.inl )
303
304 list( APPEND ALIB_H ALib.Containers.HashTable.H )
305 list( APPEND ALIB_MPP containers/hashtable.mpp )
306 list( APPEND ALIB_INL containers/detail/hashtablebase.inl )
307 list( APPEND ALIB_INL containers/hashtable.inl )
308 list( APPEND ALIB_CPP containers/detail/hashtablebase.cpp )
309
310 list( APPEND ALIB_H ALib.Containers.List.H )
311 list( APPEND ALIB_MPP containers/list.mpp )
312 list( APPEND ALIB_INL containers/list.inl )
313
314 list( APPEND ALIB_H ALib.Containers.LRUCacheTable.H )
315 list( APPEND ALIB_MPP containers/lrucachetable.mpp )
316 list( APPEND ALIB_INL containers/lrucachetable.inl )
317
318 list( APPEND ALIB_H ALib.Containers.SharedPtr.H )
319 list( APPEND ALIB_MPP containers/sharedptr.mpp )
320 list( APPEND ALIB_INL containers/sharedptr.inl )
321
322 list( APPEND ALIB_H ALib.Containers.SharedVal.H )
323 list( APPEND ALIB_MPP containers/sharedval.mpp )
324 list( APPEND ALIB_INL containers/sharedval.inl )
325
326 if( "STRINGS" IN_LIST ALibBuild )
327 list( APPEND ALIB_H ALib.Containers.StringTree.H )
328 list( APPEND ALIB_MPP containers/stringtree.mpp )
329 list( APPEND ALIB_INL containers/stringtree.inl )
330 list( APPEND ALIB_INL containers/detail/stringtreebase.inl )
331 list( APPEND ALIB_CPP containers/detail/stringtreebase.cpp )
332 list( APPEND ALIB_H ALib.Containers.StringTreeIterator.H )
333 list( APPEND ALIB_MPP containers/stringtreeiterator.mpp )
334 list( APPEND ALIB_INL containers/stringtreeiterator.inl )
335 endif()
336endif()
337
338
339if( "ENUMRECORDS" IN_LIST ALibBuild )
340 list( APPEND ALIB_H ALib.EnumRecords.H )
341 list( APPEND ALIB_MPP enumrecords/enumrecords.mpp )
342 list( APPEND ALIB_HPP enumrecords/enumrecords.prepro.hpp )
343 list( APPEND ALIB_INL enumrecords/detail/enumrecordmap.inl )
344 list( APPEND ALIB_INL enumrecords/records.inl )
345 list( APPEND ALIB_INL enumrecords/serialization.inl )
346 list( APPEND ALIB_INL enumrecords/builtin.inl )
347
348 list( APPEND ALIB_H ALib.EnumRecords.Bootstrap.H )
349 list( APPEND ALIB_MPP enumrecords/bootstrap/recordbootstrap.mpp )
350 list( APPEND ALIB_INL enumrecords/bootstrap/recordparser.inl )
351 list( APPEND ALIB_INL enumrecords/bootstrap/recordbootstrap.inl )
352 list( APPEND ALIB_CPP enumrecords/bootstrap/recordparser.cpp )
353 if( "BOXING" IN_LIST ALibBuild )
354 list( APPEND ALIB_INL enumrecords/boxing_enums.inl )
355 endif()
356 list( APPEND ALIB_CPP enumrecords/records.cpp )
357
358endif()
359
360if( "EXCEPTIONS" IN_LIST ALibBuild )
361 list( APPEND ALIB_H ALib.Exceptions.H )
362 list( APPEND ALIB_MPP exceptions/exceptions.mpp )
363 list( APPEND ALIB_INL exceptions/message.inl )
364 list( APPEND ALIB_INL exceptions/exception.inl )
365 list( APPEND ALIB_CPP exceptions/exception.cpp )
366endif()
367
368if( "EXPRESSIONS" IN_LIST ALibBuild )
369 list( APPEND ALIB_H ALib.Expressions.H )
370 list( APPEND ALIB_H ALib.Expressions.Impl.H )
371 list( APPEND ALIB_MPP expressions/expressions.mpp )
372 list( APPEND ALIB_MPP expressions/expressions_impl.mpp )
373 list( APPEND ALIB_INL expressions/detail/ast.inl )
374 list( APPEND ALIB_INL expressions/parser.inl )
375 list( APPEND ALIB_HPP expressions/expressions.prepro.hpp )
376 list( APPEND ALIB_INL expressions/expressionscamp.inl )
377 list( APPEND ALIB_INL expressions/compiler.inl )
378 list( APPEND ALIB_INL expressions/compilerplugin.inl )
379 list( APPEND ALIB_INL expressions/expression.inl )
380 list( APPEND ALIB_INL expressions/scope.inl )
381 list( APPEND ALIB_INL expressions/standardrepository.inl )
382
383 list( APPEND ALIB_INL expressions/detail/ast_impl.inl )
384 list( APPEND ALIB_INL expressions/detail/parser_impl.inl )
385 list( APPEND ALIB_INL expressions/detail/program.inl )
386 list( APPEND ALIB_INL expressions/detail/virtualmachine.inl )
387
388 list( APPEND ALIB_INL expressions/plugins/arithmetics.inl )
389 list( APPEND ALIB_INL expressions/plugins/autocast.inl )
390 list( APPEND ALIB_INL expressions/plugins/calculus.inl )
391 list( APPEND ALIB_INL expressions/plugins/dateandtime.inl )
392 list( APPEND ALIB_INL expressions/plugins/elvisoperator.inl )
393 list( APPEND ALIB_INL expressions/plugins/math.inl )
394 list( APPEND ALIB_INL expressions/plugins/strings.inl )
395
396 list( APPEND ALIB_CPP expressions/expressionscamp.cpp )
397 list( APPEND ALIB_CPP expressions/compiler.cpp )
398 list( APPEND ALIB_CPP expressions/expression.cpp )
399 list( APPEND ALIB_CPP expressions/standardrepository.cpp )
400
401 list( APPEND ALIB_CPP expressions/parser.cpp )
402
403 list( APPEND ALIB_CPP expressions/detail/ast.cpp )
404 list( APPEND ALIB_CPP expressions/detail/parser_impl.cpp )
405 list( APPEND ALIB_CPP expressions/detail/program.cpp )
406 list( APPEND ALIB_CPP expressions/detail/virtualmachine.cpp )
407
408 list( APPEND ALIB_CPP expressions/plugins/arithmetics.cpp )
409 list( APPEND ALIB_CPP expressions/plugins/autocast.cpp )
410 list( APPEND ALIB_CPP expressions/plugins/calculus.cpp )
411 list( APPEND ALIB_CPP expressions/plugins/elvisoperator.cpp )
412 list( APPEND ALIB_CPP expressions/plugins/math.cpp )
413 list( APPEND ALIB_CPP expressions/plugins/strings.cpp )
414 list( APPEND ALIB_CPP expressions/plugins/dateandtime.cpp )
415
416 list( APPEND ALIB_INL expressions/util/expressionformatter.inl )
417 list( APPEND ALIB_CPP expressions/util/expressionformatter.cpp )
418
419 endif()
420
421if( "FORMAT" IN_LIST ALibBuild )
422 list( APPEND ALIB_H ALib.Format.H )
423 list( APPEND ALIB_MPP format/format.mpp )
424 list( APPEND ALIB_INL format/formatter.inl )
425 list( APPEND ALIB_INL format/fmtexceptions.inl )
426 list( APPEND ALIB_INL format/bytesize.inl )
427 list( APPEND ALIB_INL format/fmtcallerinfo.inl )
428 list( APPEND ALIB_INL format/fmtdatetime.inl )
429 list( APPEND ALIB_INL format/extensions/containers_hashtable.inl )
430 list( APPEND ALIB_INL format/extensions/boxing_format_debug.inl )
431 list( APPEND ALIB_INL format/extensions/resources_debug.inl )
432 list( APPEND ALIB_CPP format/formatter.cpp )
433 list( APPEND ALIB_CPP format/fmtvarious.cpp )
434 list( APPEND ALIB_CPP format/extensions/boxing_format_debug.cpp )
435 list( APPEND ALIB_CPP format/extensions/resources_debug.cpp )
436
437
438
439 list( APPEND ALIB_H ALib.Format.StdImplementation.H )
440 list( APPEND ALIB_MPP format/formatterstdimpl.mpp )
441 list( APPEND ALIB_INL format/formatterstdimpl.inl )
442 list( APPEND ALIB_CPP format/formatterstdimpl.cpp )
443
444 list( APPEND ALIB_H ALib.Format.FormatterPythonStyle.H)
445 list( APPEND ALIB_MPP format/formatterpythonstyle.mpp )
446 list( APPEND ALIB_INL format/formatterpythonstyle.inl )
447 list( APPEND ALIB_CPP format/formatterpythonstyle.cpp )
448
449 list( APPEND ALIB_H ALib.Format.FormatterJavaStyle.H )
450 list( APPEND ALIB_MPP format/formatterjavastyle.mpp )
451 list( APPEND ALIB_INL format/formatterjavastyle.inl )
452 list( APPEND ALIB_CPP format/formatterjavastyle.cpp )
453
454 list( APPEND ALIB_H ALib.Format.Paragraphs.H )
455 list( APPEND ALIB_MPP format/paragraphs.mpp )
456 list( APPEND ALIB_INL format/paragraphs.inl )
457 list( APPEND ALIB_CPP format/paragraphs.cpp )
458
459 list( APPEND ALIB_H ALib.Format.PropertyFormatter.H )
460 list( APPEND ALIB_MPP format/propertyformatter.mpp )
461 list( APPEND ALIB_INL format/propertyformatter.inl )
462 list( APPEND ALIB_CPP format/propertyformatter.cpp )
463
464 list( APPEND ALIB_H ALib.Format.PropertyFormatters.H )
465 list( APPEND ALIB_MPP format/propertyformatters.mpp )
466
467
468endif()
469
470
471if( "MONOMEM" IN_LIST ALibBuild )
472 list( APPEND ALIB_H ALib.Monomem.H )
473 list( APPEND ALIB_MPP monomem/monomem.mpp )
474 list( APPEND ALIB_HPP monomem/monomem.prepro.hpp )
475 list( APPEND ALIB_INL monomem/monoallocator.inl )
476 list( APPEND ALIB_INL monomem/monoallocator.t.inl )
477 list( APPEND ALIB_INL monomem/localallocator.inl )
478 list( APPEND ALIB_INL monomem/poolallocator.inl )
479 list( APPEND ALIB_INL monomem/poolallocator.t.inl )
480 list( APPEND ALIB_CPP monomem/monomem.cpp )
481
482 list( APPEND ALIB_H ALib.Monomem.SharedMonoVal.H )
483 list( APPEND ALIB_MPP monomem/sharedmonoval.mpp )
484 list( APPEND ALIB_INL monomem/sharedmonoval.inl )
485
486 list( APPEND ALIB_H ALib.Monomem.StdContainers.H )
487endif()
488
489
490if( "SINGLETONS" IN_LIST ALibBuild )
491 list( APPEND ALIB_H ALib.Singletons.H )
492 list( APPEND ALIB_MPP singletons/singletons.mpp )
493 list( APPEND ALIB_HPP singletons/singletons.prepro.hpp )
494 list( APPEND ALIB_CPP singletons/singletons.cpp )
495endif()
496
497if( "STRINGS" IN_LIST ALibBuild )
498 list( APPEND ALIB_H ALib.Strings.H )
499 list( APPEND ALIB_MPP strings/strings.mpp )
500 list( APPEND ALIB_HPP strings/strings.prepro.hpp )
501 list( APPEND ALIB_INL strings/appendables.inl )
502 list( APPEND ALIB_INL strings/astring.inl )
503 list( APPEND ALIB_INL strings/cstring.inl )
504 list( APPEND ALIB_INL strings/format.inl )
505 list( APPEND ALIB_INL strings/numberformat.inl )
506 list( APPEND ALIB_INL strings/localstring.inl )
507 list( APPEND ALIB_INL strings/string.inl )
508 list( APPEND ALIB_INL strings/stringnzt.inl )
509 list( APPEND ALIB_INL strings/substring.inl )
510 list( APPEND ALIB_INL strings/detail/tastring.inl )
511 list( APPEND ALIB_INL strings/detail/tastringimpl.inl )
512
513 list( APPEND ALIB_INL strings/detail/tastring_ca_decl.inl.inl )
514 list( APPEND ALIB_INL strings/detail/tastring_ca_impl.inl.inl )
515 list( APPEND ALIB_INL strings/detail/numberconversion.inl )
516
517 list( APPEND ALIB_CPP strings/astring.cpp )
518 list( APPEND ALIB_CPP strings/numberformat.cpp )
519 list( APPEND ALIB_CPP strings/string.cpp )
520 list( APPEND ALIB_CPP strings/substring.cpp )
521 list( APPEND ALIB_CPP strings/detail/numberconversion.cpp )
522
523 list( APPEND ALIB_H ALib.Compatibility.QTStrings.H )
524 list( APPEND ALIB_H ALib.Strings.StdFunctors.H )
525 list( APPEND ALIB_H ALib.Strings.StdIOStream.H )
526 list( APPEND ALIB_MPP strings/stdiostream.mpp )
527 list( APPEND ALIB_CPP strings/stdiostream.cpp )
528
529 list( APPEND ALIB_H ALib.Compatibility.StdStrings.H )
530
531 list( APPEND ALIB_H ALib.Strings.Tokenizer.H )
532 list( APPEND ALIB_MPP strings/util/tokenizer.mpp )
533 list( APPEND ALIB_INL strings/util/tokenizer.inl )
534 list( APPEND ALIB_CPP strings/util/tokenizer.cpp )
535
536 list( APPEND ALIB_H ALib.Strings.Escaper.H )
537 list( APPEND ALIB_MPP strings/util/escaper.mpp )
538 list( APPEND ALIB_INL strings/util/escaper.inl )
539 list( APPEND ALIB_CPP strings/util/escaper.cpp )
540
541 list( APPEND ALIB_H ALib.Strings.Search.H )
542 list( APPEND ALIB_MPP strings/util/search.mpp )
543 list( APPEND ALIB_INL strings/util/search.inl )
544 list( APPEND ALIB_INL strings/util/regexmatcher.inl )
545 list( APPEND ALIB_INL strings/util/wildcardmatcher.inl )
546 list( APPEND ALIB_CPP strings/util/search.cpp )
547 list( APPEND ALIB_CPP strings/util/regexmatcher.cpp )
548 list( APPEND ALIB_CPP strings/util/wildcardmatcher.cpp )
549
550 list( APPEND ALIB_H ALib.Strings.Calendar.H )
551 list( APPEND ALIB_MPP strings/util/calendar.mpp )
552 list( APPEND ALIB_INL strings/util/calendar.inl )
553 list( APPEND ALIB_CPP strings/util/calendar.cpp )
554
555 list( APPEND ALIB_H ALib.Strings.Token.H )
556 list( APPEND ALIB_MPP strings/util/token.mpp )
557 list( APPEND ALIB_INL strings/util/token.inl )
558 list( APPEND ALIB_CPP strings/util/token.cpp )
559
560 list( APPEND ALIB_H ALib.Strings.AutoSizes.H )
561 list( APPEND ALIB_MPP strings/util/autosizes.mpp )
562 list( APPEND ALIB_INL strings/util/autosizes.inl )
563 list( APPEND ALIB_CPP strings/util/autosizes.cpp )
564
565 list( APPEND ALIB_H ALib.Strings.Vector.H )
566
567
568 if( "MONOMEM" IN_LIST ALibBuild )
569 list( APPEND ALIB_H ALib.Strings.Monomem.H )
570 list( APPEND ALIB_MPP strings/monomem/strings_monomem.mpp )
571 list( APPEND ALIB_INL strings/monomem/strings_monomem.t.inl )
572 list( APPEND ALIB_CPP strings/monomem/strings_monomem.cpp )
573 endif()
574endif()
575
576if( "RESOURCES" IN_LIST ALibBuild )
577 list( APPEND ALIB_H ALib.Resources.H )
578 list( APPEND ALIB_MPP resources/resources.mpp )
579 list( APPEND ALIB_HPP resources/resources.prepro.hpp )
580 list( APPEND ALIB_INL resources/resources.inl )
581 list( APPEND ALIB_INL resources/detail/resourcemap.inl )
582 list( APPEND ALIB_INL resources/localresourcepool.inl )
583
584 list( APPEND ALIB_CPP resources/localresourcepool.cpp )
585
586 # additions from lower-level modules
587 list( APPEND ALIB_INL resources/extensions/enums_serialization.inl )
588 list( APPEND ALIB_INL resources/extensions/strings_loadtokens.inl )
589 list( APPEND ALIB_CPP resources/extensions/strings_loadtokens.cpp )
590endif()
591
592if( "SYSTEM" IN_LIST ALibBuild )
593
594 #### BASE/system ###
595 list( APPEND ALIB_H ALib.System.H )
596 list( APPEND ALIB_MPP system/system.mpp )
597 list( APPEND ALIB_HPP system/system.prepro.hpp )
598 list( APPEND ALIB_INL system/console.inl )
599 list( APPEND ALIB_INL system/environment.inl )
600 list( APPEND ALIB_INL system/path.inl )
601 list( APPEND ALIB_INL system/processinfo.inl )
602 list( APPEND ALIB_INL system/shellcommand.inl )
603 list( APPEND ALIB_INL system/systemerrors.inl )
604
605 list( APPEND ALIB_CPP system/console.cpp )
606 list( APPEND ALIB_CPP system/environment.cpp )
607 list( APPEND ALIB_CPP system/path.cpp )
608 list( APPEND ALIB_CPP system/processinfo.cpp )
609 list( APPEND ALIB_CPP system/shellcommand.cpp )
610 if ( ${APPLE} )
611 list( APPEND ALIB_CPP system/path.mm )
612 endif()
613endif()
614
615if( "THREADMODEL" IN_LIST ALibBuild )
616 list( APPEND ALIB_H ALib.ThreadModel.H )
617 list( APPEND ALIB_MPP threadmodel/threadmodel.mpp )
618 list( APPEND ALIB_INL threadmodel/dedicatedworker.inl )
619 list( APPEND ALIB_INL threadmodel/jobs.inl )
620 list( APPEND ALIB_INL threadmodel/threadpool.inl )
621 list( APPEND ALIB_INL threadmodel/trigger.inl )
622
623 list( APPEND ALIB_CPP threadmodel/dedicatedworker.cpp )
624 list( APPEND ALIB_CPP threadmodel/threadpool.cpp )
625 list( APPEND ALIB_CPP threadmodel/trigger.cpp )
626endif()
627
628
629if( "FILES" IN_LIST ALibBuild )
630 list( APPEND ALIB_H ALib.Files.H )
631 list( APPEND ALIB_MPP files/files.mpp )
632 list( APPEND ALIB_HPP files/files.prepro.hpp )
633 list( APPEND ALIB_INL files/filescamp.inl )
634 list( APPEND ALIB_INL files/ffilter.inl )
635 list( APPEND ALIB_INL files/finfo.inl )
636 list( APPEND ALIB_INL files/fscanner.inl )
637 list( APPEND ALIB_INL files/ftree.inl )
638
639 list( APPEND ALIB_CPP files/filescamp.cpp )
640 list( APPEND ALIB_CPP files/file.cpp )
641 list( APPEND ALIB_CPP files/finfo.cpp )
642 list( APPEND ALIB_CPP files/fscanner.cpp )
643 list( APPEND ALIB_CPP files/ftree.cpp )
644
645 list( APPEND ALIB_H ALib.Files.TextFile.H )
646
647 if( "EXPRESSIONS" IN_LIST ALibBuild )
648 list( APPEND ALIB_H ALib.Files.Expressions.H )
649 list( APPEND ALIB_MPP files/expressions/fileexpressions.mpp )
650 list( APPEND ALIB_INL files/expressions/fileexpressions.inl )
651 list( APPEND ALIB_CPP files/expressions/fileexpressions.cpp )
652 endif()
653
654endif()
655
656
657
658
659# ##################################################################################################
660# Check for duplicates. This is a double-check to detect that this script needs a fix.
661# ##################################################################################################
662
663CollectAndRemoveDuplicates( "ALIB_HPP" "duplicates" )
664LIST( LENGTH duplicates cntDuplicates )
665
666IF( ${cntDuplicates} GREATER 0 )
667 message( ERROR "Internal script error ALIBSources.cmake: "
668 "DUPLICATE HPP FILES FOUND.\nSee list below! "
669 "(Processing continues with de-duplicated list)" )
670 message( STATUS "LIST OF DUPLICATE HPP FILES:" )
671 LIST(SORT duplicates)
672 FOREACH( entry IN LISTS duplicates )
673 message( STATUS " ${entry}" )
674 ENDFOREACH()
675 message( STATUS "(end of list)" )
676ENDIF()
677
678CollectAndRemoveDuplicates( "ALIB_INL" "duplicates" )
679LIST( LENGTH duplicates cntDuplicates )
680IF( ${cntDuplicates} GREATER 0 )
681 message( ERROR "Internal script error ALIBSources.cmake: "
682 "DUPLICATE INL FILES FOUND.\nSee list below! "
683 "(Processing continues with de-duplicated list)" )
684 message( STATUS "LIST OF DUPLICATE INL FILES:" )
685 LIST(SORT duplicates)
686 FOREACH( entry IN LISTS duplicates )
687 message( STATUS " ${entry}" )
688 ENDFOREACH()
689 message( STATUS "(end of list)" )
690ENDIF()
691
692CollectAndRemoveDuplicates( "ALIB_CPP" "duplicates" )
693LIST( LENGTH duplicates cntDuplicates )
694IF( ${cntDuplicates} GREATER 0 )
695 message( ERROR "Internal script error ALIBSources.cmake: "
696 "DUPLICATE CPP FILES FOUND.\nSee list below! "
697 "(Processing continues with de-duplicated list)" )
698 message( STATUS "LIST OF DUPLICATE CPP FILES:" )
699 LIST(SORT duplicates)
700 FOREACH( entry IN LISTS duplicates )
701 message( STATUS " ${entry}" )
702 ENDFOREACH()
703 message( STATUS "(end of list)" )
704ENDIF()
705CollectAndRemoveDuplicates( "ALIB_MPP" "duplicates" )
706LIST( LENGTH duplicates cntDuplicates )
707IF( ${cntDuplicates} GREATER 0 )
708 message( ERROR "Internal script error ALIBSources.cmake: "
709 "DUPLICATE MPP FILES FOUND.\nSee list below! "
710 "(Processing continues with de-duplicated list)" )
711 message( STATUS "LIST OF DUPLICATE MPP FILES:" )
712 LIST(SORT duplicates)
713 FOREACH( entry IN LISTS duplicates )
714 message( STATUS " ${entry}" )
715 ENDFOREACH()
716 message( STATUS "(end of list)" )
717ENDIF()
718# ##################################################################################################
719# Check for ".hpp" in header-files or ".cpp" in sources
720# ##################################################################################################
721FOREACH( entry IN LISTS ALIB_HPP )
722 IF( NOT ${entry} MATCHES "([.]hpp$)|([.]inl$)|([.]mpp$)" )
723 message( FATAL_ERROR "Non-header-file (wrong extension) found in header-file list: ${entry}" )
724 ENDIF()
725ENDFOREACH()
726
727FOREACH( entry IN LISTS ALIB_CPP )
728 IF( NOT ${entry} MATCHES "([.]cpp$)|([.]cppm$)|([.]mm$)" )
729 message( FATAL_ERROR "File with wrong extension found in source file list: ${entry}" )
730 ENDIF()
731ENDFOREACH()
732
733# ##################################################################################################
734# Copy sources if requested
735# ##################################################################################################
736
737if( ALIB_SOURCE_COPY_TARGET_DIR )
738
739 # check: must be single folder name (not a path)
740 string(FIND "${ALIB_SOURCE_COPY_TARGET_DIR}" "/" separatorPosUnix)
741 string(FIND "${ALIB_SOURCE_COPY_TARGET_DIR}" "\\" separatorPosWindows)
742
743 if(separatorPosUnix GREATER -1 OR separatorPosWindows GREATER -1)
744 MESSAGE(FATAL_ERROR "The given variable ALIB_SOURCE_COPY_TARGET_DIR=\"${ALIB_SOURCE_COPY_TARGET_DIR}\" "
745 "must be a folder name and not contain folder separators!")
746 endif()
747
748 # Prepend build directory
749 set(ALIB_SOURCE_COPY_TARGET_DIR "${CMAKE_BINARY_DIR}/${ALIB_SOURCE_COPY_TARGET_DIR}")
750
751 MESSAGE( STATUS "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
752 MESSAGE( STATUS "!!! ATTENTION: Copying sources. !!!")
753 MESSAGE( STATUS "!!! The destination directory will be deleted, hence !!!")
754 MESSAGE( STATUS "!!! CHANGES WILL BE LOST with next CMake run! !!!")
755 MESSAGE( STATUS "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
756 MESSAGE( STATUS "Copying source files of selected ALib modules to: ’${ALIB_SOURCE_COPY_TARGET_DIR}’")
757
758 # delete destination directory
759 MESSAGE( "Cleaning source-copy target directory ${ALIB_SOURCE_COPY_TARGET_DIR}" )
760 file( REMOVE_RECURSE ${ALIB_SOURCE_COPY_TARGET_DIR} )
761
762 #### Create directories units ####
763 foreach( fileName IN LISTS ALIB_H )
764 SET( destPath "${ALIB_SOURCE_COPY_TARGET_DIR}/ALib/${fileName}" )
765 get_filename_component(destPath ${destPath} DIRECTORY )
766 #MESSAGE("Copying file: ${ALIB_SOURCE_DIR}/ALib/${fileName}" )
767 #MESSAGE(" to: ${destPath}" )
768 file( MAKE_DIRECTORY "${destPath}")
769 file( COPY "${ALIB_SOURCE_DIR}/${fileName}" DESTINATION "${destPath}" )
770 endforeach()
771
772 foreach( fileName IN LISTS ALIB_MPP ALIB_INL ALIB_HPP ALIB_CPP )
773 SET( destPath "${ALIB_SOURCE_COPY_TARGET_DIR}/alib/${fileName}" )
774 get_filename_component(destPath ${destPath} DIRECTORY )
775 file( MAKE_DIRECTORY "${destPath}")
776 file( COPY "${ALIB_SOURCE_DIR}/alib/${fileName}" DESTINATION "${destPath}" )
777 endforeach()
778
779
780endif()
781
782
783# ##################################################################################################
784# Check if all given files exist and check all files are given
785# ##################################################################################################
786function(CheckFileInclusionForCompleteness fileList baseDir extension )
787 # Ensure the baseDir is an absolute path
788 if(NOT IS_ABSOLUTE "${baseDir}")
789 message(FATAL_ERROR "The provided baseDir '${baseDir}' must be an absolute path.")
790 endif()
791
792 # Step 1: Loop over the given list and check for file existence
793 foreach(file_path IN LISTS fileList)
794
795 # Form the absolute path of the file relative to baseDir
796 set(absolute_file_path "${baseDir}/${file_path}")
797
798 # Check if the file exists
799 if(NOT EXISTS "${absolute_file_path}")
800 message(WARNING "File does not exist: ${absolute_file_path}")
801 endif()
802
803 endforeach()
804
805 # Step 2: Glob the baseDir for all files with the given extension
806 file(GLOB_RECURSE found_files "${baseDir}/*.${extension}")
807
808 # Normalize the found files to be relative to baseDir, for easier comparison
809 set(relative_found_files "")
810 foreach(file_path IN LISTS found_files)
811 file(RELATIVE_PATH relative_file "${baseDir}" "${file_path}")
812 list(APPEND relative_found_files "${relative_file}")
813 endforeach()
814
815 # Step 3: Compare the globbed files with the provided file list
816 foreach(found_file IN LISTS relative_found_files)
817 # Check if the found file is in the list
818 list(FIND fileList "${found_file}" index)
819
820 if(${index} EQUAL -1)
821 message(WARNING "Found an untracked file: ${found_file}")
822 endif()
823 endforeach()
824endfunction()
825
826# ##################################################################################################
827# Check if all given files have one of the given extensions
828# ##################################################################################################
829function(ValidateFileExtensions filenames_var extensions_var)
830 # Dereference the input variable names to get their values
831 set(filenames ${${filenames_var}})
832 set(extensions ${${extensions_var}})
833
834 # Debug information
835 #string(JOIN " " actual_filenames ${filenames})
836 #string(JOIN " " allowed_extensions ${extensions})
837 #message(STATUS "Validating files: ${actual_filenames}")
838 #message(STATUS "Allowed extensions: ${allowed_extensions}")
839
840 # Iterate over each filename
841 foreach(filename IN LISTS filenames)
842 # Extract the file extension using regex
843 string(REGEX MATCH "\\.[^.]*$" file_extension "${filename}")
844
845 # Remove the dot from the extension
846 string(REGEX REPLACE "\\." "" clean_extension "${file_extension}")
847
848 # Check if the extension is in the allowed list
849 list(FIND extensions "${clean_extension}" index)
850
851 if(${index} EQUAL -1) # -1 means the extension is invalid
852 message(FATAL_ERROR "File '${filename}' has an invalid extension: '${clean_extension}'. Allowed extensions are: ${allowed_extensions}")
853 endif()
854 endforeach()
855
856 # Success message if all extensions are valid
857 #message(STATUS "All files have valid extensions.")
858endfunction()
859
860# ##################################################################################################
861# Add base directory to files
862# ##################################################################################################
863function(AddBaseDir baseDir sourceListVar )
864 SET(temp "") # Temporary list to store valid files
865
866 # Iterate over the files in the provided list
867 foreach(fileName IN LISTS "${sourceListVar}")
868 if(EXISTS "${baseDir}/${fileName}")
869 LIST(APPEND temp "${baseDir}/${fileName}")
870 else()
871 message(FATAL_ERROR "Source file not found: ${baseDir}/${fileName}")
872 endif()
873 endforeach()
874
875 # Set output variable with processed list
876 SET("${sourceListVar}" "${temp}" PARENT_SCOPE)
877endfunction()
878
879if(ALibAllModules)
880 CheckFileInclusionForCompleteness( "${ALIB_H}" "${ALIB_SOURCE_DIR}" "H" )
881 CheckFileInclusionForCompleteness( "${ALIB_MPP}" "${ALIB_SOURCE_DIR}/alib" "mpp" )
882 CheckFileInclusionForCompleteness( "${ALIB_INL}" "${ALIB_SOURCE_DIR}/alib" "inl" )
883 CheckFileInclusionForCompleteness( "${ALIB_CPP}" "${ALIB_SOURCE_DIR}/alib" "cpp" )
884 CheckFileInclusionForCompleteness( "${ALIB_HPP}" "${ALIB_SOURCE_DIR}/alib" "hpp" )
885endif()
886set(allowedExtensions "H" "hpp" )
887 ValidateFileExtensions(ALIB_H allowedExtensions)
888set(allowedExtensions "mpp" )
889 ValidateFileExtensions(ALIB_MPP allowedExtensions)
890set(allowedExtensions "inl" )
891 ValidateFileExtensions(ALIB_INL allowedExtensions)
892set(allowedExtensions "hpp" )
893 ValidateFileExtensions(ALIB_HPP allowedExtensions)
894set(allowedExtensions "cpp" "mm" )
895 ValidateFileExtensions(ALIB_CPP allowedExtensions)
896AddBaseDir("${ALIB_SOURCE_DIR}" ALIB_H )
897AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_MPP )
898AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_INL )
899AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_HPP )
900AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_CPP )
901