# Copyright (c) 2008, 2018, 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.
#
# Without limiting anything contained in the foregoing, this file,
# which is part of MySQL Connector/C++, is also subject to the
# Universal FOSS Exception, version 1.0, a copy of which can be found at
# http://oss.oracle.com/licenses/universal-foss-exception.
#
# 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


SET(CMAKE_VERBOSE_MAKEFILE 0)

SET(MYSQLCPPCONN_BUILD_EXAMPLES 1 CACHE BOOL "build-examples")
IF(MYSQLCPPCONN_BUILD_EXAMPLES)
  LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/cppconn)

  IF(WIN32)
    IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
      LINK_DIRECTORIES(${MYSQL_DIR}/lib/debug)
    ELSEIF(CMAKE_BUILD_TYPE STREQUAL "")
      LINK_DIRECTORIES(${MYSQL_DIR}/lib/opt)
    ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug")

    ADD_DEFINITIONS("-D_SCL_SECURE_NO_WARNINGS")

    SET(MY_TARGET_LINK_LIBRARIES mysqlcppconn)
    IF(MYSQLCLIENT_STATIC_BINDING)
      SET(MY_TARGET_LINK_LIBRARIES ${MY_TARGET_LINK_LIBRARIES})
    ENDIF(MYSQLCLIENT_STATIC_BINDING)

    SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
    FIND_LIBRARY(MYSQLCPPCONN_DYNLOAD_MYSQL_LIB
      NAMES
        libmysql
      PATHS
        ${MYSQL_LIB_DIR}
        ${MYSQL_LIB_DIR}/lib/${libsuffixDist}
        ${MYSQL_LIB_DIR}/lib  #mysqlclient may be in lib for some c/c distros
        ${MYSQL_LIB_DIR}/libmysql/${libsuffixBuild}
        ${MYSQL_LIB_DIR}/client/${libsuffixBuild}
        $ENV{MYSQL_LIB_DIR}
        $ENV{MYSQL_LIB_DIR}/lib/${libsuffixDist}
        $ENV{MYSQL_LIB_DIR}/lib  #mysqlclient may be in lib for some c/c distros
        $ENV{MYSQL_LIB_DIR}/libmysql/${libsuffixBuild}
        $ENV{MYSQL_LIB_DIR}/client/${libsuffixBuild}
        $ENV{MYSQL_DIR}/lib/${libsuffixDist}
        $ENV{MYSQL_DIR}/lib  #mysqlclient may be in lib for some c/c distros
        $ENV{MYSQL_DIR}/libmysql/${libsuffixBuild}
        $ENV{MYSQL_DIR}/client/${libsuffixBuild}
        $ENV{ProgramFiles}/MySQL/*/lib/${libsuffixDist}
        $ENV{ProgramFiles}/MySQL/*/lib
        $ENV{SystemDrive}/MySQL/*/lib/${libsuffixDist}
        $ENV{SystemDrive}/MySQL/*/lib
        NO_DEFAULT_PATH
    )

    ELSEIF(NOT WIN32)
      SET(MY_TARGET_LINK_LIBRARIES mysqlcppconn-static)
      IF(MYSQLCLIENT_STATIC_BINDING)
        SET(MY_TARGET_LINK_LIBRARIES ${MY_TARGET_LINK_LIBRARIES})
      ENDIF(MYSQLCLIENT_STATIC_BINDING)

      FIND_LIBRARY(MYSQLCPPCONN_DYNLOAD_MYSQL_LIB
        NAMES
          libmysqlclient_r.so
          libmysqlclient.so
        PATHS
          ${MYSQL_LIB_DIR}
          ${MYSQL_LIB_DIR}/libmysql_r/.libs
          ${MYSQL_LIB_DIR}/lib
          ${MYSQL_LIB_DIR}/lib/mysql
          $ENV{MYSQL_LIB_DIR}
          $ENV{MYSQL_LIB_DIR}/libmysql_r/.libs
          $ENV{MYSQL_LIB_DIR}/lib
          $ENV{MYSQL_LIB_DIR}/lib/mysql
          $ENV{MYSQL_DIR}/libmysql_r/.libs
          $ENV{MYSQL_DIR}/lib
          $ENV{MYSQL_DIR}/lib/mysql
          ${MYSQL_CLIB_DIR}
          ${MYSQL_CLIB_DIR}/libmysql_r/.libs
          ${MYSQL_CLIB_DIR}/lib
          ${MYSQL_CLIB_DIR}/lib/mysql
          /usr/lib/mysql
          /usr/local/lib/mysql
          /usr/local/mysql/lib
          /usr/local/mysql/lib/mysql
          /opt/mysql/mysql/lib
          /opt/mysql/mysql/lib/mysql
          NO_DEFAULT_PATH
      )
    ENDIF(WIN32)

    ADD_DEFINITIONS("-DDYNLOAD_MYSQL_LIB=\"${MYSQLCPPCONN_DYNLOAD_MYSQL_LIB}\"")
    MESSAGE(STATUS "MySQL dynamic load test library: ${MYSQLCPPCONN_DYNLOAD_MYSQL_LIB}")

    IF(CMAKE_COMPILER_IS_GNUCC AND MYSQLCPPCONN_GCOV_ENABLE)
      SET(MY_GCOV_LINK_LIBRARIES gcov)
    ENDIF(CMAKE_COMPILER_IS_GNUCC AND MYSQLCPPCONN_GCOV_ENABLE)

    ADD_EXECUTABLE(connect connect.cpp)
    SET_TARGET_PROPERTIES(connect PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(connect ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(connection_meta_schemaobj connection_meta_schemaobj.cpp)
    SET_TARGET_PROPERTIES(connection_meta_schemaobj PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(connection_meta_schemaobj ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(debug_output debug_output.cpp)
    SET_TARGET_PROPERTIES(debug_output PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(debug_output ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(exceptions exceptions.cpp)
    SET_TARGET_PROPERTIES(exceptions PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(exceptions ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(prepared_statement prepared_statement.cpp)
    SET_TARGET_PROPERTIES(prepared_statement PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(prepared_statement ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(resultset resultset.cpp)
    SET_TARGET_PROPERTIES(resultset PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(resultset ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(resultset_binary resultset_binary.cpp)
    SET_TARGET_PROPERTIES(resultset_binary PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(resultset_binary ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(resultset_meta resultset_meta.cpp)
    SET_TARGET_PROPERTIES(resultset_meta PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(resultset_meta ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(resultset_types resultset_types.cpp)
    SET_TARGET_PROPERTIES(resultset_types PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(resultset_types ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(statement statement.cpp)
    SET_TARGET_PROPERTIES(statement PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(statement ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

    ADD_EXECUTABLE(dynamic_load dynamic_load.cpp)
    SET_TARGET_PROPERTIES(dynamic_load PROPERTIES
            LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
            COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}")
    TARGET_LINK_LIBRARIES(dynamic_load ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
            ${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
            ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY})

ENDIF(MYSQLCPPCONN_BUILD_EXAMPLES)

MESSAGE(STATUS "Configuring examples")
