diff --git a/.gitignore b/.gitignore index a5ce291..07dbbb3 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /output.txt /output.trc CMakeSettings.json +/.venv diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a4e233..00d82f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,11 @@ cmake_minimum_required(VERSION 3.16) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/scc/cmake) -include(ConanInline) - project(ecosystem-vp LANGUAGES C CXX VERSION 1.0.0) option(ENABLE_SCV "Enable the use of SCV" ON) option(LIBS_ONLY "Just build the shared libraries needed to build the VP" OFF) -option(FW_BUILD "Enable the automatic rebuild of firmware running on the VP" ON) +option(FW_BUILD "Enable the automatic rebuild of firmware running on the VP" OFF) option(EN_EXT_DEBUG "Enable extended debug output at runtime" OFF) option(ENABLE_COVERAGE "Enable code coverage" OFF) option(ENABLE_SANITIZER "Enable address sanitizer" OFF) @@ -32,7 +30,17 @@ endif() if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") add_compile_options(/vmg /wd26812) # suppress Warnung C26812: "enum class" gegenüber "enum" (Enum.3) bevorzugen endif() + +include(ConanInline) +if(BUILD_SHARED_LIBS) + set(SHARED_FLAG "True") +else() + set(SHARED_FLAG "False") +endif() + set(CONAN_BOOST_OPTIONS +boost:fPIC=True +boost:shared=${SHARED_FLAG} boost:header_only=False boost:without_contract=True boost:without_fiber=True @@ -54,42 +62,56 @@ boost:without_timer=True boost:without_type_erasure=True boost:without_wave=True ) -if (UNIX) - list(APPEND CONAN_BOOST_OPTIONS boost:fPIC=True boost:shared=True) -endif (UNIX) +set(B2_VERSION 4.9.3) set(CONAN_PACKAGE_LIST fmt/8.0.1 spdlog/1.9.2 boost/1.75.0 gsl-lite/0.37.0 elfio/3.8 + tcc/0.9.27 + lz4/1.9.3 yaml-cpp/0.7.0 jsoncpp/1.9.5 ) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND ENABLE_TCC) - list(APPEND CONAN_BOOST_OPTIONS boost:fPIC=True lua:compile_as_cpp=False) - if(ENABLE_TCC) - list(APPEND CONAN_PACKAGE_LIST tcc/0.9.27) - endif() - list(APPEND CONAN_PACKAGE_LIST seasocks/1.4.4 lua/5.4.3) + list(APPEND CONAN_PACKAGE_LIST tcc/0.9.27) endif() -set(CONAN_PACKAGE_OPTIONS fmt:header_only=True ${CONAN_BOOST_OPTIONS}) +list(APPEND CONAN_PACKAGE_LIST seasocks/1.4.4 lua/5.4.3) +set(CONAN_PACKAGE_OPTIONS fmt:header_only=True lua:compile_as_cpp=False ${CONAN_BOOST_OPTIONS}) + if(NOT USE_CWR_SYSTEMC AND NOT USE_NCSC_SYSTEMC AND NOT DEFINED ENV{SYSTEMC_HOME}) - set(CONAN_PACKAGE_LIST ${CONAN_PACKAGE_LIST} systemc/2.3.3 systemc-cci/1.0.0) - set(CONAN_PACKAGE_OPTIONS ${CONAN_PACKAGE_OPTIONS} systemc:shared=True systemc-cci:shared=True systemc:disable_virtual_bind=False) + set(CONAN_PACKAGE_LIST ${CONAN_PACKAGE_LIST} + systemc/2.3.3 + systemc-cci/1.0.0 + ) + set(CONAN_PACKAGE_OPTIONS ${CONAN_PACKAGE_OPTIONS} + systemc:shared=${SHARED_FLAG} + systemc-cci:shared=${SHARED_FLAG} + systemc:disable_virtual_bind=False) endif() -conan_check() +conan_check() conan_add_remote(NAME minres URL https://git.minres.com/api/packages/Tooling/conan) +# Boost on CentOS 7 quirks: the b2 of conan-center is build against a newer libstdc++ and therefore does not run +# with the oooooold libs on CentOS 7. Therefore we build our own version of b2 if it is not there +set(B2_META $ENV{HOME}/.conan/data/b2/${B2_VERSION}/_/_/metadata.json) +if(DEFINED ENV{CONAN_USER_HOME}) + set(B2_META $ENV{CONAN_USER_HOME}/.conan/data/b2/${B2_VERSION}/_/_/metadata.json) +endif() +if(NOT EXISTS ${B2_META}) + conan_configure(REQUIRES b2/${B2_VERSION}) + conan_cmake_autodetect(settings) + conan_cmake_install(PATH_OR_REFERENCE . BUILD b2 SETTINGS ${settings}) +endif() +# Boost on CentOS 7 quirks end conan_cmake_configure(REQUIRES ${CONAN_PACKAGE_LIST} GENERATORS cmake_find_package OPTIONS ${CONAN_PACKAGE_OPTIONS} ) conan_cmake_autodetect(settings) -# needed when using CentOS devenv-7 or -8 and boost does not build because of missing GLIBCXX version -#conan_install(BUILD b2 missing) conan_install() set(CONAN_CMAKE_SILENT_OUTPUT ON) @@ -131,9 +153,9 @@ endif () add_subdirectory(scc) add_subdirectory(tgc-iss/dbt-rise-core) add_subdirectory(tgc-iss/dbt-rise-tgc) -if(NOT USE_CWR_SYSTEMC) +#if(NOT USE_CWR_SYSTEMC) add_subdirectory(vpvper) -endif() +#endif() if(NOT LIBS_ONLY) add_subdirectory(src) endif() diff --git a/src/tgc_vp/gen/platform_mmap.h b/src/tgc_vp/gen/platform_mmap.h index ddf5500..9f8b352 100644 --- a/src/tgc_vp/gen/platform_mmap.h +++ b/src/tgc_vp/gen/platform_mmap.h @@ -7,7 +7,7 @@ #define _PLATFORM_MMAP_H_ // need double braces, see // https://stackoverflow.com/questions/6893700/how-to-construct-stdarray-object-with-initializer-list#6894191 -const std::array, 13> platfrom_mmap = {{ +const std::array, 13> platfrom_mmap = {{ {clint.socket, 0x2000000, 0xc000}, {plic.socket, 0xc000000, 0x200008}, {aon.socket, 0x10000000, 0x150}, diff --git a/tgc-iss/dbt-rise-core b/tgc-iss/dbt-rise-core index c669f78..bb85be4 160000 --- a/tgc-iss/dbt-rise-core +++ b/tgc-iss/dbt-rise-core @@ -1 +1 @@ -Subproject commit c669f78a90084d55b6a04d41cf7f92558d73e75a +Subproject commit bb85be481cfd71c9fdaad5217a044b207465f4c4 diff --git a/tgc-iss/dbt-rise-tgc b/tgc-iss/dbt-rise-tgc index 4dbc743..0b719a4 160000 --- a/tgc-iss/dbt-rise-tgc +++ b/tgc-iss/dbt-rise-tgc @@ -1 +1 @@ -Subproject commit 4dbc7433a5ce58e367d2e740e191929df50e39ef +Subproject commit 0b719a4b576a3ea1520193ab5a28442a939a5e4b diff --git a/vpvper b/vpvper index ce00e1b..b35f68e 160000 --- a/vpvper +++ b/vpvper @@ -1 +1 @@ -Subproject commit ce00e1bb0a8dfa019287072c0c35f96195f377e0 +Subproject commit b35f68e35c2e5c254ab04008abe4fe0a279eb4d1