--- mysql-workbench-community-6.0.6-src/CMakeLists.txt 2013-08-09 17:32:52.000000000 +0200 +++ ./files/CMakeLists.txt 2013-09-01 15:07:22.245566905 +0200 @@ -1,50 +1,31 @@ -cmake_minimum_required (VERSION 2.8) -# 2.8 needed because of ExternalProject +## Minimum CMake Version +cmake_minimum_required (VERSION 2.8.11) +## Project Name project(WORKBENCH) - -# About MySQL and CMake -# http://dev.mysql.com/doc/internals/en/autotools-to-cmake.html -# http://www.lenzg.net/archives/291-Building-MySQL-Server-with-CMake-on-LinuxUnix.html - -#----------------------------------------------------------------------- -# Find packages and other useful checks -#----------------------------------------------------------------------- - -# Look for our custom modules in cmake/Modules: +## Look for our custom modules in cmake/Modules: set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/build/cmake/Modules/") find_package(PkgConfig REQUIRED) find_package(GTK2 2.6.2 REQUIRED gtk gtkmm) +if (NOT GTK2_FOUND) + message( FATAL_ERROR "Not all GTK2 components were found!" ) +endif() + pkg_check_modules(GTHREAD REQUIRED gthread-2.0) pkg_check_modules(GMODULE REQUIRED gmodule-2.0) -set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIRS} ${GTHREAD_INCLUDE_DIRS} ${GMODULE_INCLUDE_DIRS}) + +list(APPEND GTK2_INCLUDE_DIRS ${GTHREAD_INCLUDE_DIRS} ${GMODULE_INCLUDE_DIRS}) list(REMOVE_DUPLICATES GTK2_INCLUDE_DIRS) -set(GTK2_LIBRARIES ${GTK2_LIBRARIES} ${GTHREAD_LIBRARIES} ${GMODULE_LIBRARIES}) + +list(APPEND GTK2_LIBRARIES ${GTK2_LIBRARIES} ${GTHREAD_LIBRARIES} ${GMODULE_LIBRARIES}) list(REMOVE_DUPLICATES GTK2_LIBRARIES) pkg_check_modules(GLIB REQUIRED glib-2.0) -# All known publicly available versions of Antlr3C are buggy - -if (SKIP_BUNDLED_ANTLR) - find_package(Antlr3C) -endif () -if (ANTLR3C_FOUND) - set(ANTLR3C_REQUIRED_VERSION "3.4") - if (${ANTLR3C_VERSION} VERSION_LESS ${ANTLR3C_REQUIRED_VERSION}) - message("Required antlr3c version ${ANTLR3C_REQUIRED_VERSION} but ${ANTLR3C_VERSION} found, using bundled version") - unset(ANTLR3C_FOUND) - endif () -endif () - -# In Ubuntu 13.04, the built-in check for python fails.. so we have to resort to the check with pkg-config (which doesn't work in many distros) find_package(PythonLibs) -if (NOT PYTHONLIBS_FOUND) - pkg_check_modules(PYTHON REQUIRED python) -endif () set(GRT_DEFINITIONS -DENABLE_PYTHON_MODULES) find_package(Lua51) @@ -66,25 +47,19 @@ find_package(VSqlite REQUIRED) find_package(TinyXML REQUIRED) -if (UNIX) - option(USE_UNIXODBC "Use unixODBC instead of iODBC" OFF) - if (USE_UNIXODBC) - find_package(UNIXODBC REQUIRED) - set(ODBC_LIBRARIES ${UNIXODBC_LIBRARIES}) - set(ODBC_INCLUDE_DIRS ${UNIXODBC_INCLUDE_DIRS}) - else () - find_package(IODBC REQUIRED) - set(ODBC_LIBRARIES ${IODBC_LIBRARIES}) - set(ODBC_INCLUDE_DIRS ${IODBC_INCLUDE_DIRS}) - endif() -endif () +## disabled UNIXODBC check +find_package(IODBC REQUIRED) +set(ODBC_LIBRARIES ${IODBC_LIBRARIES}) +set(ODBC_INCLUDE_DIRS ${IODBC_INCLUDE_DIRS}) pkg_check_modules(PCRE REQUIRED libpcre libpcrecpp) pkg_check_modules(CAIRO REQUIRED cairo>=1.5.12) pkg_check_modules(SQLITE3 REQUIRED sqlite3) pkg_check_modules(UUID REQUIRED uuid) pkg_check_modules(LIBZIP REQUIRED libzip) -if (UNIX) + +option(USE_GNOME_KEYRING "Use gnome-keyring." OFF) +if (UNIX AND USE_GNOME_KEYRING) pkg_check_modules(GNOME_KEYRING gnome-keyring-1) if (GNOME_KEYRING_FOUND) set(KEYRING_DEFINITION "HAVE_GNOME_KEYRING") @@ -94,6 +69,9 @@ set(KEYRING_DEFINITION "HAVE_OLD_GNOME_KEYRING") endif() endif() + if (NOT GNOME_KEYRING_FOUND) + message( FATAL_ERROR "Gnome Keyring was not found but requested!" ) + endif() endif() include (CheckFunctionExists) @@ -106,7 +84,7 @@ if (UNIX) if (NOT LIB_INSTALL_DIR) - set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib") + set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") endif() if (NOT SHARE_INSTALL_PREFIX) set(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share") @@ -133,80 +111,41 @@ include(ExternalProject) -if (NOT ANTLR3C_FOUND) - message("Using bundled Antlr C runtime") - # Use for Antlr3 the one we have in /ext: - set(ANTLR3C_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/ext/antlr-runtime ${PROJECT_SOURCE_DIR}/ext/antlr-runtime/include) - set(ANTLR3C_LIBRARIES "-L${PROJECT_BINARY_DIR}/antlr-wb -lantlr3c_wb") - - ExternalProject_Add(antlr-wb - SOURCE_DIR ${PROJECT_SOURCE_DIR}/ext/antlr-runtime - CONFIGURE_COMMAND autoreconf -i -s && ${PROJECT_SOURCE_DIR}/ext/antlr-runtime/configure - --prefix=${PROJECT_BINARY_DIR}/antlr-wb - --libdir=${PROJECT_BINARY_DIR}/antlr-wb +## use the bundled ANTLR C runtime - currently missing "CMAKE way" to configure package +message("Using bundled Antlr C runtime") + +## Use for Antlr3 the one we have in /ext: +set(ANTLR3C_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/ext/antlr-runtime ${PROJECT_SOURCE_DIR}/ext/antlr-runtime/include) +set(ANTLR3C_LIBRARIES "-L${PROJECT_BINARY_DIR}/antlr-wb -lantlr3c_wb") + +ExternalProject_Add(antlr-wb + SOURCE_DIR ${PROJECT_SOURCE_DIR}/ext/antlr-runtime + CONFIGURE_COMMAND autoreconf -i -s && ${PROJECT_SOURCE_DIR}/ext/antlr-runtime/configure + --prefix=${PROJECT_BINARY_DIR}/antlr-wb + --libdir=${PROJECT_BINARY_DIR}/antlr-wb --disable-abiflags - BUILD_COMMAND make - BUILD_IN_SOURCE 1 - INSTALL_COMMAND make install - ) - - link_directories(${PROJECT_BINARY_DIR}/antlr-wb) -endif () - -# Uncomment these lines if at any time you want to force the configure and/or build -# of antlr-wb: -#ExternalProject_Add_Step(antlr-wb forceconfigure -# COMMAND ${CMAKE_COMMAND} -E echo "Force configure of antlr-wb" -# DEPENDEES update -# DEPENDERS configure -# ALWAYS 1 -#) -#ExternalProject_Add_Step(antlr-wb forcebuild -# COMMAND ${CMAKE_COMMAND} -E echo "Force build of antlr-wb" -# DEPENDEES configure -# DEPENDERS build -# ALWAYS 1 -#) - - -#include(CheckCXXCompilerFlag) -#check_cxx_compiler_flag(-Wall HAS_ALL_WARNS) -#if (HAS_ALL_WARNS) -# add_definitions(-Wall) -#endif() -#check_cxx_compiler_flag(-Wsign-compare HAS_SIGN_COMPARE) -#if (HAS_SIGN_COMPARE) -# add_definitions(-Wsign-compare) -#endif() + BUILD_COMMAND make + BUILD_IN_SOURCE 1 + INSTALL_COMMAND make install +) +link_directories(${PROJECT_BINARY_DIR}/antlr-wb) -set(BUILD_SHARED_LIBS ON) # By default all libs will be built as shared libs +## By default all libs will be built as shared libs +set(BUILD_SHARED_LIBS ON) -# Add some common compiler flags. TODO: Shouldn't this be done checking if whatever compiler -# we use supports each flag to allow for non-gcc compilers in Linux (as above)? +## Add some common compiler flags. TODO: Shouldn't this be done checking if whatever compiler +## we use supports each flag to allow for non-gcc compilers in Linux (as above)? if (CMAKE_COMPILER_IS_GNUCXX) - add_definitions(-Wall -Wsign-compare -Wextra -Wno-unused -Wno-deprecated -DTIXML_USE_STL=1) + add_definitions(-Wno-unused -Wno-deprecated -DTIXML_USE_STL=1) endif() +set(GRT_LIBRARIES ${PYTHON_LIBRARIES} ${LUA_LIBRARIES} ${LIBXML2_LIBRARIES}) +set(GRT_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ${LUA_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR}) -#----------------------------------------------------------------------- -# Define some useful variables and options -#----------------------------------------------------------------------- - -#set(NCORES 3) # Use this number of cores when compiling -#if(CMAKE_COMPILER_IS_GNUCXX) -# set(CMAKE_CXX_FLAGS "${CMAKE_CKK_FLAGS} -j${NCORES}") -# message(STATUS "CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}") -# #set(CMAKE_EXE_LINKER_FLAGS "-s") ## Strip binary -#endif() - -set(GRT_LIBRARIES ${PYTHON_LIBRARIES} ${LUA_LIBRARIES} ${LIBXML2_LIBRARIES}) -set(GRT_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ${LUA_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR}) - -configure_file(${PROJECT_SOURCE_DIR}/mysql-workbench.desktop.in mysql-workbench.desktop) -configure_file(${PROJECT_SOURCE_DIR}/mysql-workbench.conf.in mysql-workbench.conf) +configure_file(${CMAKE_SOURCE_DIR}/mysql-workbench.desktop.in mysql-workbench.desktop) +configure_file(${CMAKE_SOURCE_DIR}/mysql-workbench.conf.in mysql-workbench.conf) -# FIXME: Should this go here? ---v -include_directories(${WORKBENCH_SOURCE_DIR}/plugins/migration/copytable ${WORKBENCH_SOURCE_DIR}/library/base) +include_directories(${CMAKE_SOURCE_DIR}/plugins/migration/copytable ${CMAKE_SOURCE_DIR}/library/base) include_directories(${GTK2_INCLUDE_DIRS}) add_subdirectory(tools) @@ -219,24 +158,18 @@ add_subdirectory(plugins) add_subdirectory(res) if (IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/internal) - add_subdirectory(internal) + add_subdirectory(internal) endif() install(FILES ${CMAKE_BINARY_DIR}/mysql-workbench.desktop DESTINATION ${WB_INSTALL_SHARED_DIR}/applications) install(FILES ${CMAKE_BINARY_DIR}/mysql-workbench.conf DESTINATION ${WB_INSTALL_ETC_DIR}/ld.so.conf.d) -if (EXISTS COPYING) - install(FILES README COPYING DESTINATION ${WB_INSTALL_DOC_DIR}) - install(FILES build/debian/mysql-workbench-community.sharedmimeinfo DESTINATION ${WB_INSTALL_SHARED_DIR}/mime/packages RENAME mysql-workbench.xml) - install(FILES build/debian/mysql-workbench-community.mime DESTINATION ${WB_INSTALL_SHARED_DIR}/mime-info RENAME mysql-workbench.mime) -else () - install(FILES README LICENSE.mysql DESTINATION ${WB_INSTALL_DOC_DIR}) - install(FILES build/debian/mysql-workbench-commercial.sharedmimeinfo DESTINATION ${WB_INSTALL_SHARED_DIR}/mime/packages RENAME mysql-workbench.xml) - install(FILES build/debian/mysql-workbench-commercial.mime DESTINATION ${WB_INSTALL_SHARED_DIR}/mime-info RENAME mysql-workbench.mime) -endif () +## use COPYING License File provided in source directory +install(FILES ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/COPYING DESTINATION ${WB_INSTALL_DOC_DIR}) +install(FILES ${CMAKE_SOURCE_DIR}/build/debian/mysql-workbench-community.sharedmimeinfo DESTINATION ${WB_INSTALL_SHARED_DIR}/mime/packages RENAME mysql-workbench.xml) +install(FILES ${CMAKE_SOURCE_DIR}/build/debian/mysql-workbench-community.mime DESTINATION ${WB_INSTALL_SHARED_DIR}/mime-info RENAME mysql-workbench.mime) -install(FILES build/build_freetds.sh - samples/models/sakila_full.mwb +install(FILES ${CMAKE_SOURCE_DIR}/build/build_freetds.sh + ${CMAKE_SOURCE_DIR}/samples/models/sakila_full.mwb DESTINATION ${WB_PACKAGE_SHARED_DIR}/extras - ) - +)