|
|
|
@ -1,9 +1,5 @@
|
|
|
|
|
cmake_minimum_required(VERSION 3.10)
|
|
|
|
|
project(Ravi VERSION 1.0.4)
|
|
|
|
|
|
|
|
|
|
enable_language(CXX)
|
|
|
|
|
enable_language(C)
|
|
|
|
|
enable_testing()
|
|
|
|
|
cmake_minimum_required(VERSION 3.14)
|
|
|
|
|
project(Ravi VERSION 1.0.4 LANGUAGES C CXX)
|
|
|
|
|
|
|
|
|
|
# Get access to CMake helpers
|
|
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
|
|
|
|
@ -48,28 +44,66 @@ else ()
|
|
|
|
|
message(STATUS "DYNAMIC library build enabled")
|
|
|
|
|
set(LIBRAVI_BUILD_TYPE SHARED)
|
|
|
|
|
endif ()
|
|
|
|
|
message(STATUS "Computed goto ${COMPUTED_GOTO}")
|
|
|
|
|
if (COMPUTED_GOTO AND MSVC)
|
|
|
|
|
message(WARNING "Computed goto is not available with MSVC")
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
include_directories("${PROJECT_SOURCE_DIR}/include")
|
|
|
|
|
|
|
|
|
|
# define the Lua core source files
|
|
|
|
|
set(RAVI_AST_SOURCES src/ravi_ast_parse.c src/ravi_ast_print.c src/ravi_ast_typecheck.c)
|
|
|
|
|
set(LUA_CORE_SRCS src/lapi.c src/lcode.c src/lctype.c src/ldebug.c src/ldo.c src/ldump.c
|
|
|
|
|
src/lfunc.c src/lgc.c src/llex.c src/lmem.c src/lobject.c src/lopcodes.c
|
|
|
|
|
src/lparser.c src/lstate.c src/lstring.c src/ltable.c src/ltm.c src/lundump.c
|
|
|
|
|
src/lvm.c src/lzio.c src/ravijit.cpp src/ltests.c src/ravi_profile.c
|
|
|
|
|
src/ravi_ast_parse.c src/ravi_ast_print.c src/ravi_ast_typecheck.c src/ravi_membuf.c
|
|
|
|
|
src/ravi_jitshared.c src/bit.c src/ravi_alloc.c)
|
|
|
|
|
src/ravi_membuf.c src/ravi_jitshared.c src/bit.c src/ravi_alloc.c
|
|
|
|
|
${RAVI_AST_SOURCES})
|
|
|
|
|
# define the Lua library source files
|
|
|
|
|
set(LUA_LIB_SRCS src/lauxlib.c src/lbaselib.c src/lbitlib.c src/lcorolib.c src/ldblib.c src/liolib.c
|
|
|
|
|
src/lmathlib.c src/loslib.c src/ltablib.c src/lstrlib.c src/loadlib.c src/linit.c src/lutf8lib.c)
|
|
|
|
|
set(LUA_HEADERS include/lua.h include/luaconf.h include/lualib.h include/lauxlib.h)
|
|
|
|
|
# LLVM code gen
|
|
|
|
|
set(LLVM_JIT_SRCS src/ravi_llvmjit.cpp src/ravi_llvmtypes.cpp
|
|
|
|
|
src/ravi_llvmcodegen.cpp src/ravi_llvmforprep.cpp src/ravi_llvmcomp.cpp
|
|
|
|
|
src/ravi_llvmreturn.cpp src/ravi_llvmload.cpp src/ravi_llvmforloop.cpp
|
|
|
|
|
src/ravi_llvmarith1.cpp src/ravi_llvmcall.cpp src/ravi_llvmtable.cpp
|
|
|
|
|
src/ravi_llvmarith2.cpp src/ravi_llvmtforcall.cpp src/ravi_llvmrest.cpp)
|
|
|
|
|
# MIR sources
|
|
|
|
|
set(MIR_HEADERS mir/mir.h mir/mir-gen.h mir/mir-varr.h mir/mir-dlist.h mir/mir-htab.h
|
|
|
|
|
mir/mir-hash.h mir/mir-bitmap.h)
|
|
|
|
|
set(MIR_SRCS mir/mir.c mir/mir-gen.c)
|
|
|
|
|
set(C2MIR_SRCS mir/c2mir/c2mir.c)
|
|
|
|
|
# OMR code gen
|
|
|
|
|
set(OMR_JIT_SRCS src/ravi_omrjit.c src/ravi_omrjitapi.c)
|
|
|
|
|
# MIR code gen
|
|
|
|
|
set(MIR_JIT_SRCS src/ravi_mirjit.c)
|
|
|
|
|
set(NO_JIT_SRCS src/ravi_nojit.c)
|
|
|
|
|
# Common stuff we need even if we don't use dmrC.
|
|
|
|
|
set(DMR_C_HEADERS_COMMON dmr_c/src/allocate.h dmr_c/src/port.h dmr_c/src/ptrlist.h)
|
|
|
|
|
set(DMR_C_SRCS_COMMON dmr_c/src/allocate.c dmr_c/src/ptrlist.c)
|
|
|
|
|
# dmrC Optional sources
|
|
|
|
|
set(RAVI_C_SYMBOL_PARSER src/ravi_dmrc_parsesymbols.c)
|
|
|
|
|
set(DMR_C_SRCS_OPT dmr_c/src/builtin.c dmr_c/src/char.c dmr_c/src/expression.c dmr_c/src/evaluate.c
|
|
|
|
|
dmr_c/src/expand.c dmr_c/src/inline.c dmr_c/src/lib.c dmr_c/src/linearize.c
|
|
|
|
|
dmr_c/src/liveness.c dmr_c/src/parse.c dmr_c/src/target.c dmr_c/src/tokenize.c
|
|
|
|
|
dmr_c/src/pre-process.c dmr_c/src/scope.c dmr_c/src/show-parse.c dmr_c/src/symbol.c
|
|
|
|
|
dmr_c/src/walksymbol.c)
|
|
|
|
|
set(DMR_C_HEADERS_OPT dmr_c/src/char.h dmr_c/src/expression.h dmr_c/src/flow.h dmr_c/src/ident-list.h
|
|
|
|
|
dmr_c/src/linearize.h dmr_c/src/lib.h dmr_c/src/parse.h dmr_c/src/scope.h dmr_c/src/symbol.h
|
|
|
|
|
dmr_c/src/target.h dmr_c/src/token.h dmr_c/src/walksymbol.h)
|
|
|
|
|
set(LUA_CMD_SRCS src/lua.c)
|
|
|
|
|
file(GLOB RAVI_HEADERS "${PROJECT_SOURCE_DIR}/include/*.h")
|
|
|
|
|
|
|
|
|
|
if (COMPUTED_GOTO AND NOT MSVC)
|
|
|
|
|
if (CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
|
|
|
if (CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "AppleClang")
|
|
|
|
|
set_source_files_properties(src/lvm.c PROPERTIES COMPILE_FLAGS -DRAVI_USE_COMPUTED_GOTO)
|
|
|
|
|
elseif (CMAKE_C_COMPILER_ID MATCHES "GNU")
|
|
|
|
|
set_source_files_properties(src/lvm.c PROPERTIES COMPILE_FLAGS "-fno-crossjumping -fno-gcse -DRAVI_USE_COMPUTED_GOTO")
|
|
|
|
|
endif ()
|
|
|
|
|
endif ()
|
|
|
|
|
# define the Lua library source files
|
|
|
|
|
set(LUA_LIB_SRCS src/lauxlib.c src/lbaselib.c src/lbitlib.c src/lcorolib.c src/ldblib.c src/liolib.c
|
|
|
|
|
src/lmathlib.c src/loslib.c src/ltablib.c src/lstrlib.c src/loadlib.c src/linit.c src/lutf8lib.c)
|
|
|
|
|
set(LUA_HEADERS include/lua.h include/luaconf.h include/lualib.h include/lauxlib.h)
|
|
|
|
|
|
|
|
|
|
set(EMBEDDED_DMRC ON)
|
|
|
|
|
if (LLVM_JIT)
|
|
|
|
|
find_package(LLVM REQUIRED CONFIG)
|
|
|
|
|
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
|
|
|
|
@ -78,11 +112,7 @@ if (LLVM_JIT)
|
|
|
|
|
message(STATUS "LLVM Definitions ${LLVM_DEFINITIONS}")
|
|
|
|
|
message(STATUS "LLVMJIT enabled")
|
|
|
|
|
|
|
|
|
|
set(LLVM_JIT_SRCS src/ravi_llvmjit.cpp src/ravi_llvmtypes.cpp
|
|
|
|
|
src/ravi_llvmcodegen.cpp src/ravi_llvmforprep.cpp src/ravi_llvmcomp.cpp
|
|
|
|
|
src/ravi_llvmreturn.cpp src/ravi_llvmload.cpp src/ravi_llvmforloop.cpp
|
|
|
|
|
src/ravi_llvmarith1.cpp src/ravi_llvmcall.cpp src/ravi_llvmtable.cpp
|
|
|
|
|
src/ravi_llvmarith2.cpp src/ravi_llvmtforcall.cpp src/ravi_llvmrest.cpp)
|
|
|
|
|
set(JIT_SRCS ${LLVM_JIT_SRCS})
|
|
|
|
|
if (NOT MSVC)
|
|
|
|
|
set_source_files_properties(${LLVM_JIT_SRCS} PROPERTIES
|
|
|
|
|
COMPILE_FLAGS "-fno-rtti -fno-exceptions ${LLVM_DEFINITIONS}")
|
|
|
|
@ -92,93 +122,6 @@ if (LLVM_JIT)
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES ${LLVM_INCLUDE_DIRS}
|
|
|
|
|
)
|
|
|
|
|
elseif (OMR_JIT)
|
|
|
|
|
find_package(OMRJIT REQUIRED)
|
|
|
|
|
message(STATUS "OMRJIT enabled")
|
|
|
|
|
|
|
|
|
|
set(OMR_JIT_SRCS src/ravi_omrjit.c src/ravi_omrjitapi.c)
|
|
|
|
|
elseif (MIR_JIT)
|
|
|
|
|
include(cmake/mir.cmake)
|
|
|
|
|
message(STATUS "MIRJIT enabled")
|
|
|
|
|
|
|
|
|
|
set(MIR_JIT_SRCS src/ravi_mirjit.c)
|
|
|
|
|
else ()
|
|
|
|
|
set(NO_JIT_SRCS src/ravi_nojit.c)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
message(STATUS "Computed goto ${COMPUTED_GOTO}")
|
|
|
|
|
if (COMPUTED_GOTO AND MSVC)
|
|
|
|
|
message(WARNING "Computed goto is not available with MSVC")
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
file(GLOB RAVI_HEADERS "${PROJECT_SOURCE_DIR}/include/*.h")
|
|
|
|
|
|
|
|
|
|
# Misc setup
|
|
|
|
|
if (MSVC OR APPLE)
|
|
|
|
|
source_group("Ravi Headers" FILES ${RAVI_HEADERS})
|
|
|
|
|
source_group("Ravi Source Files" FILES ${LUA_CORE_SRCS} ${LUA_LIB_SRCS}
|
|
|
|
|
${LLVM_JIT_SRCS})
|
|
|
|
|
if (APPLE)
|
|
|
|
|
set(EXTRA_LIBRARIES m readline)
|
|
|
|
|
endif ()
|
|
|
|
|
elseif (NOT WIN32)
|
|
|
|
|
# On Linux we need to link libdl to get access to
|
|
|
|
|
# functions like dlopen()
|
|
|
|
|
# ubsan can be added to get -fsanitize=undefined
|
|
|
|
|
set(EXTRA_LIBRARIES m dl readline)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# Common stuff we need even if we don't use dmrC.
|
|
|
|
|
set(DMR_C_HEADERS_COMMON
|
|
|
|
|
dmr_c/src/allocate.h
|
|
|
|
|
dmr_c/src/port.h
|
|
|
|
|
dmr_c/src/ptrlist.h
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set(DMR_C_SRCS_COMMON
|
|
|
|
|
dmr_c/src/allocate.c
|
|
|
|
|
dmr_c/src/ptrlist.c
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# dmrC Optional sources
|
|
|
|
|
set(DMR_C_SRCS_OPT
|
|
|
|
|
dmr_c/src/builtin.c
|
|
|
|
|
dmr_c/src/char.c
|
|
|
|
|
dmr_c/src/expression.c
|
|
|
|
|
dmr_c/src/evaluate.c
|
|
|
|
|
dmr_c/src/expand.c
|
|
|
|
|
dmr_c/src/inline.c
|
|
|
|
|
dmr_c/src/lib.c
|
|
|
|
|
dmr_c/src/linearize.c
|
|
|
|
|
dmr_c/src/liveness.c
|
|
|
|
|
dmr_c/src/parse.c
|
|
|
|
|
dmr_c/src/target.c
|
|
|
|
|
dmr_c/src/tokenize.c
|
|
|
|
|
dmr_c/src/pre-process.c
|
|
|
|
|
dmr_c/src/scope.c
|
|
|
|
|
dmr_c/src/show-parse.c
|
|
|
|
|
dmr_c/src/symbol.c
|
|
|
|
|
dmr_c/src/walksymbol.c
|
|
|
|
|
src/ravi_dmrc_parsesymbols.c
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set(DMR_C_HEADERS_OPT
|
|
|
|
|
dmr_c/src/char.h
|
|
|
|
|
dmr_c/src/expression.h
|
|
|
|
|
dmr_c/src/flow.h
|
|
|
|
|
dmr_c/src/ident-list.h
|
|
|
|
|
dmr_c/src/linearize.h
|
|
|
|
|
dmr_c/src/lib.h
|
|
|
|
|
dmr_c/src/parse.h
|
|
|
|
|
dmr_c/src/scope.h
|
|
|
|
|
dmr_c/src/symbol.h
|
|
|
|
|
dmr_c/src/target.h
|
|
|
|
|
dmr_c/src/token.h
|
|
|
|
|
dmr_c/src/walksymbol.h
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set(EMBEDDED_DMRC ON)
|
|
|
|
|
if (LLVM_JIT)
|
|
|
|
|
set(DMR_C_JIT_SRCS
|
|
|
|
|
dmr_c/llvm-backend/sparse-llvm.c
|
|
|
|
|
)
|
|
|
|
@ -186,19 +129,27 @@ if (LLVM_JIT)
|
|
|
|
|
dmr_c/llvm-backend/dmr_c.h
|
|
|
|
|
)
|
|
|
|
|
set(DMR_C_HEADERS ${DMR_C_HEADERS_OPT} ${DMR_C_HEADERS_COMMON})
|
|
|
|
|
set(DMR_C_SRCS ${DMR_C_SRCS_OPT} ${DMR_C_SRCS_COMMON})
|
|
|
|
|
set(DMR_C_SRCS ${DMR_C_SRCS_OPT} ${DMR_C_SRCS_COMMON} ${RAVI_C_SYMBOL_PARSER})
|
|
|
|
|
|
|
|
|
|
set_property(SOURCE ${DMR_C_JIT_SRCS} src/ravi_llvmcodegen.cpp src/ravi_dmrc_parsesymbols.c
|
|
|
|
|
set_property(SOURCE ${DMR_C_JIT_SRCS} src/ravi_llvmcodegen.cpp ${RAVI_C_SYMBOL_PARSER}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES "${PROJECT_SOURCE_DIR}/dmr_c/llvm-backend")
|
|
|
|
|
set_property(SOURCE ${DMR_C_SRCS} ${DMR_C_JIT_SRCS} src/ravi_ast_parse.c src/ravi_ast_print.c src/ravi_ast_typecheck.c
|
|
|
|
|
set_property(SOURCE ${DMR_C_SRCS} ${DMR_C_JIT_SRCS} ${RAVI_AST_SOURCES}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES "${PROJECT_SOURCE_DIR}/dmr_c/src")
|
|
|
|
|
set_property(
|
|
|
|
|
SOURCE src/ravi_dmrc_parsesymbols.c ${DMR_C_JIT_SRCS}
|
|
|
|
|
SOURCE ${RAVI_C_SYMBOL_PARSER} ${DMR_C_JIT_SRCS}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES ${LLVM_INCLUDE_DIRS})
|
|
|
|
|
# FIXME get rid of this dependency
|
|
|
|
|
set_property(
|
|
|
|
|
SOURCE ${LUA_CMD_SRCS}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES ${LLVM_INCLUDE_DIRS})
|
|
|
|
|
elseif (OMR_JIT)
|
|
|
|
|
find_package(OMRJIT REQUIRED)
|
|
|
|
|
message(STATUS "OMRJIT enabled")
|
|
|
|
|
set(JIT_SRCS ${OMR_JIT_SRCS})
|
|
|
|
|
set(DMR_C_JIT_SRCS
|
|
|
|
|
dmr_c/omrjit-backend/sparse-omrjit.c
|
|
|
|
|
)
|
|
|
|
@ -206,15 +157,15 @@ elseif (OMR_JIT)
|
|
|
|
|
dmr_c/omrjit-backend/dmr_c.h
|
|
|
|
|
)
|
|
|
|
|
set(DMR_C_HEADERS ${DMR_C_HEADERS_OPT} ${DMR_C_HEADERS_COMMON})
|
|
|
|
|
set(DMR_C_SRCS ${DMR_C_SRCS_OPT} ${DMR_C_SRCS_COMMON})
|
|
|
|
|
set(DMR_C_SRCS ${DMR_C_SRCS_OPT} ${DMR_C_SRCS_COMMON} ${RAVI_C_SYMBOL_PARSER})
|
|
|
|
|
|
|
|
|
|
set_property(SOURCE ${DMR_C_JIT_SRCS} src/ravi_dmrc_parsesymbols.c ${OMR_JIT_SRCS}
|
|
|
|
|
set_property(SOURCE ${DMR_C_JIT_SRCS} ${RAVI_C_SYMBOL_PARSER} ${OMR_JIT_SRCS}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES "${PROJECT_SOURCE_DIR}/dmr_c/omrjit-backend")
|
|
|
|
|
set_property(SOURCE ${DMR_C_SRCS} ${DMR_C_JIT_SRCS} src/ravi_ast_parse.c src/ravi_ast_print.c src/ravi_ast_typecheck.c
|
|
|
|
|
set_property(SOURCE ${DMR_C_SRCS} ${DMR_C_JIT_SRCS} ${RAVI_AST_SOURCES}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES "${PROJECT_SOURCE_DIR}/dmr_c/src")
|
|
|
|
|
set_property(SOURCE ${DMR_C_JIT_SRCS} ${OMR_JIT_SRCS} src/ravi_dmrc_parsesymbols.c
|
|
|
|
|
set_property(SOURCE ${DMR_C_JIT_SRCS} ${OMR_JIT_SRCS} ${RAVI_C_SYMBOL_PARSER}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES "${OMRJIT_INCLUDE_DIRS}"
|
|
|
|
|
)
|
|
|
|
@ -224,15 +175,21 @@ else ()
|
|
|
|
|
set(DMR_C_SRCS ${DMR_C_SRCS_COMMON})
|
|
|
|
|
set(EMBEDDED_DMRC OFF)
|
|
|
|
|
|
|
|
|
|
set_property(SOURCE ${DMR_C_SRCS_COMMON} src/ravi_ast_parse.c src/ravi_ast_print.c src/ravi_ast_typecheck.c
|
|
|
|
|
set_property(SOURCE ${DMR_C_SRCS_COMMON} ${RAVI_AST_SOURCES}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES "${PROJECT_SOURCE_DIR}/dmr_c/src")
|
|
|
|
|
|
|
|
|
|
if (MIR_JIT)
|
|
|
|
|
message(STATUS "MIRJIT enabled")
|
|
|
|
|
set(JIT_SRCS ${MIR_SRCS} ${C2MIR_SRCS} ${MIR_JIT_SRCS})
|
|
|
|
|
set_property(SOURCE ${MIR_SRCS} ${C2MIR_SRCS} ${MIR_JIT_SRCS}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/mir;${CMAKE_SOURCE_DIR}/mir/c2mir"
|
|
|
|
|
)
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/mir;${CMAKE_SOURCE_DIR}/mir/c2mir")
|
|
|
|
|
set_property(SOURCE ${MIR_SRCS} ${C2MIR_SRCS} ${MIR_JIT_SRCS}
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY COMPILE_DEFINITIONS "x86_64;MIR_IO;MIR_SCAN")
|
|
|
|
|
else()
|
|
|
|
|
set(JIT_SRCS ${NO_JIT_SRCS})
|
|
|
|
|
endif ()
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
@ -253,6 +210,20 @@ endif ()
|
|
|
|
|
if (MSVC OR APPLE)
|
|
|
|
|
source_group("dmrC Headers" FILES ${DMR_C_HEADERS} ${DMR_C_JIT_HEADERS})
|
|
|
|
|
source_group("dmrC Source Files" FILES ${DMR_C_SRCS} ${DMR_C_JIT_SRCS})
|
|
|
|
|
source_group("Ravi Headers" FILES ${RAVI_HEADERS})
|
|
|
|
|
source_group("Ravi Source Files" FILES ${LUA_CORE_SRCS} ${LUA_LIB_SRCS} ${JIT_SRCS})
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# Misc setup
|
|
|
|
|
if (MSVC OR APPLE)
|
|
|
|
|
if (APPLE)
|
|
|
|
|
set(EXTRA_LIBRARIES m readline)
|
|
|
|
|
endif ()
|
|
|
|
|
elseif (NOT WIN32)
|
|
|
|
|
# On Linux we need to link libdl to get access to
|
|
|
|
|
# functions like dlopen()
|
|
|
|
|
# ubsan can be added to get -fsanitize=undefined
|
|
|
|
|
set(EXTRA_LIBRARIES m dl readline)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# Enable minimal required LLVM components so that the
|
|
|
|
@ -312,46 +283,22 @@ if (LLVM_JIT)
|
|
|
|
|
message(STATUS "LLVM_LIBS ${LLVM_LIBS}")
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Name library differently based on JIT backend
|
|
|
|
|
if (LLVM_JIT)
|
|
|
|
|
set(LIBRAVI_NAME libravillvm)
|
|
|
|
|
elseif (OMR_JIT)
|
|
|
|
|
set(LIBRAVI_NAME libravilomr)
|
|
|
|
|
elseif (MIR_JIT)
|
|
|
|
|
set(LIBRAVI_NAME libravi)
|
|
|
|
|
else ()
|
|
|
|
|
set(LIBRAVI_NAME libravinojit)
|
|
|
|
|
endif ()
|
|
|
|
|
set(LIBRAVI_NAME libravi)
|
|
|
|
|
|
|
|
|
|
#Main library
|
|
|
|
|
add_library(${LIBRAVI_NAME} ${LIBRAVI_BUILD_TYPE}
|
|
|
|
|
${RAVI_HEADERS}
|
|
|
|
|
${LUA_LIB_SRCS}
|
|
|
|
|
${LUA_CORE_SRCS}
|
|
|
|
|
${LLVM_JIT_SRCS}
|
|
|
|
|
${OMR_JIT_SRCS}
|
|
|
|
|
${MIR_JIT_SRCS}
|
|
|
|
|
${NO_JIT_SRCS}
|
|
|
|
|
${JIT_SRCS}
|
|
|
|
|
${DMR_C_HEADERS}
|
|
|
|
|
${DMR_C_SRCS}
|
|
|
|
|
${DMR_C_JIT_SRCS}
|
|
|
|
|
${MIR_HEADERS}
|
|
|
|
|
${MIR_SRCS}
|
|
|
|
|
${C2MIR_SRCS}
|
|
|
|
|
)
|
|
|
|
|
${DMR_C_JIT_SRCS})
|
|
|
|
|
target_link_libraries(${LIBRAVI_NAME} ${EXTRA_LIBRARIES} ${LLVM_LIBS} ${OMRJIT_LIBRARIES} ${MIRJIT_LIBRARIES})
|
|
|
|
|
|
|
|
|
|
# Main Ravi executable
|
|
|
|
|
add_executable(ravi src/lua.c)
|
|
|
|
|
add_executable(ravi ${LUA_CMD_SRCS})
|
|
|
|
|
target_link_libraries(ravi ${LIBRAVI_NAME})
|
|
|
|
|
if (LLVM_JIT)
|
|
|
|
|
# FIXME get rid of this dependency
|
|
|
|
|
set_property(
|
|
|
|
|
SOURCE src/lua.c
|
|
|
|
|
APPEND
|
|
|
|
|
PROPERTY INCLUDE_DIRECTORIES ${LLVM_INCLUDE_DIRS})
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# Sources that are needed for a static NOJIT basic library
|
|
|
|
|
set(NOJIT_RAVI_SRCS
|
|
|
|
@ -361,7 +308,7 @@ set(NOJIT_RAVI_SRCS
|
|
|
|
|
${DMR_C_HEADERS}
|
|
|
|
|
${DMR_C_SRCS}
|
|
|
|
|
${DMR_C_JIT_SRCS}
|
|
|
|
|
src/ravi_nojit.c)
|
|
|
|
|
${NO_JIT_SRCS})
|
|
|
|
|
set(RAVI_STATICEXEC_TARGET ravi_s)
|
|
|
|
|
|
|
|
|
|
# We always build a static library without JIT so that
|
|
|
|
@ -375,7 +322,7 @@ target_link_libraries(libravinojit_static ${EXTRA_LIBRARIES})
|
|
|
|
|
# This is sometimes useful in other projects that just need a Lua commandline
|
|
|
|
|
# but do not care about the shared library
|
|
|
|
|
add_executable(${RAVI_STATICEXEC_TARGET}
|
|
|
|
|
src/lua.c)
|
|
|
|
|
${LUA_CMD_SRCS})
|
|
|
|
|
target_link_libraries(ravi_s libravinojit_static)
|
|
|
|
|
|
|
|
|
|
if (NOT LTESTS)
|
|
|
|
@ -460,9 +407,6 @@ add_executable(testravidebug
|
|
|
|
|
vscode-debugger/src/protocol.c)
|
|
|
|
|
target_link_libraries(testravidebug libravinojit_static)
|
|
|
|
|
|
|
|
|
|
add_test(TestRaviDebug testravidebug)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
configure_file(lua-config.cmake.in lua-config.cmake @ONLY)
|
|
|
|
|
|
|
|
|
|
if (WIN32)
|
|
|
|
|