diff --git a/swift-to-rust/Cargo.toml b/swift-to-rust/Cargo.toml new file mode 100644 index 0000000..fd43b83 --- /dev/null +++ b/swift-to-rust/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "swift-to-rust" +version = "0.1.0" +authors = ["Calvin Hill "] + +[lib] +name = "double_input" +crate-type = ["dylib"] \ No newline at end of file diff --git a/swift-to-rust/Makefile b/swift-to-rust/Makefile new file mode 100644 index 0000000..026882b --- /dev/null +++ b/swift-to-rust/Makefile @@ -0,0 +1,15 @@ +ifeq ($(shell uname),Darwin) + EXT := dylib +else + EXT := so +endif + +all: target/debug/libdouble_input.$(EXT) + swiftc src/main.swift -import-objc-header src/double.h -L./target/debug -ldouble_input -o double + LD_LIBRARY_PATH=./target/debug ./double + +target/debug/libdouble_input.$(EXT): src/lib.rs Cargo.toml + cargo build + +clean: + rm -rf target double \ No newline at end of file diff --git a/swift-to-rust/src/double.h b/swift-to-rust/src/double.h new file mode 100644 index 0000000..729e58c --- /dev/null +++ b/swift-to-rust/src/double.h @@ -0,0 +1 @@ +int double_input(int input); \ No newline at end of file diff --git a/swift-to-rust/src/lib.rs b/swift-to-rust/src/lib.rs new file mode 100644 index 0000000..03c626e --- /dev/null +++ b/swift-to-rust/src/lib.rs @@ -0,0 +1,4 @@ +#[no_mangle] +pub extern fn double_input(input: i32) -> i32 { + input * 2 +} \ No newline at end of file diff --git a/swift-to-rust/src/main.swift b/swift-to-rust/src/main.swift new file mode 100644 index 0000000..6d5c1ed --- /dev/null +++ b/swift-to-rust/src/main.swift @@ -0,0 +1 @@ +print(double_input(2)) \ No newline at end of file