diff --git a/.gitignore b/.gitignore index ea8c4bf..82448cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +/build diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..9e6c240 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.18) + +project(photon_light VERSION 1.0.0 LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_program(CARGO cargo REQUIRED) +set(CARGO_TARGET_DIR "${CMAKE_BINARY_DIR}/cargo") + +add_subdirectory(ui) diff --git a/Cargo.lock b/Cargo.lock index 3be5cb4..4975196 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1165,6 +1165,13 @@ dependencies = [ "winit", ] +[[package]] +name = "photon-light-impl" +version = "0.1.0" +dependencies = [ + "photon-light", +] + [[package]] name = "pin-project" version = "1.1.10" diff --git a/Cargo.toml b/Cargo.toml index da3d29b..04dba8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,6 @@ +[workspace] +members = ["ui"] + [package] name = "photon-light" version = "0.1.0" diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt new file mode 100644 index 0000000..735ecb7 --- /dev/null +++ b/ui/CMakeLists.txt @@ -0,0 +1,7 @@ +include(impl.cmake) + +add_executable(photon_light + src/main.cxx +) + +target_link_libraries(photon_light PRIVATE photon_light_impl) diff --git a/ui/Cargo.toml b/ui/Cargo.toml new file mode 100644 index 0000000..e1e2d19 --- /dev/null +++ b/ui/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "photon-light-impl" +version = "0.1.0" +edition = "2024" + +[lib] +crate-type = ["staticlib"] + +[dependencies] +photon-light = {path = "../"} diff --git a/ui/impl.cmake b/ui/impl.cmake new file mode 100644 index 0000000..6abf56e --- /dev/null +++ b/ui/impl.cmake @@ -0,0 +1,22 @@ +set(impl_basename "${CARGO_TARGET_DIR}/release/libphoton_light_impl") + +add_custom_command( + OUTPUT ${impl_basename}.a + COMMAND env CARGO_TARGET_DIR=${CARGO_TARGET_DIR} ${CARGO} build --release --package photon-light-impl + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPFILE ${impl_basename}.d + USES_TERMINAL + JOB_SERVER_AWARE + DEPENDS_EXPLICIT_ONLY +) + +# HACK ensure CMake *actually adds* the command above +add_custom_target(build_impl + DEPENDS ${impl_basename}.a +) + +add_library(photon_light_impl STATIC IMPORTED) + +set_target_properties(photon_light_impl PROPERTIES + IMPORTED_LOCATION ${impl_basename}.a +) diff --git a/ui/src/lib.rs b/ui/src/lib.rs new file mode 100644 index 0000000..e69de29 diff --git a/ui/src/main.cxx b/ui/src/main.cxx new file mode 100644 index 0000000..cb3f748 --- /dev/null +++ b/ui/src/main.cxx @@ -0,0 +1,3 @@ +int main() { + return 0; +}