2024-03-18 20:12:25 -07:00
|
|
|
nanobind_add_module(
|
2023-11-29 10:30:41 -08:00
|
|
|
core
|
2024-09-16 20:53:01 +01:00
|
|
|
NB_STATIC
|
|
|
|
STABLE_ABI
|
|
|
|
LTO
|
|
|
|
NOMINSIZE
|
|
|
|
NB_DOMAIN
|
|
|
|
mlx
|
2023-11-29 10:30:41 -08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/mlx.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/array.cpp
|
2024-03-18 20:12:25 -07:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/convert.cpp
|
2023-11-29 10:30:41 -08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/device.cpp
|
2024-05-23 17:04:02 -07:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/distributed.cpp
|
2024-12-24 11:19:13 -08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/export.cpp
|
2024-02-14 14:04:25 -08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/fast.cpp
|
2023-11-29 10:30:41 -08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/fft.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/indexing.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/load.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/metal.cpp
|
2025-03-21 07:25:12 -07:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/memory.cpp
|
2025-02-11 14:45:02 -08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/mlx_func.cpp
|
2023-11-29 10:30:41 -08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ops.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/stream.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/transforms.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/random.cpp
|
2023-12-27 04:42:04 +01:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/linalg.cpp
|
2024-01-11 20:17:29 +05:30
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/constants.cpp
|
2024-02-26 19:28:53 -08:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/trees.cpp
|
2024-09-16 20:53:01 +01:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/utils.cpp)
|
2023-11-29 10:30:41 -08:00
|
|
|
|
2024-09-16 20:53:01 +01:00
|
|
|
if(NOT MLX_PYTHON_BINDINGS_OUTPUT_DIRECTORY)
|
2025-01-27 11:22:35 -08:00
|
|
|
if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
|
|
|
|
set(MLX_PYTHON_BINDINGS_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
|
|
|
|
else()
|
|
|
|
set(MLX_PYTHON_BINDINGS_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
|
|
|
endif()
|
2023-11-29 10:30:41 -08:00
|
|
|
endif()
|
|
|
|
|
2024-12-10 12:07:50 +09:00
|
|
|
set_target_properties(
|
|
|
|
core
|
|
|
|
PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${MLX_PYTHON_BINDINGS_OUTPUT_DIRECTORY}
|
|
|
|
# Do not append a sub-dir for multi-config generators like MSVC
|
|
|
|
# and XCode.
|
|
|
|
LIBRARY_OUTPUT_DIRECTORY_RELEASE
|
|
|
|
${MLX_PYTHON_BINDINGS_OUTPUT_DIRECTORY}
|
|
|
|
LIBRARY_OUTPUT_DIRECTORY_DEBUG
|
|
|
|
${MLX_PYTHON_BINDINGS_OUTPUT_DIRECTORY}
|
|
|
|
LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO
|
|
|
|
${MLX_PYTHON_BINDINGS_OUTPUT_DIRECTORY}
|
|
|
|
LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL
|
|
|
|
${MLX_PYTHON_BINDINGS_OUTPUT_DIRECTORY})
|
2023-11-29 10:30:41 -08:00
|
|
|
|
|
|
|
target_link_libraries(core PRIVATE mlx)
|
|
|
|
target_compile_definitions(core PRIVATE _VERSION_=${MLX_VERSION})
|
|
|
|
|
|
|
|
if(BUILD_SHARED_LIBS)
|
2025-06-06 10:41:51 -07:00
|
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
|
|
target_link_options(core PRIVATE -Wl,-rpath,@loader_path/lib)
|
|
|
|
else()
|
|
|
|
target_link_options(core PRIVATE -Wl,-rpath,\$ORIGIN/lib)
|
|
|
|
endif()
|
2023-11-29 10:30:41 -08:00
|
|
|
endif()
|