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 )
110list( APPEND ALIB_INL characters/chartraits_stdtypes.inl )
112list( APPEND ALIB_H ALib.Characters.Functions.H )
113list( APPEND ALIB_MPP characters/functions.mpp )
114list( APPEND ALIB_INL characters/functions.inl )
115list( APPEND ALIB_CPP characters/functions.cpp )
116list( APPEND ALIB_H ALib.Compatibility.QTCharacters.H )
118list( APPEND ALIB_H ALib.EnumOps.H )
119list( APPEND ALIB_MPP enumops/enumops.mpp )
120list( APPEND ALIB_HPP enumops/enumops.prepro.hpp )
121list( APPEND ALIB_INL enumops/underlyingintegral.inl )
122list( APPEND ALIB_INL enumops/arithmetical.inl )
123list( APPEND ALIB_INL enumops/bitwise.inl )
124list( APPEND ALIB_INL enumops/iterable.inl )
125list( APPEND ALIB_INL enumops/iterablebitset.inl )
126list( APPEND ALIB_INL enumops/bitwise_iterable_conversion.inl )
129################################# Normal Modules #############################
131if( "ALOX" IN_LIST ALibBuild )
132 list( APPEND ALIB_H ALib.ALox.H )
133 list( APPEND ALIB_H ALib.ALox.Impl.H )
134 list( APPEND ALIB_MPP alox/alox_init.mpp )
135 list( APPEND ALIB_INL alox/alox_init.inl )
136 list( APPEND ALIB_MPP alox/alox_impl.mpp )
137 list( APPEND ALIB_MPP alox/alox.mpp )
138 list( APPEND ALIB_HPP alox/alox.prepro.hpp )
139 list( APPEND ALIB_INL alox/aloxcamp.inl )
140 list( APPEND ALIB_INL alox/log.inl )
141 list( APPEND ALIB_INL alox/logtools.inl )
142 list( APPEND ALIB_INL alox/lox.inl )
144 list( APPEND ALIB_CPP alox/aloxcamp.cpp )
145 list( APPEND ALIB_CPP alox/aloxinit.cpp )
146 list( APPEND ALIB_CPP alox/alox.cpp )
147 list( APPEND ALIB_CPP alox/logtools.cpp )
149 list( APPEND ALIB_INL alox/detail/domain.inl )
150 list( APPEND ALIB_INL alox/detail/logger.inl )
151 list( APPEND ALIB_INL alox/detail/loxpimpl.inl )
152 list( APPEND ALIB_INL alox/detail/scopedump.inl )
153 list( APPEND ALIB_INL alox/detail/scopeinfo.inl )
154 list( APPEND ALIB_INL alox/detail/scopestore.inl )
156 list( APPEND ALIB_CPP alox/detail/domain.cpp )
157 list( APPEND ALIB_CPP alox/detail/loxpimpl.cpp )
158 list( APPEND ALIB_CPP alox/detail/scopedump.cpp )
159 list( APPEND ALIB_CPP alox/detail/scopeinfo.cpp )
160 list( APPEND ALIB_CPP alox/detail/scopestore.cpp )
162 list( APPEND ALIB_INL alox/textlogger/plaintextlogger.inl )
163 list( APPEND ALIB_INL alox/textlogger/textlogger.inl )
164 list( APPEND ALIB_INL alox/textlogger/variables.inl )
165 list( APPEND ALIB_CPP alox/textlogger/plaintextlogger.cpp )
166 list( APPEND ALIB_CPP alox/textlogger/textlogger.cpp )
167 list( APPEND ALIB_CPP alox/textlogger/variables.cpp )
169 list( APPEND ALIB_INL alox/loggers/ansilogger.inl )
170 list( APPEND ALIB_INL alox/loggers/consolelogger.inl )
171 list( APPEND ALIB_INL alox/loggers/memorylogger.inl )
172 list( APPEND ALIB_INL alox/loggers/textfilelogger.inl )
173 list( APPEND ALIB_INL alox/loggers/vstudiologger.inl )
174 list( APPEND ALIB_INL alox/loggers/windowsconsolelogger.inl )
176 list( APPEND ALIB_CPP alox/loggers/ansilogger.cpp )
177 list( APPEND ALIB_CPP alox/loggers/consolelogger.cpp )
178 list( APPEND ALIB_CPP alox/loggers/textfilelogger.cpp )
179 list( APPEND ALIB_CPP alox/loggers/vstudiologger.cpp )
180 list( APPEND ALIB_CPP alox/loggers/windowsconsolelogger.cpp )
184if( "APP" IN_LIST ALibBuild )
185 list( APPEND ALIB_H ALib.App.H )
186 list( APPEND ALIB_H ALib.App.CLI.H )
187 list( APPEND ALIB_HPP app/app.prepro.hpp )
188 list( APPEND ALIB_MPP app/app.mpp )
189 list( APPEND ALIB_INL app/app.inl )
190 list( APPEND ALIB_MPP app/appcli.mpp )
191 list( APPEND ALIB_INL app/appcli.inl )
192 list( APPEND ALIB_INL app/appclicamp.inl )
193 list( APPEND ALIB_INL app/appclienums.inl )
195 list( APPEND ALIB_CPP app/app.cpp )
196 list( APPEND ALIB_CPP app/appcli.cpp )
197 list( APPEND ALIB_CPP app/appclicamp.cpp )
200if( "BITBUFFER" IN_LIST ALibBuild )
201 list( APPEND ALIB_H ALib.BitBuffer.H )
202 list( APPEND ALIB_MPP bitbuffer/bitbuffer.mpp )
203 list( APPEND ALIB_HPP bitbuffer/bitbuffer.prepro.hpp )
204 list( APPEND ALIB_INL bitbuffer/arraycompressor.inl )
205 list( APPEND ALIB_INL bitbuffer/bitbuffer.inl )
206 list( APPEND ALIB_INL bitbuffer/ac_v1/acalgos.inl.inl )
207 list( APPEND ALIB_INL bitbuffer/ac_v1/ac.inl )
208 list( APPEND ALIB_INL bitbuffer/ac_v1/huffman.inl )
210 list( APPEND ALIB_CPP bitbuffer/bitbuffer.cpp )
211 list( APPEND ALIB_CPP bitbuffer/ac_v1/ac.cpp )
212 list( APPEND ALIB_CPP bitbuffer/ac_v1/huffman.cpp )
215if( "BOXING" IN_LIST ALibBuild )
216 list( APPEND ALIB_H ALib.Boxing.H )
217 list( APPEND ALIB_MPP boxing/boxing.mpp )
218 list( APPEND ALIB_HPP boxing/boxing.prepro.hpp )
219 list( APPEND ALIB_INL boxing/box.inl )
220 list( APPEND ALIB_INL boxing/boxes.inl )
221 list( APPEND ALIB_INL boxing/boxstrap.inl )
222 list( APPEND ALIB_INL boxing/enum.inl )
223 list( APPEND ALIB_INL boxing/placeholder.inl )
224 list( APPEND ALIB_INL boxing/boxingtraits.inl )
225 list( APPEND ALIB_INL boxing/boxing_debug.inl )
227 list( APPEND ALIB_INL boxing/boxingcustoms.inl.inl )
228 list( APPEND ALIB_INL boxing/functiondecls.inl )
229 list( APPEND ALIB_INL boxing/functiondefs.inl.inl )
230 list( APPEND ALIB_INL boxing/detail/vtable.inl )
232 list( APPEND ALIB_CPP boxing/boxstrap.cpp )
233 list( APPEND ALIB_CPP boxing/boxes.cpp )
234 list( APPEND ALIB_CPP boxing/box.cpp )
235 list( APPEND ALIB_CPP boxing/detail/vtable.cpp )
236 list( APPEND ALIB_CPP boxing/detail/boxingcustoms.cpp )
237 list( APPEND ALIB_CPP boxing/detail/dbgdoublelengthcheck.cpp )
238 list( APPEND ALIB_CPP boxing/boxing_debug.cpp )
240 list( APPEND ALIB_H ALib.Boxing.StdFunctors.H )
241 list( APPEND ALIB_H ALib.Compatibility.StdBoxtraits.H )
242 list( APPEND ALIB_H ALib.Compatibility.QTBoxing.H )
244 if( "STRINGS" IN_LIST ALibBuild )
245 list( APPEND ALIB_INL boxing/strings_appendables.inl )
246 list( APPEND ALIB_INL boxing/extensions/strings_tfield.inl )
247 list( APPEND ALIB_CPP boxing/extensions/strings_tfield.cpp )
252if( "CAMP" IN_LIST ALibBuild )
253 list( APPEND ALIB_H ALib.Camp.H )
254 list( APPEND ALIB_MPP camp/camp.mpp )
255 list( APPEND ALIB_HPP camp/camp.prepro.hpp )
256 list( APPEND ALIB_INL camp/camp.inl )
258 # additions from lower-level modules
259 list( APPEND ALIB_INL camp/loadtokens.inl )
262 list( APPEND ALIB_H ALib.Camp.Base.H )
263 list( APPEND ALIB_MPP camp/basecamp.mpp )
264 list( APPEND ALIB_CPP camp/basecamp.cpp )
267if( "CLI" IN_LIST ALibBuild )
268 list( APPEND ALIB_H ALib.CLI.H )
269 list( APPEND ALIB_MPP cli/cli.mpp )
270 list( APPEND ALIB_INL cli/arguments.inl )
271 list( APPEND ALIB_INL cli/clicamp.inl )
272 list( APPEND ALIB_INL cli/cliutil.inl )
273 list( APPEND ALIB_INL cli/commandline.inl )
275 list( APPEND ALIB_CPP cli/arguments.cpp )
276 list( APPEND ALIB_CPP cli/clicamp.cpp )
277 list( APPEND ALIB_CPP cli/cliutil.cpp )
278 list( APPEND ALIB_CPP cli/commandline.cpp )
281if( "VARIABLES" IN_LIST ALibBuild )
282 list( APPEND ALIB_H ALib.Variables.H )
283 list( APPEND ALIB_MPP variables/variables.mpp )
284 list( APPEND ALIB_HPP variables/variables.prepro.hpp )
285 list( APPEND ALIB_INL variables/erpriority.inl )
286 list( APPEND ALIB_INL variables/vmeta.inl )
287 list( APPEND ALIB_INL variables/declaration.inl )
288 list( APPEND ALIB_INL variables/configuration.inl )
289 list( APPEND ALIB_CPP variables/configuration.cpp )
290 list( APPEND ALIB_CPP variables/vmeta.cpp )
291 list( APPEND ALIB_CPP variables/variable.cpp )
293 list( APPEND ALIB_H ALib.Variables.Plugins.H )
294 list( APPEND ALIB_MPP variables/plugins.mpp )
295 list( APPEND ALIB_CPP variables/plugins.cpp )
297 list( APPEND ALIB_H ALib.Variables.IniFile.H )
298 list( APPEND ALIB_MPP variables/inifile.mpp )
299 list( APPEND ALIB_INL variables/inifile.inl )
300 list( APPEND ALIB_INL variables/inifilefeeder.inl )
301 list( APPEND ALIB_CPP variables/inifile.cpp )
302 list( APPEND ALIB_CPP variables/inifilefeeder.cpp )
304 list( APPEND ALIB_H ALib.Variables.ResourcePool.H )
305 list( APPEND ALIB_MPP variables/configresourcepool.mpp )
306 list( APPEND ALIB_CPP variables/configresourcepool.cpp )
312if( "CONTAINERS" IN_LIST ALibBuild )
313 list( APPEND ALIB_HPP containers/containers.prepro.hpp )
314 list( APPEND ALIB_INL containers/recycling.inl )
315 list( APPEND ALIB_INL containers/valuedescriptor.inl )
317 list( APPEND ALIB_H ALib.Containers.FixedCapacityVector.H )
318 list( APPEND ALIB_MPP containers/fixedcapacityvector.mpp )
319 list( APPEND ALIB_INL containers/fixedcapacityvector.inl )
321 list( APPEND ALIB_H ALib.Containers.HashTable.H )
322 list( APPEND ALIB_MPP containers/hashtable.mpp )
323 list( APPEND ALIB_INL containers/detail/hashtablebase.inl )
324 list( APPEND ALIB_INL containers/hashtable.inl )
325 list( APPEND ALIB_CPP containers/detail/hashtablebase.cpp )
327 list( APPEND ALIB_H ALib.Containers.List.H )
328 list( APPEND ALIB_MPP containers/list.mpp )
329 list( APPEND ALIB_INL containers/list.inl )
331 list( APPEND ALIB_H ALib.Containers.LRUCacheTable.H )
332 list( APPEND ALIB_MPP containers/lrucachetable.mpp )
333 list( APPEND ALIB_INL containers/lrucachetable.inl )
335 list( APPEND ALIB_H ALib.Containers.SharedPtr.H )
336 list( APPEND ALIB_MPP containers/sharedptr.mpp )
337 list( APPEND ALIB_INL containers/sharedptr.inl )
339 list( APPEND ALIB_H ALib.Containers.SharedVal.H )
340 list( APPEND ALIB_MPP containers/sharedval.mpp )
341 list( APPEND ALIB_INL containers/sharedval.inl )
343 if( "STRINGS" IN_LIST ALibBuild )
344 list( APPEND ALIB_H ALib.Containers.StringTree.H )
345 list( APPEND ALIB_MPP containers/stringtree.mpp )
346 list( APPEND ALIB_INL containers/stringtree.inl )
347 list( APPEND ALIB_INL containers/detail/stringtreebase.inl )
348 list( APPEND ALIB_CPP containers/detail/stringtreebase.cpp )
349 list( APPEND ALIB_H ALib.Containers.StringTreeIterator.H )
350 list( APPEND ALIB_MPP containers/stringtreeiterator.mpp )
351 list( APPEND ALIB_INL containers/stringtreeiterator.inl )
356if( "ENUMRECORDS" IN_LIST ALibBuild )
357 list( APPEND ALIB_H ALib.EnumRecords.H )
358 list( APPEND ALIB_MPP enumrecords/enumrecords.mpp )
359 list( APPEND ALIB_HPP enumrecords/enumrecords.prepro.hpp )
360 list( APPEND ALIB_INL enumrecords/detail/enumrecordmap.inl )
361 list( APPEND ALIB_INL enumrecords/records.inl )
362 list( APPEND ALIB_INL enumrecords/serialization.inl )
363 list( APPEND ALIB_INL enumrecords/builtin.inl )
365 list( APPEND ALIB_H ALib.EnumRecords.Bootstrap.H )
366 list( APPEND ALIB_MPP enumrecords/bootstrap/recordbootstrap.mpp )
367 list( APPEND ALIB_INL enumrecords/bootstrap/recordparser.inl )
368 list( APPEND ALIB_INL enumrecords/bootstrap/recordbootstrap.inl )
369 list( APPEND ALIB_CPP enumrecords/bootstrap/recordparser.cpp )
370 if( "BOXING" IN_LIST ALibBuild )
371 list( APPEND ALIB_INL enumrecords/boxing_enums.inl )
373 list( APPEND ALIB_CPP enumrecords/records.cpp )
377if( "EXCEPTIONS" IN_LIST ALibBuild )
378 list( APPEND ALIB_H ALib.Exceptions.H )
379 list( APPEND ALIB_MPP exceptions/exceptions.mpp )
380 list( APPEND ALIB_INL exceptions/message.inl )
381 list( APPEND ALIB_INL exceptions/exception.inl )
382 list( APPEND ALIB_CPP exceptions/exception.cpp )
385if( "EXPRESSIONS" IN_LIST ALibBuild )
386 list( APPEND ALIB_H ALib.Expressions.H )
387 list( APPEND ALIB_H ALib.Expressions.Impl.H )
388 list( APPEND ALIB_MPP expressions/expressions.mpp )
389 list( APPEND ALIB_MPP expressions/expressions_impl.mpp )
390 list( APPEND ALIB_INL expressions/detail/ast.inl )
391 list( APPEND ALIB_INL expressions/parser.inl )
392 list( APPEND ALIB_HPP expressions/expressions.prepro.hpp )
393 list( APPEND ALIB_INL expressions/expressionscamp.inl )
394 list( APPEND ALIB_INL expressions/compiler.inl )
395 list( APPEND ALIB_INL expressions/compilerplugin.inl )
396 list( APPEND ALIB_INL expressions/expression.inl )
397 list( APPEND ALIB_INL expressions/scope.inl )
398 list( APPEND ALIB_INL expressions/standardrepository.inl )
400 list( APPEND ALIB_INL expressions/detail/ast_impl.inl )
401 list( APPEND ALIB_INL expressions/detail/parser_impl.inl )
402 list( APPEND ALIB_INL expressions/detail/program.inl )
403 list( APPEND ALIB_INL expressions/detail/virtualmachine.inl )
405 list( APPEND ALIB_INL expressions/plugins/arithmetics.inl )
406 list( APPEND ALIB_INL expressions/plugins/autocast.inl )
407 list( APPEND ALIB_INL expressions/plugins/calculus.inl )
408 list( APPEND ALIB_INL expressions/plugins/dateandtime.inl )
409 list( APPEND ALIB_INL expressions/plugins/elvisoperator.inl )
410 list( APPEND ALIB_INL expressions/plugins/math.inl )
411 list( APPEND ALIB_INL expressions/plugins/strings.inl )
413 list( APPEND ALIB_CPP expressions/expressionscamp.cpp )
414 list( APPEND ALIB_CPP expressions/compiler.cpp )
415 list( APPEND ALIB_CPP expressions/expression.cpp )
416 list( APPEND ALIB_CPP expressions/standardrepository.cpp )
418 list( APPEND ALIB_CPP expressions/parser.cpp )
420 list( APPEND ALIB_CPP expressions/detail/ast.cpp )
421 list( APPEND ALIB_CPP expressions/detail/parser_impl.cpp )
422 list( APPEND ALIB_CPP expressions/detail/program.cpp )
423 list( APPEND ALIB_CPP expressions/detail/virtualmachine.cpp )
425 list( APPEND ALIB_CPP expressions/plugins/arithmetics.cpp )
426 list( APPEND ALIB_CPP expressions/plugins/autocast.cpp )
427 list( APPEND ALIB_CPP expressions/plugins/calculus.cpp )
428 list( APPEND ALIB_CPP expressions/plugins/elvisoperator.cpp )
429 list( APPEND ALIB_CPP expressions/plugins/math.cpp )
430 list( APPEND ALIB_CPP expressions/plugins/strings.cpp )
431 list( APPEND ALIB_CPP expressions/plugins/dateandtime.cpp )
433 list( APPEND ALIB_INL expressions/util/expressionformatter.inl )
434 list( APPEND ALIB_CPP expressions/util/expressionformatter.cpp )
438if( "FORMAT" IN_LIST ALibBuild )
439 list( APPEND ALIB_H ALib.Format.H )
440 list( APPEND ALIB_MPP format/format.mpp )
441 list( APPEND ALIB_INL format/formatter.inl )
442 list( APPEND ALIB_INL format/fmtexceptions.inl )
443 list( APPEND ALIB_INL format/bytesize.inl )
444 list( APPEND ALIB_INL format/fmtcallerinfo.inl )
445 list( APPEND ALIB_INL format/fmtdatetime.inl )
446 list( APPEND ALIB_INL format/extensions/containers_hashtable.inl )
447 list( APPEND ALIB_INL format/extensions/boxing_format_debug.inl )
448 list( APPEND ALIB_INL format/extensions/resources_debug.inl )
449 list( APPEND ALIB_CPP format/formatter.cpp )
450 list( APPEND ALIB_CPP format/fmtvarious.cpp )
451 list( APPEND ALIB_CPP format/extensions/boxing_format_debug.cpp )
452 list( APPEND ALIB_CPP format/extensions/resources_debug.cpp )
456 list( APPEND ALIB_H ALib.Format.StdImplementation.H )
457 list( APPEND ALIB_MPP format/formatterstdimpl.mpp )
458 list( APPEND ALIB_INL format/formatterstdimpl.inl )
459 list( APPEND ALIB_CPP format/formatterstdimpl.cpp )
461 list( APPEND ALIB_H ALib.Format.FormatterPythonStyle.H)
462 list( APPEND ALIB_MPP format/formatterpythonstyle.mpp )
463 list( APPEND ALIB_INL format/formatterpythonstyle.inl )
464 list( APPEND ALIB_CPP format/formatterpythonstyle.cpp )
466 list( APPEND ALIB_H ALib.Format.FormatterJavaStyle.H )
467 list( APPEND ALIB_MPP format/formatterjavastyle.mpp )
468 list( APPEND ALIB_INL format/formatterjavastyle.inl )
469 list( APPEND ALIB_CPP format/formatterjavastyle.cpp )
471 list( APPEND ALIB_H ALib.Format.Paragraphs.H )
472 list( APPEND ALIB_MPP format/paragraphs.mpp )
473 list( APPEND ALIB_INL format/paragraphs.inl )
474 list( APPEND ALIB_CPP format/paragraphs.cpp )
476 list( APPEND ALIB_H ALib.Format.PropertyFormatter.H )
477 list( APPEND ALIB_MPP format/propertyformatter.mpp )
478 list( APPEND ALIB_INL format/propertyformatter.inl )
479 list( APPEND ALIB_CPP format/propertyformatter.cpp )
481 list( APPEND ALIB_H ALib.Format.PropertyFormatters.H )
482 list( APPEND ALIB_MPP format/propertyformatters.mpp )
488if( "MONOMEM" IN_LIST ALibBuild )
489 list( APPEND ALIB_H ALib.Monomem.H )
490 list( APPEND ALIB_MPP monomem/monomem.mpp )
491 list( APPEND ALIB_HPP monomem/monomem.prepro.hpp )
492 list( APPEND ALIB_INL monomem/monoallocator.inl )
493 list( APPEND ALIB_INL monomem/monoallocator.t.inl )
494 list( APPEND ALIB_INL monomem/localallocator.inl )
495 list( APPEND ALIB_INL monomem/poolallocator.inl )
496 list( APPEND ALIB_INL monomem/poolallocator.t.inl )
497 list( APPEND ALIB_CPP monomem/monomem.cpp )
499 list( APPEND ALIB_H ALib.Monomem.SharedMonoVal.H )
500 list( APPEND ALIB_MPP monomem/sharedmonoval.mpp )
501 list( APPEND ALIB_INL monomem/sharedmonoval.inl )
503 list( APPEND ALIB_H ALib.Monomem.StdContainers.H )
507if( "SINGLETONS" IN_LIST ALibBuild )
508 list( APPEND ALIB_H ALib.Singletons.H )
509 list( APPEND ALIB_MPP singletons/singletons.mpp )
510 list( APPEND ALIB_HPP singletons/singletons.prepro.hpp )
511 list( APPEND ALIB_CPP singletons/singletons.cpp )
514if( "STRINGS" IN_LIST ALibBuild )
515 list( APPEND ALIB_H ALib.Strings.H )
516 list( APPEND ALIB_H ALib.Strings.StdFormatter.H )
518 list( APPEND ALIB_MPP strings/strings.mpp )
519 list( APPEND ALIB_HPP strings/strings.prepro.hpp )
520 list( APPEND ALIB_INL strings/appendables.inl )
521 list( APPEND ALIB_INL strings/astring.inl )
522 list( APPEND ALIB_INL strings/cstring.inl )
523 list( APPEND ALIB_INL strings/format.inl )
524 list( APPEND ALIB_INL strings/numberformat.inl )
525 list( APPEND ALIB_INL strings/localstring.inl )
526 list( APPEND ALIB_INL strings/string.inl )
527 list( APPEND ALIB_INL strings/stringnzt.inl )
528 list( APPEND ALIB_INL strings/substring.inl )
529 list( APPEND ALIB_INL strings/detail/tastring.inl )
530 list( APPEND ALIB_INL strings/detail/tastringimpl.inl )
532 list( APPEND ALIB_INL strings/detail/tastring_ca_decl.inl.inl )
533 list( APPEND ALIB_INL strings/detail/tastring_ca_impl.inl.inl )
534 list( APPEND ALIB_INL strings/detail/numberconversion.inl )
536 list( APPEND ALIB_CPP strings/astring.cpp )
537 list( APPEND ALIB_CPP strings/numberformat.cpp )
538 list( APPEND ALIB_CPP strings/string.cpp )
539 list( APPEND ALIB_CPP strings/substring.cpp )
540 list( APPEND ALIB_CPP strings/detail/numberconversion.cpp )
542 list( APPEND ALIB_H ALib.Compatibility.QTStrings.H )
543 list( APPEND ALIB_H ALib.Strings.StdFunctors.H )
544 list( APPEND ALIB_H ALib.Strings.StdIOStream.H )
545 list( APPEND ALIB_MPP strings/stdiostream.mpp )
546 list( APPEND ALIB_CPP strings/stdiostream.cpp )
549 list( APPEND ALIB_H ALib.Strings.Tokenizer.H )
550 list( APPEND ALIB_MPP strings/util/tokenizer.mpp )
551 list( APPEND ALIB_INL strings/util/tokenizer.inl )
552 list( APPEND ALIB_CPP strings/util/tokenizer.cpp )
554 list( APPEND ALIB_H ALib.Strings.Escaper.H )
555 list( APPEND ALIB_MPP strings/util/escaper.mpp )
556 list( APPEND ALIB_INL strings/util/escaper.inl )
557 list( APPEND ALIB_CPP strings/util/escaper.cpp )
559 list( APPEND ALIB_H ALib.Strings.Search.H )
560 list( APPEND ALIB_MPP strings/util/search.mpp )
561 list( APPEND ALIB_INL strings/util/search.inl )
562 list( APPEND ALIB_INL strings/util/regexmatcher.inl )
563 list( APPEND ALIB_INL strings/util/wildcardmatcher.inl )
564 list( APPEND ALIB_CPP strings/util/search.cpp )
565 list( APPEND ALIB_CPP strings/util/regexmatcher.cpp )
566 list( APPEND ALIB_CPP strings/util/wildcardmatcher.cpp )
568 list( APPEND ALIB_H ALib.Strings.Calendar.H )
569 list( APPEND ALIB_MPP strings/util/calendar.mpp )
570 list( APPEND ALIB_INL strings/util/calendar.inl )
571 list( APPEND ALIB_CPP strings/util/calendar.cpp )
573 list( APPEND ALIB_H ALib.Strings.Token.H )
574 list( APPEND ALIB_MPP strings/util/token.mpp )
575 list( APPEND ALIB_INL strings/util/token.inl )
576 list( APPEND ALIB_CPP strings/util/token.cpp )
578 list( APPEND ALIB_H ALib.Strings.AutoSizes.H )
579 list( APPEND ALIB_MPP strings/util/autosizes.mpp )
580 list( APPEND ALIB_INL strings/util/autosizes.inl )
581 list( APPEND ALIB_CPP strings/util/autosizes.cpp )
583 list( APPEND ALIB_H ALib.Strings.Vector.H )
586 if( "MONOMEM" IN_LIST ALibBuild )
587 list( APPEND ALIB_H ALib.Strings.Monomem.H )
588 list( APPEND ALIB_MPP strings/monomem/strings_monomem.mpp )
589 list( APPEND ALIB_INL strings/monomem/strings_monomem.t.inl )
590 list( APPEND ALIB_CPP strings/monomem/strings_monomem.cpp )
594if( "RESOURCES" IN_LIST ALibBuild )
595 list( APPEND ALIB_H ALib.Resources.H )
596 list( APPEND ALIB_MPP resources/resources.mpp )
597 list( APPEND ALIB_HPP resources/resources.prepro.hpp )
598 list( APPEND ALIB_INL resources/resources.inl )
599 list( APPEND ALIB_INL resources/detail/resourcemap.inl )
600 list( APPEND ALIB_INL resources/localresourcepool.inl )
602 list( APPEND ALIB_CPP resources/localresourcepool.cpp )
604 # additions from lower-level modules
605 list( APPEND ALIB_INL resources/extensions/enums_serialization.inl )
606 list( APPEND ALIB_INL resources/extensions/strings_loadtokens.inl )
607 list( APPEND ALIB_CPP resources/extensions/strings_loadtokens.cpp )
610if( "SYSTEM" IN_LIST ALibBuild )
613 list( APPEND ALIB_H ALib.System.H )
614 list( APPEND ALIB_MPP system/system.mpp )
615 list( APPEND ALIB_HPP system/system.prepro.hpp )
616 list( APPEND ALIB_INL system/console.inl )
617 list( APPEND ALIB_INL system/environment.inl )
618 list( APPEND ALIB_INL system/path.inl )
619 list( APPEND ALIB_INL system/processinfo.inl )
620 list( APPEND ALIB_INL system/shellcommand.inl )
622 list( APPEND ALIB_CPP system/console.cpp )
623 list( APPEND ALIB_CPP system/environment.cpp )
624 list( APPEND ALIB_CPP system/path.cpp )
625 list( APPEND ALIB_CPP system/processinfo.cpp )
626 list( APPEND ALIB_CPP system/shellcommand.cpp )
628 list( APPEND ALIB_CPP system/path.mm )
632if( "THREADMODEL" IN_LIST ALibBuild )
633 list( APPEND ALIB_H ALib.ThreadModel.H )
634 list( APPEND ALIB_MPP threadmodel/threadmodel.mpp )
635 list( APPEND ALIB_INL threadmodel/dedicatedworker.inl )
636 list( APPEND ALIB_INL threadmodel/jobs.inl )
637 list( APPEND ALIB_INL threadmodel/threadpool.inl )
638 list( APPEND ALIB_INL threadmodel/trigger.inl )
640 list( APPEND ALIB_CPP threadmodel/dedicatedworker.cpp )
641 list( APPEND ALIB_CPP threadmodel/threadpool.cpp )
642 list( APPEND ALIB_CPP threadmodel/trigger.cpp )
646if( "FILES" IN_LIST ALibBuild )
647 list( APPEND ALIB_H ALib.Files.H )
648 list( APPEND ALIB_MPP files/files.mpp )
649 list( APPEND ALIB_HPP files/files.prepro.hpp )
650 list( APPEND ALIB_INL files/filescamp.inl )
651 list( APPEND ALIB_INL files/ffilter.inl )
652 list( APPEND ALIB_INL files/finfo.inl )
653 list( APPEND ALIB_INL files/fscanner.inl )
654 list( APPEND ALIB_INL files/ftree.inl )
656 list( APPEND ALIB_CPP files/filescamp.cpp )
657 list( APPEND ALIB_CPP files/file.cpp )
658 list( APPEND ALIB_CPP files/finfo.cpp )
659 list( APPEND ALIB_CPP files/fscanner.cpp )
660 list( APPEND ALIB_CPP files/ftree.cpp )
662 list( APPEND ALIB_H ALib.Files.TextFile.H )
664 if( "EXPRESSIONS" IN_LIST ALibBuild )
665 list( APPEND ALIB_H ALib.Files.Expressions.H )
666 list( APPEND ALIB_MPP files/expressions/fileexpressions.mpp )
667 list( APPEND ALIB_INL files/expressions/fileexpressions.inl )
668 list( APPEND ALIB_CPP files/expressions/fileexpressions.cpp )
676# ##################################################################################################
677# Check for duplicates. This is a double-check to detect that this script needs a fix.
678# ##################################################################################################
680CollectAndRemoveDuplicates( "ALIB_HPP" "duplicates" )
681LIST( LENGTH duplicates cntDuplicates )
683IF( ${cntDuplicates} GREATER 0 )
684 message( ERROR "Internal script error ALIBSources.cmake: "
685 "DUPLICATE HPP FILES FOUND.\nSee list below! "
686 "(Processing continues with de-duplicated list)" )
687 message( STATUS "LIST OF DUPLICATE HPP FILES:" )
688 LIST(SORT duplicates)
689 FOREACH( entry IN LISTS duplicates )
690 message( STATUS " ${entry}" )
692 message( STATUS "(end of list)" )
695CollectAndRemoveDuplicates( "ALIB_INL" "duplicates" )
696LIST( LENGTH duplicates cntDuplicates )
697IF( ${cntDuplicates} GREATER 0 )
698 message( ERROR "Internal script error ALIBSources.cmake: "
699 "DUPLICATE INL FILES FOUND.\nSee list below! "
700 "(Processing continues with de-duplicated list)" )
701 message( STATUS "LIST OF DUPLICATE INL FILES:" )
702 LIST(SORT duplicates)
703 FOREACH( entry IN LISTS duplicates )
704 message( STATUS " ${entry}" )
706 message( STATUS "(end of list)" )
709CollectAndRemoveDuplicates( "ALIB_CPP" "duplicates" )
710LIST( LENGTH duplicates cntDuplicates )
711IF( ${cntDuplicates} GREATER 0 )
712 message( ERROR "Internal script error ALIBSources.cmake: "
713 "DUPLICATE CPP FILES FOUND.\nSee list below! "
714 "(Processing continues with de-duplicated list)" )
715 message( STATUS "LIST OF DUPLICATE CPP FILES:" )
716 LIST(SORT duplicates)
717 FOREACH( entry IN LISTS duplicates )
718 message( STATUS " ${entry}" )
720 message( STATUS "(end of list)" )
722CollectAndRemoveDuplicates( "ALIB_MPP" "duplicates" )
723LIST( LENGTH duplicates cntDuplicates )
724IF( ${cntDuplicates} GREATER 0 )
725 message( ERROR "Internal script error ALIBSources.cmake: "
726 "DUPLICATE MPP FILES FOUND.\nSee list below! "
727 "(Processing continues with de-duplicated list)" )
728 message( STATUS "LIST OF DUPLICATE MPP FILES:" )
729 LIST(SORT duplicates)
730 FOREACH( entry IN LISTS duplicates )
731 message( STATUS " ${entry}" )
733 message( STATUS "(end of list)" )
735# ##################################################################################################
736# Check for ".hpp" in header-files or ".cpp" in sources
737# ##################################################################################################
738FOREACH( entry IN LISTS ALIB_HPP )
739 IF( NOT ${entry} MATCHES "([.]hpp$)|([.]inl$)|([.]mpp$)" )
740 message( FATAL_ERROR "Non-header-file (wrong extension) found in header-file list: ${entry}" )
744FOREACH( entry IN LISTS ALIB_CPP )
745 IF( NOT ${entry} MATCHES "([.]cpp$)|([.]cppm$)|([.]mm$)" )
746 message( FATAL_ERROR "File with wrong extension found in source file list: ${entry}" )
750# ##################################################################################################
751# Copy sources if requested
752# ##################################################################################################
753if( ALIB_SOURCE_COPY_TARGET_DIR )
755 # Control what to copy: by default copy only headers relevant to the current module selection.
756 # Users can turn this OFF to copy all sources (including .cpp files) as before.
757 option(ALIB_COPY_HEADERS_ONLY "When copying to temporary build folder, copy only headers (.H, .hpp, .inl, .mpp) needed for the selected modules" ON)
759 # check: must be single folder name (not a path)
760 string(FIND "${ALIB_SOURCE_COPY_TARGET_DIR}" "/" separatorPosUnix)
761 string(FIND "${ALIB_SOURCE_COPY_TARGET_DIR}" "\\" separatorPosWindows)
763 if(separatorPosUnix GREATER -1 OR separatorPosWindows GREATER -1)
764 MESSAGE(FATAL_ERROR "The given variable ALIB_SOURCE_COPY_TARGET_DIR=\"${ALIB_SOURCE_COPY_TARGET_DIR}\" "
765 "must be a folder name and not contain folder separators!")
768 # Prepend build directory
769 set(ALIB_SOURCE_COPY_TARGET_DIR "${CMAKE_BINARY_DIR}/${ALIB_SOURCE_COPY_TARGET_DIR}")
771 MESSAGE( STATUS "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
772 MESSAGE( STATUS "!!! ATTENTION: Copying sources. !!!")
773 MESSAGE( STATUS "!!! The destination directory will be deleted, hence !!!")
774 MESSAGE( STATUS "!!! CHANGES WILL BE LOST with next CMake run! !!!")
775 MESSAGE( STATUS "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
776 MESSAGE( STATUS "Copying source files of selected ALib modules to: ’${ALIB_SOURCE_COPY_TARGET_DIR}’")
778 # delete destination directory
779 MESSAGE( "Cleaning source-copy target directory ${ALIB_SOURCE_COPY_TARGET_DIR}" )
780 file( REMOVE_RECURSE ${ALIB_SOURCE_COPY_TARGET_DIR} )
782 #### Create directories and copy public headers (ALib.*.H live at src root) ####
783 foreach( fileName IN LISTS ALIB_H )
784 SET( destPath "${ALIB_SOURCE_COPY_TARGET_DIR}/ALib/${fileName}" )
785 get_filename_component(destPath ${destPath} DIRECTORY )
786 #MESSAGE("Copying file: ${ALIB_SOURCE_DIR}/ALib/${fileName}" )
787 #MESSAGE(" to: ${destPath}" )
788 file( MAKE_DIRECTORY "${destPath}")
789 file( COPY "${ALIB_SOURCE_DIR}/${fileName}" DESTINATION "${destPath}" )
792 # Build list of non-root headers to copy from src/alib tree
793 set(_alib_copy_lists ${ALIB_MPP} ${ALIB_INL} ${ALIB_HPP})
795 # Optionally include .cpp compilation units if headers-only copying is disabled
796 if(NOT ALIB_COPY_HEADERS_ONLY)
797 list(APPEND _alib_copy_lists ${ALIB_CPP})
800 foreach( fileName IN LISTS _alib_copy_lists )
801 SET( destPath "${ALIB_SOURCE_COPY_TARGET_DIR}/alib/${fileName}" )
802 get_filename_component(destPath ${destPath} DIRECTORY )
803 file( MAKE_DIRECTORY "${destPath}")
804 file( COPY "${ALIB_SOURCE_DIR}/alib/${fileName}" DESTINATION "${destPath}" )
811# ##################################################################################################
812# Check if all given files exist and check all files are given
813# ##################################################################################################
814function(CheckFileInclusionForCompleteness fileList baseDir extension )
815 # Ensure the baseDir is an absolute path
816 if(NOT IS_ABSOLUTE "${baseDir}")
817 message(FATAL_ERROR "The provided baseDir '${baseDir}' must be an absolute path.")
820 # Step 1: Loop over the given list and check for file existence
821 foreach(file_path IN LISTS fileList)
823 # Form the absolute path of the file relative to baseDir
824 set(absolute_file_path "${baseDir}/${file_path}")
826 # Check if the file exists
827 if(NOT EXISTS "${absolute_file_path}")
828 message(WARNING "File does not exist: ${absolute_file_path}")
833 # Step 2: Glob the baseDir for all files with the given extension
834 file(GLOB_RECURSE found_files "${baseDir}/*.${extension}")
836 # Normalize the found files to be relative to baseDir, for easier comparison
837 set(relative_found_files "")
838 foreach(file_path IN LISTS found_files)
839 file(RELATIVE_PATH relative_file "${baseDir}" "${file_path}")
840 list(APPEND relative_found_files "${relative_file}")
843 # Step 3: Compare the globbed files with the provided file list
844 foreach(found_file IN LISTS relative_found_files)
845 # Check if the found file is in the list
846 list(FIND fileList "${found_file}" index)
848 if(${index} EQUAL -1)
849 message(WARNING "Found an untracked file: ${found_file}")
854# ##################################################################################################
855# Check if all given files have one of the given extensions
856# ##################################################################################################
857function(ValidateFileExtensions filenames_var extensions_var)
858 # Dereference the input variable names to get their values
859 set(filenames ${${filenames_var}})
860 set(extensions ${${extensions_var}})
863 #string(JOIN " " actual_filenames ${filenames})
864 #string(JOIN " " allowed_extensions ${extensions})
865 #message(STATUS "Validating files: ${actual_filenames}")
866 #message(STATUS "Allowed extensions: ${allowed_extensions}")
868 # Iterate over each filename
869 foreach(filename IN LISTS filenames)
870 # Extract the file extension using regex
871 string(REGEX MATCH "\\.[^.]*$" file_extension "${filename}")
873 # Remove the dot from the extension
874 string(REGEX REPLACE "\\." "" clean_extension "${file_extension}")
876 # Check if the extension is in the allowed list
877 list(FIND extensions "${clean_extension}" index)
879 if(${index} EQUAL -1) # -1 means the extension is invalid
880 message(FATAL_ERROR "File '${filename}' has an invalid extension: '${clean_extension}'. Allowed extensions are: ${allowed_extensions}")
884 # Success message if all extensions are valid
885 #message(STATUS "All files have valid extensions.")
888# ##################################################################################################
889# Add base directory to files
890# ##################################################################################################
891function(AddBaseDir baseDir sourceListVar )
892 SET(temp "") # Temporary list to store valid files
894 # Iterate over the files in the provided list
895 foreach(fileName IN LISTS "${sourceListVar}")
896 if(EXISTS "${baseDir}/${fileName}")
897 LIST(APPEND temp "${baseDir}/${fileName}")
899 message(FATAL_ERROR "Source file not found: ${baseDir}/${fileName}")
903 # Set output variable with processed list
904 SET("${sourceListVar}" "${temp}" PARENT_SCOPE)
908 CheckFileInclusionForCompleteness( "${ALIB_H}" "${ALIB_SOURCE_DIR}" "H" )
909 CheckFileInclusionForCompleteness( "${ALIB_MPP}" "${ALIB_SOURCE_DIR}/alib" "mpp" )
910 CheckFileInclusionForCompleteness( "${ALIB_INL}" "${ALIB_SOURCE_DIR}/alib" "inl" )
911 CheckFileInclusionForCompleteness( "${ALIB_CPP}" "${ALIB_SOURCE_DIR}/alib" "cpp" )
912 CheckFileInclusionForCompleteness( "${ALIB_HPP}" "${ALIB_SOURCE_DIR}/alib" "hpp" )
914set(allowedExtensions "H" "hpp" )
915 ValidateFileExtensions(ALIB_H allowedExtensions)
916set(allowedExtensions "mpp" )
917 ValidateFileExtensions(ALIB_MPP allowedExtensions)
918set(allowedExtensions "inl" )
919 ValidateFileExtensions(ALIB_INL allowedExtensions)
920set(allowedExtensions "hpp" )
921 ValidateFileExtensions(ALIB_HPP allowedExtensions)
922set(allowedExtensions "cpp" "mm" )
923 ValidateFileExtensions(ALIB_CPP allowedExtensions)
924AddBaseDir("${ALIB_SOURCE_DIR}" ALIB_H )
925AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_MPP )
926AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_INL )
927AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_HPP )
928AddBaseDir("${ALIB_SOURCE_DIR}/alib" ALIB_CPP )