From bd3139b623b1ec5b39655ad14ae53d00ccb72df1 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Sat, 15 Mar 2025 06:55:46 +0100 Subject: [PATCH] removes scc submodule --- .cproject | 5 +- CMakeLists.txt | 26 +++------ cmake/ConanInline.cmake | 107 ++++++++++++++++++++++++++++++++++++ cmake/FindClangFormat.cmake | 34 ++++++++++++ cmake/clang-format.cmake | 40 ++++++++++++++ dbt-rise-core | 2 +- dbt-rise-tgc | 2 +- scc | 1 - 8 files changed, 195 insertions(+), 22 deletions(-) create mode 100644 cmake/ConanInline.cmake create mode 100644 cmake/FindClangFormat.cmake create mode 100644 cmake/clang-format.cmake delete mode 160000 scc 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