mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
a34879ebd2
- Sign executables with MySQL AB security certificate. BitKeeper/etc/ignore: Bug#24732 Executables do not include Vista manifests - Ignore security catalog descriptions CMakeLists.txt: Bug#24732 Executables do not include Vista manifests - Search for additional tools necessary to embed, catalog and sign targets. win/README: Bug#24732 Executables do not include Vista manifests - Add internal only note to EMBED_MANIFESTS option. win/create_manifest.js: Bug#24732 Executables do not include Vista manifests - Added publicKeyToken attribute to manifest. win/mysql_manifest.cmake: Bug#24732 Executables do not include Vista manifests - Add additional commands to create security catalog and sign targets. - Add parameters to add appropiate hash attribute to manifest and create security content description of the security catalog.
223 lines
9.2 KiB
CMake
Executable file
223 lines
9.2 KiB
CMake
Executable file
# Copyright (C) 2006 MySQL AB
|
|
#
|
|
# 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
|
|
|
|
PROJECT(MySql)
|
|
|
|
# This reads user configuration, generated by configure.js.
|
|
INCLUDE(win/configure.data)
|
|
|
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
|
|
${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
|
|
|
|
# Set standard options
|
|
ADD_DEFINITIONS(-D WITH_MYISAM_STORAGE_ENGINE)
|
|
ADD_DEFINITIONS(-D CMAKE_BUILD)
|
|
ADD_DEFINITIONS(-D HAVE_YASSL)
|
|
|
|
# Set debug options
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DFORCE_INIT_OF_VARS")
|
|
|
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisam_plugin")
|
|
|
|
|
|
IF(WITH_ARCHIVE_STORAGE_ENGINE)
|
|
ADD_DEFINITIONS(-D HAVE_ARCHIVE_DB)
|
|
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
|
|
|
|
IF (WITH_HEAP_STORAGE_ENGINE)
|
|
ADD_DEFINITIONS(-D WITH_HEAP_STORAGE_ENGINE)
|
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_heap_plugin")
|
|
ENDIF (WITH_HEAP_STORAGE_ENGINE)
|
|
|
|
IF (WITH_MYISAMMRG_STORAGE_ENGINE)
|
|
ADD_DEFINITIONS(-D WITH_MYISAMMRG_STORAGE_ENGINE)
|
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisammrg_plugin")
|
|
ENDIF (WITH_MYISAMMRG_STORAGE_ENGINE)
|
|
|
|
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
|
ADD_DEFINITIONS(-D HAVE_INNOBASE_DB)
|
|
ADD_DEFINITIONS(-D WITH_INNOBASE_STORAGE_ENGINE)
|
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_innobase_plugin")
|
|
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
|
|
|
IF(WITH_FEDERATED_STORAGE_ENGINE)
|
|
ADD_DEFINITIONS(-D HAVE_FEDERATED_DB)
|
|
ADD_DEFINITIONS(-D WITH_FEDERATED_STORAGE_ENGINE)
|
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_federated_plugin")
|
|
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
|
|
|
IF(WITH_BERKELEY_STORAGE_ENGINE)
|
|
ADD_DEFINITIONS(-D HAVE_BERKELEY_DB)
|
|
ADD_DEFINITIONS(-D WITH_BERKELEY_STORAGE_ENGINE)
|
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_berkeley_plugin")
|
|
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)
|
|
|
|
IF (WITH_BLACKHOLE_STORAGE_ENGINE)
|
|
ADD_DEFINITIONS(-D HAVE_BLACKHOLE_DB)
|
|
ENDIF (WITH_BLACKHOLE_STORAGE_ENGINE)
|
|
|
|
SET(localstatedir "C:\\mysql\\data")
|
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
|
|
${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY)
|
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.cnf.sh
|
|
${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.ini @ONLY)
|
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-large.cnf.sh
|
|
${CMAKE_SOURCE_DIR}/support-files/my-large.ini @ONLY)
|
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-medium.cnf.sh
|
|
${CMAKE_SOURCE_DIR}/support-files/my-medium.ini @ONLY)
|
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-small.cnf.sh
|
|
${CMAKE_SOURCE_DIR}/support-files/my-small.ini @ONLY)
|
|
|
|
IF(__NT__)
|
|
ADD_DEFINITIONS(-D __NT__)
|
|
ENDIF(__NT__)
|
|
|
|
# in some places we use DBUG_OFF
|
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D DBUG_OFF")
|
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D DBUG_OFF")
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D DBUG_OFF")
|
|
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -D DBUG_OFF")
|
|
|
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
|
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
|
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996")
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996")
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
|
|
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
|
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
|
|
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
|
CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
|
# replace /MDd with /MTd
|
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT
|
|
${CMAKE_CXX_FLAGS_DEBUG_INIT})
|
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG_INIT
|
|
${CMAKE_C_FLAGS_DEBUG_INIT})
|
|
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE
|
|
${CMAKE_C_FLAGS_RELEASE})
|
|
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO
|
|
${CMAKE_C_FLAGS_RELWITHDEBINFO})
|
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG
|
|
${CMAKE_C_FLAGS_DEBUG})
|
|
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE
|
|
${CMAKE_CXX_FLAGS_RELEASE})
|
|
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
|
${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
|
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG
|
|
${CMAKE_CXX_FLAGS_DEBUG})
|
|
|
|
# generate map files
|
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
|
|
|
|
# set stack size (see bug#20815)
|
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
|
|
|
|
# remove support for Exception handling
|
|
STRING(REPLACE "/GX" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
|
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
|
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_INIT
|
|
${CMAKE_CXX_FLAGS_INIT})
|
|
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_DEBUG_INIT
|
|
${CMAKE_CXX_FLAGS_DEBUG_INIT})
|
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
|
CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
|
|
|
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D _CRT_SECURE_NO_DEPRECATE")
|
|
|
|
IF(EMBED_MANIFESTS)
|
|
# Search for the tools (mt, makecat, signtool) necessary for embedding
|
|
# manifests and signing executables with the MySQL AB authenticode cert.
|
|
#
|
|
# CMake will first search it's defaults (CMAKE_FRAMEWORK_PATH,
|
|
# CMAKE_APPBUNDLE_PATH, CMAKE_PROGRAM_PATH and the system PATH) followed
|
|
# by the listed paths which are the current possible defaults and should be
|
|
# updated when necessary.
|
|
#
|
|
# The custom manifests are designed to be compatible with all mt versions.
|
|
# The MySQL AB Authenticode certificate is available only internally.
|
|
# Others should store a single signing certificate in a local cryptographic
|
|
# service provider and alter the signtool command as necessary.
|
|
FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt
|
|
PATHS
|
|
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin"
|
|
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
|
|
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
|
|
FIND_PROGRAM(HAVE_CATALOG_TOOL NAMES makecat
|
|
PATHS
|
|
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin")
|
|
FIND_PROGRAM(HAVE_SIGN_TOOL NAMES signtool
|
|
PATHS
|
|
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
|
|
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
|
|
|
|
IF(HAVE_MANIFEST_TOOL)
|
|
MESSAGE(STATUS "Found Mainfest Tool.")
|
|
ELSE(HAVE_MANIFEST_TOOL)
|
|
MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.")
|
|
ENDIF(HAVE_MANIFEST_TOOL)
|
|
IF(HAVE_CATALOG_TOOL)
|
|
MESSAGE(STATUS "Found Catalog Tool.")
|
|
ELSE(HAVE_CATALOG_TOOL)
|
|
MESSAGE(FATAL_ERROR "Catalog tool, makecat.exe, can't be found.")
|
|
ENDIF(HAVE_CATALOG_TOOL)
|
|
IF(HAVE_SIGN_TOOL)
|
|
MESSAGE(STATUS "Found Sign Tool. Embedding custom manifests and signing executables.")
|
|
ELSE(HAVE_SIGN_TOOL)
|
|
MESSAGE(FATAL_ERROR "Sign tool, signtool.exe, can't be found.")
|
|
ENDIF(HAVE_SIGN_TOOL)
|
|
|
|
# Disable automatic manifest generation.
|
|
STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS
|
|
${CMAKE_EXE_LINKER_FLAGS})
|
|
# Explicitly disable it since it is the default for newer versions of VS
|
|
STRING(REGEX MATCH "MANIFEST:NO" tmp_manifest ${CMAKE_EXE_LINKER_FLAGS})
|
|
IF(NOT tmp_manifest)
|
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
|
|
ENDIF(NOT tmp_manifest)
|
|
# Set the processor architecture.
|
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
|
SET(PROCESSOR_ARCH "amd64")
|
|
ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
|
SET(PROCESSOR_ARCH "X86")
|
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
|
ENDIF(EMBED_MANIFESTS)
|
|
|
|
ADD_SUBDIRECTORY(vio)
|
|
ADD_SUBDIRECTORY(dbug)
|
|
ADD_SUBDIRECTORY(strings)
|
|
ADD_SUBDIRECTORY(regex)
|
|
ADD_SUBDIRECTORY(mysys)
|
|
ADD_SUBDIRECTORY(scripts)
|
|
ADD_SUBDIRECTORY(zlib)
|
|
ADD_SUBDIRECTORY(extra/yassl)
|
|
ADD_SUBDIRECTORY(extra/yassl/taocrypt)
|
|
ADD_SUBDIRECTORY(extra)
|
|
ADD_SUBDIRECTORY(heap)
|
|
ADD_SUBDIRECTORY(myisam)
|
|
ADD_SUBDIRECTORY(myisammrg)
|
|
ADD_SUBDIRECTORY(client)
|
|
IF(WITH_BERKELEY_STORAGE_ENGINE)
|
|
ADD_SUBDIRECTORY(bdb)
|
|
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)
|
|
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
|
ADD_SUBDIRECTORY(innobase)
|
|
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
|
ADD_SUBDIRECTORY(sql)
|
|
ADD_SUBDIRECTORY(sql/examples)
|
|
ADD_SUBDIRECTORY(server-tools/instance-manager)
|
|
ADD_SUBDIRECTORY(libmysql)
|
|
ADD_SUBDIRECTORY(tests)
|