From be5b83de7bbfa20482d47f8e92704d2687aad342 Mon Sep 17 00:00:00 2001 From: Anton Adamansky Date: Thu, 19 Feb 2015 00:13:37 +0600 Subject: [PATCH] cmake migration --- .gitignore | 4 +- tcejdb/CMakeLists.txt | 43 +++++++++----- tcejdb/cmake/Modules/FindCUnit.cmake | 24 ++++++++ tcejdb/src/tcutil/tests/CMakeLists.txt | 103 +++++++++++++++++++++++++++++++++ tcejdb/tcejdb.project | 13 ++--- 5 files changed, 166 insertions(+), 21 deletions(-) create mode 100644 tcejdb/cmake/Modules/FindCUnit.cmake create mode 100644 tcejdb/src/tcutil/tests/CMakeLists.txt diff --git a/.gitignore b/.gitignore index 34500d9..e66c9f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,11 @@ Makefile +tcejdb/src/*/tests/*test tcejdb/generated/ +tcejdb/Testing/ CMakeCache.txt CMakeFiles +CTestTestfile.cmake cmake_install.cmake compile_commands.json compilation.db @@ -11,7 +14,6 @@ compilation.db .idea .dep.inc - *.iml *.o *.vlog diff --git a/tcejdb/CMakeLists.txt b/tcejdb/CMakeLists.txt index b03fe89..a6648ed 100644 --- a/tcejdb/CMakeLists.txt +++ b/tcejdb/CMakeLists.txt @@ -16,6 +16,9 @@ message(FATAL_ERROR "Please specify the build type -DCMAKE_BUILD_TYPE=Debug|Rele endif(NOT CMAKE_BUILD_TYPE) option(WITH_TESTS "Build EJDB test cases" OFF) +option(ENABLE_STATIC_LIB "Build ejdb static library" OFF) +option(WITH_VALGRIND_CHECK "Build EJDB test cases with valgrind check support" OFF) + set(MODULES tcutil tchdb tcbdb tctdb tcfdb bson ejdb) set(EJDB_GENERATED_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/generated) @@ -30,7 +33,11 @@ foreach(MODULE IN LISTS MODULES) list(APPEND ALL_HDRS ${MODULE_HDRS}) endforeach(MODULE) -add_library(ejdb SHARED ${ALL_SRC} ${ALL_HDRS}) +if (ENABLE_STATIC_LIB) +add_library(ejdb STATIC ${ALL_SRC}) +else() +add_library(ejdb SHARED ${ALL_SRC}) +endif(ENABLE_STATIC_LIB) find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD) if (CMAKE_USE_WIN32_THREADS_INIT) @@ -89,15 +96,28 @@ target_link_libraries(ejdb ${EJDB_LLIBRARIES}) #todo check the host system! set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -fsigned-char -Wall -pedantic") -set(CMAKE_C_FLAGS_DEBUG "-g -O0 -Wfatal-errors -DDEBUG -D_DEBUG -UNDEBUG") +set(CMAKE_C_FLAGS_DEBUG "-O0 -Wfatal-errors -DDEBUG -D_DEBUG -UNDEBUG") set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG") -set(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -O2") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2") configure_file(src/basedefs.h.in ${EJDB_GENERATED_DIR}/basedefs.h) configure_file(src/myconf.h.in ${EJDB_GENERATED_DIR}/myconf.h) file(GLOB GENERATED_HDRS ${EJDB_GENERATED_DIR}/*.h) list(APPEND ALL_HDRS ${GENERATED_HDRS}) +if (WITH_TESTS) + #Valgrind staff + if (WITH_VALGRIND_CHECK) + find_program(VALGRIND_FOUND valgrind) + if (NOT VALGRIND_FOUND) + message(FATAL_ERROR "'valgrind' executable not found") + endif(NOT VALGRIND_FOUND) + set(TEST_TOOL_CMD valgrind --tool=memcheck --leak-check=full --error-exitcode=1) + endif(WITH_VALGRIND_CHECK) + enable_testing() + find_package(CUnit REQUIRED) +endif(WITH_TESTS) + foreach(MODULE IN LISTS MODULES) if (EXISTS src/${MODULE}/CMakeLists.txt) add_subdirectory(src/${MODULE}) @@ -106,20 +126,17 @@ foreach(MODULE IN LISTS MODULES) add_subdirectory(src/${MODULE}/tools) endif() if (WITH_TESTS AND EXISTS src/${MODULE}/tests/CMakeLists.txt) - add_subdirectory(src/${MODULE}/tests/CMakeLists.txt) + add_subdirectory(src/${MODULE}/tests) endif() endforeach(MODULE) -#add_definitions(-D_TC_PREFIX=${CMAKE_INSTALL_PREFIX}) -#link_directories -#link_libraries -#target_link_libraries -#add_subdirectory(tcutil) - message("") message("#############################################") -message(" *LINK LIBS: ${EJDB_LLIBRARIES}") -message(" *INCLUDE DIRS: ${EJDB_INCLUDE_DIRS}") -message(" *SOURCES: ${ALL_SRC} ${ALL_HDRS}") +message(" ENABLE_STATIC_LIB: ${ENABLE_STATIC_LIB}") +message(" WITH_TESTS: ${WITH_TESTS}") +message(" WITH_VALGRIND_CHECK: ${WITH_VALGRIND_CHECK}") +message(" LINK LIBS: ${EJDB_LLIBRARIES}") +message(" INCLUDE DIRS: ${EJDB_INCLUDE_DIRS}") +message(" SOURCES: ${ALL_SRC}") message("#############################################") message("") diff --git a/tcejdb/cmake/Modules/FindCUnit.cmake b/tcejdb/cmake/Modules/FindCUnit.cmake new file mode 100644 index 0000000..a0cf0e8 --- /dev/null +++ b/tcejdb/cmake/Modules/FindCUnit.cmake @@ -0,0 +1,24 @@ +# Find the CUnit headers and libraries +# +# CUNIT_INCLUDE_DIRS - The CUnit include directory (directory where CUnit/CUnit.h was found) +# CUNIT_LIBRARIES - The libraries needed to use CUnit +# CUNIT_FOUND - True if CUnit found in system + + +FIND_PATH(CUNIT_INCLUDE_DIR NAMES CUnit/CUnit.h) +MARK_AS_ADVANCED(CUNIT_INCLUDE_DIR) + +FIND_LIBRARY(CUNIT_LIBRARY NAMES + cunit + libcunit + cunitlib +) +MARK_AS_ADVANCED(CUNIT_LIBRARY) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(CUnit DEFAULT_MSG CUNIT_LIBRARY CUNIT_INCLUDE_DIR) + +IF(CUNIT_FOUND) + SET(CUNIT_LIBRARIES ${CUNIT_LIBRARY}) + SET(CUNIT_INCLUDE_DIRS ${CUNIT_INCLUDE_DIR}) +ENDIF(CUNIT_FOUND) diff --git a/tcejdb/src/tcutil/tests/CMakeLists.txt b/tcejdb/src/tcutil/tests/CMakeLists.txt new file mode 100644 index 0000000..05493e4 --- /dev/null +++ b/tcejdb/src/tcutil/tests/CMakeLists.txt @@ -0,0 +1,103 @@ +link_libraries(ejdb) +set(TEST_DATA_DIR ${CMAKE_CURRENT_BINARY_DIR}/var) +file(MAKE_DIRECTORY ${TEST_DATA_DIR}) + +add_executable(tcutest tcutest.c) + +add_test(NAME tcutest1 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + xstr 50000) + +add_test(NAME tcutest2 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -rd 50000) + +add_test(NAME tcutest3 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + map -rd -tr 50000) + +add_test(NAME tcutest4 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + map -rd -tr -rnd -dc 50000) + +add_test(NAME tcutest5 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + tree -rd -tr 50000) + +add_test(NAME tcutest6 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + tree -rd -tr -rnd -dc 50000) + +add_test(NAME tcutest7 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + mdb -rd -tr 50000) + +add_test(NAME tcutest8 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + mdb -rd -tr -rnd -dc 50000) + +add_test(NAME tcutest9 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + mdb -rd -tr -rnd -dpr 50000) + +add_test(NAME tcutest10 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + ndb -rd -tr 50000) + +add_test(NAME tcutest11 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + ndb -rd -tr -rnd -dc 50000) + +add_test(NAME tcutest12 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + ndb -rd -tr -rnd -dpr 50000) + +add_test(NAME tcutest13 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc 500) + +add_test(NAME tcutest14 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked 50000) + +add_executable(tcumttest tcumttest.c) + +add_test(NAME tcumttest1 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + combo 5 50000 500) + +add_test(NAME tcumttest2 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + combo -rnd 5 50000 500) + +add_test(NAME tcumttest3 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical 5 50000 5000) + +add_test(NAME tcumttest4 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -rr 1000 5 50000 5000) + +add_test(NAME tcumttest5 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -nc 5 50000 5000) + +add_test(NAME tcumttest6 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + combo -tr 5 50000 500) + +add_test(NAME tcumttest7 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + combo -tr -rnd 5 50000 500) + +add_test(NAME tcumttest8 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -tr 5 50000 5000) + +add_test(NAME tcumttest9 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -tr -rr 1000 5 50000 5000) + +add_test(NAME tcumttest10 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -tr -nc 5 50000 5000) diff --git a/tcejdb/tcejdb.project b/tcejdb/tcejdb.project index 4990f85..0d8a79d 100644 --- a/tcejdb/tcejdb.project +++ b/tcejdb/tcejdb.project @@ -51,7 +51,6 @@ - @@ -63,7 +62,6 @@ - @@ -75,7 +73,6 @@ - @@ -87,7 +84,6 @@ - @@ -96,6 +92,7 @@ + @@ -133,9 +130,6 @@ - - - @@ -303,4 +297,9 @@ + + + + + -- 2.7.4