From 1eed614dedb80f1e9b893f890df1759c6005cd5d Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Wed, 17 Apr 2019 14:19:28 +0900 Subject: [PATCH] Add buildgen rust binding --- archLinuxPkg/.gitignore | 1 + archLinuxPkg/PKGBUILD | 43 ++++++++++++++++++++ CMakeLists.txt => c_impl/CMakeLists.txt | 12 ++++++ {src => c_impl/src}/UDPC_Defines.h | 0 {src => c_impl/src}/UDPC_Deque.c | 0 {src => c_impl/src}/UDPC_Deque.h | 0 {src => c_impl/src}/UDPC_HashMap.c | 0 {src => c_impl/src}/UDPC_HashMap.h | 0 {src => c_impl/src}/UDPConnection.c | 0 {src => c_impl/src}/UDPConnection.h | 0 {src => c_impl/src}/test/UDPC_NetworkTest.c | 0 {src => c_impl/src}/test/UDPC_UnitTest.c | 0 {src => c_impl/src}/test/UDPC_UnitTest.h | 0 rust_binding/.gitignore | 2 + rust_binding/Cargo.toml | 10 +++++ rust_binding/build.rs | 44 +++++++++++++++++++++ rust_binding/src/lib.rs | 5 +++ rust_binding/wrapper.h | 1 + 18 files changed, 118 insertions(+) create mode 100644 archLinuxPkg/.gitignore create mode 100644 archLinuxPkg/PKGBUILD rename CMakeLists.txt => c_impl/CMakeLists.txt (75%) rename {src => c_impl/src}/UDPC_Defines.h (100%) rename {src => c_impl/src}/UDPC_Deque.c (100%) rename {src => c_impl/src}/UDPC_Deque.h (100%) rename {src => c_impl/src}/UDPC_HashMap.c (100%) rename {src => c_impl/src}/UDPC_HashMap.h (100%) rename {src => c_impl/src}/UDPConnection.c (100%) rename {src => c_impl/src}/UDPConnection.h (100%) rename {src => c_impl/src}/test/UDPC_NetworkTest.c (100%) rename {src => c_impl/src}/test/UDPC_UnitTest.c (100%) rename {src => c_impl/src}/test/UDPC_UnitTest.h (100%) create mode 100644 rust_binding/.gitignore create mode 100644 rust_binding/Cargo.toml create mode 100644 rust_binding/build.rs create mode 100644 rust_binding/src/lib.rs create mode 100644 rust_binding/wrapper.h diff --git a/archLinuxPkg/.gitignore b/archLinuxPkg/.gitignore new file mode 100644 index 0000000..468cd87 --- /dev/null +++ b/archLinuxPkg/.gitignore @@ -0,0 +1 @@ +*.pkg.tar.xz diff --git a/archLinuxPkg/PKGBUILD b/archLinuxPkg/PKGBUILD new file mode 100644 index 0000000..8d19e23 --- /dev/null +++ b/archLinuxPkg/PKGBUILD @@ -0,0 +1,43 @@ +# Maintainer: Your Name +pkgname=UDPConnection +pkgver=1.0 +pkgrel=1 +epoch= +pkgdesc="A C library that provides a UDP connection" +arch=('x86_64') +url="" +license=('MIT') +groups=() +depends=() +makedepends=() +checkdepends=() +optdepends=() +provides=() +conflicts=() +replaces=() +backup=() +options=() +install= +changelog= +source=() +noextract=() +md5sums=() +validpgpkeys=() + +prepare() { + echo >&/dev/null +} + +build() { + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_SHARED_LIBS=True \ + -G Ninja \ + ../../c_impl/ + ninja +} + +package() { + DESTDIR="$pkgdir/" ninja install +} diff --git a/CMakeLists.txt b/c_impl/CMakeLists.txt similarity index 75% rename from CMakeLists.txt rename to c_impl/CMakeLists.txt index 08a2409..b4edbb5 100644 --- a/CMakeLists.txt +++ b/c_impl/CMakeLists.txt @@ -1,6 +1,8 @@ cmake_minimum_required(VERSION 3.7) project(UDPConnection) +set(UDPConnection_VERSION 1.0) + set(UDPConnection_SOURCES src/UDPConnection.c src/UDPC_Deque.c @@ -19,6 +21,8 @@ endif() add_library(UDPConnection ${UDPConnection_SOURCES}) +set_target_properties(UDPConnection PROPERTIES VERSION ${UDPConnection_VERSION}) + target_compile_features(UDPConnection PUBLIC c_std_11) target_link_libraries(UDPConnection PUBLIC pthread) @@ -35,3 +39,11 @@ if(CMAKE_BUILD_TYPE MATCHES "Debug") target_link_libraries(NetworkTest PUBLIC UDPConnection) target_include_directories(NetworkTest PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) endif() + +install(TARGETS UDPConnection CONFIGURATIONS Release DESTINATION lib) +install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/src/UDPConnection.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/UDPC_Defines.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/UDPC_Deque.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/UDPC_HashMap.h + DESTINATION include) diff --git a/src/UDPC_Defines.h b/c_impl/src/UDPC_Defines.h similarity index 100% rename from src/UDPC_Defines.h rename to c_impl/src/UDPC_Defines.h diff --git a/src/UDPC_Deque.c b/c_impl/src/UDPC_Deque.c similarity index 100% rename from src/UDPC_Deque.c rename to c_impl/src/UDPC_Deque.c diff --git a/src/UDPC_Deque.h b/c_impl/src/UDPC_Deque.h similarity index 100% rename from src/UDPC_Deque.h rename to c_impl/src/UDPC_Deque.h diff --git a/src/UDPC_HashMap.c b/c_impl/src/UDPC_HashMap.c similarity index 100% rename from src/UDPC_HashMap.c rename to c_impl/src/UDPC_HashMap.c diff --git a/src/UDPC_HashMap.h b/c_impl/src/UDPC_HashMap.h similarity index 100% rename from src/UDPC_HashMap.h rename to c_impl/src/UDPC_HashMap.h diff --git a/src/UDPConnection.c b/c_impl/src/UDPConnection.c similarity index 100% rename from src/UDPConnection.c rename to c_impl/src/UDPConnection.c diff --git a/src/UDPConnection.h b/c_impl/src/UDPConnection.h similarity index 100% rename from src/UDPConnection.h rename to c_impl/src/UDPConnection.h diff --git a/src/test/UDPC_NetworkTest.c b/c_impl/src/test/UDPC_NetworkTest.c similarity index 100% rename from src/test/UDPC_NetworkTest.c rename to c_impl/src/test/UDPC_NetworkTest.c diff --git a/src/test/UDPC_UnitTest.c b/c_impl/src/test/UDPC_UnitTest.c similarity index 100% rename from src/test/UDPC_UnitTest.c rename to c_impl/src/test/UDPC_UnitTest.c diff --git a/src/test/UDPC_UnitTest.h b/c_impl/src/test/UDPC_UnitTest.h similarity index 100% rename from src/test/UDPC_UnitTest.h rename to c_impl/src/test/UDPC_UnitTest.h diff --git a/rust_binding/.gitignore b/rust_binding/.gitignore new file mode 100644 index 0000000..1e7caa9 --- /dev/null +++ b/rust_binding/.gitignore @@ -0,0 +1,2 @@ +Cargo.lock +target/ diff --git a/rust_binding/Cargo.toml b/rust_binding/Cargo.toml new file mode 100644 index 0000000..ab94e15 --- /dev/null +++ b/rust_binding/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "udpc_rs" +version = "0.1.0" +authors = ["Stephen Seo "] +edition = "2018" + +[dependencies] + +[build-dependencies] +bindgen = "0.42.2" diff --git a/rust_binding/build.rs b/rust_binding/build.rs new file mode 100644 index 0000000..345cd53 --- /dev/null +++ b/rust_binding/build.rs @@ -0,0 +1,44 @@ +use bindgen; + +use std::env; +use std::path::PathBuf; + +fn main() { + println!("cargo:rustc-link-lib=UDPConnection"); + + let bindings = bindgen::Builder::default() + .header("wrapper.h") + .whitelist_type("UDPC_callback_connected") + .whitelist_type("UDPC_callback_disconnected") + .whitelist_type("UDPC_callback_received") + .whitelist_type("UDPC_Context") + .whitelist_function("UDPC_init") + .whitelist_function("UDPC_init_threaded_update") + .whitelist_function("UDPC_destroy") + .whitelist_function("UDPC_set_callback_connected") + .whitelist_function("UDPC_set_callback_disconnected") + .whitelist_function("UDPC_set_callback_received") + .whitelist_function("UDPC_check_events") + .whitelist_function("UDPC_client_initiate_connection") + .whitelist_function("UDPC_queue_send") + .whitelist_function("UDPC_get_queue_send_available") + .whitelist_function("UDPC_get_accept_new_connections") + .whitelist_function("UDPC_set_accept_new_connections") + .whitelist_function("UDPC_get_protocol_id") + .whitelist_function("UDPC_set_protocol_id") + .whitelist_function("UDPC_get_error") + .whitelist_function("UDPC_get_error_str") + .whitelist_function("UDPC_set_logging_type") + .whitelist_function("UDPC_update") + .whitelist_function("UDPC_strtoa") + .opaque_type("UDPC_Context") + .opaque_type("UDPC_Deque") + .opaque_type("UDPC_HashMap") + .generate() + .expect("Unable to generate bindings"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + .write_to_file(out_path.join("bindings.rs")) + .expect("Couldn't write bindings!"); +} diff --git a/rust_binding/src/lib.rs b/rust_binding/src/lib.rs new file mode 100644 index 0000000..a38a13a --- /dev/null +++ b/rust_binding/src/lib.rs @@ -0,0 +1,5 @@ +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] + +include!(concat!(env!("OUT_DIR"), "/bindings.rs")); diff --git a/rust_binding/wrapper.h b/rust_binding/wrapper.h new file mode 100644 index 0000000..ae5a4d9 --- /dev/null +++ b/rust_binding/wrapper.h @@ -0,0 +1 @@ +#include "../c_impl/src/UDPConnection.h" -- 2.49.0