diff options
-rw-r--r-- | docs/getting_started.md | 12 | ||||
-rw-r--r-- | riscv_script/riscv-clang.cmake | 23 |
2 files changed, 25 insertions, 10 deletions
diff --git a/docs/getting_started.md b/docs/getting_started.md index d04e2d48..f2f71b8b 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -238,6 +238,18 @@ After running script, clang & qemu are built in `build-toolchain-qemu/riscv-clan -DUSE_RVV=ON . cmake --build out/Release/ +#### Customized Compiler Flags + +Customized compiler flags are supported by `-DRISCV_COMPILER_FLAGS="xxx"`. +If `-DRISCV_COMPILER_FLAGS="xxx"` is manually assigned, other compile flags(e.g disable -march=xxx) will not be appended. + +Example: + + cmake -B out/Release/ -DUNIT_TEST=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE="./riscv_script/riscv-clang.cmake" \ + -DRISCV_COMPILER_FLAGS="-mcpu=sifive-x280" \ + . ### Run on QEMU diff --git a/riscv_script/riscv-clang.cmake b/riscv_script/riscv-clang.cmake index 47dd5067..e287941f 100644 --- a/riscv_script/riscv-clang.cmake +++ b/riscv_script/riscv-clang.cmake @@ -28,17 +28,20 @@ set(CMAKE_OBJDUMP "${TOOLCHAIN_PATH}/bin/llvm-objdump") set(CMAKE_OBJCOPY "${TOOLCHAIN_PATH}/bin/llvm-objcopy") # compile options -message(STATUS "USE_RVV: ${USE_RVV}") -message(STATUS "USE_AUTO_VECTORIZER: ${USE_AUTO_VECTORIZER}") -set(RISCV_COMPILER_FLAGS) -if(USE_RVV) - list(APPEND RISCV_COMPILER_FLAGS "-march=rv64gcv") - if(NOT USE_AUTO_VECTORIZER) - # Disable auto-vectorizer - add_compile_options(-fno-vectorize -fno-slp-vectorize) +set(RISCV_COMPILER_FLAGS "" CACHE STRING "Compile flags") +# if user provides RISCV_COMPILER_FLAGS, appeding compile flags is avoided. +if(RISCV_COMPILER_FLAGS STREQUAL "") + message(STATUS "USE_RVV: ${USE_RVV}") + message(STATUS "USE_AUTO_VECTORIZER: ${USE_AUTO_VECTORIZER}") + if(USE_RVV) + list(APPEND RISCV_COMPILER_FLAGS "-march=rv64gcv") + if(NOT USE_AUTO_VECTORIZER) + # Disable auto-vectorizer + add_compile_options(-fno-vectorize -fno-slp-vectorize) + endif() + else() + list(APPEND RISCV_COMPILER_FLAGS "-march=rv64gc") endif() -else() - list(APPEND RISCV_COMPILER_FLAGS "-march=rv64gc") endif() message(STATUS "RISCV_COMPILER_FLAGS: ${RISCV_COMPILER_FLAGS}") |