summaryrefslogtreecommitdiff
path: root/cmake/os
diff options
context:
space:
mode:
authorVladislav Vaintroub <vv221804@astra04>2010-01-27 01:50:19 +0100
committerVladislav Vaintroub <vv221804@astra04>2010-01-27 01:50:19 +0100
commit0a6fe4fb84f26436113fcfc81eee2bea4a702135 (patch)
treed662e45424ab962bb70149d48ee808792a46f36c /cmake/os
parentcdb8cafb2731578cef674de3f71ff65e9ac055ae (diff)
downloadmariadb-git-0a6fe4fb84f26436113fcfc81eee2bea4a702135.tar.gz
fix default architecture flag (v8) on sparc32 gcc that prevent mysql from compilng, add HPUX.cmake
Diffstat (limited to 'cmake/os')
-rw-r--r--cmake/os/HP-UX.cmake47
-rw-r--r--cmake/os/SunOS.cmake27
2 files changed, 73 insertions, 1 deletions
diff --git a/cmake/os/HP-UX.cmake b/cmake/os/HP-UX.cmake
new file mode 100644
index 00000000000..5eaa0477040
--- /dev/null
+++ b/cmake/os/HP-UX.cmake
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc
+#
+# 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(CheckCXXSourceCompiles)
+# Enable 64 bit file offsets
+SET(_LARGEFILE64_SOURCE 1)
+SET(_FILE_OFFSET_BITS 64)
+# If Itanium make shared library suffix .so
+# OS understands both .sl and .so. CMake would
+# use .sl, however MySQL prefers .so
+IF(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "9000")
+ SET(CMAKE_SHARED_LIBRARY_SUFFIX ".so" CACHE INTERNAL "" FORCE)
+ SET(CMAKE_SHARED_MODULE_SUFFIX ".so" CACHE INTERNAL "" FORCE)
+ENDIF()
+IF(CMAKE_SYSTEM MATCHES "11")
+ ADD_DEFINITIONS(-DHPUX11)
+ENDIF()
+
+IF(CMAKE_CXX_COMPILER_ID MATCHES "HP")
+ # Enable standard C++ flags if required
+ # HP seems a bit traditional and "new" features like ANSI for-scope
+ # still require special flag to be set
+ CHECK_CXX_SOURCE_COMPILES(
+ "int main()
+ {
+ for(int i=0; i<1; i++);
+ for(int i=0; i<1; i++);
+ return 0;
+ }
+ " HAVE_ANSI_FOR_SCOPE)
+ IF(NOT HAVE_ANSI_FOR_SCOPE)
+ # Enable conformant behavior
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Aa")
+ ENDIF()
+ENDIF()
diff --git a/cmake/os/SunOS.cmake b/cmake/os/SunOS.cmake
index 3d883eeb9c8..84ac64d8af3 100644
--- a/cmake/os/SunOS.cmake
+++ b/cmake/os/SunOS.cmake
@@ -15,7 +15,7 @@
INCLUDE(CheckSymbolExists)
INCLUDE(CheckCSourceRuns)
-
+INCLUDE(CheckCSourceCompiles)
SET(TARGET_OS_SOLARIS 1)
# Enable 64 bit file offsets
@@ -69,3 +69,28 @@ CHECK_C_SOURCE_RUNS(
}
" HAVE_SOLARIS_ATOMIC)
+
+# Check is special processor flag needs to be set on older GCC
+#that defaults to v8 sparc . Code here is taken from my_rdtsc.c
+IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SIZEOF_VOID_P EQUAL 4
+ AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc")
+ SET(SOURCE
+ "
+ int main()
+ {
+ long high\;
+ long low\;
+ __asm __volatile__ (\"rd %%tick,%1\; srlx %1,32,%0\" : \"=r\" ( high), \"=r\" (low))\;
+ return 0\;
+ } ")
+ CHECK_C_SOURCE_COMPILES(${SOURCE} HAVE_SPARC32_TICK)
+ IF(NOT HAVE_SPARC32_TICK)
+ SET(CMAKE_REQUIRED_FLAGS "-mcpu=v9")
+ CHECK_C_SOURCE_COMPILES(${SOURCE} HAVE_SPARC32_TICK_WITH_V9)
+ SET(CMAKE_REQUIRED_FLAGS)
+ IF(HAVE_SPARC32_TICK_WITH_V9)
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=v9")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=v9")
+ ENDIF()
+ ENDIF()
+ENDIF()