Skip to content

Commit 62ab0e7

Browse files
author
Tor Didriksen
committed
Bug#24947136 ENABLE DEVELOPERSTUDIO12.5 WITH C++03 FOR MYSQL 5.7
This patch adds support for building mysql5.7 server (including NDB) with -std=c++03 cmake/os/SunOS.cmake partial backport of Bug#24481181: RAISE MINIMUM CMAKE VERSION TO 2.8.12 configure.cmake partial backport of Bug#24487934 FIX DYNAMIC LIBRARY SEARCH PATHS ISSUES ON SOLARIS
1 parent e5115d8 commit 62ab0e7

File tree

6 files changed

+62
-20
lines changed

6 files changed

+62
-20
lines changed

CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,8 @@ GET_PROPERTY(cwd_definitions DIRECTORY PROPERTY COMPILE_DEFINITIONS)
733733
MESSAGE(STATUS "COMPILE_DEFINITIONS: ${cwd_definitions}")
734734
MESSAGE(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
735735
MESSAGE(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
736+
MESSAGE(STATUS "CMAKE_C_LINK_FLAGS: ${CMAKE_C_LINK_FLAGS}")
737+
MESSAGE(STATUS "CMAKE_CXX_LINK_FLAGS: ${CMAKE_CXX_LINK_FLAGS}")
736738
IF(CMAKE_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Makefiles")
737739
STRING(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKEBT)
738740
MESSAGE(STATUS "CMAKE_C_FLAGS_${CMAKEBT}: ${CMAKE_C_FLAGS_${CMAKEBT}}")

cmake/os/SunOS.cmake

+10
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,16 @@ IF (NOT "${CMAKE_C_FLAGS}${CMAKE_CXX_FLAGS}" MATCHES "-m32|-m64")
7373
MESSAGE("Adding -m${ISAINFO_B}")
7474
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m${ISAINFO_B}")
7575
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m${ISAINFO_B}")
76+
SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -m${ISAINFO_B}")
77+
SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -m${ISAINFO_B}")
78+
ENDIF()
79+
ELSE()
80+
IF("${CMAKE_C_FLAGS}" MATCHES "-m32")
81+
SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -m32")
82+
SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -m32")
83+
ELSE()
84+
SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -m64")
85+
SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -m64")
7686
ENDIF()
7787
ENDIF()
7888

configure.cmake

+39-9
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,7 @@ ENDIF()
7575
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
7676
IF(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
7777
IF(CMAKE_CXX_FLAGS MATCHES "-std=")
78-
ADD_DEFINITIONS(-D__MATHERR_RENAME_EXCEPTION)
79-
SET(CMAKE_SHARED_LIBRARY_C_FLAGS
80-
"${CMAKE_SHARED_LIBRARY_C_FLAGS} -lc")
81-
SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS
82-
"${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -lstdc++ -lgcc_s -lCrunG3 -lc")
83-
SET(QUOTED_CMAKE_CXX_LINK_FLAGS "-lstdc++ -lgcc_s -lCrunG3 -lc")
78+
# Nothing here, handled separately below
8479
ELSE()
8580
IF(SUNPRO_CXX_LIBRARY)
8681
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -library=${SUNPRO_CXX_LIBRARY}")
@@ -130,15 +125,13 @@ MACRO(EXTEND_CXX_LINK_FLAGS LIBRARY_PATH)
130125
# on a path relative to the executable:
131126
# We need an extra backslash to pass $ORIGIN to the mysql_config script...
132127
SET(QUOTED_CMAKE_CXX_LINK_FLAGS
133-
"${CMAKE_CXX_LINK_FLAGS} -R'\\$ORIGIN/../lib' -R${LIBRARY_PATH}")
128+
"${CMAKE_CXX_LINK_FLAGS} -R'\\$ORIGIN/../lib' -R${LIBRARY_PATH} ")
134129
SET(CMAKE_CXX_LINK_FLAGS
135130
"${CMAKE_CXX_LINK_FLAGS} -R'\$ORIGIN/../lib' -R${LIBRARY_PATH}")
136131
MESSAGE(STATUS "CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS}")
137132
ENDMACRO()
138133

139134
MACRO(EXTEND_C_LINK_FLAGS LIBRARY_PATH)
140-
SET(QUOTED_CMAKE_C_LINK_FLAGS
141-
"${CMAKE_C_LINK_FLAGS} -R'\\$ORIGIN/../lib' -R${LIBRARY_PATH}")
142135
SET(CMAKE_C_LINK_FLAGS
143136
"${CMAKE_C_LINK_FLAGS} -R'\$ORIGIN/../lib' -R${LIBRARY_PATH}")
144137
MESSAGE(STATUS "CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS}")
@@ -195,6 +188,43 @@ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_COMPILER_IS_GNUCC)
195188
ENDIF()
196189
ENDIF()
197190

191+
192+
# We assume that developer studio runtime libraries are installed.
193+
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND
194+
CMAKE_CXX_COMPILER_ID STREQUAL "SunPro" AND
195+
CMAKE_CXX_FLAGS MATCHES "-std=c")
196+
DIRNAME(${CMAKE_CXX_COMPILER} CXX_PATH)
197+
198+
SET(LIBRARY_SUFFIX "lib/compilers/CC-gcc/lib")
199+
IF(SIZEOF_VOIDP EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc")
200+
SET(LIBRARY_SUFFIX "${LIBRARY_SUFFIX}/sparcv9")
201+
ENDIF()
202+
IF(SIZEOF_VOIDP EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386")
203+
SET(LIBRARY_SUFFIX "${LIBRARY_SUFFIX}/amd64")
204+
ENDIF()
205+
FIND_LIBRARY(STL_LIBRARY_NAME
206+
NAMES "stdc++"
207+
PATHS ${CXX_PATH}/../${LIBRARY_SUFFIX}
208+
NO_DEFAULT_PATH
209+
)
210+
MESSAGE(STATUS "STL_LIBRARY_NAME ${STL_LIBRARY_NAME}")
211+
IF(STL_LIBRARY_NAME)
212+
DIRNAME(${STL_LIBRARY_NAME} STL_LIBRARY_PATH)
213+
SET(QUOTED_CMAKE_CXX_LINK_FLAGS
214+
"${CMAKE_CXX_LINK_FLAGS} -L${STL_LIBRARY_PATH} -R${STL_LIBRARY_PATH}")
215+
SET(CMAKE_CXX_LINK_FLAGS
216+
"${CMAKE_CXX_LINK_FLAGS} -L${STL_LIBRARY_PATH} -R${STL_LIBRARY_PATH}")
217+
SET(CMAKE_C_LINK_FLAGS
218+
"${CMAKE_C_LINK_FLAGS} -L${STL_LIBRARY_PATH} -R${STL_LIBRARY_PATH}")
219+
ENDIF()
220+
SET(CMAKE_C_LINK_FLAGS
221+
"${CMAKE_C_LINK_FLAGS} -lc")
222+
SET(CMAKE_CXX_LINK_FLAGS
223+
"${CMAKE_CXX_LINK_FLAGS} -lstdc++ -lgcc_s -lCrunG3 -lc")
224+
SET(QUOTED_CMAKE_CXX_LINK_FLAGS
225+
"${QUOTED_CMAKE_CXX_LINK_FLAGS} -lstdc++ -lgcc_s -lCrunG3 -lc ")
226+
ENDIF()
227+
198228
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND
199229
CMAKE_C_COMPILER_ID MATCHES "SunPro" AND
200230
CMAKE_CXX_FLAGS MATCHES "stlport4")

scripts/CMakeLists.txt

+6-7
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@ FOREACH(option ${REPLACE_REGEX_OPTIONS})
232232
STRING(REGEX REPLACE "${option}" "" CXXFLAGS "${CXXFLAGS}")
233233
ENDFOREACH()
234234

235+
# Do not remove -std=c++11 for Solaris Studio as it is required to get
236+
# the correct libraries. Only remove for GCC/Clang
237+
IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
238+
STRING(REGEX REPLACE "-std=c..[0-9]+" "" CXXFLAGS "${CXXFLAGS}")
239+
ENDIF()
240+
235241
FOREACH(option ${REPLACE_OPTIONS})
236242
STRING(REPLACE "${option}" " " CFLAGS "${CFLAGS}")
237243
STRING(REPLACE "${option}" " " CXXFLAGS "${CXXFLAGS}")
@@ -387,14 +393,7 @@ IF(WITH_EMBEDDED_SERVER)
387393
ENDIF()
388394

389395
SET(CONFIG_CLIENT_LIBS "${CLIENT_LIBS}")
390-
IF(QUOTED_CMAKE_C_LINK_FLAGS)
391-
SET(CONFIG_CLIENT_LIBS "${CONFIG_CLIENT_LIBS} ${QUOTED_CMAKE_C_LINK_FLAGS}")
392-
ENDIF()
393-
394396
SET(CONFIG_EMBEDD_LIBS "${EMBEDD_LIBS}")
395-
IF(QUOTED_CMAKE_CXX_LINK_FLAGS)
396-
SET(CONFIG_EMBEDD_LIBS "${CONFIG_EMBEDD_LIBS} ${QUOTED_CMAKE_CXX_LINK_FLAGS}")
397-
ENDIF()
398397

399398
SET(LIBMYSQLD_LIBS_USAGE "
400399
--libmysqld-libs [$embedded_libs]")

scripts/mysql_config.sh

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/sh
2-
# Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
2+
# Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
33
#
44
# This program is free software; you can redistribute it and/or modify
55
# it under the terms of the GNU General Public License as published by
@@ -110,9 +110,9 @@ else
110110
fi
111111

112112
# Create options
113-
libs="-L$pkglibdir@RPATH_OPTION@"
113+
libs="@QUOTED_CMAKE_CXX_LINK_FLAGS@-L$pkglibdir@RPATH_OPTION@"
114114
libs="$libs -l@LIBMYSQL_OS_OUTPUT_NAME@ @CONFIG_CLIENT_LIBS@"
115-
embedded_libs="-L$pkglibdir@RPATH_OPTION@"
115+
embedded_libs="@QUOTED_CMAKE_CXX_LINK_FLAGS@-L$pkglibdir@RPATH_OPTION@"
116116
embedded_libs="$embedded_libs -l@LIBEMBED_OS_OUTPUT_NAME@ @CONFIG_EMBEDD_LIBS@"
117117

118118
cflags="-I$pkgincludedir @CFLAGS@"
@@ -123,6 +123,7 @@ include="-I$pkgincludedir"
123123
usage () {
124124
cat <<EOF
125125
Usage: $0 [OPTIONS]
126+
Compiler: @COMPILER_ID_AND_VERSION@
126127
Options:
127128
--cflags [$cflags]
128129
--cxxflags [$cxxflags]

storage/ndb/src/ndbapi/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
1+
# Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
22
#
33
# This program is free software; you can redistribute it and/or modify
44
# it under the terms of the GNU General Public License as published by

0 commit comments

Comments
 (0)