1# ##################################################################################################
2# ALibSources.cmake - CMake file for projects using ALib
4# Copyright 2013-2025 A-Worx GmbH, Germany
5# Published under 'Boost Software License' (a free software license, see LICENSE.txt)
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
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 )
31# ---------- general files, always included -------
34list( APPEND ALIB_H ALib.Lang.CIFunctions.H )
35list( APPEND ALIB_H ALib.Lang.CIMethods.H )
37list( APPEND ALIB_INL alib.inl )
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 )
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 )
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 )
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 )
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 )
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 )
104 list( APPEND ALIB_CPP threads/thread.cpp )
105 list( APPEND ALIB_CPP threads/locks.cpp )
108list( APPEND ALIB_INL characters/chartypes.inl )
109list( APPEND ALIB_INL characters/chartraits.inl )
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 )
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 )
128################################# Normal Modules #############################
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
241 # additions from lower-level modules
242 list( APPEND ALIB_INL camp/loadtokens.inl )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
356 list( APPEND ALIB_CPP enumrecords/records.cpp )
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 )
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 )
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 )
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 )
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 )
401 list( APPEND ALIB_CPP expressions/parser.cpp )
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 )
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 )
416 list( APPEND ALIB_INL expressions/util/expressionformatter.inl )
417 list( APPEND ALIB_CPP expressions/util/expressionformatter.cpp )
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 )
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 )
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 )
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 )
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 )
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 )
464 list( APPEND ALIB_H ALib.Format.PropertyFormatters.H )
465 list( APPEND ALIB_MPP format/propertyformatters.mpp )
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 )
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 )
486 list( APPEND ALIB_H ALib.Monomem.StdContainers.H )
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 )
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 )
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 )
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 )
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 )
529 list( APPEND ALIB_H ALib.Compatibility.StdStrings.H )
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 )
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 )
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 )
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 )
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 )
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 )
565 list( APPEND ALIB_H ALib.Strings.Vector.H )
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 )
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 )
584 list( APPEND ALIB_CPP resources/localresourcepool.cpp )
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 )
592if( "SYSTEM" IN_LIST ALibBuild )
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 )
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 )
611 list( APPEND ALIB_CPP system/path.mm )
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 )
623 list( APPEND ALIB_CPP threadmodel/dedicatedworker.cpp )
624 list( APPEND ALIB_CPP threadmodel/threadpool.cpp )
625 list( APPEND ALIB_CPP threadmodel/trigger.cpp )
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 )
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 )
645 list( APPEND ALIB_H ALib.Files.TextFile.H )
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 )
659# ##################################################################################################
660# Check for duplicates. This is a double-check to detect that this script needs a fix.
661# ##################################################################################################
663CollectAndRemoveDuplicates( "ALIB_HPP" "duplicates" )
664LIST( LENGTH duplicates cntDuplicates )
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}" )
675 message( STATUS "(end of list)" )
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}" )
689 message( STATUS "(end of list)" )
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}" )
703 message( STATUS "(end of list)" )
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}" )
716 message( STATUS "(end of list)" )
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}" )
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}" )
733# ##################################################################################################
734# Copy sources if requested
735# ##################################################################################################
737if( ALIB_SOURCE_COPY_TARGET_DIR )
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)
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!")
748 # Prepend build directory
749 set(ALIB_SOURCE_COPY_TARGET_DIR "${CMAKE_BINARY_DIR}/${ALIB_SOURCE_COPY_TARGET_DIR}")
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}’")
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} )
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}" )
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}" )
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.")
792 # Step 1: Loop over the given list and check for file existence
793 foreach(file_path IN LISTS fileList)
795 # Form the absolute path of the file relative to baseDir
796 set(absolute_file_path "${baseDir}/${file_path}")
798 # Check if the file exists
799 if(NOT EXISTS "${absolute_file_path}")
800 message(WARNING "File does not exist: ${absolute_file_path}")
805 # Step 2: Glob the baseDir for all files with the given extension
806 file(GLOB_RECURSE found_files "${baseDir}/*.${extension}")
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}")
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)
820 if(${index} EQUAL -1)
821 message(WARNING "Found an untracked file: ${found_file}")
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}})
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}")
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}")
845 # Remove the dot from the extension
846 string(REGEX REPLACE "\\." "" clean_extension "${file_extension}")
848 # Check if the extension is in the allowed list
849 list(FIND extensions "${clean_extension}" index)
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}")
856 # Success message if all extensions are valid
857 #message(STATUS "All files have valid extensions.")
860# ##################################################################################################
861# Add base directory to files
862# ##################################################################################################
863function(AddBaseDir baseDir sourceListVar )
864 SET(temp "") # Temporary list to store valid files
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}")
871 message(FATAL_ERROR "Source file not found: ${baseDir}/${fileName}")
875 # Set output variable with processed list
876 SET("${sourceListVar}" "${temp}" PARENT_SCOPE)
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" )
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 )