1+ ##Copyright (C) 2020, Advanced Micro Devices, Inc.##
2+
3+ cmake_minimum_required (VERSION 3.0.0 )
4+
5+ project (AOCL-LibBlis-Win C )
6+
7+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR } /bin" )
8+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR } /bin" )
9+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR } /bin" )
10+ if (MSVC )
11+ set (TARGET_ARCH zen2)
12+ message (STATUS "Setting MSVC flags2" )
13+ message (${TARGET_ARCH} )
14+ option (BUILD_SHARED_LIBS "Build shared library" ON )
15+ option (ENABLE_MULTITHREADING "Enable Multi threading" OFF )
16+
17+ include_directories (${PROJECT_SOURCE_DIR } /external/msvc )
18+ add_definitions (-D_CRT_SECURE_NO_WARNINGS )
19+ add_definitions (-DBLIS_ENABLE_CBLAS )
20+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } /MD " )
21+ #add_definitions(-DBLIS_IS_BUILDING_LIBRARY)
22+ if (NOT BUILD_SHARED_LIBS )
23+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } /MT " )
24+ add_definitions (-DBLIS_IS_BUILDING_LIBRARY )
25+ endif ()
26+
27+ if (ENABLE_MULTITHREADING)
28+ add_definitions (-DBLIS_ENABLE_OPENMP )
29+ endif ()
30+
31+ SET (ENABLE_SIMD_FLAGS "AVX2" CACHE STRING "Set compiler SIMD flags" )
32+ SET_PROPERTY (CACHE ENABLE_SIMD_FLAGS PROPERTY STRINGS none SSE2 AVX AVX2)
33+
34+ if (${ENABLE_SIMD_FLAGS} MATCHES "AVX2" )
35+ add_definitions (/arch:AVX2 )
36+ message (STATUS "Enabling AVX2 instructions" )
37+ elseif (${ENABLE_SIMD_FLAGS} MATCHES "AVX" )
38+ add_definitions (/arch:AVX )
39+ message (STATUS "Enabling AVX instructions" )
40+ elseif (${ENABLE_SIMD_FLAGS} MATCHES "SSE2" )
41+ add_definitions (/arch:SSE2 )
42+ message (STATUS "Enabling SSE2 instructions" )
43+ endif ()
44+
45+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } /W0 " )
46+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } /Oi" )
47+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } /MP" )
48+ #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /openmp")
49+ set (INTR_GENERAL_LINK_FLAGS "${INTR_GENERAL_LINK_FLAGS} /RELEGE" )
50+ #add_definitions(-D_USRDLL)
51+ add_definitions (-D_CRT_SECURE_NO_DEPRECATE )
52+ #add_definitions(-D_WIN32)
53+ #add_definitions(-D_BLIS)
54+ add_definitions (-DBLIS_OS_WINDOWS )
55+ add_definitions (-D_MSC_VER )
56+ add_definitions (-DBLIS_CNAME=${TARGET_ARCH} )
57+ endif (MSVC )
58+
59+ include_directories (${CMAKE_SOURCE_DIR } /aocl_dtl )
60+ include_directories (${CMAKE_SOURCE_DIR } /. )
61+ include_directories (${CMAKE_SOURCE_DIR } /windows/${TARGET_ARCH} )
62+ include_directories (${CMAKE_SOURCE_DIR } /frame/include )
63+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0 )
64+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/1e )
65+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/1m )
66+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/1r )
67+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/bb )
68+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/io )
69+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/ri )
70+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/ri3 )
71+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/rih )
72+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/ro )
73+ include_directories (${CMAKE_SOURCE_DIR } /frame/include/level0/rpi )
74+ include_directories (${CMAKE_SOURCE_DIR } /frame/thread )
75+ include_directories (${CMAKE_SOURCE_DIR } /frame/base )
76+ include_directories (${CMAKE_SOURCE_DIR } /frame/base/cast )
77+ include_directories (${CMAKE_SOURCE_DIR } /frame/base/check )
78+ include_directories (${CMAKE_SOURCE_DIR } /frame/base/noopt )
79+ include_directories (${CMAKE_SOURCE_DIR } /frame/base/proj )
80+ include_directories (${CMAKE_SOURCE_DIR } /frame/0 )
81+ include_directories (${CMAKE_SOURCE_DIR } /frame/0/copysc )
82+ include_directories (${CMAKE_SOURCE_DIR } /frame/1 )
83+ include_directories (${CMAKE_SOURCE_DIR } /frame/1d )
84+ include_directories (${CMAKE_SOURCE_DIR } /frame/1f )
85+ include_directories (${CMAKE_SOURCE_DIR } /frame/1m )
86+ include_directories (${CMAKE_SOURCE_DIR } /frame/1m/packm )
87+ include_directories (${CMAKE_SOURCE_DIR } /frame/1m/unpackm )
88+ include_directories (${CMAKE_SOURCE_DIR } /frame/2 )
89+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/gemv )
90+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/ger )
91+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/hemv )
92+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/her )
93+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/her2 )
94+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/symv )
95+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/syr )
96+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/syr2 )
97+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/trmv )
98+ include_directories (${CMAKE_SOURCE_DIR } /frame/2/trsv )
99+ include_directories (${CMAKE_SOURCE_DIR } /frame/3 )
100+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/gemm )
101+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/gemm/ind )
102+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/hemm )
103+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/her2k )
104+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/herk )
105+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/symm )
106+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/syr2k )
107+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/syrk )
108+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/trmm )
109+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/trmm3 )
110+ include_directories (${CMAKE_SOURCE_DIR } /frame/3/trsm )
111+ include_directories (${CMAKE_SOURCE_DIR } /frame/compat )
112+ include_directories (${CMAKE_SOURCE_DIR } /frame/compat/blis/thread )
113+ include_directories (${CMAKE_SOURCE_DIR } /frame/compat/cblas )
114+ include_directories (${CMAKE_SOURCE_DIR } /frame/compat/cblas/f77_sub )
115+ include_directories (${CMAKE_SOURCE_DIR } /frame/compat/cblas/src )
116+ include_directories (${CMAKE_SOURCE_DIR } /frame/compat/check )
117+ include_directories (${CMAKE_SOURCE_DIR } /frame/compat/f2c )
118+ include_directories (${CMAKE_SOURCE_DIR } /frame/compat/f2c/util )
119+ include_directories (${CMAKE_SOURCE_DIR } /frame/ind )
120+ include_directories (${CMAKE_SOURCE_DIR } /frame/ind/cntx )
121+ include_directories (${CMAKE_SOURCE_DIR } /frame/ind/oapi )
122+ include_directories (${CMAKE_SOURCE_DIR } /frame/ind/tapi )
123+ include_directories (${CMAKE_SOURCE_DIR } /frame/ind/ukernels )
124+ include_directories (${CMAKE_SOURCE_DIR } /frame/util )
125+ include_directories (${CMAKE_SOURCE_DIR } /config/zen )
126+ include_directories (${CMAKE_SOURCE_DIR } /config/zen2 )
127+ include_directories (${CMAKE_SOURCE_DIR } /ref_kernels )
128+ include_directories (${CMAKE_SOURCE_DIR } /kernels )
129+ include_directories (${CMAKE_SOURCE_DIR } /kernels/haswell )
130+ include_directories (${CMAKE_SOURCE_DIR } /kernels/haswell/3 )
131+ include_directories (${CMAKE_SOURCE_DIR } /kernels/haswell/3/sup )
132+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen )
133+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen/1 )
134+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen/1f )
135+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen/1m )
136+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen/3 )
137+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen/3/sup )
138+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen2 )
139+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen2/1f )
140+ include_directories (${CMAKE_SOURCE_DIR } /kernels/zen2/2 )
141+
142+ file (GLOB headers ${CMAKE_SOURCE_DIR } /*.h )
143+
144+ if (BUILD_SHARED_LIBS )
145+ add_library ("${PROJECT_NAME } " SHARED ${CMAKE_SOURCE_DIR } /windows/${TARGET_ARCH}/bli_config.h
146+ ${CMAKE_SOURCE_DIR } /windows/${TARGET_ARCH}/blis.h
147+ ${headers} )
148+ target_compile_definitions ("${PROJECT_NAME } " PUBLIC -DBLIS_IS_BUILDING_LIBRARY )
149+ set_target_properties ("${PROJECT_NAME } " PROPERTIES LINKER_LANGUAGE C)
150+ endif ()
151+ if (NOT BUILD_SHARED_LIBS )
152+ add_library ("${PROJECT_NAME } " STATIC ${CMAKE_SOURCE_DIR } /windows/${TARGET_ARCH}/bli_config.h
153+ ${CMAKE_SOURCE_DIR } /windows/${TARGET_ARCH}/blis.h
154+ ${headers} )
155+ set_target_properties ("${PROJECT_NAME } " PROPERTIES LINKER_LANGUAGE C)
156+ endif ()
157+
158+
159+ link_directories (${CMAKE_LIBRARY_OUTPUT_DIRECTORY } )
160+ add_definitions (-DEXPMODULE )
161+
162+ add_subdirectory (config )
163+ add_subdirectory (ref_kernels )
164+ add_subdirectory (kernels )
165+ add_subdirectory (frame )
166+ add_subdirectory (aocl_dtl )
167+ add_subdirectory (test )
168+ add_subdirectory (testsuite )
0 commit comments