diff --git a/.gitignore b/.gitignore index facb79166d59a0cd39da25915ad9e70262ab43cb..a95be5d02605031165d4f5fa4147275dc4b5630d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ */build */node_modules */include/ftl/config.h +**/*.blend1 +fabric/ +fabric-js/ +build/ +lab-designs/viewer diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..a9ca25b819c2caa9199827030180849cd704a301 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,64 @@ +cmake_minimum_required (VERSION 3.1.0) +include (CheckIncludeFile) +include (CheckIncludeFileCXX) +include (CheckFunctionExists) +include(CheckLanguage) + +project (ftl.utu.fi) + +include(CTest) +enable_testing() + +set(THREADS_PREFER_PTHREAD_FLAG ON) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") + +find_package( glog REQUIRED ) +find_package( OpenCV REQUIRED ) +find_package( Threads REQUIRED ) +find_package( LibSGM ) + +check_language(CUDA) +if (CUDA_FOUND) +enable_language(CUDA) +set(CMAKE_CUDA_FLAGS "") +set(CMAKE_CUDA_FLAGS_DEBUG "-g -DDEBUG -D_DEBUG -Wall") +set(CMAKE_CUDA_FLAGS_RELEASE "") +add_definitions(-DHAVE_CUDA) +include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) +endif (CUDA_FOUND) + +set(ftl_VERSION_MAJOR "1") +set(ftl_VERSION_MINOR "0") +set(ftl_VERSION_PATCH "0") +set(FTL_VERSION "\"${ftl_VERSION_MAJOR}.${ftl_VERSION_MINOR}.${ftl_VERSION_PATCH}\"") + +if (WIN32) + file(TO_CMAKE_PATH "$ENV{USERPROFILE}" ENV_USERPROFILE) + set(FTL_CONFIG_ROOT "\"${ENV_USERPROFILE}/AppData/ftl\"") + message(STATUS "Config root is ${FTL_CONFIG_ROOT}") + set(FTL_CACHE_ROOT "\"$ENV{USERPROFILE}/AppData/ftl\"") + set(FTL_DATA_ROOT "\"$ENV{USERPROFILE}/AppData/ftl\"") + add_definitions(-DWIN32) + + set(CMAKE_CXX_FLAGS "/std:c++17") + set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -Wall") + set(CMAKE_CXX_FLAGS_RELEASE "/O2") +endif (WIN32) + +if (UNIX) + add_definitions(-DUNIX) + set(FTL_CONFIG_ROOT "\"$ENV{HOME}/.config/ftl\"") + message(STATUS "Config root is ${FTL_CONFIG_ROOT}") + set(FTL_CACHE_ROOT "\"$ENV{HOME}/.cache/ftl\"") + set(FTL_DATA_ROOT "\"$ENV{HOME}/.local/share/ftl\"") + + set(CMAKE_CXX_FLAGS "-std=c++17") + set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -pg -Wall") + set(CMAKE_CXX_FLAGS_RELEASE "-O3 -msse3 -mfpmath=sse") +endif (UNIX) + +SET(CMAKE_USE_RELATIVE_PATHS ON) + +add_subdirectory(net/cpp) +add_subdirectory(cv-node) + diff --git a/README.md b/README.md index 88324979890a2b18cd9c133423ae92a0e30a29e2..af16903f25fa11c8042659bb02be178addc32b53 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,31 @@ This monorepo contains all elements of the FTL software system. -* p2p-remote-array : Access 2D memory arrays on other machines in P2P group -* fabric : C++ library implementing the neural fabric -* fabric-js : Node.js bindings for C++ fabric -* fabric-js-modules : Additional fabric-js based native and non-native components -* peer-node : P2P node.js application providing a web-service interface -* front-end : Client side FTL code +* net : A p2p messaging library for C++ and JavaScript +* cv-node : Stereo vision node in p2p network +* renderer : Produce video or live image feeds from scene representation +* front-end : Client side FTL code, both web and native +* web-service : A web backend service provider acting as a form of proxy * www : FTL Website -The architecture relies on NodeJS with C++ native addons for processing. +The architecture is a mix of C++ and NodeJS largely communicating over a p2p +network protocol. + +## Build +Use the following commands in the root repository directory to build: + +```bash +mkdir build +cd build +cmake .. +make +``` + +In Windows have Visual Studio installed and use the cmake graphical interface +to configure the project. + +You will need to have OpenCV and glog installed. CUDA and LibSGM are optional +but recommended also. OpenCV should have cuda stereo modules compiled, along +with the viz module if local point cloud display is required. These are contrib +modules. + diff --git a/cv-node/cmake/FindLibSGM.cmake b/cmake/FindLibSGM.cmake similarity index 100% rename from cv-node/cmake/FindLibSGM.cmake rename to cmake/FindLibSGM.cmake diff --git a/cv-node/cmake/Findglog.cmake b/cmake/Findglog.cmake similarity index 100% rename from cv-node/cmake/Findglog.cmake rename to cmake/Findglog.cmake diff --git a/cv-node/CMakeLists.txt b/cv-node/CMakeLists.txt index e8ab4514b7a3148774d3bf20f68dc9e7dace8689..0f7c6d64f625b488d2587a407378e7225e65099c 100644 --- a/cv-node/CMakeLists.txt +++ b/cv-node/CMakeLists.txt @@ -1,86 +1,16 @@ -cmake_minimum_required (VERSION 3.1.0) -include (CheckIncludeFile) -include (CheckIncludeFileCXX) -include (CheckFunctionExists) -include(CheckLanguage) - -project (cv-node) - -include(CTest) -enable_testing() - -set(THREADS_PREFER_PTHREAD_FLAG ON) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") - -find_package( glog REQUIRED ) -#if (WIN32) -#include_directories(${glog_DIR}) -#endif (WIN32) -find_package( OpenCV REQUIRED ) -find_package( Threads REQUIRED ) -find_package( LibSGM ) -#find_package( CUDA ) - -check_language(CUDA) -if (CUDA_FOUND) -enable_language(CUDA) -set(CMAKE_CUDA_FLAGS "") -set(CMAKE_CUDA_FLAGS_DEBUG "-g -DDEBUG -D_DEBUG -Wall") -set(CMAKE_CUDA_FLAGS_RELEASE "") -add_definitions(-DHAVE_CUDA) -include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) -endif (CUDA_FOUND) - # Need to include staged files and libs -include_directories(${PROJECT_SOURCE_DIR}/include) -include_directories(${PROJECT_BINARY_DIR}) +include_directories(${PROJECT_SOURCE_DIR}/cv-node/include) +#include_directories(${PROJECT_BINARY_DIR}) # Check for optional opencv components set(CMAKE_REQUIRED_INCLUDES ${OpenCV_INCLUDE_DIRS}) check_include_file_cxx("opencv2/viz.hpp" HAVE_VIZ) check_include_file_cxx("opencv2/cudastereo.hpp" HAVE_OPENCVCUDA) -set(ftl_VERSION_MAJOR "1") -set(ftl_VERSION_MINOR "0") -set(ftl_VERSION_PATCH "0") -set(FTL_VERSION "${ftl_VERSION_MAJOR}.${ftl_VERSION_MINOR}.${ftl_VERSION_PATCH}") -add_definitions(-DFTL_VERSION=${FTL_VERSION}) - -if (WIN32) - file(TO_CMAKE_PATH "$ENV{USERPROFILE}" ENV_USERPROFILE) - set(FTL_CONFIG_ROOT "\"${ENV_USERPROFILE}/AppData/ftl\"") - message(STATUS "Config root is ${FTL_CONFIG_ROOT}") - set(FTL_CACHE_ROOT "$ENV{USERPROFILE}/AppData/ftl") - set(FTL_DATA_ROOT "$ENV{USERPROFILE}/AppData/ftl") - add_definitions(-DWIN32) - - set(CMAKE_CXX_FLAGS "/std:c++17") - set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -Wall") - set(CMAKE_CXX_FLAGS_RELEASE "/O2") -endif (WIN32) - -if (UNIX) - add_definitions(-DUNIX) - set(FTL_CONFIG_ROOT "\"$ENV{HOME}/.config/ftl\"") - message(STATUS "Config root is ${FTL_CONFIG_ROOT}") - set(FTL_CACHE_ROOT "$ENV{HOME}/.cache/ftl") - set(FTL_DATA_ROOT "$ENV{HOME}/.local/share/ftl") - - set(CMAKE_CXX_FLAGS "-std=c++17") - set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -pg -Wall") - set(CMAKE_CXX_FLAGS_RELEASE "-O3 -msse3 -mfpmath=sse") -endif (UNIX) - -#add_definitions("-DFTL_CONFIG_ROOT=${FTL_CONFIG_ROOT}") -#add_definitions("-DFTL_CACHE_ROOT=${FTL_CACHE_ROOT}") -#add_definitions("-DFTL_DATA_ROOT=${FTL_DATA_ROOT}") - -configure_file(${CMAKE_SOURCE_DIR}/include/ftl/config.h.in - ${CMAKE_SOURCE_DIR}/include/ftl/config.h +configure_file(${CMAKE_SOURCE_DIR}/cv-node/include/ftl/config.h.in + ${CMAKE_SOURCE_DIR}/cv-node/include/ftl/config.h ) -SET(CMAKE_USE_RELATIVE_PATHS ON) - set(CVNODESRC src/main.cpp src/calibrate.cpp @@ -113,6 +43,7 @@ if (CUDA_FOUND) endif (CUDA_FOUND) add_executable(cv-node ${CVNODESRC}) +add_dependencies(cv-node net) if (CUDA_FOUND) set_property(TARGET Threads::Threads diff --git a/net/cpp/CMakeLists.txt b/net/cpp/CMakeLists.txt index 85d31c34d48dcb4e3e54a6fb5657f3f264688a87..7a35df67158e4371b3a2c1dfc8b6c67175bd1eb7 100644 --- a/net/cpp/CMakeLists.txt +++ b/net/cpp/CMakeLists.txt @@ -1,30 +1,9 @@ -cmake_minimum_required (VERSION 2.8.11) - -include (CheckIncludeFile) -include (CheckFunctionExists) -project (ftlnet) - -include(CTest) -enable_testing() - -#find_package(PkgConfig) -#pkg_check_modules(GTKMM gtkmm-3.0) - # Need to include staged files and libs -include_directories(${PROJECT_SOURCE_DIR}/includes) -include_directories(${PROJECT_BINARY_DIR}) - -set(ftl_VERSION_MAJOR "1") -set(ftl_VERSION_MINOR "0") -set(ftl_VERSION_PATCH "0") - -set(CMAKE_CXX_FLAGS "-pthread -fopenmp -std=c++17 -Wall -Wno-deprecated -Werror -Wno-psabi") -set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -pg -Wall -Werror") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") +include_directories(${PROJECT_SOURCE_DIR}/net/cpp/include) +#include_directories(${PROJECT_BINARY_DIR}) -SET(CMAKE_USE_RELATIVE_PATHS ON) -set(FTLSOURCE +set(NETSOURCE src/net.cpp src/listener.cpp src/socket.cpp @@ -38,8 +17,7 @@ if(NOT HAVE_URI_H) endif() check_function_exists(uriParseSingleUriA HAVE_URIPARSESINGLE) -add_library(ftlnet ${FTLSOURCE}) -target_include_directories(ftlnet PUBLIC ${PROJECT_SOURCE_DIR}/include) -target_link_libraries(ftlnet pthread) +add_library(net ${NETSOURCE}) +target_link_libraries(net pthread) ADD_SUBDIRECTORY(test)