@@ -8,34 +8,46 @@ endif()
88
99include (ExternalProject)
1010
11- set (CMAKE_CXX_STANDARD 17 )
11+ set (CMAKE_CXX_STANDARD 20 )
1212
1313set (CMAKE_INCLUDE_CURRENT_DIR ON )
1414
1515project (triton)
1616include (CTest)
1717
18- if (NOT WIN32 )
19- list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
20- endif ()
21-
22-
18+ list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
2319
2420# Options
21+ if (WIN32 )
22+ set (DEFAULT_BUILD_PROTON OFF )
23+ else ()
24+ set (DEFAULT_BUILD_PROTON ON )
25+ endif ()
26+
27+ # Define the option with the determined default value
28+ option (TRITON_BUILD_PROTON "Build the Triton Proton profiler" ${DEFAULT_BUILD_PROTON} )
2529option (TRITON_BUILD_TUTORIALS "Build C++ Triton tutorials" ON )
2630option (TRITON_BUILD_PYTHON_MODULE "Build Python Triton bindings" OFF )
27- option (TRITON_BUILD_PROTON "Build the Triton Proton profiler" ON )
2831option (TRITON_BUILD_UT "Build C++ Triton Unit Tests" ON )
2932set (TRITON_CODEGEN_BACKENDS "" CACHE STRING "Enable different codegen backends" )
3033
3134# Ensure Python3 vars are set correctly
3235# used conditionally in this file and by lit tests
3336
3437# Customized release build type with assertions: TritonRelBuildWithAsserts
35- set (CMAKE_C_FLAGS_TRITONRELBUILDWITHASSERTS "-O2 -g" )
36- set (CMAKE_CXX_FLAGS_TRITONRELBUILDWITHASSERTS "-O2 -g" )
37- set (CMAKE_C_FLAGS_TRITONBUILDWITHO1 "-O1" )
38- set (CMAKE_CXX_FLAGS_TRITONBUILDWITHO1 "-O1" )
38+ if (NOT MSVC )
39+ set (CMAKE_C_FLAGS_TRITONRELBUILDWITHASSERTS "-O2 -g" )
40+ set (CMAKE_CXX_FLAGS_TRITONRELBUILDWITHASSERTS "-O2 -g" )
41+ set (CMAKE_C_FLAGS_TRITONBUILDWITHO1 "-O1" )
42+ set (CMAKE_CXX_FLAGS_TRITONBUILDWITHO1 "-O1" )
43+ else ()
44+ set (CMAKE_C_FLAGS_TRITONRELBUILDWITHASSERTS "/Zi /Ob0 /Od /RTC1 /bigobj" )
45+ set (CMAKE_CXX_FLAGS_TRITONRELBUILDWITHASSERTS "/Zi /Ob0 /Od /RTC1 /bigobj " )
46+ set (CMAKE_EXE_LINKER_FLAGS_TRITONRELBUILDWITHASSERTS "/debug:fastlink /INCREMENTAL" )
47+ set (CMAKE_MODULE_LINKER_FLAGS_TRITONRELBUILDWITHASSERTS "/debug:fastlink /INCREMENTAL" )
48+ set (CMAKE_SHARED_LINKER_FLAGS_TRITONRELBUILDWITHASSERTS "/debug:fastlink /INCREMENTAL" )
49+ set (CMAKE_STATIC_LINKER_FLAGS_TRITONRELBUILDWITHASSERTS "/debug:fastlink /INCREMENTAL" )
50+ endif ()
3951
4052# Default build type
4153if (NOT CMAKE_BUILD_TYPE )
@@ -53,7 +65,15 @@ endif()
5365
5466# Compiler flags
5567include_directories (${CMAKE_CURRENT_SOURCE_DIR} /include )
56- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_FORMAT_MACROS -fPIC -std=gnu++17" )
68+ if (NOT MSVC )
69+ if (NOT WIN32 )
70+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_FORMAT_MACROS -fPIC -std=gnu++17" )
71+ else ()
72+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_FORMAT_MACROS -std=gnu++17 -Wno-deprecated" )
73+ endif ()
74+ else ()
75+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_FORMAT_MACROS /wd4244 /wd4624 /wd4715 /wd4530" )
76+ endif ()
5777
5878
5979# #########
@@ -107,7 +127,11 @@ endfunction()
107127
108128
109129# Disable warnings that show up in external code (gtest;pybind11)
110- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-covered-switch-default -fvisibility=hidden" )
130+ if (NOT MSVC )
131+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-covered-switch-default -fvisibility=hidden" )
132+ else ()
133+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX-" )
134+ endif ()
111135
112136include_directories ("." )
113137include_directories (${MLIR_INCLUDE_DIRS} )
@@ -117,7 +141,8 @@ include_directories(${PROJECT_BINARY_DIR}/include) # Tablegen'd files
117141include_directories (${PROJECT_SOURCE_DIR} /third_party)
118142include_directories (${PROJECT_BINARY_DIR} /third_party) # Tablegen'd files
119143
120- # link_directories(${LLVM_LIBRARY_DIR})
144+ link_directories (${LLVM_LIBRARY_DIR} )
145+
121146add_subdirectory (include )
122147add_subdirectory (lib)
123148
@@ -146,6 +171,8 @@ if(TRITON_BUILD_PYTHON_MODULE)
146171 # using pip install.
147172 include_directories (${PYTHON_INCLUDE_DIRS} )
148173 include_directories (${PYBIND11_INCLUDE_DIR} )
174+ message (STATUS "PYTHON_LIB_DIRS ${PYTHON_LIB_DIRS} " )
175+ link_directories (${PYTHON_LIB_DIRS} )
149176 else ()
150177 # Otherwise, we might be building from top CMakeLists.txt directly.
151178 # Try to find Python and pybind11 packages.
@@ -228,7 +255,7 @@ if(TRITON_BUILD_PYTHON_MODULE)
228255 LLVMAArch64CodeGen
229256 LLVMAArch64AsmParser
230257 )
231- elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" )
258+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64" )
232259 list (APPEND TRITON_LIBRARIES
233260 LLVMX86CodeGen
234261 LLVMX86AsmParser
@@ -263,6 +290,8 @@ if(TRITON_BUILD_PYTHON_MODULE)
263290 target_link_libraries (triton PUBLIC ${TRITON_LIBRARIES} )
264291 if (WIN32 )
265292 target_link_libraries (triton PRIVATE ${CMAKE_DL_LIBS} )
293+ set_target_properties (triton PROPERTIES SUFFIX ".pyd" )
294+ set_target_properties (triton PROPERTIES PREFIX "lib" )
266295 else ()
267296 target_link_libraries (triton PRIVATE z)
268297 endif ()
@@ -289,6 +318,10 @@ if(NOT TRITON_BUILD_PYTHON_MODULE)
289318 add_subdirectory (third_party/${CODEGEN_BACKEND} )
290319 endforeach ()
291320endif ()
321+ if (WIN32 )
322+ option (CMAKE_USE_WIN32_THREADS_INIT "using WIN32 threads" ON )
323+ option (gtest_disable_pthreads "Disable uses of pthreads in gtest." ON )
324+ endif ()
292325
293326add_subdirectory (third_party/f2reduce)
294327add_subdirectory (bin)
0 commit comments