# Copyright (c) 2008, 2019, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License, version 2.0, # as published by the Free Software Foundation. # # This program is also distributed with certain software (including # but not limited to OpenSSL) that is licensed under separate terms, # as designated in a particular file or component or in included license # documentation. The authors of MySQL hereby grant you an additional # permission to link the program and your derivative works with the # separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Disable specific types of warnings for current directory # if the compiler supports the flag FOREACH(warning "unused-but-set-variable" "strict-aliasing" "unused-parameter" "cast-qual" # Downgrade -Werror to warning for "may be used uninitialized" # and "is used uninitialized in this function" "error=maybe-uninitialized" # Downgrade -Werror=deprecated-copy to warning for gcc 9 "error=deprecated-copy" # Downgrade -Werror=stringop-truncation to warning for gcc 8/9 "error=stringop-truncation" ) MY_CHECK_CXX_COMPILER_WARNING("${warning}" HAS_WARN_FLAG) IF(HAS_WARN_FLAG) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_WARN_FLAG}") STRING_APPEND(CMAKE_C_FLAGS " ${HAS_WARN_FLAG}") ENDIF() ENDFOREACH() INCLUDE(${CMAKE_SOURCE_DIR}/storage/ndb/config/type_ndbapitools.cmake) # Check BISON_VERSION and set BISON_FLAGS_WARNINGS FIND_PACKAGE(BISON REQUIRED) INCLUDE(${CMAKE_SOURCE_DIR}/cmake/bison.cmake) INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/storage/ndb/src/ndbapi ${CMAKE_SOURCE_DIR}/storage/ndb/include/kernel/signaldata ${CMAKE_SOURCE_DIR}/storage/ndb/include/util ${CMAKE_BINARY_DIR}/storage/ndb/tools) ADD_LIBRARY(ndbtools STATIC NdbImport.cpp NdbImportImpl.cpp NdbImportCsv.cpp NdbImportCsvGram.cpp NdbImportUtil.cpp) IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Suppress warnings for undefined identifiers in bison output ADD_COMPILE_FLAGS(${CMAKE_CURRENT_BINARY_DIR}/NdbImportCsvGram.cpp COMPILE_FLAGS "-Wno-undef") ENDIF() BISON_TARGET(ndb_import NdbImportCsvGram.ypp ${CMAKE_CURRENT_BINARY_DIR}/NdbImportCsvGram.cpp COMPILE_FLAGS "--name-prefix=NdbImportCsv_yy --yacc ${BISON_FLAGS_WARNINGS}" DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/NdbImportCsvGram.hpp ) # Add target, for easier debugging. ADD_CUSTOM_TARGET(GenBison_ndb_import DEPENDS ${BISON_ndb_import_OUTPUTS}) MYSQL_ADD_EXECUTABLE(ndb_waiter waiter.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_drop_table drop_tab.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_delete_all delete_all.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ) MYSQL_ADD_EXECUTABLE(ndb_desc desc.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_drop_index drop_index.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_show_tables listTables.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_select_all select_all.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_select_count select_count.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_perror ndb_perror.cpp ${NDB_SOURCE_DIR}/src/mgmapi/mgmapi_error.cpp ${NDB_SOURCE_DIR}/src/kernel/error/ndbd_exit_codes.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ) MYSQL_ADD_EXECUTABLE(ndb_restore restore/restore_main.cpp restore/consumer.cpp restore/consumer_restore.cpp restore/consumer_printer.cpp restore/Restore.cpp ndb_lib_move_data.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ) MYSQL_ADD_EXECUTABLE(ndb_import ndb_import.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbtools ndbclient_static ) NDB_ADD_TEST(NdbImportUtil-t NdbImportUtil.cpp LIBS ndbtools ndbclient_static) NDB_ADD_TEST(NdbImportCsv-t NdbImportCsv.cpp LIBS ndbtools ndbclient_static) MYSQL_ADD_EXECUTABLE(ndb_config ndb_config.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ) # Build ndbinfo_sql and run it to create ndbinfo.sql MYSQL_ADD_EXECUTABLE(ndbinfo_sql ndbinfo_sql.cpp SKIP_INSTALL LINK_LIBRARIES ndbclient_static ) ADD_CUSTOM_COMMAND(TARGET ndbinfo_sql POST_BUILD COMMAND $ > ${PROJECT_BINARY_DIR}/storage/ndb/tools/ndbinfo.sql ) MYSQL_ADD_EXECUTABLE(ndb_index_stat ndb_index_stat.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndbinfo_select_all ndbinfo_select_all.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_blob_tool ndb_blob_tool.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) MYSQL_ADD_EXECUTABLE(ndb_move_data ndb_move_data.cpp ndb_lib_move_data.cpp COMPONENT ClusterTools LINK_LIBRARIES ndbclient_static ndbNDBT ) IF(NOT WIN32 AND NOT SOLARIS) IF (HAVE_NCURSESW_1 OR HAVE_NCURSESW_2 OR HAVE_NCURSESW_3 OR HAVE_NCURSESW_4 OR HAVE_NCURSESW_5) MESSAGE(STATUS "-- Adding ndb_top executable") FIND_LIBRARY(NCURSESW_LIB NAMES ncursesw) FIND_LIBRARY(NCURSESW_LIB NAMES ncurses) CHECK_LIBRARY_EXISTS("${NCURSESW_LIB}" stdscr "" NCURSES_HAS_STDSCR) IF(NOT NCURSES_HAS_STDSCR) FIND_LIBRARY(NCURSES_TINFO_LIB NAMES tinfo) ENDIF() MYSQL_ADD_EXECUTABLE(ndb_top ndb_top.cpp COMPONENT ClusterTools ) IF(NCURSES_HAS_STDSCR) TARGET_LINK_LIBRARIES(ndb_top mysqlclient ${NCURSESW_LIB}) ELSE() TARGET_LINK_LIBRARIES(ndb_top mysqlclient ${NCURSESW_LIB} ${NCURSES_TINFO_LIB}) ENDIF() ELSE() MESSAGE(FATAL_ERROR "ndb_top executable could not be built, install ncursesw library") ENDIF() ENDIF() if(NOT WIN32) SET(TARGET_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/runtime_output_directory) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/ndb_error_reporter.pl ${TARGET_RUNTIME_OUTPUT_DIRECTORY}/ndb_error_reporter COPYONLY) EXECUTE_PROCESS(COMMAND chmod +x ${TARGET_RUNTIME_OUTPUT_DIRECTORY}/ndb_error_reporter) INSTALL_SCRIPT(${TARGET_RUNTIME_OUTPUT_DIRECTORY}/ndb_error_reporter DESTINATION ${INSTALL_BINDIR} COMPONENT ClusterTools) ENDIF() INSTALL(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/ndb_size.pl DESTINATION ${INSTALL_BINDIR} )