2023-11-30 02:42:59 +08:00
|
|
|
target_sources(
|
|
|
|
mlx
|
2024-09-17 03:53:01 +08:00
|
|
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/allocator.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/array.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/compile.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/device.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/dtype.cpp
|
2025-04-19 21:16:30 +08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/dtype_utils.cpp
|
2024-12-25 03:19:13 +08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/export.cpp
|
2024-09-17 03:53:01 +08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/einsum.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/fast.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/fft.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ops.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/graph_utils.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/primitives.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/random.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/scheduler.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/transforms.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/utils.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/linalg.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/backend/metal/metal.h)
|
2023-11-30 02:42:59 +08:00
|
|
|
|
2025-03-18 22:12:40 +08:00
|
|
|
# Define MLX_VERSION only in the version.cpp file.
|
|
|
|
add_library(mlx_version STATIC ${CMAKE_CURRENT_SOURCE_DIR}/version.cpp)
|
|
|
|
target_compile_definitions(mlx_version PRIVATE MLX_VERSION="${MLX_VERSION}")
|
|
|
|
target_link_libraries(mlx PRIVATE $<BUILD_INTERFACE:mlx_version>)
|
|
|
|
|
2024-12-10 11:41:14 +08:00
|
|
|
if(MSVC)
|
|
|
|
# Disable some MSVC warnings to speed up compilation.
|
|
|
|
target_compile_options(mlx PUBLIC /wd4068 /wd4244 /wd4267 /wd4804)
|
|
|
|
endif()
|
|
|
|
|
2024-12-11 05:59:14 +08:00
|
|
|
if(WIN32)
|
|
|
|
# Export symbols by default to behave like macOS/linux.
|
|
|
|
set_target_properties(mlx PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
|
|
|
|
endif()
|
|
|
|
|
2025-02-04 07:58:02 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backend/common)
|
|
|
|
|
2024-09-17 03:53:01 +08:00
|
|
|
if(MLX_BUILD_CPU)
|
2025-02-04 07:58:02 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backend/cpu)
|
2024-05-14 07:08:11 +08:00
|
|
|
else()
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backend/no_cpu)
|
|
|
|
endif()
|
|
|
|
|
2024-05-24 08:04:02 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/distributed)
|
2023-12-27 18:06:55 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/io)
|
2023-11-30 02:42:59 +08:00
|
|
|
|
2024-09-17 03:53:01 +08:00
|
|
|
if(MLX_BUILD_METAL)
|
2023-11-30 02:42:59 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backend/metal)
|
|
|
|
else()
|
2025-05-01 00:08:17 +08:00
|
|
|
target_sources(mlx
|
|
|
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backend/metal/no_metal.cpp)
|
2025-05-07 12:26:46 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(MLX_BUILD_CUDA)
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backend/cuda)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(MLX_BUILD_METAL OR MLX_BUILD_CUDA)
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backend/gpu)
|
|
|
|
else()
|
2025-05-01 00:08:17 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backend/no_gpu)
|
2023-11-30 02:42:59 +08:00
|
|
|
endif()
|