diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7099e9bef7b5dad827b8bf76ced72d6ab4d9cf41..68d69eded3b6cf4a1ed88cee1c040b9c8b30de6d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -266,7 +266,7 @@ add_executable( ${LIBUTIL_FREEBSD_SRC}/flopen.c ${LIBUTIL_FREEBSD_SRC}/pidfile.c) -add_dependencies(tarantool build_bundled_libs sql) +add_dependencies(tarantool build_bundled_libs) target_link_libraries(tarantool box ${common_libraries}) if (TARGET_OS_FREEBSD AND NOT TARGET_OS_DEBIAN_FREEBSD) diff --git a/src/box/CMakeLists.txt b/src/box/CMakeLists.txt index 230e7427d92613510e10438b9257de200b340d0d..63f98f6c89caf76cdfe3592696c503781de0607f 100644 --- a/src/box/CMakeLists.txt +++ b/src/box/CMakeLists.txt @@ -1,12 +1,11 @@ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/src/box/lua) +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/src/box/sql) # Sometimes 'spying' code is not acceptable even if it would be # disabled by default. That option allows to remove the feedback # daemon from the build completely. option(ENABLE_FEEDBACK_DAEMON "Feedback daemon which reports debug data to the Tarantool team" ON) -add_subdirectory(sql) - set(lua_sources) lua_source(lua_sources lua/load_cfg.lua) lua_source(lua_sources lua/schema.lua) @@ -25,6 +24,52 @@ lua_source(lua_sources lua/merger.lua) set(bin_sources) bin_source(bin_sources bootstrap.snap bootstrap.h) +set(sql_sources + sql/opcodes.c + sql/parse.c + sql/alter.c + sql/analyze.c + sql/cursor.c + sql/build.c + sql/callback.c + sql/date.c + sql/delete.c + sql/expr.c + sql/fk_constraint.c + sql/func.c + sql/global.c + sql/hash.c + sql/insert.c + sql/legacy.c + sql/main.c + sql/malloc.c + sql/os.c + sql/os_unix.c + sql/parse_def.c + sql/pragma.c + sql/prepare.c + sql/printf.c + sql/random.c + sql/resolve.c + sql/select.c + sql/tokenize.c + sql/treeview.c + sql/trigger.c + sql/utf.c + sql/update.c + sql/util.c + sql/vdbe.c + sql/vdbeapi.c + sql/vdbeaux.c + sql/vdbemem.c + sql/vdbesort.c + sql/vdbetrace.c + sql/walker.c + sql/where.c + sql/wherecode.c + sql/whereexpr.c +) + add_custom_target(box_generate_lua_sources WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src/box DEPENDS ${lua_sources}) @@ -143,6 +188,7 @@ add_library(box STATIC wal.c call.c merger.c + ${sql_sources} ${lua_sources} lua/init.c lua/call.c @@ -167,6 +213,53 @@ add_library(box STATIC lua/merger.c ${bin_sources}) +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(-DSQL_DEBUG=1) +endif() +add_definitions(-DSQL_OMIT_AUTOMATIC_INDEX=1 -DSQL_TEST=1) + +set(EXT_SRC_DIR ${CMAKE_SOURCE_DIR}/extra) +set(EXT_BIN_DIR ${CMAKE_BINARY_DIR}/extra) +set(SQL_SRC_DIR ${CMAKE_SOURCE_DIR}/src/box/sql) +set(SQL_BIN_DIR ${CMAKE_BINARY_DIR}/src/box/sql) + +include_directories(${SQL_SRC_DIR}) +include_directories(${SQL_BIN_DIR}) + +add_custom_target(generate_sql_files DEPENDS + sql/parse.h + sql/keywordhash.h + sql/parse.y + sql/parse.c + sql/opcodes.c) + +add_custom_command(OUTPUT ${SQL_BIN_DIR}/keywordhash.h + COMMAND ${EXT_BIN_DIR}/mkkeywordhash > keywordhash.h.tmp + COMMAND ${CMAKE_COMMAND} -E copy_if_different keywordhash.h.tmp keywordhash.h + COMMAND ${CMAKE_COMMAND} -E remove keywordhash.h.tmp + WORKING_DIRECTORY "${SQL_BIN_DIR}" + DEPENDS mkkeywordhash) + +add_custom_command(OUTPUT ${SQL_BIN_DIR}/parse.h ${SQL_BIN_DIR}/parse.c + COMMAND ${EXT_BIN_DIR}/lemon -T${EXT_SRC_DIR}/lempar.c -o${SQL_BIN_DIR}/parse.c ${SQL_SRC_DIR}/parse.y + COMMAND ${CMAKE_COMMAND} -E copy parse.h parse.h.tmp + COMMAND ${EXT_SRC_DIR}/addopcodes.sh parse.h.tmp > parse.h + COMMAND ${CMAKE_COMMAND} -E remove parse.h.tmp parse.out + WORKING_DIRECTORY "${SQL_BIN_DIR}" + DEPENDS lemon ${SQL_SRC_DIR}/parse.y) + +add_custom_command(OUTPUT ${SQL_BIN_DIR}/opcodes.h + COMMAND cat parse.h ${SQL_SRC_DIR}/vdbe.c | ${EXT_SRC_DIR}/mkopcodeh.sh > opcodes.h + WORKING_DIRECTORY "${SQL_BIN_DIR}" + DEPENDS ${SQL_SRC_DIR}/vdbe.c ${EXT_SRC_DIR}/mkopcodeh.sh ${SQL_BIN_DIR}/parse.h) + +add_custom_command(OUTPUT ${SQL_BIN_DIR}/opcodes.c + COMMAND ${EXT_SRC_DIR}/mkopcodec.sh opcodes.h > opcodes.c + WORKING_DIRECTORY "${SQL_BIN_DIR}" + DEPENDS ${SQL_SRC_DIR}/vdbe.c ${EXT_SRC_DIR}/mkopcodec.sh ${SQL_BIN_DIR}/parse.h + ${SQL_BIN_DIR}/opcodes.h) + target_link_libraries(box box_error tuple stat xrow xlog vclock crc32 scramble - sql ${common_libraries}) -add_dependencies(box build_bundled_libs) + ${common_libraries}) + +add_dependencies(box build_bundled_libs generate_sql_files) diff --git a/src/box/sql/CMakeLists.txt b/src/box/sql/CMakeLists.txt deleted file mode 100644 index 1f2a6640fac7060b48830418727436a741d0e7bb..0000000000000000000000000000000000000000 --- a/src/box/sql/CMakeLists.txt +++ /dev/null @@ -1,109 +0,0 @@ -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - add_definitions(-DSQL_DEBUG=1) -endif() - -set(EXT_SRC_DIR ${CMAKE_SOURCE_DIR}/extra) -set(EXT_BIN_DIR ${CMAKE_BINARY_DIR}/extra) -set(SQL_SRC_DIR ${CMAKE_SOURCE_DIR}/src/box/sql) -set(SQL_BIN_DIR ${CMAKE_BINARY_DIR}/src/box/sql) - -include_directories(${SQL_SRC_DIR}) -include_directories(${SQL_BIN_DIR}) - -add_definitions(-DSQL_OMIT_AUTOMATIC_INDEX) - -set(TEST_DEFINITIONS - SQL_NO_SYNC=1 - SQL_TEST=1 - SQL_PRIVATE= - SQL_CORE=1 -) - -add_library(sql STATIC - # Generated files - opcodes.c - parse.c - alter.c - analyze.c - cursor.c - build.c - callback.c - date.c - delete.c - expr.c - fk_constraint.c - func.c - global.c - hash.c - insert.c - legacy.c - main.c - malloc.c - os.c - os_unix.c - parse_def.c - pragma.c - prepare.c - printf.c - random.c - resolve.c - select.c - tokenize.c - treeview.c - trigger.c - utf.c - update.c - util.c - vdbe.c - vdbeapi.c - vdbeaux.c - vdbemem.c - vdbesort.c - vdbetrace.c - walker.c - where.c - wherecode.c - whereexpr.c -) -set_target_properties(sql PROPERTIES COMPILE_DEFINITIONS - "${TEST_DEFINITIONS}") -target_link_libraries(sql ${ICU_LIBRARIES}) - -add_custom_target(generate_sql_files DEPENDS - parse.h - keywordhash.h - parse.y - parse.c - opcodes.c) - -add_custom_command(OUTPUT ${SQL_BIN_DIR}/keywordhash.h - COMMAND ${EXT_BIN_DIR}/mkkeywordhash > keywordhash.h.tmp - COMMAND ${CMAKE_COMMAND} -E copy_if_different keywordhash.h.tmp keywordhash.h - COMMAND ${CMAKE_COMMAND} -E remove keywordhash.h.tmp - WORKING_DIRECTORY "${SQL_BIN_DIR}" - DEPENDS mkkeywordhash) - -add_custom_command(OUTPUT ${SQL_BIN_DIR}/parse.h ${SQL_BIN_DIR}/parse.c - COMMAND ${EXT_BIN_DIR}/lemon -T${EXT_SRC_DIR}/lempar.c ${SQL_SRC_DIR}/parse.y - COMMAND ${CMAKE_COMMAND} -E copy parse.h parse.h.tmp - COMMAND ${EXT_SRC_DIR}/addopcodes.sh parse.h.tmp > parse.h - COMMAND ${CMAKE_COMMAND} -E remove parse.h.tmp parse.out - WORKING_DIRECTORY "${SQL_BIN_DIR}" - DEPENDS lemon ${SQL_SRC_DIR}/parse.y) - -add_custom_command(OUTPUT ${SQL_BIN_DIR}/opcodes.h - COMMAND cat parse.h ${SQL_SRC_DIR}/vdbe.c | ${EXT_SRC_DIR}/mkopcodeh.sh > opcodes.h - WORKING_DIRECTORY "${SQL_BIN_DIR}" - DEPENDS ${SQL_SRC_DIR}/vdbe.c ${EXT_SRC_DIR}/mkopcodeh.sh ${SQL_BIN_DIR}/parse.h) - -add_custom_command(OUTPUT ${SQL_BIN_DIR}/opcodes.c - COMMAND ${EXT_SRC_DIR}/mkopcodec.sh opcodes.h > opcodes.c - WORKING_DIRECTORY "${SQL_BIN_DIR}" - DEPENDS ${SQL_SRC_DIR}/vdbe.c ${EXT_SRC_DIR}/mkopcodec.sh ${SQL_BIN_DIR}/parse.h - ${SQL_BIN_DIR}/opcodes.h) - -add_dependencies(sql generate_sql_files) - -if (APPLE) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined suppress -flat_namespace") -endif(APPLE)