summaryrefslogtreecommitdiff
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
parentcdb8cafb2731578cef674de3f71ff65e9ac055ae (diff)
downloadmariadb-git-0a6fe4fb84f26436113fcfc81eee2bea4a702135.tar.gz
fix default architecture flag (v8) on sparc32 gcc that prevent mysql from compilng, add HPUX.cmake
-rw-r--r--cmake/Makefile.am4
-rw-r--r--cmake/os/HP-UX.cmake47
-rw-r--r--cmake/os/SunOS.cmake27
-rw-r--r--configure.cmake29
4 files changed, 76 insertions, 31 deletions
diff --git a/cmake/Makefile.am b/cmake/Makefile.am
index 623176288b7..c8341cb14cb 100644
--- a/cmake/Makefile.am
+++ b/cmake/Makefile.am
@@ -27,6 +27,6 @@ EXTRA_DIST = \
os/Windows.cmake \
os/Linux.cmake \
os/SunOS.cmake \
- os/Darwin.cmake
-
+ os/Darwin.cmake \
+ os/HP-UX.cmake
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()
diff --git a/configure.cmake b/configure.cmake
index 663e3db9a66..016ae359486 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -79,37 +79,10 @@ ENDIF()
# Large files
SET(_LARGEFILE_SOURCE 1)
-IF(CMAKE_SYSTEM_NAME STREQUAL "HP-UX")
- SET(_LARGEFILE64_SOURCE 1)
- SET(_FILE_OFFSET_BITS 64)
-ENDIF()
IF(CMAKE_SYSTEM_NAME MATCHES "AIX" OR CMAKE_SYSTEM_NAME MATCHES "OS400")
SET(_LARGE_FILES 1)
ENDIF()
-
-
-IF(CMAKE_SYSTEM_NAME STREQUAL "HP-UX" )
- IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
- # HPUX linker crashes building plugins
- SET(WITHOUT_DYNAMIC_PLUGINS TRUE)
- ENDIF()
- # 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()
-ENDIF()
-
-
-#Some OS specific hacks
-IF(CMAKE_SYSTEM MATCHES "HP-UX" AND CMAKE_SYSTEM MATCHES "11")
- ADD_DEFINITIONS(-DHPUX11)
-ENDIF()
-
-
# Figure out what engines to build and how (statically or dynamically),
# add preprocessor defines for storage engines.
IF(WITHOUT_DYNAMIC_PLUGINS)
@@ -952,7 +925,7 @@ CHECK_CXX_SOURCE_COMPILES_UNIX("
IF(WIN32)
SET(HAVE_SOCKET_TIMEOUT 1)
-ELSEIF(CMAKE_SYSTEM MATCHES "HP")
+ELSEIF(CMAKE_SYSTEM MATCHES "HP-UX")
SET(HAVE_SOCKET_TIMEOUT 0)
ELSEIF(CMAKE_CROSSCOMPILING)
SET(HAVE_SOCKET_TIMEOUT 0)