From dd23d4a3478f57a051e3ae7e6f81d154c8ed6544 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Tue, 17 Jan 2017 19:20:30 +1100 Subject: [PATCH] build: cmake tests --- CMakeLists.txt | 458 ++++++++++++++++++++++++++++++++++++++++++++ test/CMakeLists.txt | 78 ++++++++ 2 files changed, 536 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 test/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..ea4bdfbf --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,458 @@ +cmake_minimum_required(VERSION 3.7.1) +project(util-cruft) +add_definitions(-DPACKAGE="libcruft-util") + +set(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} + ${CMAKE_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/cmake) + +include(CheckFunctionExists) +include(CheckCXXCompilerFlag) + +include (nc_cxx) +include (nc_platform) +include (nc_optimisation) +include (nc_warnings) + +include (compile_flag) +include (link_flag) +include (search_libs) + +#append_compile_flag(-std=c++1z) +#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z") + +find_package(RAGEL 6.9 REQUIRED) + + +############################################################################### +include (TestBigEndian) +TEST_BIG_ENDIAN(ENDIANNESS) +if (ENDIANNESS) + add_definitions(-DWORDS_BIGENDIAN) +endif() + + +############################################################################### +RAGEL_TARGET(json-flat json/flat.cpp.rl ${CMAKE_BINARY_DIR}/json/flat.cpp) +RAGEL_TARGET(uri uri.cpp.rl ${CMAKE_BINARY_DIR}/uri.cpp) +RAGEL_TARGET(version version.cpp.rl ${CMAKE_BINARY_DIR}/version.cpp) + +include_directories(${CMAKE_SOURCE_DIR}) + + +############################################################################### +set (UTIL_FILES) + + +############################################################################### +search_libs (BACKTRACE_LIB backtrace execinfo) +check_function_exists (RtlCaptureStackBackTrace HAVE_CAPTURESTACKBACKTRACE) +search_libs (DBGHELP_LIB SymFromAddr dbghelp) +check_function_exists(RtlCaptureStackBackTrace HAVE_STACKWALK) + + +##----------------------------------------------------------------------------- +if (BACKTRACE_LIB) + list (APPEND backtrace_files execinfo) +endif () + +find_program(ADDR2LINE NAMES addr2line) +if (ADDR2LINE) + add_definitions(-DADDR2LINE="${ADDR2LINE}") +endif() + + +##----------------------------------------------------------------------------- +if (HAVE_CAPTURESTACKBACTRACE) + list (APPEND backtrace_files stackwalk win32) +endif () + + +##----------------------------------------------------------------------------- +list (APPEND backtrace_files null) +list (GET backtrace_files 0 backtrace_scheme) +list (APPEND UTIL_FILES backtrace_${backtrace_scheme}.cpp) + + +############################################################################### +# Platform wrappers +if (LINUX) + list (APPEND UTIL_FILES exe_linux.cpp) +elseif (FREEBSD) + list (APPEND UTIL_FILES exe_freebsd.cpp) +else () + message (FATAL_ERROR "unhandled platform") +endif () + + +############################################################################### +# platform libraries +search_libs (DL_LIBS dlopen dl) +search_libs (CLOCK_LIB clock_gettime rt c) +search_libs (MATH_LIB cos m) + + +############################################################################### +# platform wrappers +list ( + APPEND UTIL_FILES + posix/dir.cpp + posix/dir.hpp + posix/dir.ipp + posix/fd.cpp + posix/fd.hpp +) + +if (NOT WINDOWS) + list ( + APPEND UTIL_FILES + memory/buffer/circular.cpp + memory/buffer/circular.hpp + memory/buffer/paged.cpp + memory/buffer/paged.hpp + memory/system.cpp + memory/system.hpp + debug_posix.cpp + io_posix.cpp + io_posix.hpp + io_posix.ipp + library_posix.hpp + library_posix.cpp + posix/fwd.hpp + posix/map.cpp + posix/map.hpp + time_posix.cpp + ) +endif () + + +##----------------------------------------------------------------------------- +if (WINDOWS) + list ( + APPEND UTIL_FILES + debug_win32.cpp + exe_win32.cpp + io_win32.cpp + io_win32.hpp + io_win32.ipp + library_win32.hpp + library_win32.cpp + time_win32.cpp + win32/handle.cpp + win32/handle.hpp + win32/registry.hpp + win32/registry.cpp + ) +endif () + + +############################################################################### +# Common files +list ( + APPEND UTIL_FILES + adapter.hpp + adapter.cpp + alloc/fwd.hpp + alloc/affix.cpp + alloc/affix.hpp + alloc/aligned.hpp + alloc/allocator.cpp + alloc/allocator.hpp + alloc/allocator.ipp + alloc/arena.cpp + alloc/arena.hpp + alloc/arena.ipp + alloc/dynamic.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 + annotation.hpp + ascii.hpp + backtrace.hpp + bezier.cpp + bezier1.cpp + bezier2.cpp + bezier3.cpp + bezier.hpp + bitwise.cpp + bitwise.hpp + cast.hpp + cmdopt.cpp + cmdopt.hpp + cmdopt.ipp + colour.cpp + colour.hpp + colour.ipp + coord/fwd.hpp + coord/base.hpp + coord.hpp + coord/init.hpp + coord/iostream.hpp + coord/names.hpp + coord/ops.hpp + coord/store.hpp + crypto/arc4.cpp + crypto/arc4.hpp + crypto/ice.cpp + crypto/ice.hpp + crypto/tea.cpp + crypto/tea.hpp + crypto/xtea.cpp + crypto/xtea.hpp + crypto/xxtea.cpp + crypto/xxtea.hpp + debug.cpp + debug.hpp + debug.ipp + endian.cpp + endian.hpp + except.cpp + except.hpp + exe.hpp + extent.cpp + extent.hpp + extent.ipp + fixed.cpp + fixed.hpp + float.cpp + float.hpp + format.cpp + format.hpp + format.ipp + fourcc.cpp + fourcc.hpp + geom/fwd.hpp + geom/aabb.cpp + geom/aabb.hpp + geom/aabb.ipp + geom/cylinder.cpp + geom/cylinder.hpp + geom/ellipse.cpp + geom/ellipse.hpp + geom/ellipse.ipp + geom/iostream.cpp + geom/iostream.hpp + geom/ops.hpp + geom/plane.cpp + geom/plane.hpp + geom/ray.cpp + geom/ray.hpp + geom/rect.cpp + geom/rect.hpp + geom/sample.hpp + geom/sample.ipp + geom/sphere.cpp + geom/sphere.hpp + geom/tri.cpp + geom/tri.hpp + hash.hpp + hash/fwd.hpp + hash/simple.hpp + hash/simple.cpp + 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/hmac.cpp + hash/hmac.hpp + hash/hotp.cpp + hash/hotp.hpp + hash/keccak.cpp + hash/keccak.hpp + hash/md2.cpp + hash/md2.hpp + hash/md4.cpp + hash/md4.hpp + hash/md5.cpp + hash/md5.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/pbkdf1.cpp + hash/pbkdf1.hpp + hash/pbkdf2.cpp + hash/pbkdf2.hpp + hash/ripemd.cpp + hash/ripemd.hpp + hash/sha1.cpp + hash/sha1.hpp + hash/sha2.cpp + hash/sha2.hpp + hash/wang.hpp + hash/wang.ipp + hash/xxhash.cpp + hash/xxhash.hpp + introspection.cpp + introspection.hpp + io.cpp + io.hpp + io.ipp + iterator.hpp + json/fwd.hpp + json/except.cpp + json/except.hpp + ${CMAKE_CURRENT_BINARY_DIR}/json/flat.cpp + json/flat.hpp + json/schema.cpp + json/schema.hpp + json/tree.cpp + json/tree.hpp + library.hpp + log.cpp + log.hpp + log.ipp + maths.cpp + maths.hpp + matrix.cpp + matrix2.cpp + matrix3.cpp + matrix4.cpp + matrix.hpp + matrix.ipp + memory/deleter.cpp + memory/deleter.hpp + nocopy.hpp + pascal.cpp + pascal.hpp + platform.hpp + point.cpp + point.hpp + point.ipp + pointer.hpp + polynomial.cpp + polynomial.hpp + polynomial.ipp + pool.cpp + pool.hpp + pool.ipp + preprocessor.hpp + quaternion.cpp + quaternion.hpp + quaternion.ipp + raii.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 + range.ipp + rational.cpp + rational.hpp + rational.ipp + region.cpp + region.hpp + region.ipp + roots/bisection.hpp + si.cpp + signal.cpp + signal.hpp + signal.ipp + si.hpp + stats.cpp + stats.hpp + stream.cpp + stream.hpp + string.cpp + string.hpp + stringid.cpp + stringid.hpp + strongdef.cpp + strongdef.hpp + tap.cpp + tap.hpp + tap.ipp + term.cpp + term.hpp + time.cpp + time.hpp + time.ipp + tuple.cpp + tuple.hpp + types/bits.hpp + types/comparator.hpp + types/comparator.ipp + types.hpp + types/string.cpp + types/string.hpp + types/traits.hpp + uri.cpp + uri.hpp + variadic.cpp + variadic.hpp + variadic.ipp + vector.cpp + vector.hpp + vector.ipp + version.cpp + version.hpp + view.cpp + view.ipp + view.hpp +) + +############################################################################### +add_library(cruft-util ${UTIL_FILES}) + + +##----------------------------------------------------------------------------- +option(INLINE "build pkg-config for immediate local usage") +if (INLINE) + configure_file(libcruft-util-inline.pc.in libcruft-util.pc) +else () + configure_file(libcruft-util-system.pc.in libcruft-util.pc) +endif () + + +############################################################################### +add_executable(hash tools/hash.cpp) +add_executable(json-clean tools/json-clean.cpp) +add_executable(json-schema tools/json-schema.cpp) +add_executable(json-validate tools/json-validate.cpp) +add_executable(scratch tools/scratch.cpp) + + +############################################################################### +configure_file(Doxyfile.in Doxyfile) + + +############################################################################### +include(CTest) +enable_testing() +add_subdirectory(test) + + +############################################################################### +list (APPEND LIBS cruft-util stdc++fs) + +target_link_libraries(hash ${LIBS}) +target_link_libraries(json-clean ${LIBS}) +target_link_libraries(json-schema ${LIBS}) +target_link_libraries(json-validate ${LIBS}) +target_link_libraries(scratch ${LIBS}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 00000000..adfde1d6 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,78 @@ +list ( + APPEND TEST_BIN + alloc/aligned + alloc/arena + alloc/dynamic + alloc/linear + alloc/stack + affine + backtrace + bezier + bitwise + cmdopt + colour + coord + crypto/arc4 + crypto/ice + crypto/tea + crypto/xtea + crypto/xxtea + exe + extent + fixed + float + format + geom/aabb + geom/ray + hash/checksum + hash/fasthash + hash/hmac + hash/hotp + hash/keccak + hash/md2 + hash/md4 + hash/md5 + hash/murmur + hash/ripemd + hash/sha1 + hash/sha2 + hash/xxhash + hton + introspection + json_types + maths + matrix + memory/deleter + point + polynomial + pool + quaternion + rand/buckets + range + rational + region + roots/bisection + signal + stream + string + stringid + strongdef + tuple + uri + vector + version + view +) + + +function(define_test path) + string(REPLACE "/" "_" name "${path}") + add_executable(${name} "${path}.cpp") + target_link_libraries(${name} cruft-util stdc++fs) + add_test(NAME ${name} COMMAND ${name}) +endfunction(define_test) + + +foreach(t ${TEST_BIN}) + define_test(${t}) +endforeach(t)