Skip to content

Commit fcc5267

Browse files
committed
chore: update C++ standard to 20 in native_optim CMake configuration
1 parent 7756076 commit fcc5267

2 files changed

Lines changed: 65 additions & 1 deletion

File tree

cppmega_mlx/training/native_optim/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.27)
22

33
project(cppmega_native_optim LANGUAGES CXX)
44

5-
set(CMAKE_CXX_STANDARD 17)
5+
set(CMAKE_CXX_STANDARD 20)
66
set(CMAKE_CXX_STANDARD_REQUIRED ON)
77
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
88

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
cmake_minimum_required(VERSION 3.27)
2+
3+
project(cppmega_native_optim LANGUAGES CXX)
4+
5+
set(CMAKE_CXX_STANDARD 17)
6+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
7+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
8+
9+
option(BUILD_SHARED_LIBS "Build extension support library as shared" ON)
10+
11+
find_package(
12+
Python 3.11
13+
COMPONENTS Interpreter Development.Module
14+
REQUIRED)
15+
execute_process(
16+
COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
17+
OUTPUT_STRIP_TRAILING_WHITESPACE
18+
OUTPUT_VARIABLE nanobind_ROOT)
19+
find_package(nanobind CONFIG REQUIRED)
20+
21+
execute_process(
22+
COMMAND "${Python_EXECUTABLE}" -m mlx --cmake-dir
23+
OUTPUT_STRIP_TRAILING_WHITESPACE
24+
OUTPUT_VARIABLE MLX_ROOT)
25+
find_package(MLX CONFIG REQUIRED)
26+
27+
add_library(cppmega_native_optim)
28+
target_sources(
29+
cppmega_native_optim
30+
PUBLIC
31+
${CMAKE_CURRENT_LIST_DIR}/fused_8bit.cpp)
32+
target_include_directories(cppmega_native_optim PUBLIC ${CMAKE_CURRENT_LIST_DIR})
33+
target_link_libraries(cppmega_native_optim PUBLIC mlx)
34+
35+
if(MLX_BUILD_METAL)
36+
mlx_build_metallib(
37+
TARGET
38+
cppmega_native_optim_metallib
39+
TITLE
40+
cppmega_native_optim
41+
SOURCES
42+
${CMAKE_CURRENT_LIST_DIR}/fused_8bit.metal
43+
INCLUDE_DIRS
44+
${PROJECT_SOURCE_DIR}
45+
${MLX_INCLUDE_DIRS}
46+
OUTPUT_DIRECTORY
47+
${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
48+
add_dependencies(cppmega_native_optim cppmega_native_optim_metallib)
49+
endif()
50+
51+
nanobind_add_module(
52+
_ext
53+
NB_STATIC
54+
STABLE_ABI
55+
LTO
56+
NOMINSIZE
57+
NB_DOMAIN
58+
mlx
59+
${CMAKE_CURRENT_LIST_DIR}/bindings.cpp)
60+
target_link_libraries(_ext PRIVATE cppmega_native_optim)
61+
62+
if(BUILD_SHARED_LIBS)
63+
target_link_options(_ext PRIVATE -Wl,-rpath,@loader_path)
64+
endif()

0 commit comments

Comments
 (0)