1# Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. 2# 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License, version 2.0, 5# as published by the Free Software Foundation. 6# 7# This program is also distributed with certain software (including 8# but not limited to OpenSSL) that is licensed under separate terms, 9# as designated in a particular file or component or in included license 10# documentation. The authors of MySQL hereby grant you an additional 11# permission to link the program and your derivative works with the 12# separately licensed software that they have included with MySQL. 13# 14# This program is distributed in the hope that it will be useful, 15# but WITHOUT ANY WARRANTY; without even the implied warranty of 16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17# GNU General Public License, version 2.0, for more details. 18# 19# You should have received a copy of the GNU General Public License 20# along with this program; if not, write to the Free Software 21# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 22 23IF(SIZEOF_VOIDP EQUAL 4) 24 SET(32BIT 1) 25ENDIF() 26IF(SIZEOF_VOIDP EQUAL 8) 27 SET(64BIT 1) 28ENDIF() 29 30# Compiler options 31IF(UNIX) 32 33 # Default GCC flags 34 IF(CMAKE_COMPILER_IS_GNUCC) 35 SET(COMMON_C_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing") 36 # Disable inline optimizations for valgrind testing to avoid false positives 37 IF(WITH_VALGRIND) 38 SET(COMMON_C_FLAGS "-fno-inline ${COMMON_C_FLAGS}") 39 ENDIF() 40 SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}") 41 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}") 42 ENDIF() 43 IF(CMAKE_COMPILER_IS_GNUCXX) 44 # GCC 6 has C++14 as default, set it explicitly to the old default. 45 EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion 46 OUTPUT_VARIABLE GXX_VERSION) 47 IF(GXX_VERSION VERSION_EQUAL 6.0 OR GXX_VERSION VERSION_GREATER 6.0) 48 SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -std=gnu++03") 49 ENDIF() 50 SET(COMMON_CXX_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing") 51 # Disable inline optimizations for valgrind testing to avoid false positives 52 IF(WITH_VALGRIND) 53 SET(COMMON_CXX_FLAGS "-fno-inline ${COMMON_CXX_FLAGS}") 54 ENDIF() 55 SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}") 56 SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}") 57 ENDIF() 58 59 # Default Clang flags 60 IF(CMAKE_C_COMPILER_ID MATCHES "Clang") 61 SET(COMMON_C_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing") 62 SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}") 63 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}") 64 ENDIF() 65 IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") 66 SET(COMMON_CXX_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing") 67 IF(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 6.0 OR 68 CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0) 69 IF(CMAKE_SYSTEM_NAME MATCHES "Linux") 70 SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -std=gnu++03") 71 ENDIF() 72 ENDIF() 73 SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}") 74 SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}") 75 ENDIF() 76 77 # Solaris flags 78 IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") 79 IF(CMAKE_SYSTEM_VERSION VERSION_GREATER "5.9") 80 # Link mysqld with mtmalloc on Solaris 10 and later 81 SET(WITH_MYSQLD_LDFLAGS "-lmtmalloc" CACHE STRING "") 82 ENDIF() 83 IF(CMAKE_C_COMPILER_ID MATCHES "SunPro") 84 85 SET(SUNPRO_CXX_LIBRARY "stlport4" CACHE STRING 86 "What C++ library to use. The server needs stlport4. It is possible to build the client libraries with -DWITHOUT_SERVER=1 -DSUNPRO_CXX_LIBRARY=Cstd") 87 88 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i386") 89 SET(COMMON_C_FLAGS "-g -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic") 90 SET(COMMON_CXX_FLAGS "-g0 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic") 91 # We have to specify "-xO1" for DEBUG flags here, 92 # see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6879978 93 SET(CMAKE_C_FLAGS_DEBUG "-xO1 ${COMMON_C_FLAGS}") 94 SET(CMAKE_CXX_FLAGS_DEBUG "-xO1 ${COMMON_CXX_FLAGS}") 95 IF(32BIT) 96 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO2 ${COMMON_C_FLAGS}") 97 SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO2 ${COMMON_CXX_FLAGS}") 98 ELSEIF(64BIT) 99 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_C_FLAGS}") 100 SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_CXX_FLAGS}") 101 ENDIF() 102 ELSE() 103 # Assume !x86 is SPARC 104 SET(COMMON_C_FLAGS "-g -xstrconst -mt") 105 SET(COMMON_CXX_FLAGS "-g0 -mt") 106 IF(32BIT) 107 SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -xarch=sparc") 108 SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -xarch=sparc") 109 ENDIF() 110 SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}") 111 SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}") 112 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_C_FLAGS}") 113 SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_CXX_FLAGS}") 114 ENDIF() 115 ENDIF() 116 ENDIF() 117ENDIF() 118