diff --git a/.cproject b/.cproject
index 699c8b9..d1ab12d 100644
--- a/.cproject
+++ b/.cproject
@@ -128,7 +128,7 @@
-
+
@@ -164,7 +164,7 @@
-
+
@@ -172,6 +172,7 @@
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d24d710..d246468 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.20)
-list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/scc/cmake)
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
project(TGC-ISS VERSION 1.0.0 LANGUAGES CXX)
@@ -15,8 +15,9 @@ if(CMAKE_PROJECT_NAME STREQUAL "TGC-ISS")
option(ENABLE_CLANG_TIDY "Add clang-tidy and clang-format automatically to builds" OFF)
option(WITH_TCC "Build TCC backend" OFF)
option(WITH_LLVM "Build LLVM backend" OFF)
- option(WITH_ASMJIT "Build ASMJIT backend" OFF)
-
+ option(WITH_ASMJIT "Build ASMJIT backend" ON)
+ option(PORTABLE "Build executable without platform specific optimizations" OFF)
+
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
@@ -25,12 +26,9 @@ if(CMAKE_PROJECT_NAME STREQUAL "TGC-ISS")
set(CMAKE_INSTALL_RPATH "${ORIGIN}")
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
- if(COMPILER_SUPPORTS_MARCH_NATIVE)
- if("${CMAKE_BUILD_TYPE}" STREQUAL "")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
- elseif(NOT(${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo"))
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
- endif()
+ if(COMPILER_SUPPORTS_MARCH_NATIVE AND NOT PORTABLE)
+ message(STATUS "Applying platform specific optimizations")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
@@ -102,7 +100,7 @@ if(CMAKE_PROJECT_NAME STREQUAL "TGC-ISS")
if(WITH_LLVM)
list(APPEND CONAN_PACKAGE_LIST llvm-core/${LLVM_VERSION})
- list(APPEND CONAN_PACKAGE_OPTIONS libiconv:shared=True)
+ list(APPEND CONAN_PACKAGE_OPTIONS libiconv:shared=True llvm-code:targets=X85)
endif()
if(WITH_ASMJIT)
list(APPEND CONAN_PACKAGE_LIST asmjit/cci.20240531)
@@ -176,7 +174,7 @@ if(CMAKE_PROJECT_NAME STREQUAL "TGC-ISS")
# setup clang-format and clang-tidy
###############################################################################
if (ENABLE_CLANG_TIDY)
- set(CLANG_FORMAT_EXCLUDE_PATTERNS "scc" "install")
+ set(CLANG_FORMAT_EXCLUDE_PATTERNS "build" "install")
find_package(ClangFormat)
find_program (CLANG_TIDY_EXE NAMES "clang-tidy" PATHS /usr/bin )
if (CLANG_TIDY_EXE)
@@ -232,12 +230,6 @@ if(CMAKE_PROJECT_NAME STREQUAL "TGC-ISS")
endif()
endif()
-if(CMAKE_PROJECT_NAME STREQUAL "TGC-ISS" AND NOT USE_CWR_SYSTEMC)
- set(SCC_CMAKE_CONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/scc)
- add_subdirectory(scc/src/common)
-else()
- add_subdirectory(scc)
-endif()
add_subdirectory(dbt-rise-core)
add_subdirectory(dbt-rise-tgc)
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dbt-rise-plugins)
diff --git a/cmake/ConanInline.cmake b/cmake/ConanInline.cmake
new file mode 100644
index 0000000..64a5d08
--- /dev/null
+++ b/cmake/ConanInline.cmake
@@ -0,0 +1,107 @@
+
+set(CONAN_CMAKE_LIST_DIR ${CMAKE_CURRENT_BINARY_DIR})
+
+macro(conan_check)
+ # for backwards compatibility
+ cmake_parse_arguments(MARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+ find_program(CONAN conan)
+ if(NOT EXISTS ${CONAN})
+ message(FATAL_ERROR "Conan is required. Please see README.md")
+ return()
+ endif()
+ execute_process(COMMAND ${CONAN} --version
+ OUTPUT_VARIABLE CONAN_VERSION_OUTPUT)
+ string(REGEX MATCHALL "[0-9.]+" CONAN_VERSION ${CONAN_VERSION_OUTPUT})
+ if (NOT (CONAN_VERSION VERSION_GREATER_EQUAL 1.36.0))
+ message(FATAL_ERROR "Please upgrade your conan to a version greater or equal 1.36")
+ endif()
+
+ if(NOT EXISTS ${CONAN_CMAKE_LIST_DIR}/conan.cmake)
+ message("Downloading conan.cmake to ${CONAN_CMAKE_LIST_DIR}")
+ set(URL https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake)
+ file(DOWNLOAD ${URL} ${CONAN_CMAKE_LIST_DIR}/conan.cmake TIMEOUT 60 STATUS DOWNLOAD_STATUS)
+ list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
+ list(GET DOWNLOAD_STATUS 1 ERROR_MESSAGE)
+ if(NOT (${STATUS_CODE} EQUAL 0))
+ # Exit CMake if the download failed, printing the error message.
+ message(FATAL_ERROR "Error occurred during download: ${ERROR_MESSAGE}")
+ endif()
+ if(NOT EXISTS ${CONAN_CMAKE_LIST_DIR}/conan.cmake)
+ message(FATAL_ERROR "Could not download conan.cmake. Please check your internet connection or proxy settings")
+ endif()
+ file (SIZE ${CONAN_CMAKE_LIST_DIR}/conan.cmake CONAN_CMAKE_SIZE)
+ if(${CONAN_CMAKE_SIZE} EQUAL 0)
+ message(FATAL_ERROR "Could not download conan.cmake. Please check your internet connection or proxy settings")
+ endif()
+ endif()
+ if("${CMAKE_BUILD_TYPE}" STREQUAL "")
+ set(CMAKE_BUILD_TYPE Release)
+ endif()
+
+
+ include(${CONAN_CMAKE_LIST_DIR}/conan.cmake)
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_BINARY_DIR})
+endmacro()
+
+macro(conan_setup)
+ set(options TARGETS)
+ cmake_parse_arguments(MARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+
+ set(conanfile_cmake_paths ${CMAKE_BINARY_DIR}/conan_paths.cmake)
+
+ set(conanfile_cmake ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
+ if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
+ set(conanfile_cmake ${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
+ endif()
+
+ if(EXISTS "${conanfile_cmake_paths}")
+ include(${conanfile_cmake_paths})
+ elseif(EXISTS "${conanfile_cmake}")
+ include(${conanfile_cmake})
+ if( MARGS_TARGETS)
+ conan_basic_setup(TARGETS)
+ else()
+ conan_basic_setup()
+ endif()
+ endif()
+endmacro()
+
+function(conan_configure)
+ conan_cmake_generate_conanfile(OFF ${ARGV})
+endfunction()
+
+macro(conan_install)
+ set(options BUILD_TYPE BUILD)
+ set(oneValueArgs BUILD_TYPE BUILD)
+ cmake_parse_arguments(MARGS "" "${oneValueArgs}" "" ${ARGN} )
+ if(MARGS_BUILD_TYPE)
+ conan_cmake_autodetect(settings BUILD_TYPE ${MARGS_BUILD_TYPE})
+ else()
+ conan_cmake_autodetect(settings BUILD_TYPE)
+ endif()
+ if(CMAKE_CXX_STANDARD)
+ list(APPEND settings compiler.cppstd=${CMAKE_CXX_STANDARD})
+ endif()
+ if(USE_NCSC_SYSTEMC)
+ list(APPEND settings compiler.libcxx=libstdc++)
+ endif()
+ if (NOT "$ENV{CONAN_PROFILE_NAME}" STREQUAL "")
+ set(CONAN_PROFILE "$ENV{CONAN_PROFILE_NAME}" CACHE INTERNAL "Copied from environment variable")
+ else()
+ set(CONAN_PROFILE "default" CACHE INTERNAL "Copied from environment variable")
+ endif()
+
+ if(MARGS_BUILD)
+ conan_cmake_install(PATH_OR_REFERENCE .
+ BUILD ${MARGS_BUILD}
+ PROFILE_BUILD ${CONAN_PROFILE}
+ SETTINGS ${settings})
+ else()
+ conan_cmake_install(PATH_OR_REFERENCE .
+ BUILD missing
+ PROFILE_BUILD ${CONAN_PROFILE}
+ SETTINGS ${settings})
+ endif()
+endmacro()
diff --git a/cmake/FindClangFormat.cmake b/cmake/FindClangFormat.cmake
new file mode 100644
index 0000000..aba73fe
--- /dev/null
+++ b/cmake/FindClangFormat.cmake
@@ -0,0 +1,34 @@
+# Find Clang format
+#
+#
+if(NOT CLANG_FORMAT_BIN_NAME)
+ set(CLANG_FORMAT_BIN_NAME clang-format)
+endif()
+
+# if custom path check there first
+if(CLANG_FORMAT_ROOT_DIR)
+ find_program(CLANG_FORMAT_BIN
+ NAMES
+ ${CLANG_FORMAT_BIN_NAME}
+ PATHS
+ "${CLANG_FORMAT_ROOT_DIR}"
+ NO_DEFAULT_PATH)
+else()
+ find_program(CLANG_FORMAT_BIN NAMES ${CLANG_FORMAT_BIN_NAME})
+endif()
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ ClangFormat
+ DEFAULT_MSG
+ CLANG_FORMAT_BIN)
+
+mark_as_advanced(
+ CLANG_FORMAT_BIN)
+
+if(ClangFormat_FOUND)
+ # A CMake script to find all source files and setup clang-format targets for them
+ include(clang-format)
+else()
+ message("clang-format not found. Not setting up format targets")
+endif()
\ No newline at end of file
diff --git a/cmake/clang-format.cmake b/cmake/clang-format.cmake
new file mode 100644
index 0000000..5388d00
--- /dev/null
+++ b/cmake/clang-format.cmake
@@ -0,0 +1,40 @@
+# additional target to perform clang-format run, requires clang-format
+
+set(CLANG_FORMAT_CXX_FILE_EXTENSIONS ${CLANG_FORMAT_CXX_FILE_EXTENSIONS} *.cpp *.h *.cxx *.hxx *.hpp *.cc *.ipp)
+file(GLOB_RECURSE ALL_SOURCE_FILES ${CLANG_FORMAT_CXX_FILE_EXTENSIONS})
+
+# Don't include some common build folders
+set(CLANG_FORMAT_EXCLUDE_PATTERNS ${CLANG_FORMAT_EXCLUDE_PATTERNS} "/CMakeFiles/" "cmake")
+
+# get all project files file
+foreach (SOURCE_FILE ${ALL_SOURCE_FILES})
+ foreach (EXCLUDE_PATTERN ${CLANG_FORMAT_EXCLUDE_PATTERNS})
+ string(FIND ${SOURCE_FILE} ${EXCLUDE_PATTERN} EXCLUDE_FOUND)
+ if (NOT ${EXCLUDE_FOUND} EQUAL -1)
+ list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
+ endif ()
+ endforeach ()
+endforeach ()
+
+set(FORMAT_TARGET_NAME format)
+if(NOT CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
+ set(FORMAT_TARGET_NAME format-${PROJECT_NAME})
+endif()
+
+add_custom_target(${FORMAT_TARGET_NAME}
+ COMMENT "Running clang-format to change files"
+ COMMAND ${CLANG_FORMAT_BIN} -style=file -i ${ALL_SOURCE_FILES}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+
+add_custom_target(${FORMAT_TARGET_NAME}-check
+ COMMENT "Checking clang-format changes"
+ # Use ! to negate the result for correct output
+ COMMAND !
+ ${CLANG_FORMAT_BIN}
+ -style=file
+ -output-replacements-xml
+ ${ALL_SOURCE_FILES}
+ | grep -q "replacement offset"
+)
\ No newline at end of file
diff --git a/dbt-rise-core b/dbt-rise-core
index 01d81b0..dc4e0ca 160000
--- a/dbt-rise-core
+++ b/dbt-rise-core
@@ -1 +1 @@
-Subproject commit 01d81b03fbe6d5d3ed7f4655b88655a1e124df1f
+Subproject commit dc4e0cadf330b4664ef6160b5a685df26e072109
diff --git a/dbt-rise-tgc b/dbt-rise-tgc
index cfc980a..e238369 160000
--- a/dbt-rise-tgc
+++ b/dbt-rise-tgc
@@ -1 +1 @@
-Subproject commit cfc980a069370cef79b709a9d67f623872d0b068
+Subproject commit e238369e1864ec70f21ad6e9c2f65a63f7c1e43e
diff --git a/scc b/scc
deleted file mode 160000
index 7960982..0000000
--- a/scc
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 7960982947592b1bd97b71c5615a5e2b82a920c0