diff --git a/CMakeLists.txt b/CMakeLists.txt index 4377a31..2949bd6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,79 +1,80 @@ cmake_minimum_required(VERSION 2.8.12) # KDEVELOP_PG_QT version set(KDEVELOP_PG_QT_VERSION_MAJOR 2) set(KDEVELOP_PG_QT_VERSION_MINOR 0) set(KDEVELOP_PG_QT_VERSION_PATCH 0) set(KDEVELOP_PG_QT_VERSION "${KDEVELOP_PG_QT_VERSION_MAJOR}.${KDEVELOP_PG_QT_VERSION_MINOR}.${KDEVELOP_PG_QT_VERSION_PATCH}") project(kdevelop-pg-qt) enable_testing() find_package(ECM 1.1.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) include(KDECompilerSettings NO_POLICY_SCOPE) include(ECMAddTests) +include(ECMMarkNonGuiExecutable) include(ECMPackageConfigHelpers) include(ECMSetupVersion) include(KDEInstallDirs) include(KDECMakeSettings) include(FeatureSummary) include(WriteBasicConfigVersionFile) set(CMAKECONFIG_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/KDevelop-PG-Qt) ecm_configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/KDevelop-PG-QtConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KDevelop-PG-QtConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) ecm_setup_version(${KDEVELOP_PG_QT_VERSION_MAJOR}.${KDEVELOP_PG_QT_VERSION_MINOR}.${KDEVELOP_PG_QT_VERSION_PATCH} VARIABLE_PREFIX KDEVELOP_PG_QT VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kdevelop-pg-qt_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KDevelop-PG-QtConfigVersion.cmake" SOVERSION ${KDEVELOP_PG_QT_LIB_SOVERSION} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/kdevelop-pg-qt_version.h" DESTINATION "${KDE_INSTALL_INCLUDEDIR}/kdevelop-pg-qt") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KDevelop-PG-QtConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KDevelop-PG-QtConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" ) set(REQUIRED_QT_VERSION 5.2.0) find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Core Test) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) find_program(FLEX_EXECUTABLE NAMES flex PATHS /usr/bin DOC "Flex executable") find_program(BISON_EXECUTABLE NAMES bison PATHS /usr/bin DOC "bison executable") add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS -DQT_NO_URL_CAST_FROM_STRING) add_definitions(-DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050400) # Silence a few warnings if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers -Wno-unused-local-typedefs") endif() add_subdirectory(include) add_subdirectory(kdev-pg) add_subdirectory(examples EXCLUDE_FROM_ALL) add_subdirectory(tests) include(CTest) # CTestCustom.cmake has to be in the CTEST_BINARY_DIR. # in the KDE build system, this is the same as CMAKE_BINARY_DIR. configure_file(${CMAKE_SOURCE_DIR}/CTestCustom.cmake ${CMAKE_BINARY_DIR}/CTestCustom.cmake) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/kdev-pg/CMakeLists.txt b/kdev-pg/CMakeLists.txt index 25ab236..dd21013 100644 --- a/kdev-pg/CMakeLists.txt +++ b/kdev-pg/CMakeLists.txt @@ -1,101 +1,102 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) REMOVE_DEFINITIONS(-DQT_NO_STL) ADD_DEFINITIONS(-DQT_STL) QT5_ADD_RESOURCES(kdevpg_rcc_srcs ../unidata.qrc) kde_enable_exceptions() SET(kdevpg_srcs ASBeautifier.cpp ASFormatter.cpp ASResource.cpp ASEnhancer.cpp kdev-pg.cpp kdev-pg-visitor.cpp kdev-pg-default-visitor.cpp kdev-pg-pretty-printer.cpp kdev-pg-global.cpp kdev-pg-code-gen.cpp kdev-pg-ast-gen.cpp kdev-pg-visitor-gen.cpp kdev-pg-visitor-bits-gen.cpp kdev-pg-default-visitor-gen.cpp kdev-pg-default-visitor-bits-gen.cpp kdev-pg-serialize-visitor-gen.cpp kdev-pg-debug-visitor-gen.cpp kdev-pg-new-visitor-gen.cpp kdev-pg-new-visitor-bits-gen.cpp kdev-pg-token-type-gen.cpp kdev-pg-beautifier.cpp kdev-pg-checker.cpp kdev-pg-inline-checker.cpp kdev-pg-main.cpp kdev-pg-generate.cpp kdev-pg-first.cpp kdev-pg-follow.cpp kdev-pg-bnf-visitor.cpp kdev-pg-clone-tree.cpp kdev-pg-regexp.cpp kdev-pg-unicode-loader.cpp) # Custom support for flex/bison SET(parser_srcs) IF(BISON_EXECUTABLE) # Add command to run the parser. ADD_CUSTOM_COMMAND( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-parser.cc" "${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-parser.hh" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/kdev-pg-parser.yy" COMMAND ${BISON_EXECUTABLE} ARGS -o "${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-parser.cc" -d "${CMAKE_CURRENT_SOURCE_DIR}/kdev-pg-parser.yy" ) SET(parser_srcs ${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-parser.cc) SET_SOURCE_FILES_PROPERTIES( ${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-parser.cc ${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-parser.hh GENERATED ) SET(OPTIONAL_PARSER_HEADER_DEPENDENCY "${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-parser.hh") ELSE(BISON_EXECUTABLE) MESSAGE("'bison' was not found!") MESSAGE("Assuming existence of the generated parser files kdev-pg-parser.[hh,cc]") SET(parser_srcs ${CMAKE_CURRENT_SOURCE_DIR}/kdev-pg-parser.cc) SET(OPTIONAL_PARSER_HEADER_DEPENDENCY "") ENDIF(BISON_EXECUTABLE) IF(FLEX_EXECUTABLE) # Add command to run the lexer. ADD_CUSTOM_COMMAND( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-lexer.cc" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/kdev-pg-lexer.ll" ${OPTIONAL_PARSER_HEADER_DEPENDENCY} COMMAND ${FLEX_EXECUTABLE} ARGS --yymore --nounistd -o "${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-lexer.cc" "${CMAKE_CURRENT_SOURCE_DIR}/kdev-pg-lexer.ll" ) SET(parser_srcs ${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-lexer.cc ${parser_srcs}) SET_SOURCE_FILES_PROPERTIES( ${CMAKE_CURRENT_BINARY_DIR}/kdev-pg-lexer.cc GENERATED ) ELSE(FLEX_EXECUTABLE) MESSAGE("'flex' was not found!") MESSAGE("Assuming existence of the generated lexer file kdev-pg-lexer.cc") SET(parser_srcs ${CMAKE_CURRENT_SOURCE_DIR}/kdev-pg-lexer.cc ${parser_srcs}) ENDIF(FLEX_EXECUTABLE) # tell CMake to generate the executable ADD_EXECUTABLE(kdev-pg-qt ${parser_srcs} ${kdevpg_srcs} ${kdevpg_rcc_srcs}) +ecm_mark_nongui_executable(kdev-pg-qt) TARGET_LINK_LIBRARIES( kdev-pg-qt Qt5::Core) INSTALL(TARGETS kdev-pg-qt DESTINATION bin ) # in order to generate only the parser, call "make parser" ADD_CUSTOM_TARGET(parser echo "Generating the parser" DEPENDS ${parser_srcs} )