mirror of
				https://github.com/ml-explore/mlx.git
				synced 2025-10-31 16:21:27 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| cmake_minimum_required(VERSION 3.24)
 | |
| 
 | |
| project(mlx_sample_extensions LANGUAGES CXX)
 | |
| 
 | |
| # ----------------------------- Setup -----------------------------
 | |
| set(CMAKE_CXX_STANDARD 17)
 | |
| set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | |
| set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 | |
| 
 | |
| option(BUILD_SHARED_LIBS "Build extensions as a shared library" ON)
 | |
| 
 | |
| # ----------------------------- Dependencies -----------------------------
 | |
| find_package(MLX CONFIG REQUIRED)
 | |
| find_package(Python COMPONENTS Interpreter Development)
 | |
| find_package(pybind11 CONFIG REQUIRED)
 | |
| 
 | |
| # ----------------------------- Extensions -----------------------------
 | |
| 
 | |
| # Add library
 | |
| add_library(mlx_ext)
 | |
| 
 | |
| # Add sources
 | |
| target_sources(
 | |
|   mlx_ext
 | |
|   PUBLIC
 | |
|   ${CMAKE_CURRENT_LIST_DIR}/axpby/axpby.cpp
 | |
| )
 | |
| 
 | |
| # Add include headers
 | |
| target_include_directories(
 | |
|   mlx_ext PUBLIC ${CMAKE_CURRENT_LIST_DIR}
 | |
| )
 | |
| 
 | |
| # Link to mlx
 | |
| target_link_libraries(mlx_ext PUBLIC mlx)
 | |
| 
 | |
| # ----------------------------- Metal -----------------------------
 | |
| 
 | |
| # Build metallib
 | |
| if(MLX_BUILD_METAL)
 | |
| 
 | |
|   mlx_build_metallib(
 | |
|     TARGET mlx_ext_metallib
 | |
|     TITLE mlx_ext
 | |
|     SOURCES ${CMAKE_CURRENT_LIST_DIR}/axpby/axpby.metal
 | |
|     INCLUDE_DIRS ${PROJECT_SOURCE_DIR} ${MLX_INCLUDE_DIRS}
 | |
|     OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
 | |
|   )
 | |
| 
 | |
|   add_dependencies(
 | |
|     mlx_ext
 | |
|     mlx_ext_metallib
 | |
|   )
 | |
| 
 | |
| endif()
 | |
| 
 | |
| # ----------------------------- Pybind -----------------------------
 | |
| pybind11_add_module(
 | |
|   mlx_sample_extensions
 | |
|   ${CMAKE_CURRENT_LIST_DIR}/bindings.cpp
 | |
| )
 | |
| target_link_libraries(mlx_sample_extensions PRIVATE mlx_ext)
 | |
| 
 | |
| if(BUILD_SHARED_LIBS)
 | |
|   target_link_options(mlx_sample_extensions PRIVATE -Wl,-rpath,@loader_path)
 | |
| endif() | 
