Skip to content

Commit 53b6023

Browse files
committed
Fix cmake bug on MSVC 32-bit.
1 parent 309875d commit 53b6023

3 files changed

Lines changed: 49 additions & 0 deletions

File tree

cmake/system.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,11 +325,15 @@ endif ()
325325

326326
#For x86 32-bit
327327
if (DEFINED BINARY AND BINARY EQUAL 32)
328+
if (NOT MSVC)
328329
set(COMMON_OPT "${COMMON_OPT} -m32")
329330
endif()
331+
endif()
330332

331333
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}")
334+
if(NOT MSVC)
332335
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}")
336+
endif()
333337
# TODO: not sure what PFLAGS is -hpa
334338
set(PFLAGS "${PFLAGS} ${COMMON_OPT} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}")
335339

kernel/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ ParseMakefileVars("${KERNELDIR}/KERNEL")
2222
ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}")
2323

2424
if (${ARCH} STREQUAL "x86")
25+
if (NOT MSVC)
2526
GenerateNamedObjects("${KERNELDIR}/cpuid.S" "" "" false "" "" true)
27+
else()
28+
GenerateNamedObjects("${KERNELDIR}/cpuid_win.c" "" "" false "" "" true)
29+
endif()
2630
endif ()
2731

2832
# don't use float type name mangling here

kernel/x86/cpuid_win.c

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/***************************************************************************
2+
Copyright (c) 2015, The OpenBLAS Project
3+
All rights reserved.
4+
Redistribution and use in source and binary forms, with or without
5+
modification, are permitted provided that the following conditions are
6+
met:
7+
1. Redistributions of source code must retain the above copyright
8+
notice, this list of conditions and the following disclaimer.
9+
2. Redistributions in binary form must reproduce the above copyright
10+
notice, this list of conditions and the following disclaimer in
11+
the documentation and/or other materials provided with the
12+
distribution.
13+
3. Neither the name of the OpenBLAS project nor the names of
14+
its contributors may be used to endorse or promote products
15+
derived from this software without specific prior written permission.
16+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
20+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
25+
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26+
*****************************************************************************/
27+
28+
#if defined(_MSC_VER) && !defined(__clang__)
29+
30+
#include<intrin.h>
31+
32+
void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx)
33+
{
34+
int cpuInfo[4] = {-1};
35+
__cpuid(cpuInfo, op);
36+
*eax = cpuInfo[0];
37+
*ebx = cpuInfo[1];
38+
*ecx = cpuInfo[2];
39+
*edx = cpuInfo[3];
40+
}
41+
#endif

0 commit comments

Comments
 (0)