Commit 492ec627 authored by Mikael Ronstrom's avatar Mikael Ronstrom

First attempt at fixing Windows issues in 5.4.0

parent 4557f4ee
...@@ -25,24 +25,30 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8) ...@@ -25,24 +25,30 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8)
PROPERTIES COMPILE_FLAGS -Od) PROPERTIES COMPILE_FLAGS -Od)
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8) ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8)
MESSAGE("Checking for ATOMICS")
IF (NOT WITHOUT_ATOMICS) IF (NOT WITHOUT_ATOMICS)
# Check if this Windows version supports atomic instructions # Check if this Windows version supports atomic instructions
IF (CMAKE_SIZEOF_VOID_P MATCHES 8) IF (CMAKE_SIZEOF_VOID_P MATCHES 8)
# Check for 64 bit atomics # Check for 64 bit atomics
TRY_RUN(RUN_RES COMPILE_RES ${CMAKE_BINARY_DIR} TRY_RUN(RUN_RES COMPILE_RES ${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/storage/innobase/win_atomics64_test.c) ${CMAKE_SOURCE_DIR}/storage/innobase/win_atomics64_test.c)
IF (RUN_RES) MESSAGE("Tried Win64, Compile = ${COMPILE_RES}, Run = ${RUN_RES}")
IF (COMPILE_RES AND NOT RUN_RES)
MESSAGE("Adding support for Win64 atomics")
ADD_DEFINITIONS(-DWIN_ATOMICS64) ADD_DEFINITIONS(-DWIN_ATOMICS64)
ENDIF (RUN_RES) ENDIF (COMPILE_RES AND NOT RUN_RES)
ELSE (CMAKE_SIZEOF_VOID_P MATCHES 8) ELSE (CMAKE_SIZEOF_VOID_P MATCHES 8)
# Check for 32 bit atomics # Check for 32 bit atomics
TRY_RUN(RUN_RES COMPILE_RES ${CMAKE_BINARY_DIR} TRY_RUN(RUN_RES COMPILE_RES ${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/storage/innobase/win_atomics32_test.c) ${CMAKE_SOURCE_DIR}/storage/innobase/win_atomics32_test.c)
IF (RUN_RES) MESSAGE("Tried Win32, Compile = ${COMPILE_RES}, Run = ${RUN_RES}")
IF (COMPILE_RES AND NOT RUN_RES)
MESSAGE("Adding support for Win32 atomics")
ADD_DEFINITIONS(-DWIN_ATOMICS32) ADD_DEFINITIONS(-DWIN_ATOMICS32)
ENDIF (RUN_RES) ENDIF (COMPILE_RES AND NOT RUN_RES)
ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8) ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8)
ENDIF (NOT WITHOUT_ATOMICS) ENDIF (NOT WITHOUT_ATOMICS)
MESSAGE("End checking for ATOMICS")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
${CMAKE_SOURCE_DIR}/storage/innobase/include ${CMAKE_SOURCE_DIR}/storage/innobase/include
......
...@@ -142,9 +142,9 @@ os_atomic_increment( ...@@ -142,9 +142,9 @@ os_atomic_increment(
#elif HAVE_SOLARIS_ATOMIC #elif HAVE_SOLARIS_ATOMIC
return ((lint)atomic_add_long_nv((volatile ulong_t *)ptr, amount)); return ((lint)atomic_add_long_nv((volatile ulong_t *)ptr, amount));
#elif WIN_ATOMICS32 #elif WIN_ATOMICS32
return ((lint)InterlockedExchangeAdd(ptr, amount)); return ((lint)InterlockedExchangeAdd(ptr, amount) + amount);
#elif WIN_ATOMICS64 #elif WIN_ATOMICS64
return ((lint)InterlockedExchangeAdd64(ptr, amount)); return ((lint)InterlockedExchangeAdd64(ptr, amount) + amount);
#else #else
#error "Need support for atomic ops" #error "Need support for atomic ops"
#endif #endif
......
# Copyright (C) 2009 Sun Microsystems AB /* Copyright (C) 2009 Sun Microsystems AB
#
# This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License. the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include <windows.h> #include <windows.h>
......
# Copyright (C) 2009 Sun Microsystems AB /* Copyright (C) 2009 Sun Microsystems AB
#
# This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License. the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include <windows.h> #include <windows.h>
int main() int main()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment