# Copyright (c) 2006, 2016, 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 as published by
# the Free Software Foundation; version 2 of the License.
#
# 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 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

INCLUDE(${CMAKE_SOURCE_DIR}/cmake/libutils.cmake)

INCLUDE_DIRECTORIES(
 ${CMAKE_BINARY_DIR}
 ${CMAKE_BINARY_DIR}/include
 ${CMAKE_CURRENT_SOURCE_DIR}/include
 ${CMAKE_CURRENT_SOURCE_DIR}/taocrypt/include
 ${CMAKE_CURRENT_SOURCE_DIR}/taocrypt/mySTL)

ADD_DEFINITIONS(${SSL_DEFINES})

# Speed up build process excluding unused header files
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN -DNOGDI)

# We want to use std::min/std::max, not the windows.h macros
ADD_DEFINITIONS(-DNOMINMAX)

# rename get_tty_password to avoid collisions with the main binary
ADD_DEFINITIONS(-Dget_tty_password_ext=yassl_mysql_get_tty_password_ext)
ADD_DEFINITIONS(-Dget_tty_password=yassl_mysql_get_tty_password)

INCLUDE(TestBigEndian)
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)

INCLUDE (CheckTypeSize)
CHECK_TYPE_SIZE("long"      SIZEOF_LONG)
CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)

enable_language(CXX)
include(CheckCXXCompilerFlag)

ADD_DEFINITIONS(-DSIZEOF_LONG=${SIZEOF_LONG} -DSIZEOF_LONG_LONG=${SIZEOF_LONG_LONG})
IF(WORDS_BIGENDIAN)
  ADD_DEFINITIONS(-DWORDS_BIGENDIAN=${WORDS_BIGENDIAN})
ENDIF()

CHECK_CXX_COMPILER_FLAG("-Wno-sign-conversion" HAVE_NO_SIGN_CONVERSION)
IF(HAVE_NO_SIGN_CONVERSION)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-conversion")
ENDIF()

CHECK_CXX_COMPILER_FLAG("-Wno-unused-const-variable" HAVE_NO_UNUSED_CONST)
IF(HAVE_NO_UNUSED_CONST)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-const-variable")
ENDIF()

CHECK_CXX_COMPILER_FLAG("-Wunused-parameter" HAVE_UNUSED)
IF(HAVE_UNUSED)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
ENDIF()

CHECK_CXX_COMPILER_FLAG("-Wno-unused-but-set-variable"
                           HAVE_UNUSED_BUT_SET_VARIABLE)
IF(HAVE_UNUSED_BUT_SET_VARIABLE)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-but-set-variable")
ENDIF()

CHECK_CXX_COMPILER_FLAG("-Wshadow" HAVE_SHADOW)
IF(HAVE_SHADOW)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-shadow")
ENDIF()

CHECK_CXX_COMPILER_FLAG("-Wconversion" HAVE_CONVERSION)
IF(HAVE_CONVERSION)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-conversion")
ENDIF()

CHECK_CXX_COMPILER_FLAG("-Werror" HAVE_ERROR)
IF(HAVE_ERROR)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error")
ENDIF()

SET(YASSL_SOURCES  src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp src/handshake.cpp src/lock.cpp
				src/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp
				src/yassl_imp.cpp src/yassl_int.cpp)

ADD_CONVENIENCE_LIBRARY(yassl ${YASSL_SOURCES})

ADD_SUBDIRECTORY(taocrypt)
