mirror of https://github.com/dnomd343/klotski.git
Dnomd343
2 years ago
20 changed files with 352 additions and 43 deletions
@ -1,4 +1,4 @@ |
|||||
cmake_minimum_required(VERSION 3.0) |
cmake_minimum_required(VERSION 3.0) |
||||
|
|
||||
add_library(all_cases STATIC all_cases.cc basic_ranges.cc) |
add_library(all_cases OBJECT all_cases.cc basic_ranges.cc) |
||||
target_link_libraries(all_cases PUBLIC utils) |
#target_link_libraries(all_cases PUBLIC utils) |
||||
|
@ -1,4 +1,4 @@ |
|||||
cmake_minimum_required(VERSION 3.0) |
cmake_minimum_required(VERSION 3.0) |
||||
|
|
||||
add_library(analyse STATIC analyse.cc backtrack.cc) |
add_library(analyse OBJECT analyse.cc backtrack.cc) |
||||
target_link_libraries(analyse PUBLIC core) |
#target_link_libraries(analyse PUBLIC core) |
||||
|
@ -1,4 +1,4 @@ |
|||||
cmake_minimum_required(VERSION 3.0) |
cmake_minimum_required(VERSION 3.0) |
||||
|
|
||||
add_library(benchmark STATIC chore.cc benchmark.cc) |
add_library(benchmark OBJECT chore.cc benchmark.cc) |
||||
target_link_libraries(benchmark PUBLIC all_cases) |
#target_link_libraries(benchmark PUBLIC all_cases) |
||||
|
@ -1,4 +1,4 @@ |
|||||
cmake_minimum_required(VERSION 3.0) |
cmake_minimum_required(VERSION 3.0) |
||||
|
|
||||
add_library(common_code STATIC convert.cc serialize.cc common_code.cc) |
add_library(common_code OBJECT convert.cc serialize.cc common_code.cc) |
||||
target_link_libraries(common_code PUBLIC utils) |
#target_link_libraries(common_code PUBLIC utils) |
||||
|
@ -1,3 +1,3 @@ |
|||||
cmake_minimum_required(VERSION 3.0) |
cmake_minimum_required(VERSION 3.0) |
||||
|
|
||||
add_library(core STATIC core.cc) |
add_library(core OBJECT core.cc) |
||||
|
@ -1,4 +1,4 @@ |
|||||
cmake_minimum_required(VERSION 3.0) |
cmake_minimum_required(VERSION 3.0) |
||||
|
|
||||
add_library(fast_cal STATIC cal_core.cc fast_cal.cc) |
add_library(fast_cal OBJECT cal_core.cc fast_cal.cc) |
||||
target_link_libraries(fast_cal PUBLIC core) |
#target_link_libraries(fast_cal PUBLIC core) |
||||
|
@ -1,4 +1,4 @@ |
|||||
cmake_minimum_required(VERSION 3.0) |
cmake_minimum_required(VERSION 3.0) |
||||
|
|
||||
add_library(raw_code STATIC convert.cc raw_code.cc) |
add_library(raw_code OBJECT convert.cc raw_code.cc) |
||||
target_link_libraries(raw_code PUBLIC utils) |
#target_link_libraries(raw_code PUBLIC utils) |
||||
|
@ -1,3 +1,3 @@ |
|||||
cmake_minimum_required(VERSION 3.0) |
cmake_minimum_required(VERSION 3.0) |
||||
|
|
||||
add_library(utils STATIC common.cc) |
add_library(utils OBJECT common.cc) |
||||
|
@ -0,0 +1,242 @@ |
|||||
|
# This file is automatically @generated by Cargo. |
||||
|
# It is not intended for manual editing. |
||||
|
version = 3 |
||||
|
|
||||
|
[[package]] |
||||
|
name = "bindgen" |
||||
|
version = "0.63.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885" |
||||
|
dependencies = [ |
||||
|
"bitflags", |
||||
|
"cexpr", |
||||
|
"clang-sys", |
||||
|
"lazy_static", |
||||
|
"lazycell", |
||||
|
"log", |
||||
|
"peeking_take_while", |
||||
|
"proc-macro2", |
||||
|
"quote", |
||||
|
"regex", |
||||
|
"rustc-hash", |
||||
|
"shlex", |
||||
|
"syn", |
||||
|
"which", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "bitflags" |
||||
|
version = "1.3.2" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "cexpr" |
||||
|
version = "0.6.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" |
||||
|
dependencies = [ |
||||
|
"nom", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "cfg-if" |
||||
|
version = "1.0.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "clang-sys" |
||||
|
version = "1.4.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" |
||||
|
dependencies = [ |
||||
|
"glob", |
||||
|
"libc", |
||||
|
"libloading", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "either" |
||||
|
version = "1.8.1" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "glob" |
||||
|
version = "0.3.1" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "klotski_ffi" |
||||
|
version = "0.1.0" |
||||
|
dependencies = [ |
||||
|
"bindgen", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "lazy_static" |
||||
|
version = "1.4.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "lazycell" |
||||
|
version = "1.3.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "libc" |
||||
|
version = "0.2.139" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "libloading" |
||||
|
version = "0.7.4" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" |
||||
|
dependencies = [ |
||||
|
"cfg-if", |
||||
|
"winapi", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "log" |
||||
|
version = "0.4.17" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" |
||||
|
dependencies = [ |
||||
|
"cfg-if", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "memchr" |
||||
|
version = "2.5.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "minimal-lexical" |
||||
|
version = "0.2.1" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "nom" |
||||
|
version = "7.1.3" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" |
||||
|
dependencies = [ |
||||
|
"memchr", |
||||
|
"minimal-lexical", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "once_cell" |
||||
|
version = "1.17.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "peeking_take_while" |
||||
|
version = "0.1.2" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "proc-macro2" |
||||
|
version = "1.0.50" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" |
||||
|
dependencies = [ |
||||
|
"unicode-ident", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "quote" |
||||
|
version = "1.0.23" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" |
||||
|
dependencies = [ |
||||
|
"proc-macro2", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "regex" |
||||
|
version = "1.7.1" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" |
||||
|
dependencies = [ |
||||
|
"regex-syntax", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "regex-syntax" |
||||
|
version = "0.6.28" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "rustc-hash" |
||||
|
version = "1.1.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "shlex" |
||||
|
version = "1.1.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "syn" |
||||
|
version = "1.0.107" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" |
||||
|
dependencies = [ |
||||
|
"proc-macro2", |
||||
|
"quote", |
||||
|
"unicode-ident", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "unicode-ident" |
||||
|
version = "1.0.6" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "which" |
||||
|
version = "4.4.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" |
||||
|
dependencies = [ |
||||
|
"either", |
||||
|
"libc", |
||||
|
"once_cell", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "winapi" |
||||
|
version = "0.3.9" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" |
||||
|
dependencies = [ |
||||
|
"winapi-i686-pc-windows-gnu", |
||||
|
"winapi-x86_64-pc-windows-gnu", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "winapi-i686-pc-windows-gnu" |
||||
|
version = "0.4.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "winapi-x86_64-pc-windows-gnu" |
||||
|
version = "0.4.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" |
@ -0,0 +1,11 @@ |
|||||
|
[package] |
||||
|
name = "klotski_ffi" |
||||
|
version = "0.1.0" |
||||
|
edition = "2021" |
||||
|
|
||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html |
||||
|
|
||||
|
[dependencies] |
||||
|
|
||||
|
[build-dependencies] |
||||
|
bindgen = "0.63.0" |
@ -0,0 +1,26 @@ |
|||||
|
extern crate bindgen; |
||||
|
|
||||
|
use std::env; |
||||
|
use std::path::PathBuf; |
||||
|
|
||||
|
const RELEASE_DIR: &str = "../../cmake-build-release/src/klotski"; |
||||
|
|
||||
|
fn main() { |
||||
|
// basic compile options
|
||||
|
println!("cargo:rustc-link-search={}", RELEASE_DIR); |
||||
|
println!("cargo:rustc-link-lib=static=klotski"); |
||||
|
println!("cargo:rerun-if-changed=wrapper.h"); |
||||
|
println!("cargo:rustc-link-lib=stdc++"); |
||||
|
|
||||
|
// build binding info from c-header file
|
||||
|
let bindings = bindgen::Builder::default() |
||||
|
.header("wrapper.h") |
||||
|
.parse_callbacks(Box::new(bindgen::CargoCallbacks)) |
||||
|
.generate() |
||||
|
.expect("Unable to generate bindings"); |
||||
|
|
||||
|
// release binding rust source code
|
||||
|
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); |
||||
|
bindings.write_to_file(out_path.join("bindings.rs")) |
||||
|
.expect("Couldn't write bindings"); |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
#![allow(non_snake_case)] |
||||
|
#![allow(non_camel_case_types)] |
||||
|
#![allow(non_upper_case_globals)] |
||||
|
include!(concat!(env!("OUT_DIR"), "/bindings.rs")); |
||||
|
|
||||
|
use std::env; |
||||
|
|
||||
|
fn klotski_tmain() { |
||||
|
unsafe { |
||||
|
tmain(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
fn main() { |
||||
|
println!("rust start"); |
||||
|
klotski_tmain(); |
||||
|
println!("rust exit"); |
||||
|
} |
@ -0,0 +1,3 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "../klotski/ffi/klotski.h" |
Loading…
Reference in new issue