mirror of https://github.com/dnomd343/klotski.git
				
				
			
				 38 changed files with 66 additions and 47 deletions
			
			
		@ -1,31 +1,14 @@ | 
				
			|||
cmake_minimum_required(VERSION 3.12) | 
				
			|||
project(core_ffi) | 
				
			|||
 | 
				
			|||
set(CMAKE_CXX_STANDARD 23) | 
				
			|||
 | 
				
			|||
if (KLSK_C_FFI) | 
				
			|||
  add_library(klotski_c c_ffi/all_cases.cc) | 
				
			|||
  target_include_directories(klotski_c PUBLIC c_ffi/include) | 
				
			|||
  target_link_libraries(klotski_c PRIVATE klotski::core) | 
				
			|||
  set_target_properties(klotski_c PROPERTIES OUTPUT_NAME klotski) | 
				
			|||
  add_subdirectory(c_ffi) | 
				
			|||
endif() | 
				
			|||
 | 
				
			|||
if (KLSK_PYTHON_FFI) | 
				
			|||
    add_subdirectory(py_ffi) | 
				
			|||
if (KLSK_RUST_FFI) | 
				
			|||
  add_subdirectory(rust_ffi) | 
				
			|||
endif() | 
				
			|||
 | 
				
			|||
if (KLSK_RUST_FFI) | 
				
			|||
  if (CARGO_BUILD) | 
				
			|||
    install(TARGETS klotski_core DESTINATION .) | 
				
			|||
  else() | 
				
			|||
    # just for IDE highlight | 
				
			|||
    add_library(klotski_rs | 
				
			|||
      rust_ffi/adapter/short_code.cc | 
				
			|||
      rust_ffi/adapter/common_code.cc | 
				
			|||
      rust_ffi/target/cxxbridge/rust_ffi/src/bridge.rs.cc | 
				
			|||
    ) | 
				
			|||
    target_include_directories(klotski_rs PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) | 
				
			|||
    target_include_directories(klotski_rs PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/rust_ffi/target/cxxbridge) | 
				
			|||
    target_link_libraries(klotski_rs PRIVATE klotski_core) | 
				
			|||
  endif() | 
				
			|||
if (KLSK_PYTHON_FFI) | 
				
			|||
  add_subdirectory(python_ffi) | 
				
			|||
endif() | 
				
			|||
 | 
				
			|||
@ -0,0 +1,16 @@ | 
				
			|||
cmake_minimum_required(VERSION 3.12) | 
				
			|||
project(klotski_c LANGUAGES CXX) | 
				
			|||
 | 
				
			|||
set(CMAKE_CXX_STANDARD 23) | 
				
			|||
 | 
				
			|||
set(KLSK_C_FFI_SRC | 
				
			|||
    all_cases.cc | 
				
			|||
) | 
				
			|||
 | 
				
			|||
# TODO: add `-fno-rtti -fno-exceptions -fvisibility=hidden` | 
				
			|||
add_library(klotski_c STATIC ${KLSK_C_FFI_SRC})  # TODO: allow shared lib | 
				
			|||
target_include_directories(klotski_c PUBLIC include) | 
				
			|||
target_link_libraries(klotski_c PRIVATE klotski::core) | 
				
			|||
 | 
				
			|||
set_target_properties(klotski_c PROPERTIES OUTPUT_NAME klotski) | 
				
			|||
add_library(klotski::c_ffi ALIAS klotski_c) | 
				
			|||
@ -0,0 +1,23 @@ | 
				
			|||
cmake_minimum_required(VERSION 3.12) | 
				
			|||
project(klotski_rs LANGUAGES CXX) | 
				
			|||
 | 
				
			|||
set(CMAKE_CXX_STANDARD 23) | 
				
			|||
 | 
				
			|||
if (KLSK_DEV_MODE) | 
				
			|||
  set(KLSK_RUST_FFI_SRC | 
				
			|||
      adapter/short_code.cc | 
				
			|||
      adapter/common_code.cc | 
				
			|||
      target/cxxbridge/rust_ffi/src/bridge.rs.cc | 
				
			|||
  ) | 
				
			|||
  add_library(klotski_rs STATIC ${KLSK_RUST_FFI_SRC}) # just for IDE highlight | 
				
			|||
  target_include_directories(klotski_rs PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../) | 
				
			|||
  target_include_directories(klotski_rs PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/target/cxxbridge) | 
				
			|||
  target_link_libraries(klotski_rs PRIVATE klotski::core) | 
				
			|||
 | 
				
			|||
  set_target_properties(klotski_rs PROPERTIES OUTPUT_NAME klotski) | 
				
			|||
  add_library(klotski::rs_ffi ALIAS klotski_rs) | 
				
			|||
endif() | 
				
			|||
 | 
				
			|||
if (CARGO_BUILD) | 
				
			|||
  install(TARGETS klotski_core DESTINATION .) | 
				
			|||
endif() | 
				
			|||
@ -0,0 +1 @@ | 
				
			|||
../../../../CMakeLists.txt | 
				
			|||
					Loading…
					
					
				
		Reference in new issue