build: add initial meson experiments
This commit is contained in:
parent
35916e2854
commit
ee96cbb5da
640
meson.build
Normal file
640
meson.build
Normal file
@ -0,0 +1,640 @@
|
||||
project('cruft', 'cpp')
|
||||
|
||||
pymod = import('python')
|
||||
python = pymod.find_installation('python3')
|
||||
|
||||
ragel = generator(find_program('ragel'), output: '@BASENAME@.cpp', arguments: [ '@INPUT@', '-o@OUTPUT@', '-G2' ])
|
||||
|
||||
if host_machine.endian() == 'big'
|
||||
add_project_arguments('-DWORDS_BIGENDIAN')
|
||||
endif
|
||||
|
||||
add_global_arguments('-std=c++2a', language: 'cpp')
|
||||
add_global_link_arguments('-lstdc++fs', language: 'cpp')
|
||||
|
||||
add_global_arguments('-Drestrict=__restrict', language: 'cpp')
|
||||
|
||||
sources = [
|
||||
ragel.process('uri.cpp.rl'),
|
||||
ragel.process('version.cpp.rl'),
|
||||
ragel.process('format.cpp.rl'),
|
||||
ragel.process('time/parse8601.cpp.rl'),
|
||||
]
|
||||
|
||||
dependencies = []
|
||||
|
||||
|
||||
### Setup a directory to hold built sources we may need to export to clients.
|
||||
##set (PREFIX "cruft/util")
|
||||
##file (MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/prefix/${PREFIX}")
|
||||
##target_include_directories(
|
||||
## cruft
|
||||
## PUBLIC
|
||||
## "${CMAKE_CURRENT_BINARY_DIR}/prefix/"
|
||||
##)
|
||||
##
|
||||
##
|
||||
### Preemptively define an identity panic macro so that TCL doens't fuck us over
|
||||
### by renaming a commonly used symbol.
|
||||
##target_compile_definitions(cruft PUBLIC "-Dpanic=panic")
|
||||
##
|
||||
##
|
||||
#################################################################################
|
||||
cpp = meson.get_compiler('cpp')
|
||||
execinfo = cpp.find_library('execinfo', required: false) # sym:backtrace
|
||||
dbghelp = cpp.find_library('dbghelp', required: false) # sym:SymFromAddr
|
||||
capture_stack_backtrace = cpp.has_function('RtlCaptureStackBackTrace')
|
||||
|
||||
if execinfo.found()
|
||||
sources += 'backtrace_execinfo.cpp'
|
||||
elif dbghelp.found()
|
||||
sources += 'backtrace_stackwalk.cpp'
|
||||
dependencies += dbghelp
|
||||
else
|
||||
sources += 'backtrace_null.cpp'
|
||||
endif
|
||||
|
||||
|
||||
####-----------------------------------------------------------------------------
|
||||
#### We shouldn't be building into the source directory, but I can't stand trying
|
||||
#### to coax CMake into behaving here any longer. Feel free to fix it.
|
||||
##add_custom_command (
|
||||
##OUTPUT
|
||||
## "${CMAKE_CURRENT_BINARY_DIR}/prefix/${PREFIX}/preprocessor.hpp"
|
||||
##COMMENT
|
||||
## "[preprocessor.py] preprocessor.hpp"
|
||||
##COMMAND
|
||||
## "${PYTHON_EXECUTABLE}"
|
||||
## "${CMAKE_CURRENT_SOURCE_DIR}/preprocessor.py"
|
||||
## "${CMAKE_CURRENT_BINARY_DIR}/prefix/${PREFIX}/preprocessor.hpp"
|
||||
## 320
|
||||
##DEPENDS
|
||||
## "${CMAKE_CURRENT_SOURCE_DIR}/preprocessor.py"
|
||||
##)
|
||||
|
||||
preprocessor_hpp = custom_target(
|
||||
'preprocessor.hpp',
|
||||
output: 'preprocessor.hpp',
|
||||
input: 'preprocessor.py',
|
||||
command: [python, '@INPUT@', '@OUTPUT@', '320'],
|
||||
)
|
||||
|
||||
#################################################################################
|
||||
### Platform wrappers
|
||||
systems = {
|
||||
'linux': 'linux',
|
||||
'freebsd': 'freebsd',
|
||||
'windows': 'win32'
|
||||
}
|
||||
|
||||
# TODO: handle missing system
|
||||
sources += 'exe_@0@.cpp'.format(systems[host_machine.system()])
|
||||
|
||||
|
||||
sources += [
|
||||
'posix/dir.cpp',
|
||||
'posix/dir.hpp',
|
||||
'posix/except.cpp',
|
||||
'posix/except.hpp',
|
||||
'posix/fd.cpp',
|
||||
'posix/fd.hpp',
|
||||
]
|
||||
|
||||
|
||||
if host_machine.system() == 'linux'
|
||||
sources += [
|
||||
'thread/event_futex.cpp',
|
||||
'thread/flag_futex.cpp',
|
||||
]
|
||||
endif
|
||||
|
||||
|
||||
if host_machine.system() != 'windows'
|
||||
sources += [
|
||||
'buffer/circular.cpp',
|
||||
'buffer/circular.hpp',
|
||||
'buffer/paged.cpp',
|
||||
'buffer/paged.hpp',
|
||||
'memory/system.cpp',
|
||||
'memory/system.hpp',
|
||||
'debug_posix.cpp',
|
||||
'io_posix.cpp',
|
||||
'io_posix.hpp',
|
||||
'library_posix.hpp',
|
||||
'library_posix.cpp',
|
||||
'posix/fwd.hpp',
|
||||
'posix/map.cpp',
|
||||
'posix/map.hpp',
|
||||
'posix/socket.cpp',
|
||||
'posix/socket.hpp',
|
||||
'time_posix.cpp',
|
||||
]
|
||||
endif
|
||||
|
||||
|
||||
####-----------------------------------------------------------------------------
|
||||
##if (WIN32)
|
||||
## list (
|
||||
## APPEND UTIL_FILES
|
||||
## debug_win32.cpp
|
||||
## exe_win32.cpp
|
||||
## io_win32.cpp
|
||||
## io_win32.hpp
|
||||
## thread/event_win32.cpp
|
||||
## library_win32.cpp
|
||||
## library_win32.hpp
|
||||
## time_win32.cpp
|
||||
## win32/windows.hpp
|
||||
## win32/except.cpp
|
||||
## win32/except.hpp
|
||||
## win32/file.cpp
|
||||
## win32/file.hpp
|
||||
## win32/handle.cpp
|
||||
## win32/handle.hpp
|
||||
## win32/registry.cpp
|
||||
## win32/registry.hpp
|
||||
## )
|
||||
##
|
||||
## target_link_libraries (cruft ws2_32)
|
||||
##endif ()
|
||||
|
||||
|
||||
sources += [
|
||||
'thread/event.hpp',
|
||||
'thread/semaphore.hpp',
|
||||
'thread/flag.hpp',
|
||||
]
|
||||
|
||||
|
||||
if host_machine.system() == 'linux'
|
||||
sources += [
|
||||
'thread/event_futex.cpp',
|
||||
'thread/event_futex.hpp',
|
||||
'thread/semaphore_linux.hpp',
|
||||
'thread/semaphore_linux.cpp',
|
||||
'thread/flag_futex.cpp',
|
||||
'thread/flag_futex.hpp',
|
||||
]
|
||||
else
|
||||
error('Unknown platform for threading')
|
||||
endif
|
||||
|
||||
##elseif (WIN32)
|
||||
## list (APPEND UTIL_FILES
|
||||
## thread/event_std.cpp
|
||||
## thread/event_std.hpp
|
||||
## thread/semaphore_win32.hpp
|
||||
## thread/semaphore_win32.cpp
|
||||
## thread/flag_std.cpp
|
||||
## thread/flag_std.hpp
|
||||
## )
|
||||
##else ()
|
||||
## list (APPEND UTIL_FILES
|
||||
## thread/flag_std.cpp
|
||||
## thread/flag_std.hpp
|
||||
## )
|
||||
##endif ()
|
||||
##
|
||||
##
|
||||
#################################################################################
|
||||
### Common files
|
||||
sources += [
|
||||
'adapter.hpp',
|
||||
'adapter.cpp',
|
||||
'algo/search.hpp',
|
||||
'algo/sort.cpp',
|
||||
'algo/sort.hpp',
|
||||
'alloc/fwd.hpp',
|
||||
'alloc/affix.cpp',
|
||||
'alloc/affix.hpp',
|
||||
'alloc/aligned/direct.hpp',
|
||||
'alloc/aligned/foreign.hpp',
|
||||
'alloc/allocator.cpp',
|
||||
'alloc/allocator.hpp',
|
||||
'alloc/easy.hpp',
|
||||
'alloc/fallback.cpp',
|
||||
'alloc/fallback.hpp',
|
||||
'alloc/linear.cpp',
|
||||
'alloc/linear.hpp',
|
||||
'alloc/malloc.cpp',
|
||||
'alloc/malloc.hpp',
|
||||
'alloc/null.cpp',
|
||||
'alloc/null.hpp',
|
||||
'alloc/stack.cpp',
|
||||
'alloc/stack.hpp',
|
||||
'alloc/std.hpp',
|
||||
'alloc/traits.hpp',
|
||||
'alloc/traits.hpp',
|
||||
'annotation.hpp',
|
||||
'array/darray.hpp',
|
||||
'array/sarray.cpp',
|
||||
'array/sarray.hpp',
|
||||
'array/parray.cpp',
|
||||
'array/parray.hpp',
|
||||
'ascii.hpp',
|
||||
'backtrace.hpp',
|
||||
'bezier.cpp',
|
||||
'bezier1.cpp',
|
||||
'bezier2.cpp',
|
||||
'bezier3.cpp',
|
||||
'bezier.hpp',
|
||||
'bitwise.cpp',
|
||||
'bitwise.hpp',
|
||||
'buffer/simple.cpp',
|
||||
'buffer/simple.hpp',
|
||||
'buffer/traits.hpp',
|
||||
'cast.hpp',
|
||||
'cmdopt.cpp',
|
||||
'cmdopt.hpp',
|
||||
'colour.cpp',
|
||||
'colour.hpp',
|
||||
'coord/fwd.hpp',
|
||||
'coord/base.hpp',
|
||||
'coord.hpp',
|
||||
'coord/init.hpp',
|
||||
'coord/iostream.hpp',
|
||||
'coord/ops.hpp',
|
||||
'coord/store.hpp',
|
||||
'coord/traits.hpp',
|
||||
'cpp.cpp',
|
||||
'cpp.hpp',
|
||||
'cpuid.cpp',
|
||||
'cpuid.hpp',
|
||||
'cpuid_x86.cpp',
|
||||
'cpuid_x86.hpp',
|
||||
'debug.cpp',
|
||||
'debug.hpp',
|
||||
'encode/number.hpp',
|
||||
'encode/base.cpp',
|
||||
'encode/base.hpp',
|
||||
'endian.cpp',
|
||||
'endian.hpp',
|
||||
'except.cpp',
|
||||
'except.hpp',
|
||||
'exe.hpp',
|
||||
'extent.cpp',
|
||||
'extent.hpp',
|
||||
'fixed.cpp',
|
||||
'fixed.hpp',
|
||||
'float.cpp',
|
||||
'float.hpp',
|
||||
'format.hpp',
|
||||
'fourcc.cpp',
|
||||
'fourcc.hpp',
|
||||
'functor.hpp',
|
||||
'geom/fwd.hpp',
|
||||
'geom/aabb.cpp',
|
||||
'geom/aabb.hpp',
|
||||
'geom/cylinder.cpp',
|
||||
'geom/cylinder.hpp',
|
||||
'geom/ellipse.cpp',
|
||||
'geom/ellipse.hpp',
|
||||
'geom/frustum.cpp',
|
||||
'geom/frustum.hpp',
|
||||
'geom/iostream.cpp',
|
||||
'geom/iostream.hpp',
|
||||
'geom/line.hpp',
|
||||
'geom/line.cpp',
|
||||
'geom/ops.cpp',
|
||||
'geom/ops.hpp',
|
||||
'geom/plane.cpp',
|
||||
'geom/plane.hpp',
|
||||
'geom/ray.cpp',
|
||||
'geom/ray.hpp',
|
||||
'geom/rect.cpp',
|
||||
'geom/rect.hpp',
|
||||
'geom/sample/fwd.hpp',
|
||||
'geom/sample/surface.hpp',
|
||||
'geom/sample/volume.hpp',
|
||||
'geom/segment.cpp',
|
||||
'geom/segment.hpp',
|
||||
'geom/sphere.cpp',
|
||||
'geom/sphere.hpp',
|
||||
'geom/tri.cpp',
|
||||
'geom/tri.hpp',
|
||||
'hash.hpp',
|
||||
'hash/fwd.hpp',
|
||||
'hash/adler.cpp',
|
||||
'hash/adler.hpp',
|
||||
'hash/bsdsum.cpp',
|
||||
'hash/bsdsum.hpp',
|
||||
'hash/crc.cpp',
|
||||
'hash/crc.hpp',
|
||||
'hash/fasthash.cpp',
|
||||
'hash/fasthash.hpp',
|
||||
'hash/fletcher.cpp',
|
||||
'hash/fletcher.hpp',
|
||||
'hash/fnv1a.cpp',
|
||||
'hash/fnv1a.hpp',
|
||||
'hash/murmur/common.cpp',
|
||||
'hash/murmur/common.hpp',
|
||||
'hash/murmur.hpp',
|
||||
'hash/murmur/murmur1.cpp',
|
||||
'hash/murmur/murmur1.hpp',
|
||||
'hash/murmur/murmur2.cpp',
|
||||
'hash/murmur/murmur2.hpp',
|
||||
'hash/murmur/murmur3.cpp',
|
||||
'hash/murmur/murmur3.hpp',
|
||||
'hash/siphash.cpp',
|
||||
'hash/siphash.hpp',
|
||||
'hash/wang.hpp',
|
||||
'hash/xxhash.cpp',
|
||||
'hash/xxhash.hpp',
|
||||
'introspection.cpp',
|
||||
'introspection.hpp',
|
||||
'io.cpp',
|
||||
'io.hpp',
|
||||
'iterator.hpp',
|
||||
'job/fwd.hpp',
|
||||
'job/dispatch.hpp',
|
||||
'job/queue.cpp',
|
||||
'job/queue.hpp',
|
||||
'kmeans.hpp',
|
||||
'library.hpp',
|
||||
'log.cpp',
|
||||
'log.hpp',
|
||||
'maths.cpp',
|
||||
'maths.hpp',
|
||||
'maths/fast.hpp',
|
||||
'matrix.cpp',
|
||||
'matrix2.cpp',
|
||||
'matrix3.cpp',
|
||||
'matrix4.cpp',
|
||||
'matrix.hpp',
|
||||
'memory/deleter.cpp',
|
||||
'memory/deleter.hpp',
|
||||
'nocopy.hpp',
|
||||
'parallel/queue.cpp',
|
||||
'parallel/queue.hpp',
|
||||
'parse.cpp',
|
||||
'parse.hpp',
|
||||
'platform.hpp',
|
||||
'point.cpp',
|
||||
'point.hpp',
|
||||
'pointer.hpp',
|
||||
'polynomial.cpp',
|
||||
'polynomial.hpp',
|
||||
'pool.cpp',
|
||||
'pool.hpp',
|
||||
#'"${CMAKE_CURRENT_BINARY_DIR}/prefix/${PREFIX}/preprocessor.hpp"',
|
||||
preprocessor_hpp,
|
||||
'quaternion.cpp',
|
||||
'quaternion.hpp',
|
||||
'rand/lcg.cpp',
|
||||
'rand/lcg.hpp',
|
||||
'rand/xorshift.cpp',
|
||||
'rand/xorshift.hpp',
|
||||
'rand/mwc64x.cpp',
|
||||
'rand/mwc64x.hpp',
|
||||
'random.cpp',
|
||||
'random.hpp',
|
||||
'range.cpp',
|
||||
'range.hpp',
|
||||
'rational.cpp',
|
||||
'rational.hpp',
|
||||
'region.cpp',
|
||||
'region.hpp',
|
||||
'roots/bisection.hpp',
|
||||
'scoped.hpp',
|
||||
'si.cpp',
|
||||
'signal.cpp',
|
||||
'signal.hpp',
|
||||
'si.hpp',
|
||||
'singleton.hpp',
|
||||
'stats.cpp',
|
||||
'stats.hpp',
|
||||
'std.hpp',
|
||||
'stream.cpp',
|
||||
'stream.hpp',
|
||||
'string.cpp',
|
||||
'string.hpp',
|
||||
'stringid.cpp',
|
||||
'stringid.hpp',
|
||||
'strongdef.cpp',
|
||||
'strongdef.hpp',
|
||||
'tap.cpp',
|
||||
'tap.hpp',
|
||||
'term.cpp',
|
||||
'term.hpp',
|
||||
'thread/event.hpp',
|
||||
'thread/flag.hpp',
|
||||
'thread/monitor.cpp',
|
||||
'thread/monitor.hpp',
|
||||
'thread/ticketlock.cpp',
|
||||
'thread/ticketlock.hpp',
|
||||
'thread/spinlock.cpp',
|
||||
'thread/spinlock.hpp',
|
||||
'time.cpp',
|
||||
'time.hpp',
|
||||
'time/parse.hpp',
|
||||
'tuple/index.hpp',
|
||||
'tuple/type.hpp',
|
||||
'tuple/value.hpp',
|
||||
'typeidx.cpp',
|
||||
'typeidx.hpp',
|
||||
'types.hpp',
|
||||
'types/bits.hpp',
|
||||
'types/comparator.hpp',
|
||||
'types/description.cpp',
|
||||
'types/description.hpp',
|
||||
'types/string.cpp',
|
||||
'types/string.hpp',
|
||||
'types/tagged.hpp',
|
||||
'types/traits.hpp',
|
||||
'uri.hpp',
|
||||
'utf8.cpp',
|
||||
'utf8.hpp',
|
||||
'variadic.cpp',
|
||||
'variadic.hpp',
|
||||
'vector.cpp',
|
||||
'vector.hpp',
|
||||
'version.hpp',
|
||||
'view.cpp',
|
||||
'view.hpp',
|
||||
]
|
||||
|
||||
|
||||
libcruft = library('cruft', sources)
|
||||
|
||||
|
||||
##
|
||||
##option (SIMD "enable simd support" OFF)
|
||||
##
|
||||
##if (SIM)
|
||||
## list (APPEND UTIL_FILES
|
||||
## "coord/simd.cpp"
|
||||
## "coord/simd.hpp"
|
||||
## "coord/simd_sse.hpp"
|
||||
## "coord/simd_neon.hpp"
|
||||
## )
|
||||
##endif ()
|
||||
##
|
||||
|
||||
|
||||
##
|
||||
##
|
||||
#################################################################################
|
||||
##target_sources(cruft PRIVATE ${UTIL_FILES})
|
||||
##add_library(cruft-util ALIAS cruft)
|
||||
##target_include_directories(cruft PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
##
|
||||
##
|
||||
##search_libs (SHM_LIBS shm_open rt)
|
||||
##search_libs (DL_LIBS dlopen dl)
|
||||
##search_libs (CLOCK_LIBS clock_gettime rt c)
|
||||
##search_libs (MATH_LIBS cos m)
|
||||
##
|
||||
##target_link_libraries(cruft ${SHM_LIBS})
|
||||
##target_link_libraries(cruft ${DL_LIBS})
|
||||
##target_link_libraries(cruft ${CLOCK_LIBS})
|
||||
##target_link_libraries(cruft ${MATH_LIBS})
|
||||
##
|
||||
### HACK: -ldl isn't getting discovered correctly so we add it unconditionally
|
||||
### for the time being.
|
||||
##if (NOT WIN32)
|
||||
## target_link_libraries(cruft dl)
|
||||
##endif ()
|
||||
##
|
||||
##
|
||||
#################################################################################
|
||||
##foreach (tool cpuid poisson macro scratch)
|
||||
## add_executable (util_${tool} tools/${tool}.cpp)
|
||||
## set_target_properties (util_${tool} PROPERTIES OUTPUT_NAME ${tool})
|
||||
## target_link_libraries (util_${tool} cruft)
|
||||
## target_include_directories(util_${tool} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
##endforeach ()
|
||||
##
|
||||
##
|
||||
#################################################################################
|
||||
##option (TESTS "enable unit testing" ON)
|
||||
##
|
||||
##if (TESTS)
|
||||
## include(CTest)
|
||||
## enable_testing()
|
||||
##
|
||||
## list (
|
||||
## APPEND TEST_BIN
|
||||
## ascii
|
||||
## algo/search
|
||||
## algo/sort
|
||||
## alloc/aligned/foreign
|
||||
## alloc/aligned/direct
|
||||
## alloc/easy
|
||||
## alloc/linear
|
||||
## alloc/stack
|
||||
## affine
|
||||
## array/darray
|
||||
## array/sarray
|
||||
## array/parray
|
||||
## backtrace
|
||||
## bezier
|
||||
## bitwise
|
||||
## buffer/simple
|
||||
## cmdopt
|
||||
## colour
|
||||
## comparator
|
||||
## coord
|
||||
## encode/number
|
||||
## encode/base
|
||||
## endian
|
||||
## exe
|
||||
## extent
|
||||
## fixed
|
||||
## float
|
||||
## format
|
||||
## geom/aabb
|
||||
## geom/ellipse
|
||||
## geom/frustum
|
||||
## geom/line
|
||||
## geom/plane
|
||||
## geom/ray
|
||||
## geom/segment
|
||||
## geom/sphere
|
||||
## hash/checksum
|
||||
## hash/crc
|
||||
## hash/fasthash
|
||||
## hash/fnv1a
|
||||
## hash/murmur
|
||||
## hash/siphash
|
||||
## hash/xxhash
|
||||
## hton
|
||||
## io
|
||||
## introspection
|
||||
## iterator
|
||||
## job/queue
|
||||
## kmeans
|
||||
## maths
|
||||
## maths/fast
|
||||
## matrix
|
||||
## memory/deleter
|
||||
## parallel/queue
|
||||
## parse
|
||||
## point
|
||||
## polynomial
|
||||
## pool
|
||||
## preprocessor
|
||||
## quaternion
|
||||
## rand/buckets
|
||||
## random
|
||||
## range
|
||||
## rational
|
||||
## region
|
||||
## roots/bisection
|
||||
## signal
|
||||
## singleton
|
||||
## stream
|
||||
## string
|
||||
## stringid
|
||||
## strongdef
|
||||
## thread/event
|
||||
## thread/flag
|
||||
## thread/monitor
|
||||
## thread/semaphore
|
||||
## thread/spinlock
|
||||
## thread/ticketlock
|
||||
## time/8601
|
||||
## traits
|
||||
## tuple/index
|
||||
## tuple/value
|
||||
## tuple/type
|
||||
## typeidx
|
||||
## types/tagged
|
||||
## uri
|
||||
## utf8
|
||||
## vector
|
||||
## version
|
||||
## view
|
||||
## )
|
||||
##
|
||||
## if (NOT WIN32)
|
||||
## list (APPEND TEST_BIN
|
||||
## buffer/circular
|
||||
## buffer/paged
|
||||
## )
|
||||
## endif ()
|
||||
##
|
||||
## if (SIMD)
|
||||
## list (APPEND TEST_BIN
|
||||
## coord/simd
|
||||
## )
|
||||
## endif()
|
||||
##
|
||||
## foreach(t ${TEST_BIN})
|
||||
## string(REPLACE "/" "_" name "test/${t}")
|
||||
## add_executable(util_${name} test/${t}.cpp)
|
||||
## target_link_libraries(util_${name} PRIVATE cruft)
|
||||
## target_include_directories(util_${name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
## add_test(NAME util_${name} COMMAND util_${name})
|
||||
## set_tests_properties(util_${name} PROPERTIES FAIL_REGULAR_EXPRESSION "not ok -")
|
||||
## endforeach(t)
|
||||
##
|
||||
## configure_file (test/cpp.py.in util_test_cpp.py @ONLY)
|
||||
## add_test (NAME util_test_cpp COMMAND ${PYTHON_EXECUTABLE} util_test_cpp.py)
|
||||
## set_property (TEST util_test_cpp APPEND PROPERTY DEPENDS util_macro)
|
||||
## set_tests_properties(util_test_cpp PROPERTIES FAIL_REGULAR_EXPRESSION "not ok -")
|
||||
##endif ()
|
||||
##
|
||||
##
|
||||
#################################################################################
|
||||
##configure_file(libcruft.pc.in libcruft.pc)
|
||||
##configure_file(Doxyfile.in Doxyfile)
|
Loading…
Reference in New Issue
Block a user