ALib C++ Library
Library Version: 2510 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/rttrallocator.inl )
71list( APPEND ALIB_INL lang/sidilist.inl )
72list( APPEND ALIB_INL lang/stdcontainerallocator.inl )
73list( APPEND ALIB_INL lang/stdtypeinfofunctors.inl )
74list( APPEND ALIB_INL lang/tmp.inl )
75
76# alib::time
77list( APPEND ALIB_H ALib.Time.H )
78list( APPEND ALIB_MPP time/time.mpp )
79list( APPEND ALIB_INL time/datetime.inl )
80list( APPEND ALIB_CPP time/datetime.cpp )
81list( APPEND ALIB_INL time/stopwatch.inl )
82list( APPEND ALIB_INL time/tickconverter.inl )
83list( APPEND ALIB_CPP time/tickconverter.cpp )
84list( APPEND ALIB_INL time/ticks.inl )
85list( APPEND ALIB_INL time/timepointbase.inl )
86list( APPEND ALIB_CPP time/time.cpp )
87
88# alib::threads
89list( APPEND ALIB_H ALib.Threads.H )
90list( APPEND ALIB_MPP threads/threads.mpp )
91list( APPEND ALIB_INL threads/thread.inl )
92list( APPEND ALIB_INL threads/lock.inl )
93list( APPEND ALIB_INL threads/recursivelock.inl )
94list( APPEND ALIB_INL threads/recursivetimedlock.inl )
95list( APPEND ALIB_INL threads/sharedlock.inl )
96list( APPEND ALIB_INL threads/sharedtimedlock.inl )
97list( APPEND ALIB_INL threads/timedlock.inl )
98
99if( NOT ALIB_SINGLE_THREADED )
100 list( APPEND ALIB_INL threads/dbgasserters.inl )
101 list( APPEND ALIB_CPP threads/dbgasserters.cpp )
102 list( APPEND ALIB_INL threads/condition.inl )
103 list( APPEND ALIB_INL threads/promise.inl )
104 list( APPEND ALIB_CPP threads/promise.cpp )
105
106 list( APPEND ALIB_CPP threads/thread.cpp )
107 list( APPEND ALIB_CPP threads/locks.cpp )
108endif()
109
110list( APPEND ALIB_INL characters/chartypes.inl )
111list( APPEND ALIB_INL characters/chartraits.inl )
112
113list( APPEND ALIB_H ALib.Characters.Functions.H )
114list( APPEND ALIB_MPP characters/functions.mpp )
115list( APPEND ALIB_INL characters/functions.inl )
116list( APPEND ALIB_CPP characters/functions.cpp )
117list( APPEND ALIB_H ALib.Compatibility.QTCharacters.H )
118
119list( APPEND ALIB_H ALib.EnumOps.H )
120list( APPEND ALIB_MPP enumops/enumops.mpp )
121list( APPEND ALIB_HPP enumops/enumops.prepro.hpp )
122list( APPEND ALIB_INL enumops/underlyingintegral.inl )
123list( APPEND ALIB_INL enumops/arithmetical.inl )
124list( APPEND ALIB_INL enumops/bitwise.inl )
125list( APPEND ALIB_INL enumops/iterable.inl )
126list( APPEND ALIB_INL enumops/iterablebitset.inl )
127list( APPEND ALIB_INL enumops/bitwise_iterable_conversion.inl )
128
129
130################################# Normal Modules #############################
131
132if( "ALOX" IN_LIST ALibBuild )
133 list( APPEND ALIB_H ALib.ALox.H )
134 list( APPEND ALIB_H ALib.ALox.Impl.H )
135 list( APPEND ALIB_MPP alox/alox_init.mpp )
136 list( APPEND ALIB_INL alox/alox_init.inl )
137 list( APPEND ALIB_MPP alox/alox_impl.mpp )
138 list( APPEND ALIB_MPP alox/alox.mpp )
139 list( APPEND ALIB_HPP alox/alox.prepro.hpp )
140 list( APPEND ALIB_INL alox/aloxcamp.inl )
141 list( APPEND ALIB_INL alox/log.inl )
142 list( APPEND ALIB_INL alox/logtools.inl )
143 list( APPEND ALIB_INL alox/lox.inl )
144
145 list( APPEND ALIB_CPP alox/aloxcamp.cpp )
146 list( APPEND ALIB_CPP alox/aloxinit.cpp )
147 list( APPEND ALIB_CPP alox/alox.cpp )
148 list( APPEND ALIB_CPP alox/logtools.cpp )
149#
150 list( APPEND ALIB_INL alox/detail/domain.inl )
151 list( APPEND ALIB_INL alox/detail/logger.inl )
152 list( APPEND ALIB_INL alox/detail/loxpimpl.inl )
153 list( APPEND ALIB_INL alox/detail/scopedump.inl )
154 list( APPEND ALIB_INL alox/detail/scopeinfo.inl )
155 list( APPEND ALIB_INL alox/detail/scopestore.inl )
156
157 list( APPEND ALIB_CPP alox/detail/domain.cpp )
158 list( APPEND ALIB_CPP alox/detail/loxpimpl.cpp )
159 list( APPEND ALIB_CPP alox/detail/scopedump.cpp )
160 list( APPEND ALIB_CPP alox/detail/scopeinfo.cpp )
161 list( APPEND ALIB_CPP alox/detail/scopestore.cpp )
162
163 list( APPEND ALIB_INL alox/textlogger/plaintextlogger.inl )
164 list( APPEND ALIB_INL alox/textlogger/textlogger.inl )
165 list( APPEND ALIB_INL alox/textlogger/variables.inl )
166 list( APPEND ALIB_CPP alox/textlogger/plaintextlogger.cpp )
167 list( APPEND ALIB_CPP alox/textlogger/textlogger.cpp )
168 list( APPEND ALIB_CPP alox/textlogger/variables.cpp )
169
170 list( APPEND ALIB_INL alox/loggers/ansilogger.inl )
171 list( APPEND ALIB_INL alox/loggers/consolelogger.inl )
172 list( APPEND ALIB_INL alox/loggers/memorylogger.inl )
173 list( APPEND ALIB_INL alox/loggers/textfilelogger.inl )
174 list( APPEND ALIB_INL alox/loggers/vstudiologger.inl )
175 list( APPEND ALIB_INL alox/loggers/windowsconsolelogger.inl )
176
177 list( APPEND ALIB_CPP alox/loggers/ansilogger.cpp )
178 list( APPEND ALIB_CPP alox/loggers/consolelogger.cpp )
179 list( APPEND ALIB_CPP alox/loggers/textfilelogger.cpp )
180 list( APPEND ALIB_CPP alox/loggers/vstudiologger.cpp )
181 list( APPEND ALIB_CPP alox/loggers/windowsconsolelogger.cpp )
182
183endif()
184
185if( "BITBUFFER" IN_LIST ALibBuild )
186 list( APPEND ALIB_H ALib.BitBuffer.H )
187 list( APPEND ALIB_MPP bitbuffer/bitbuffer.mpp )
188 list( APPEND ALIB_HPP bitbuffer/bitbuffer.prepro.hpp )
189 list( APPEND ALIB_INL bitbuffer/arraycompressor.inl )
190 list( APPEND ALIB_INL bitbuffer/bitbuffer.inl )
191 list( APPEND ALIB_INL bitbuffer/ac_v1/acalgos.inl.inl )
192 list( APPEND ALIB_INL bitbuffer/ac_v1/ac.inl )
193 list( APPEND ALIB_INL bitbuffer/ac_v1/huffman.inl )
194
195 list( APPEND ALIB_CPP bitbuffer/bitbuffer.cpp )
196 list( APPEND ALIB_CPP bitbuffer/ac_v1/ac.cpp )
197 list( APPEND ALIB_CPP bitbuffer/ac_v1/huffman.cpp )
198endif()
199
200if( "BOXING" IN_LIST ALibBuild )
201 list( APPEND ALIB_H ALib.Boxing.H )
202 list( APPEND ALIB_MPP boxing/boxing.mpp )
203 list( APPEND ALIB_HPP boxing/boxing.prepro.hpp )
204 list( APPEND ALIB_INL boxing/box.inl )
205 list( APPEND ALIB_INL boxing/boxes.inl )
206 list( APPEND ALIB_INL boxing/boxstrap.inl )
207 list( APPEND ALIB_INL boxing/enum.inl )
208 list( APPEND ALIB_INL boxing/placeholder.inl )
209 list( APPEND ALIB_INL boxing/boxingtraits.inl )
210 list( APPEND ALIB_INL boxing/boxing_debug.inl )
211
212 list( APPEND ALIB_INL boxing/boxingcustoms.inl.inl )
213 list( APPEND ALIB_INL boxing/functiondecls.inl )
214 list( APPEND ALIB_INL boxing/functiondefs.inl.inl )
215 list( APPEND ALIB_INL boxing/detail/vtable.inl )
216
217 list( APPEND ALIB_CPP boxing/boxstrap.cpp )
218 list( APPEND ALIB_CPP boxing/boxes.cpp )
219 list( APPEND ALIB_CPP boxing/box.cpp )
220 list( APPEND ALIB_CPP boxing/detail/vtable.cpp )
221 list( APPEND ALIB_CPP boxing/detail/boxingcustoms.cpp )
222 list( APPEND ALIB_CPP boxing/detail/dbgdoublelengthcheck.cpp )
223 list( APPEND ALIB_CPP boxing/boxing_debug.cpp )
224
225 list( APPEND ALIB_H ALib.Boxing.StdFunctors.H )
226 list( APPEND ALIB_H ALib.Compatibility.StdBoxtraits.H )
227 list( APPEND ALIB_H ALib.Compatibility.QTBoxing.H )
228
229 if( "STRINGS" IN_LIST ALibBuild )
230 list( APPEND ALIB_INL boxing/strings_appendables.inl )
231 list( APPEND ALIB_INL boxing/extensions/strings_tfield.inl )
232 list( APPEND ALIB_CPP boxing/extensions/strings_tfield.cpp )
233
234 endif()
235endif()
236
237if( "CAMP" IN_LIST ALibBuild )
238 list( APPEND ALIB_H ALib.Camp.H )
239 list( APPEND ALIB_MPP camp/camp.mpp )
240 list( APPEND ALIB_HPP camp/camp.prepro.hpp )
241 list( APPEND ALIB_INL camp/camp.inl )
242
243 # additions from lower-level modules
244 list( APPEND ALIB_INL camp/loadtokens.inl )
245
246 # Basecamp
247 list( APPEND ALIB_H ALib.Camp.Base.H )
248 list( APPEND ALIB_MPP camp/basecamp.mpp )
249 list( APPEND ALIB_CPP camp/basecamp.cpp )
250endif()
251
252if( "CLI" IN_LIST ALibBuild )
253 list( APPEND ALIB_H ALib.CLI.H )
254 list( APPEND ALIB_MPP cli/cli.mpp )
255 list( APPEND ALIB_INL cli/arguments.inl )
256 list( APPEND ALIB_INL cli/clicamp.inl )
257 list( APPEND ALIB_INL cli/cliutil.inl )
258 list( APPEND ALIB_INL cli/commandline.inl )
259
260 list( APPEND ALIB_CPP cli/arguments.cpp )
261 list( APPEND ALIB_CPP cli/clicamp.cpp )
262 list( APPEND ALIB_CPP cli/cliutil.cpp )
263 list( APPEND ALIB_CPP cli/commandline.cpp )
264endif()
265
266if( "VARIABLES" IN_LIST ALibBuild )
267 list( APPEND ALIB_H ALib.Variables.H )
268 list( APPEND ALIB_MPP variables/variables.mpp )
269 list( APPEND ALIB_HPP variables/variables.prepro.hpp )
270 list( APPEND ALIB_INL variables/erpriority.inl )
271 list( APPEND ALIB_INL variables/vmeta.inl )
272 list( APPEND ALIB_INL variables/declaration.inl )
273 list( APPEND ALIB_INL variables/configuration.inl )
274 list( APPEND ALIB_CPP variables/configuration.cpp )
275 list( APPEND ALIB_CPP variables/vmeta.cpp )
276 list( APPEND ALIB_CPP variables/variable.cpp )
277
278 list( APPEND ALIB_H ALib.Variables.Plugins.H )
279 list( APPEND ALIB_MPP variables/plugins.mpp )
280 list( APPEND ALIB_CPP variables/plugins.cpp )
281
282 list( APPEND ALIB_H ALib.Variables.IniFile.H )
283 list( APPEND ALIB_MPP variables/inifile.mpp )
284 list( APPEND ALIB_INL variables/inifile.inl )
285 list( APPEND ALIB_INL variables/inifilefeeder.inl )
286 list( APPEND ALIB_CPP variables/inifile.cpp )
287 list( APPEND ALIB_CPP variables/inifilefeeder.cpp )
288
289 list( APPEND ALIB_H ALib.Variables.ResourcePool.H )
290 list( APPEND ALIB_MPP variables/configresourcepool.mpp )
291 list( APPEND ALIB_CPP variables/configresourcepool.cpp )
292
293
294
295endif()
296
297if( "CONTAINERS" IN_LIST ALibBuild )
298 list( APPEND ALIB_MPP containers/containers_init.mpp )
299 list( APPEND ALIB_HPP containers/containers.prepro.hpp )
300 list( APPEND ALIB_INL containers/recycling.inl )
301 list( APPEND ALIB_INL containers/valuedescriptor.inl )
302
303 list( APPEND ALIB_H ALib.Containers.FixedCapacityVector.H )
304 list( APPEND ALIB_MPP containers/fixedcapacityvector.mpp )
305 list( APPEND ALIB_INL containers/fixedcapacityvector.inl )
306
307 list( APPEND ALIB_H ALib.Containers.HashTable.H )
308 list( APPEND ALIB_MPP containers/hashtable.mpp )
309 list( APPEND ALIB_INL containers/detail/hashtablebase.inl )
310 list( APPEND ALIB_INL containers/hashtable.inl )
311 list( APPEND ALIB_CPP containers/detail/hashtablebase.cpp )
312
313 list( APPEND ALIB_H ALib.Containers.List.H )
314 list( APPEND ALIB_MPP containers/list.mpp )
315 list( APPEND ALIB_INL containers/list.inl )
316
317 list( APPEND ALIB_H ALib.Containers.LRUCacheTable.H )
318 list( APPEND ALIB_MPP containers/lrucachetable.mpp )
319 list( APPEND ALIB_INL containers/lrucachetable.inl )
320
321 list( APPEND ALIB_H ALib.Containers.SharedPtr.H )
322 list( APPEND ALIB_MPP containers/sharedptr.mpp )
323 list( APPEND ALIB_INL containers/sharedptr.inl )
324
325 list( APPEND ALIB_H ALib.Containers.SharedVal.H )
326 list( APPEND ALIB_MPP containers/sharedval.mpp )
327 list( APPEND ALIB_INL containers/sharedval.inl )
328
329 if( "STRINGS" IN_LIST ALibBuild )
330 list( APPEND ALIB_H ALib.Containers.StringTree.H )
331 list( APPEND ALIB_MPP containers/stringtree.mpp )
332 list( APPEND ALIB_INL containers/stringtree.inl )
333 list( APPEND ALIB_INL containers/detail/stringtreebase.inl )
334 list( APPEND ALIB_CPP containers/detail/stringtreebase.cpp )
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/systemerrors.inl )
601 list( APPEND ALIB_INL system/path.inl )
602 list( APPEND ALIB_INL system/processinfo.inl )
603
604 list( APPEND ALIB_CPP system/console.cpp )
605 list( APPEND ALIB_CPP system/environment.cpp )
606 list( APPEND ALIB_CPP system/path.cpp )
607 list( APPEND ALIB_CPP system/processinfo.cpp )
608 if ( ${APPLE} )
609 list( APPEND ALIB_CPP system/path.mm )
610 endif()
611endif()
612
613if( "THREADMODEL" IN_LIST ALibBuild )
614 list( APPEND ALIB_H ALib.ThreadModel.H )
615 list( APPEND ALIB_MPP threadmodel/threadmodel.mpp )
616 list( APPEND ALIB_INL threadmodel/dedicatedworker.inl )
617 list( APPEND ALIB_INL threadmodel/jobs.inl )
618 list( APPEND ALIB_INL threadmodel/threadpool.inl )
619 list( APPEND ALIB_INL threadmodel/trigger.inl )
620
621 list( APPEND ALIB_CPP threadmodel/dedicatedworker.cpp )
622 list( APPEND ALIB_CPP threadmodel/threadpool.cpp )
623 list( APPEND ALIB_CPP threadmodel/trigger.cpp )
624endif()
625
626
627if( "FILES" IN_LIST ALibBuild )
628 list( APPEND ALIB_H ALib.Files.H )
629 list( APPEND ALIB_MPP files/files.mpp )
630 list( APPEND ALIB_HPP files/files.prepro.hpp )
631 list( APPEND ALIB_INL files/filescamp.inl )
632 list( APPEND ALIB_INL files/ffilter.inl )
633 list( APPEND ALIB_INL files/finfo.inl )
634 list( APPEND ALIB_INL files/fscanner.inl )
635 list( APPEND ALIB_INL files/ftree.inl )
636
637 list( APPEND ALIB_CPP files/filescamp.cpp )
638 list( APPEND ALIB_CPP files/file.cpp )
639 list( APPEND ALIB_CPP files/finfo.cpp )
640 list( APPEND ALIB_CPP files/fscanner.cpp )
641 list( APPEND ALIB_CPP files/ftree.cpp )
642
643 list( APPEND ALIB_H ALib.Files.TextFile.H )
644
645 if( "EXPRESSIONS" IN_LIST ALibBuild )
646 list( APPEND ALIB_H ALib.Files.Expressions.H )
647 list( APPEND ALIB_MPP files/expressions/fileexpressions.mpp )
648 list( APPEND ALIB_INL files/expressions/fileexpressions.inl )
649 list( APPEND ALIB_CPP files/expressions/fileexpressions.cpp )
650 endif()
651
652endif()
653
654
655
656
657# ##################################################################################################
658# Check for duplicates. This is a double-check to detect that this script needs a fix.
659# ##################################################################################################
660
661CollectAndRemoveDuplicates( "ALIB_HPP" "duplicates" )
662LIST( LENGTH duplicates cntDuplicates )
663
664IF( ${cntDuplicates} GREATER 0 )
665 message( ERROR "Internal script error ALIBSources.cmake: "
666 "DUPLICATE HPP FILES FOUND.\nSee list below! "
667 "(Processing continues with de-duplicated list)" )
668 message( STATUS "LIST OF DUPLICATE HPP FILES:" )
669 LIST(SORT duplicates)
670 FOREACH( entry IN LISTS duplicates )
671 message( STATUS " ${entry}" )
672 ENDFOREACH()
673 message( STATUS "(end of list)" )
674ENDIF()
675
676CollectAndRemoveDuplicates( "ALIB_INL" "duplicates" )
677LIST( LENGTH duplicates cntDuplicates )
678IF( ${cntDuplicates} GREATER 0 )
679 message( ERROR "Internal script error ALIBSources.cmake: "
680 "DUPLICATE INL FILES FOUND.\nSee list below! "
681 "(Processing continues with de-duplicated list)" )
682 message( STATUS "LIST OF DUPLICATE INL FILES:" )
683 LIST(SORT duplicates)
684 FOREACH( entry IN LISTS duplicates )
685 message( STATUS " ${entry}" )
686 ENDFOREACH()
687 message( STATUS "(end of list)" )
688ENDIF()
689
690CollectAndRemoveDuplicates( "ALIB_CPP" "duplicates" )
691LIST( LENGTH duplicates cntDuplicates )
692IF( ${cntDuplicates} GREATER 0 )
693 message( ERROR "Internal script error ALIBSources.cmake: "
694 "DUPLICATE CPP FILES FOUND.\nSee list below! "
695 "(Processing continues with de-duplicated list)" )
696 message( STATUS "LIST OF DUPLICATE CPP FILES:" )
697 LIST(SORT duplicates)
698 FOREACH( entry IN LISTS duplicates )
699 message( STATUS " ${entry}" )
700 ENDFOREACH()
701 message( STATUS "(end of list)" )
702ENDIF()
703CollectAndRemoveDuplicates( "ALIB_MPP" "duplicates" )
704LIST( LENGTH duplicates cntDuplicates )
705IF( ${cntDuplicates} GREATER 0 )
706 message( ERROR "Internal script error ALIBSources.cmake: "
707 "DUPLICATE MPP FILES FOUND.\nSee list below! "
708 "(Processing continues with de-duplicated list)" )
709 message( STATUS "LIST OF DUPLICATE MPP FILES:" )
710 LIST(SORT duplicates)
711 FOREACH( entry IN LISTS duplicates )
712 message( STATUS " ${entry}" )
713 ENDFOREACH()
714 message( STATUS "(end of list)" )
715ENDIF()
716# ##################################################################################################
717# Check for ".hpp" in header-files or ".cpp" in sources
718# ##################################################################################################
719FOREACH( entry IN LISTS ALIB_HPP )
720 IF( NOT ${entry} MATCHES "([.]hpp$)|([.]inl$)|([.]mpp$)" )
721 message( FATAL_ERROR "Non-header-file (wrong extension) found in header-file list: ${entry}" )
722 ENDIF()
723ENDFOREACH()
724
725FOREACH( entry IN LISTS ALIB_CPP )
726 IF( NOT ${entry} MATCHES "([.]cpp$)|([.]cppm$)|([.]mm$)" )
727 message( FATAL_ERROR "File with wrong extension found in source file list: ${entry}" )
728 ENDIF()
729ENDFOREACH()
730
731# ##################################################################################################
732# Copy sources if requested
733# ##################################################################################################
734
735if( ALIB_SOURCE_COPY_TARGET_DIR )
736
737 # check: must be single folder name (not a path)
738 string(FIND "${ALIB_SOURCE_COPY_TARGET_DIR}" "/" separatorPosUnix)
739 string(FIND "${ALIB_SOURCE_COPY_TARGET_DIR}" "\\" separatorPosWindows)
740
741 if(separatorPosUnix GREATER -1 OR separatorPosWindows GREATER -1)
742 MESSAGE(FATAL_ERROR "The given variable ALIB_SOURCE_COPY_TARGET_DIR=\"${ALIB_SOURCE_COPY_TARGET_DIR}\" "
743 "must be a folder name and not contain folder separators!")
744 endif()
745
746 # Prepend build directory
747 set(ALIB_SOURCE_COPY_TARGET_DIR "${CMAKE_BINARY_DIR}/${ALIB_SOURCE_COPY_TARGET_DIR}")
748
749 MESSAGE( STATUS "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
750 MESSAGE( STATUS "!!! ATTENTION: Copying sources. !!!")
751 MESSAGE( STATUS "!!! The destination directory will be deleted, hence !!!")
752 MESSAGE( STATUS "!!! CHANGES WILL BE LOST with next CMake run! !!!")
753 MESSAGE( STATUS "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
754 MESSAGE( STATUS "Copying source files of selected ALib modules to: ’${ALIB_SOURCE_COPY_TARGET_DIR}’")
755
756 # delete destination directory
757 MESSAGE( "Cleaning source-copy target directory ${ALIB_SOURCE_COPY_TARGET_DIR}" )
758 file( REMOVE_RECURSE ${ALIB_SOURCE_COPY_TARGET_DIR} )
759
760 #### Create directories units ####
761 foreach( fileName IN LISTS ALIB_H )
762 SET( destPath "${ALIB_SOURCE_COPY_TARGET_DIR}/ALib/${fileName}" )
763 get_filename_component(destPath ${destPath} DIRECTORY )
764 #MESSAGE("Copying file: ${ALIB_SOURCE_DIR}/ALib/${fileName}" )
765 #MESSAGE(" to: ${destPath}" )
766 file( MAKE_DIRECTORY "${destPath}")
767 file( COPY "${ALIB_SOURCE_DIR}/${fileName}" DESTINATION "${destPath}" )
768 endforeach()
769
770 foreach( fileName IN LISTS ALIB_MPP ALIB_INL ALIB_HPP ALIB_CPP )
771 SET( destPath "${ALIB_SOURCE_COPY_TARGET_DIR}/alib/${fileName}" )
772 get_filename_component(destPath ${destPath} DIRECTORY )
773 file( MAKE_DIRECTORY "${destPath}")
774 file( COPY "${ALIB_SOURCE_DIR}/alib/${fileName}" DESTINATION "${destPath}" )
775 endforeach()
776
777
778endif()
779
780
781# ##################################################################################################
782# Check if all given files exist and check all files are given
783# ##################################################################################################
784function(CheckFileInclusionForCompleteness fileList baseDir extension )
785 # Ensure the baseDir is an absolute path
786 if(NOT IS_ABSOLUTE "${baseDir}")
787 message(FATAL_ERROR "The provided baseDir '${baseDir}' must be an absolute path.")
788 endif()
789
790 # Step 1: Loop over the given list and check for file existence
791 foreach(file_path IN LISTS fileList)
792
793 # Form the absolute path of the file relative to baseDir
794 set(absolute_file_path "${baseDir}/${file_path}")
795
796 # Check if the file exists
797 if(NOT EXISTS "${absolute_file_path}")
798 message(WARNING "File does not exist: ${absolute_file_path}")
799 endif()
800
801 endforeach()
802
803 # Step 2: Glob the baseDir for all files with the given extension
804 file(GLOB_RECURSE found_files "${baseDir}/*.${extension}")
805
806 # Normalize the found files to be relative to baseDir, for easier comparison
807 set(relative_found_files "")
808 foreach(file_path IN LISTS found_files)
809 file(RELATIVE_PATH relative_file "${baseDir}" "${file_path}")
810 list(APPEND relative_found_files "${relative_file}")
811 endforeach()
812
813 # Step 3: Compare the globbed files with the provided file list
814 foreach(found_file IN LISTS relative_found_files)
815 # Check if the found file is in the list
816 list(FIND fileList "${found_file}" index)
817
818 if(${index} EQUAL -1)
819 message(WARNING "Found an untracked file: ${found_file}")
820 endif()
821 endforeach()
822endfunction()
823
824# ##################################################################################################
825# Check if all given files have one of the given extensions
826# ##################################################################################################
827function(ValidateFileExtensions filenames_var extensions_var)
828 # Dereference the input variable names to get their values
829 set(filenames ${${filenames_var}})
830 set(extensions ${${extensions_var}})
831
832 # Debug information
833 #string(JOIN " " actual_filenames ${filenames})
834 #string(JOIN " " allowed_extensions ${extensions})
835 #message(STATUS "Validating files: ${actual_filenames}")
836 #message(STATUS "Allowed extensions: ${allowed_extensions}")
837
838 # Iterate over each filename
839 foreach(filename IN LISTS filenames)
840 # Extract the file extension using regex
841 string(REGEX MATCH "\\.[^.]*$" file_extension "${filename}")
842
843 # Remove the dot from the extension
844 string(REGEX REPLACE "\\." "" clean_extension "${file_extension}")
845
846 # Check if the extension is in the allowed list
847 list(FIND extensions "${clean_extension}" index)
848
849 if(${index} EQUAL -1) # -1 means the extension is invalid
850 message(FATAL_ERROR "File '${filename}' has an invalid extension: '${clean_extension}'. Allowed extensions are: ${allowed_extensions}")
851 endif()
852 endforeach()
853
854 # Success message if all extensions are valid
855 #message(STATUS "All files have valid extensions.")
856endfunction()
857
858# ##################################################################################################
859# Add base directory to files
860# ##################################################################################################
861function(AddBaseDir baseDir sourceListVar )
862 SET(temp "") # Temporary list to store valid files
863
864 # Iterate over the files in the provided list
865 foreach(fileName IN LISTS "${sourceListVar}")
866 if(EXISTS "${baseDir}/${fileName}")
867 LIST(APPEND temp "${baseDir}/${fileName}")
868 else()
869 message(FATAL_ERROR "Source file not found: ${baseDir}/${fileName}")
870 endif()
871 endforeach()
872
873 # Set output variable with processed list
874 SET("${sourceListVar}" "${temp}" PARENT_SCOPE)
875endfunction()
876
877if(ALibAllModules)
878 CheckFileInclusionForCompleteness( "${ALIB_H}" "${ALIB_SOURCE_DIR}" "H" )
879 CheckFileInclusionForCompleteness( "${ALIB_MPP}" "${ALIB_SOURCE_DIR}/alib" "mpp" )
880 CheckFileInclusionForCompleteness( "${ALIB_INL}" "${ALIB_SOURCE_DIR}/alib" "inl" )
881 CheckFileInclusionForCompleteness( "${ALIB_CPP}" "${ALIB_SOURCE_DIR}/alib" "cpp" )
882 CheckFileInclusionForCompleteness( "${ALIB_HPP}" "${ALIB_SOURCE_DIR}/alib" "hpp" )
883endif()
884set(allowedExtensions "H" "hpp" )
885 ValidateFileExtensions(ALIB_H allowedExtensions)
886set(allowedExtensions "mpp" )
887 ValidateFileExtensions(ALIB_MPP allowedExtensions)
888set(allowedExtensions "inl" )
889 ValidateFileExtensions(ALIB_INL allowedExtensions)
890set(allowedExtensions "hpp" )
891 ValidateFileExtensions(ALIB_HPP allowedExtensions)
892set(allowedExtensions "cpp" "mm" )
893 ValidateFileExtensions(ALIB_CPP allowedExtensions)
894AddBaseDir("${ALIB_SOURCE_DIR}" ALIB_H )
895AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_MPP )
896AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_INL )
897AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_HPP )
898AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_CPP )
899