@@ -8,23 +8,24 @@ endif()
88
99include (ExternalProject)
1010
11- set (CMAKE_CXX_STANDARD 17)
12-
1311set (CMAKE_INCLUDE_CURRENT_DIR ON )
1412
1513project (triton CXX)
1614include (CTest)
1715
18- if (NOT WIN32 )
19- list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
20- endif ()
21-
22-
16+ list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
2317
2418# Options
19+ if (WIN32 )
20+ set (DEFAULT_BUILD_PROTON OFF )
21+ else ()
22+ set (DEFAULT_BUILD_PROTON ON )
23+ endif ()
24+
25+ # Define the option with the determined default value
26+ option (TRITON_BUILD_PROTON "Build the Triton Proton profiler" ${DEFAULT_BUILD_PROTON} )
2527option (TRITON_BUILD_TUTORIALS "Build C++ Triton tutorials" ON )
2628option (TRITON_BUILD_PYTHON_MODULE "Build Python Triton bindings" OFF )
27- option (TRITON_BUILD_PROTON "Build the Triton Proton profiler" ON )
2829option (TRITON_BUILD_UT "Build C++ Triton Unit Tests" ON )
2930option (TRITON_BUILD_WITH_CCACHE "Build with ccache (if available)" ON )
3031set (TRITON_CODEGEN_BACKENDS "" CACHE STRING "Enable different codegen backends" )
@@ -49,10 +50,21 @@ endif()
4950# used conditionally in this file and by lit tests
5051
5152# Customized release build type with assertions: TritonRelBuildWithAsserts
52- set (CMAKE_C_FLAGS_TRITONRELBUILDWITHASSERTS "-O2 -g" )
53- set (CMAKE_CXX_FLAGS_TRITONRELBUILDWITHASSERTS "-O2 -g" )
54- set (CMAKE_C_FLAGS_TRITONBUILDWITHO1 "-O1" )
55- set (CMAKE_CXX_FLAGS_TRITONBUILDWITHO1 "-O1" )
53+ if (NOT MSVC )
54+ set (CMAKE_CXX_STANDARD 17)
55+ set (CMAKE_C_FLAGS_TRITONRELBUILDWITHASSERTS "-O2 -g" )
56+ set (CMAKE_CXX_FLAGS_TRITONRELBUILDWITHASSERTS "-O2 -g" )
57+ set (CMAKE_C_FLAGS_TRITONBUILDWITHO1 "-O1" )
58+ set (CMAKE_CXX_FLAGS_TRITONBUILDWITHO1 "-O1" )
59+ else ()
60+ set (CMAKE_CXX_STANDARD 20)
61+ set (CMAKE_C_FLAGS_TRITONRELBUILDWITHASSERTS "/Zi /Ob0 /Od /RTC1 /bigobj /Zc:preprocessor" )
62+ set (CMAKE_CXX_FLAGS_TRITONRELBUILDWITHASSERTS "/Zi /Ob0 /Od /RTC1 /bigobj /Zc:preprocessor" )
63+ set (CMAKE_EXE_LINKER_FLAGS_TRITONRELBUILDWITHASSERTS "/debug:fastlink /INCREMENTAL" )
64+ set (CMAKE_MODULE_LINKER_FLAGS_TRITONRELBUILDWITHASSERTS "/debug:fastlink /INCREMENTAL" )
65+ set (CMAKE_SHARED_LINKER_FLAGS_TRITONRELBUILDWITHASSERTS "/debug:fastlink /INCREMENTAL" )
66+ set (CMAKE_STATIC_LINKER_FLAGS_TRITONRELBUILDWITHASSERTS "/debug:fastlink /INCREMENTAL" )
67+ endif ()
5668
5769# Default build type
5870if (NOT CMAKE_BUILD_TYPE )
@@ -70,7 +82,15 @@ endif()
7082
7183# Compiler flags
7284include_directories (${CMAKE_CURRENT_SOURCE_DIR} /include )
73- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_FORMAT_MACROS -fPIC -std=gnu++17" )
85+ if (NOT MSVC )
86+ if (NOT WIN32 )
87+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_FORMAT_MACROS -fPIC" )
88+ else ()
89+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_FORMAT_MACROS -Wno-deprecated" )
90+ endif ()
91+ else ()
92+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_FORMAT_MACROS /wd4244 /wd4624 /wd4715 /wd4530" )
93+ endif ()
7494
7595
7696# #########
@@ -124,7 +144,11 @@ endfunction()
124144
125145
126146# Disable warnings that show up in external code (gtest;pybind11)
127- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-covered-switch-default -fvisibility=hidden" )
147+ if (NOT MSVC )
148+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-covered-switch-default -fvisibility=hidden" )
149+ else ()
150+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX-" )
151+ endif ()
128152
129153include_directories ("." )
130154include_directories (${MLIR_INCLUDE_DIRS} )
@@ -134,7 +158,8 @@ include_directories(${PROJECT_BINARY_DIR}/include) # Tablegen'd files
134158include_directories (${PROJECT_SOURCE_DIR} /third_party)
135159include_directories (${PROJECT_BINARY_DIR} /third_party) # Tablegen'd files
136160
137- # link_directories(${LLVM_LIBRARY_DIR})
161+ link_directories (${LLVM_LIBRARY_DIR} )
162+
138163add_subdirectory (include )
139164add_subdirectory (lib)
140165
@@ -163,6 +188,8 @@ if(TRITON_BUILD_PYTHON_MODULE)
163188 # using pip install.
164189 include_directories (${PYTHON_INCLUDE_DIRS} )
165190 include_directories (${PYBIND11_INCLUDE_DIR} )
191+ message (STATUS "PYTHON_LIB_DIRS ${PYTHON_LIB_DIRS} " )
192+ link_directories (${PYTHON_LIB_DIRS} )
166193 else ()
167194 # Otherwise, we might be building from top CMakeLists.txt directly.
168195 # Try to find Python and pybind11 packages.
@@ -245,7 +272,7 @@ if(TRITON_BUILD_PYTHON_MODULE)
245272 LLVMAArch64CodeGen
246273 LLVMAArch64AsmParser
247274 )
248- elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" )
275+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64" )
249276 list (APPEND TRITON_LIBRARIES
250277 LLVMX86CodeGen
251278 LLVMX86AsmParser
@@ -280,6 +307,8 @@ if(TRITON_BUILD_PYTHON_MODULE)
280307 target_link_libraries (triton PUBLIC ${TRITON_LIBRARIES} )
281308 if (WIN32 )
282309 target_link_libraries (triton PRIVATE ${CMAKE_DL_LIBS} )
310+ set_target_properties (triton PROPERTIES SUFFIX ".pyd" )
311+ set_target_properties (triton PROPERTIES PREFIX "lib" )
283312 else ()
284313 target_link_libraries (triton PRIVATE z)
285314 endif ()
@@ -306,6 +335,10 @@ if(NOT TRITON_BUILD_PYTHON_MODULE)
306335 add_subdirectory (third_party/${CODEGEN_BACKEND} )
307336 endforeach ()
308337endif ()
338+ if (WIN32 )
339+ option (CMAKE_USE_WIN32_THREADS_INIT "using WIN32 threads" ON )
340+ option (gtest_disable_pthreads "Disable uses of pthreads in gtest." ON )
341+ endif ()
309342
310343add_subdirectory (third_party/f2reduce)
311344add_subdirectory (bin)
0 commit comments