Skip to content

Commit 47ebce4

Browse files
committed
Clean up, fix old typos. Simplify arch usages. Move system arch check to earlier position.
1 parent 69b5607 commit 47ebce4

File tree

9 files changed

+94
-154
lines changed

9 files changed

+94
-154
lines changed

CMakeLists.txt

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,6 @@ if (BUILD_COMPLEX16)
8787
list(APPEND FLOAT_TYPES "ZCOMPLEX") # defines COMPLEX and DOUBLE
8888
endif ()
8989

90-
set(SUBDIRS_ALL ${SUBDIRS} test ctest utest exports benchmark ../laswp ../bench)
91-
92-
# all :: libs netlib tests shared
93-
94-
# libs :
9590
if (NOT DEFINED CORE OR "${CORE}" STREQUAL "UNKNOWN")
9691
message(FATAL_ERROR "Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for details.")
9792
endif ()
@@ -125,18 +120,10 @@ endif ()
125120
# Only generate .def for dll on MSVC and always produce pdb files for debug and release
126121
if(MSVC)
127122
set(OpenBLAS_DEF_FILE "${PROJECT_BINARY_DIR}/openblas.def")
128-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
129123
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")
130124
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
131125
endif()
132126

133-
#ifeq ($(DYNAMIC_ARCH), 1)
134-
# @$(MAKE) -C kernel commonlibs || exit 1
135-
# @for d in $(DYNAMIC_CORE) ; \
136-
# do $(MAKE) GOTOBLAS_MAKEFILE= -C kernel TARGET_CORE=$$d kernel || exit 1 ;\
137-
# done
138-
# @echo DYNAMIC_ARCH=1 >> Makefile.conf_last
139-
#endif
140127
if (${DYNAMIC_ARCH})
141128
add_subdirectory(kernel)
142129
foreach(TARGET_CORE ${DYNAMIC_CORE})
@@ -197,24 +184,6 @@ set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES
197184
SOVERSION ${OpenBLAS_MAJOR_VERSION}
198185
)
199186

200-
201-
# TODO: Why is the config saved here? Is this necessary with CMake?
202-
#Save the config files for installation
203-
# @cp Makefile.conf Makefile.conf_last
204-
# @cp config.h config_last.h
205-
#ifdef QUAD_PRECISION
206-
# @echo "#define QUAD_PRECISION">> config_last.h
207-
#endif
208-
#ifeq ($(EXPRECISION), 1)
209-
# @echo "#define EXPRECISION">> config_last.h
210-
#endif
211-
###
212-
213-
#ifdef USE_THREAD
214-
# @echo USE_THREAD=$(USE_THREAD) >> Makefile.conf_last
215-
#endif
216-
# @touch lib.grd
217-
218187
# Install project
219188

220189
# Install libraries

cmake/arch.cmake

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
## Description: Ported from portion of OpenBLAS/Makefile.system
44
## Sets various variables based on architecture.
55

6-
if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64")
6+
if (X86 OR X86_64)
77

8-
if (${ARCH} STREQUAL "x86")
8+
if (X86)
99
if (NOT BINARY)
1010
set(NO_BINARY_MODE 1)
1111
endif ()
@@ -46,11 +46,11 @@ endif ()
4646

4747

4848
if (DYNAMIC_ARCH)
49-
if (${ARCH} STREQUAL "x86")
49+
if (X86)
5050
set(DYNAMIC_CORE KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO)
5151
endif ()
5252

53-
if (${ARCH} STREQUAL "x86_64")
53+
if (X86_64)
5454
set(DYNAMIC_CORE PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO)
5555
if (NOT NO_AVX)
5656
set(DYNAMIC_CORE ${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR)
@@ -77,7 +77,7 @@ if (${ARCH} STREQUAL "ia64")
7777
endif ()
7878
endif ()
7979

80-
if (${ARCH} STREQUAL "mips64")
80+
if (MIPS64)
8181
set(NO_BINARY_MODE 1)
8282
endif ()
8383

@@ -86,12 +86,12 @@ if (${ARCH} STREQUAL "alpha")
8686
set(BINARY_DEFINED 1)
8787
endif ()
8888

89-
if (${ARCH} STREQUAL "arm")
89+
if (ARM)
9090
set(NO_BINARY_MODE 1)
9191
set(BINARY_DEFINED 1)
9292
endif ()
9393

94-
if (${ARCH} STREQUAL "arm64")
94+
if (ARM64)
9595
set(NO_BINARY_MODE 1)
9696
set(BINARY_DEFINED 1)
9797
endif ()

cmake/cc.cmake

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR
1515

1616
if (NO_BINARY_MODE)
1717

18-
if (${ARCH} STREQUAL "mips64")
18+
if (MIPS64)
1919
if (BINARY64)
2020
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64")
2121
else ()
@@ -24,17 +24,12 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR
2424
set(BINARY_DEFINED 1)
2525
endif ()
2626

27-
if (${CORE} STREQUAL "LOONGSON3A")
27+
if (${CORE} STREQUAL "LOONGSON3A" OR ${CORE} STREQUAL "LOONGSON3B")
2828
set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64")
2929
set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64")
3030
endif ()
3131

32-
if (${CORE} STREQUAL "LOONGSON3B")
33-
set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64")
34-
set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64")
35-
endif ()
36-
37-
if (${OSNAME} STREQUAL "AIX")
32+
if (CMAKE_SYSTEM_NAME STREQUAL "AIX")
3833
set(BINARY_DEFINED 1)
3934
endif ()
4035
endif ()
@@ -66,7 +61,7 @@ endif ()
6661

6762
if (${CMAKE_C_COMPILER} STREQUAL "OPEN64")
6863

69-
if (${ARCH} STREQUAL "mips64")
64+
if (MIPS64)
7065

7166
if (NOT BINARY64)
7267
set(CCOMMON_OPT "${CCOMMON_OPT} -n32")
@@ -94,10 +89,10 @@ endif ()
9489

9590
if (${CMAKE_C_COMPILER} STREQUAL "SUN")
9691
set(CCOMMON_OPT "${CCOMMON_OPT} -w")
97-
if (${ARCH} STREQUAL "x86")
92+
if (X86)
9893
set(CCOMMON_OPT "${CCOMMON_OPT} -m32")
9994
else ()
100-
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")
95+
set(CCOMMON_OPT "${CCOMMON_OPT} -m64")
10196
endif ()
10297
endif ()
10398

cmake/fc.cmake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ if (${F_COMPILER} STREQUAL "GFORTRAN")
5050
set(EXTRALIB "{EXTRALIB} -lgfortran")
5151
endif ()
5252
if (NO_BINARY_MODE)
53-
if (${ARCH} STREQUAL "mips64")
53+
if (MIPS64)
5454
if (BINARY64)
5555
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64")
5656
else ()
@@ -130,7 +130,7 @@ if (${F_COMPILER} STREQUAL "PATHSCALE")
130130
endif ()
131131
endif ()
132132

133-
if (NOT ${ARCH} STREQUAL "mips64")
133+
if (NOT MIPS64)
134134
if (NOT BINARY64)
135135
set(FCOMMON_OPT "${FCOMMON_OPT} -m32")
136136
else ()
@@ -158,7 +158,7 @@ if (${F_COMPILER} STREQUAL "OPEN64")
158158
endif ()
159159
endif ()
160160

161-
if (${ARCH} STREQUAL "mips64")
161+
if (MIPS64)
162162

163163
if (NOT BINARY64)
164164
set(FCOMMON_OPT "${FCOMMON_OPT} -n32")
@@ -189,7 +189,7 @@ endif ()
189189

190190
if (${F_COMPILER} STREQUAL "SUN")
191191
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN")
192-
if (${ARCH} STREQUAL "x86")
192+
if (X86)
193193
set(FCOMMON_OPT "${FCOMMON_OPT} -m32")
194194
else ()
195195
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")

cmake/os.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
4343

4444
# Ensure the correct stack alignment on Win32
4545
# http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
46-
if (${ARCH} STREQUAL "x86")
46+
if (X86)
4747
if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
4848
set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2")
4949
endif ()
@@ -75,7 +75,7 @@ if (QUAD_PRECISION)
7575
set(NO_EXPRECISION 1)
7676
endif ()
7777

78-
if (${ARCH} STREQUAL "x86")
78+
if (X86)
7979
set(NO_EXPRECISION 1)
8080
endif ()
8181

cmake/prebuild.cmake

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,37 @@ else()
5353
endif ()
5454

5555
set(TARGET_CONF_TEMP "${PROJECT_BINARY_DIR}/${TARGET_CONF}.tmp")
56-
include("${PROJECT_SOURCE_DIR}/cmake/c_check.cmake")
5756

57+
# c_check
58+
set(FU "")
59+
if (APPLE OR (MSVC AND NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang"))
60+
set(FU "_")
61+
endif()
62+
63+
set(COMPILER_ID ${CMAKE_C_COMPILER_ID})
64+
if (${COMPILER_ID} STREQUAL "GNU")
65+
set(COMPILER_ID "GCC")
66+
endif ()
67+
68+
string(TOUPPER ${ARCH} UC_ARCH)
69+
70+
file(WRITE ${TARGET_CONF_TEMP}
71+
"#define OS_${HOST_OS}\t1\n"
72+
"#define ARCH_${UC_ARCH}\t1\n"
73+
"#define C_${COMPILER_ID}\t1\n"
74+
"#define __${BINARY}BIT__\t1\n"
75+
"#define FUNDERSCORE\t${FU}\n")
76+
77+
if (${HOST_OS} STREQUAL "WINDOWSSTORE")
78+
file(APPEND ${TARGET_CONF_TEMP}
79+
"#define OS_WINNT\t1\n")
80+
endif ()
81+
82+
# f_check
5883
if (NOT NOFORTRAN)
5984
include("${PROJECT_SOURCE_DIR}/cmake/f_check.cmake")
6085
endif ()
6186

62-
# This check requires c_check for arch but it should probably be done earlier
63-
if(CMAKE_CROSSCOMPILING AND NOT DEFINED CORE)
64-
# Detect target without running getarch
65-
if(ARM64)
66-
set(CORE "ARMV8")
67-
else()
68-
message(FATAL_ERROR "When cross compiling, a CORE is required.")
69-
endif()
70-
endif()
71-
7287
# Cannot run getarch on target if we are cross-compiling
7388
if (DEFINED CORE AND CMAKE_CROSSCOMPILING)
7489
# Write to config as getarch would
@@ -78,7 +93,22 @@ if (DEFINED CORE AND CMAKE_CROSSCOMPILING)
7893
file(APPEND ${TARGET_CONF_TEMP}
7994
"#define ${CORE}\n"
8095
"#define CHAR_CORENAME \"${CORE}\"\n")
81-
if ("${CORE}" STREQUAL "ARMV8")
96+
if ("${CORE}" STREQUAL "ARMV7")
97+
file(APPEND ${TARGET_CONF_TEMP}
98+
"#define L1_DATA_SIZE\t65536\n"
99+
"#define L1_DATA_LINESIZE\t32\n"
100+
"#define L2_SIZE\t512488\n"
101+
"#define L2_LINESIZE\t32\n"
102+
"#define DTB_DEFAULT_ENTRIES\t64\n"
103+
"#define DTB_SIZE\t4096\n"
104+
"#define L2_ASSOCIATIVE\t4\n"
105+
"#define HAVE_VFPV3\n"
106+
"#define HAVE_VFP\n")
107+
set(SGEMM_UNROLL_M 4)
108+
set(SGEMM_UNROLL_N 4)
109+
set(DGEMM_UNROLL_M 4)
110+
set(DGEMM_UNROLL_N 4)
111+
elseif ("${CORE}" STREQUAL "ARMV8")
82112
file(APPEND ${TARGET_CONF_TEMP}
83113
"#define L1_DATA_SIZE\t32768\n"
84114
"#define L1_DATA_LINESIZE\t64\n"

cmake/system.cmake

Lines changed: 26 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,26 @@
44
##
55
set(NETLIB_LAPACK_DIR "${PROJECT_SOURCE_DIR}/lapack-netlib")
66

7+
# System detection, via CMake.
8+
include("${PROJECT_SOURCE_DIR}/cmake/system_check.cmake")
9+
10+
if(CMAKE_CROSSCOMPILING AND NOT DEFINED TARGET)
11+
# Detect target without running getarch
12+
if (ARM64)
13+
set(TARGET "ARMV8")
14+
elseif(ARM)
15+
set(TARGET "ARMV7") # TODO: Ask compiler which arch this is
16+
else()
17+
message(FATAL_ERROR "When cross compiling, a TARGET is required.")
18+
endif()
19+
endif()
20+
21+
# Other files expect CORE, which is actually TARGET and will become TARGET_CORE for kernel build. Confused yet?
22+
# It seems we are meant to use TARGET as input and CORE internally as kernel.
23+
if(NOT DEFINED CORE AND DEFINED TARGET)
24+
set(CORE ${TARGET})
25+
endif()
26+
727
# TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
828
if (DEFINED TARGET_CORE)
929
set(TARGET ${TARGET_CORE})
@@ -56,7 +76,7 @@ if (NOT DEFINED NO_PARALLEL_MAKE)
5676
endif ()
5777
set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_PARALLEL_MAKE=${NO_PARALLEL_MAKE}")
5878

59-
if (CMAKE_CXX_COMPILER STREQUAL loongcc)
79+
if (CMAKE_C_COMPILER STREQUAL loongcc)
6080
set(GETARCH_FLAGS "${GETARCH_FLAGS} -static")
6181
endif ()
6282

@@ -75,6 +95,7 @@ if (NOT CMAKE_CROSSCOMPILING)
7595
endif()
7696

7797
if (NOT NUM_CORES EQUAL 0)
98+
# HT?
7899
set(NUM_THREADS ${NUM_CORES})
79100
endif ()
80101
endif()
@@ -153,7 +174,7 @@ if (NO_AVX)
153174
set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX")
154175
endif ()
155176

156-
if (${ARCH} STREQUAL "x86")
177+
if (X86)
157178
set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX")
158179
endif ()
159180

@@ -166,7 +187,7 @@ if (USE_THREAD)
166187
# NO_AFFINITY = 1
167188
set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER")
168189

169-
if (${ARCH} STREQUAL "mips64")
190+
if (MIPS64)
170191
if (NOT ${CORE} STREQUAL "LOONGSON3B")
171192
set(USE_SIMPLE_THREADED_LEVEL3 1)
172193
endif ()
@@ -237,7 +258,7 @@ if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
237258
set(NO_AFFINITY 1)
238259
endif ()
239260

240-
if (NOT ${ARCH} STREQUAL "x86_64" AND NOT ${ARCH} STREQUAL "x86" AND NOT ${CORE} STREQUAL "LOONGSON3B")
261+
if (NOT X86_64 AND NOT X86 AND NOT ${CORE} STREQUAL "LOONGSON3B")
241262
set(NO_AFFINITY 1)
242263
endif ()
243264

@@ -377,7 +398,7 @@ endif ()
377398
set(USE_GEMM3M 0)
378399

379400
if (DEFINED ARCH)
380-
if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64" OR ${ARCH} STREQUAL "ia64" OR ${ARCH} STREQUAL "MIPS")
401+
if (X86 OR X86_64 OR ${ARCH} STREQUAL "ia64" OR MIPS64)
381402
set(USE_GEMM3M 1)
382403
endif ()
383404

@@ -460,35 +481,3 @@ endif ()
460481
# export CUFLAGS
461482
# export CULIB
462483
#endif
463-
464-
#.SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
465-
#
466-
#.f.$(SUFFIX):
467-
# $(FC) $(FFLAGS) -c $< -o $(@F)
468-
#
469-
#.f.$(PSUFFIX):
470-
# $(FC) $(FPFLAGS) -pg -c $< -o $(@F)
471-
472-
# these are not cross-platform
473-
#ifdef BINARY64
474-
#PATHSCALEPATH = /opt/pathscale/lib/3.1
475-
#PGIPATH = /opt/pgi/linux86-64/7.1-5/lib
476-
#else
477-
#PATHSCALEPATH = /opt/pathscale/lib/3.1/32
478-
#PGIPATH = /opt/pgi/linux86/7.1-5/lib
479-
#endif
480-
481-
#ACMLPATH = /opt/acml/4.3.0
482-
#ifneq ($(OSNAME), Darwin)
483-
#MKLPATH = /opt/intel/mkl/10.2.2.025/lib
484-
#else
485-
#MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
486-
#endif
487-
#ATLASPATH = /opt/atlas/3.9.17/opteron
488-
#FLAMEPATH = $(HOME)/flame/lib
489-
#ifneq ($(OSNAME), SunOS)
490-
#SUNPATH = /opt/sunstudio12.1
491-
#else
492-
#SUNPATH = /opt/SUNWspro
493-
#endif
494-

0 commit comments

Comments
 (0)