diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f0a10ab591212ab9611e39b286c2c94bea682cf..9fa7ba33102558c1a6262cc7cd24b4af65ce55ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 2.8) set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_FLAGS_DEBUG "/MTd") project(HIDRA2) diff --git a/CMakeModules/testing_cpp.cmake b/CMakeModules/testing_cpp.cmake index 3cb0222d560610bc6a47c653953f4680a0dc9863..2702cef342c133313c7b037d46d7c93f491be6fa 100644 --- a/CMakeModules/testing_cpp.cmake +++ b/CMakeModules/testing_cpp.cmake @@ -4,13 +4,23 @@ if (BUILD_TESTS) find_package(Threads) find_program(MEMORYCHECK_COMMAND valgrind) set(MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full --error-exitcode=1") + set (gtest_SOURCE_DIR "C:/googletest") endif () function(gtest target test_source_files test_libraries) if (BUILD_TESTS) include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR}) + link_directories(${gtest_SOURCE_DIR}/lib) add_executable(test-${target} ${test_source_files}) - target_link_libraries(test-${target} gtest gmock gtest_main ${CMAKE_THREAD_LIBS_INIT}) + + IF(WIN32 AND ${CMAKE_BUILD_TYPE} STREQUAL "Debug") + set(GTEST_LIBS gtestd gtest_maind gmockd) + ELSE() + set(GTEST_LIBS gtest gmock gtest_main) + ENDIF(WIN32 AND ${CMAKE_BUILD_TYPE} STREQUAL "Debug") + target_link_libraries(test-${target} ${GTEST_LIBS} ${CMAKE_THREAD_LIBS_INIT}) +# set_target_properties(test-${target} PROPERTIES COMPILE_FLAGS "-DGTEST_LINKED_AS_SHARED_LIBRARY=1") + if (NOT ${test_libraries} STREQUAL "") target_link_libraries(test-${target} ${test_libraries}) endif () diff --git a/common/cpp/CMakeLists.txt b/common/cpp/CMakeLists.txt index 9fef72369fe9e54a7a690a3582b413860c83b879..0cf8083f69350326fd392932637447988a07dffc 100644 --- a/common/cpp/CMakeLists.txt +++ b/common/cpp/CMakeLists.txt @@ -6,7 +6,7 @@ set(SOURCE_FILES include/system_wrappers/system_io.h src/system_io.cpp) IF(WIN32) - # Do windows specific includes + set(SOURCE_FILES ${SOURCE_FILES} src/system_io_windows.cpp) ELSEIF(UNIX) set(SOURCE_FILES ${SOURCE_FILES} src/system_io_linux.cpp) ENDIF(WIN32) @@ -15,7 +15,7 @@ ENDIF(WIN32) ################################ # Library ################################ -#add_library(${TARGET_NAME} SHARED STATIC ${SOURCE_FILES}) -add_library(${TARGET_NAME} SHARED ${SOURCE_FILES}) +add_library(${TARGET_NAME} STATIC ${SOURCE_FILES}) +#add_library(${TARGET_NAME} SHARED ${SOURCE_FILES}) target_include_directories(${TARGET_NAME} PUBLIC include) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) diff --git a/common/cpp/include/system_wrappers/io.h b/common/cpp/include/system_wrappers/io.h index 059b376c50001b308fca8b5110a2e876e8beef9c..ad34debca7861a7d1744aa9727f63c14b606b599 100644 --- a/common/cpp/include/system_wrappers/io.h +++ b/common/cpp/include/system_wrappers/io.h @@ -9,6 +9,14 @@ #include "common/file_info.h" +#ifdef __linux__ +#include <unistd.h> +#elif defined(_MSC_VER) +#include <BaseTsd.h> +typedef SSIZE_T ssize_t; +#endif + + namespace hidra2 { diff --git a/common/cpp/src/system_io.cpp b/common/cpp/src/system_io.cpp index c92dbb0f15e223ac173818e4eed196501abad5df..f445aca170622a6e68134e18d726883cd41e5a5a 100644 --- a/common/cpp/src/system_io.cpp +++ b/common/cpp/src/system_io.cpp @@ -1,7 +1,15 @@ #include <fcntl.h> -#include <unistd.h> #include <iostream> +#ifdef __linux__ +#include <unistd.h> +#elif defined(_MSC_VER) +#include <BaseTsd.h> +typedef SSIZE_T ssize_t; +#endif + +#include <io.h> + #include <system_wrappers/system_io.h> namespace hidra2 { diff --git a/common/cpp/src/system_io_windows.cpp b/common/cpp/src/system_io_windows.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c013110c2460c84662210e7bf1b7ffa2f6a3c564 --- /dev/null +++ b/common/cpp/src/system_io_windows.cpp @@ -0,0 +1,43 @@ +#include "system_wrappers/system_io.h" + +#include <cstring> + +//#include <dirent.h> + +#include <sys/stat.h> +#include <algorithm> + +#include <cerrno> + +using std::string; +using std::vector; +using std::chrono::system_clock; + +namespace hidra2 { + +IOErrors IOErrorFromErrno() { + IOErrors err; + switch (errno) { + case 0: + err = IOErrors::NO_ERROR; + break; + case ENOENT: + case ENOTDIR: + err = IOErrors::FILE_NOT_FOUND; + break; + case EACCES: + err = IOErrors::PERMISSIONS_DENIED; + break; + default: + err = IOErrors::UNKWOWN_ERROR; + break; + } + return err; +} + +std::vector<FileInfo> SystemIO::FilesInFolder(const string& folder, IOErrors* err) { + std::vector<FileInfo> files{}; + return files; +} + +} diff --git a/examples/worker/CMakeLists.txt b/examples/worker/CMakeLists.txt index 29337dc4b69ef7ab0e9d611340302fa61a26b871..6e1b685bef619d6cb4fe8f70002c4fd1a85d7caf 100644 --- a/examples/worker/CMakeLists.txt +++ b/examples/worker/CMakeLists.txt @@ -1,3 +1,5 @@ +find_package(Threads) + add_subdirectory(process_folder) diff --git a/examples/worker/process_folder/CMakeLists.txt b/examples/worker/process_folder/CMakeLists.txt index eeb7f2dbc28f3ef201cc503f870f361745627d58..4bfa9c3d6c9b34c45dfa04c75bf6f372d167143a 100644 --- a/examples/worker/process_folder/CMakeLists.txt +++ b/examples/worker/process_folder/CMakeLists.txt @@ -9,7 +9,7 @@ set(SOURCE_FILES process_folder.cpp) #set(CMAKE_FIND_STATIC FIRST) #endif() add_executable(${TARGET_NAME} ${SOURCE_FILES}) -target_link_libraries(${TARGET_NAME} common worker-api pthread) +target_link_libraries(${TARGET_NAME} common worker-api ${CMAKE_THREAD_LIBS_INIT}) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) #set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "-static-libstdc++") diff --git a/producer/api/CMakeLists.txt b/producer/api/CMakeLists.txt index 40d5bc8d8b6be2872438fab2b77b918ac6e67ae3..b09e6b457682248e75714f06ae09abac04db1761 100644 --- a/producer/api/CMakeLists.txt +++ b/producer/api/CMakeLists.txt @@ -5,7 +5,7 @@ set(SOURCE_FILES src/producer/producer.cpp include/producer/producer.h) ################################ # Library ################################ -add_library(${TARGET_NAME} SHARED ${SOURCE_FILES}) +add_library(${TARGET_NAME} STATIC ${SOURCE_FILES}) target_include_directories(${TARGET_NAME} PUBLIC include) target_link_libraries(${TARGET_NAME} common) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4eea8d27aa7eff0f085f0ca752702bfc8af8dff2..59f4f821490ae92d100eb149f744ba95710c5ff6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,5 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.7) # needed for fixtures +find_package(Threads) add_subdirectory(common/cpp) add_subdirectory(system_io) diff --git a/tests/common/cpp/CMakeLists.txt b/tests/common/cpp/CMakeLists.txt index 1857e8929b889ab4f74f5fe5abb029b4e475c74b..1eec82d9fb06edce8549838ed1a56c15b5a20f45 100644 --- a/tests/common/cpp/CMakeLists.txt +++ b/tests/common/cpp/CMakeLists.txt @@ -5,6 +5,6 @@ set(SOURCE_FILES ################################ # Library ################################ -add_library(${TARGET_NAME} SHARED ${SOURCE_FILES}) +add_library(${TARGET_NAME} STATIC ${SOURCE_FILES}) target_include_directories(${TARGET_NAME} PUBLIC include) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) diff --git a/tests/worker/connect_multithread/CMakeLists.txt b/tests/worker/connect_multithread/CMakeLists.txt index b4baf2ec9273079d95493404753e2d3ed913e3f1..5d7cc640fff60b4ffddd5207355edc0583992cbd 100644 --- a/tests/worker/connect_multithread/CMakeLists.txt +++ b/tests/worker/connect_multithread/CMakeLists.txt @@ -6,7 +6,7 @@ set(SOURCE_FILES content_multithread.cpp) # Executable and link ################################ add_executable(${TARGET_NAME} ${SOURCE_FILES}) -target_link_libraries(${TARGET_NAME} test_common common worker-api pthread) +target_link_libraries(${TARGET_NAME} test_common common worker-api ${CMAKE_THREAD_LIBS_INIT}) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) ################################ diff --git a/tests/worker/next_multithread/CMakeLists.txt b/tests/worker/next_multithread/CMakeLists.txt index 2e4fc652fb1ede80cd8bc116c52e05a74c119ebd..48cab62017f08a1d36b21d66dec918c141e98634 100644 --- a/tests/worker/next_multithread/CMakeLists.txt +++ b/tests/worker/next_multithread/CMakeLists.txt @@ -6,7 +6,7 @@ set(SOURCE_FILES next_multithread.cpp) # Executable and link ################################ add_executable(${TARGET_NAME} ${SOURCE_FILES}) -target_link_libraries(${TARGET_NAME} test_common common worker-api pthread) +target_link_libraries(${TARGET_NAME} test_common common worker-api ${CMAKE_THREAD_LIBS_INIT}) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) ################################ diff --git a/worker/api/cpp/CMakeLists.txt b/worker/api/cpp/CMakeLists.txt index bb138ff79884ed7a8e66acc2d3a33eea849b6cda..da84ebcfb01cfd3b01e0b9d196ee5fe41d0398ef 100644 --- a/worker/api/cpp/CMakeLists.txt +++ b/worker/api/cpp/CMakeLists.txt @@ -6,8 +6,8 @@ set(SOURCE_FILES include/worker/data_broker.h src/data_broker.cpp src/folder_dat ################################ # Library ################################ -add_library(${TARGET_NAME} SHARED ${SOURCE_FILES}) -#add_library(${TARGET_NAME} SHARED STATIC ${SOURCE_FILES}) +#add_library(${TARGET_NAME} SHARED ${SOURCE_FILES}) +add_library(${TARGET_NAME} STATIC ${SOURCE_FILES}) target_include_directories(${TARGET_NAME} PUBLIC include) target_link_libraries(${TARGET_NAME} common) diff --git a/worker/api/cpp/src/folder_data_broker.cpp b/worker/api/cpp/src/folder_data_broker.cpp index 2696f73eb08567c67e57025b6a9ed7ad79394c29..b989170dbe180b735216cd72313d77a72fd75980 100644 --- a/worker/api/cpp/src/folder_data_broker.cpp +++ b/worker/api/cpp/src/folder_data_broker.cpp @@ -58,7 +58,7 @@ WorkerErrorCode FolderDataBroker::CanGetData(FileInfo* info, FileData* data, int return WorkerErrorCode::WRONG_INPUT; } - if (nfile >= filelist_.size()) { + if (nfile >= (int) filelist_.size()) { return WorkerErrorCode::NO_DATA; } return WorkerErrorCode::OK; diff --git a/worker/api/cpp/src/folder_data_broker.h b/worker/api/cpp/src/folder_data_broker.h index 5fd4f08e432af9b3b383c8c97178652f513bcada..27d960172df27455c55688a5aead4c7f9dcb05e4 100644 --- a/worker/api/cpp/src/folder_data_broker.h +++ b/worker/api/cpp/src/folder_data_broker.h @@ -20,7 +20,7 @@ class FolderDataBroker final : public hidra2::DataBroker { private: bool is_connected_; - int64_t current_file_; + int current_file_; std::string base_path_; std::vector<FileInfo> filelist_; WorkerErrorCode CanGetData(FileInfo* info, FileData* data, int nfile) const;