@@ -13,6 +13,8 @@ option(LIBSCRATCHCPP_ENABLE_CODE_ANALYZER "Analyze Scratch scripts to enable var
1313option (LIBSCRATCHCPP_LLVM_INTEGER_SUPPORT "Use integers when possible to enable various optimizations" ON )
1414option (LIBSCRATCHCPP_ENABLE_SANITIZER "Enable sanitizer to detect memory issues" OFF )
1515
16+ set (LIBSCRATCHCPP_CODEGEN_BACKEND "llvm" CACHE STRING "The backend used for code generation" )
17+
1618if (LIBSCRATCHCPP_ENABLE_SANITIZER)
1719 set (SANITIZER_FLAGS "-fsanitize=undefined -fsanitize=address -fno-omit-frame-pointer" )
1820 set (CMAKE_CFLAGS ${CMAKE_CFLAGS} ${SANITIZER_FLAGS} )
@@ -130,20 +132,29 @@ if (LIBSCRATCHCPP_NETWORK_SUPPORT)
130132endif ()
131133
132134# LLVM
133- include (build /HunterPackages.cmake )
134- include (build /LLVM.cmake )
135- target_link_libraries (scratchcpp PRIVATE LLVM )
135+ if (LIBSCRATCHCPP_CODEGEN_BACKEND STREQUAL "llvm" )
136+ include (build /HunterPackages.cmake )
137+ include (build /LLVM.cmake )
138+ target_link_libraries (scratchcpp PRIVATE LLVM )
136139
137- if (LIBSCRATCHCPP_PRINT_LLVM_IR)
138- target_compile_definitions (scratchcpp PRIVATE PRINT_LLVM_IR )
139- endif ()
140+ target_compile_definitions (scratchcpp PRIVATE CODEGEN_BACKEND_LLVM )
141+
142+ if (LIBSCRATCHCPP_PRINT_LLVM_IR)
143+ target_compile_definitions (scratchcpp PRIVATE PRINT_LLVM_IR )
144+ endif ()
140145
141- if (LIBSCRATCHCPP_ENABLE_CODE_ANALYZER)
142- target_compile_definitions (scratchcpp PRIVATE ENABLE_CODE_ANALYZER )
146+ if (LIBSCRATCHCPP_ENABLE_CODE_ANALYZER)
147+ target_compile_definitions (scratchcpp PRIVATE ENABLE_CODE_ANALYZER )
148+ endif ()
149+
150+ if (LIBSCRATCHCPP_LLVM_INTEGER_SUPPORT)
151+ target_compile_definitions (scratchcpp PRIVATE LLVM_INTEGER_SUPPORT )
152+ endif ()
143153endif ()
144154
145- if (LIBSCRATCHCPP_LLVM_INTEGER_SUPPORT)
146- target_compile_definitions (scratchcpp PRIVATE LLVM_INTEGER_SUPPORT )
155+ # C++ transpiler
156+ if (LIBSCRATCHCPP_CODEGEN_BACKEND STREQUAL "cpp" )
157+ target_compile_definitions (scratchcpp PRIVATE CODEGEN_BACKEND_CPP )
147158endif ()
148159
149160# Macros
0 commit comments