base files

This commit is contained in:
Lokathor 2019-09-19 19:09:31 -06:00
parent 89b264a96e
commit 760a00cabd
13 changed files with 280 additions and 0 deletions

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
Cargo.lock
/target/
/.vscode/
# These are backup files generated by rustfmt
**/*.rs.bk

64
.travis.yml Normal file
View File

@ -0,0 +1,64 @@
language: rust
sudo: false
git:
quiet: true
rust:
- 1.36.0
- stable
- beta
- nightly
os:
- osx
- linux
# Technically works, but super slow, so we use AppVeyor
#- windows
branches:
only:
- staging
- trying
- master
- dev
matrix:
fast_finish: true
allow_failures:
- rust: nightly
include:
# If we wanted to flag on --release mode we'd add a line like this
#- { os: linux, rust: 1.36.0, env: FLAGS=--release }
- { os: linux, rust: 1.36.0, env: TARGET=wasm32-unknown-unknown }
- { os: linux, rust: 1.36.0, env: TARGET=wasm32-wasi }
- { os: linux, rust: 1.36.0, env: TARGET=aarch64-linux-android }
- { os: linux, rust: 1.36.0, env: TARGET=armv7-linux-androideabi }
- { os: linux, rust: 1.36.0, env: TARGET=i686-linux-android }
- { os: linux, rust: 1.36.0, env: TARGET=x86_64-linux-android }
- { os: linux, rust: 1.36.0, env: TARGET=arm-unknown-linux-gnueabihf }
- { os: linux, rust: 1.36.0, env: TARGET=armv7-unknown-linux-gnueabihf }
- { os: linux, rust: 1.36.0, env: TARGET=thumbv7neon-unknown-linux-gnueabihf }
- { os: osx, rust: 1.36.0, env: TARGET=aarch64-apple-ios }
- { os: osx, rust: 1.36.0, env: TARGET=armv7-apple-ios }
- { os: osx, rust: 1.36.0, env: TARGET=armv7s-apple-ios }
- { os: osx, rust: 1.36.0, env: TARGET=i386-apple-ios }
- { os: osx, rust: 1.36.0, env: TARGET=x86_64-apple-ios }
script:
- pushd scripts
- ./travis.sh
- popd
# Configured so we cache cargo-web for WASM unit testing, otherwise it takes
# forever (13+ minutes) to compile. See also
# https://levans.fr/rust_travis_cache.html
cache:
directories:
- $TRAVIS_HOME/.cargo/
- $TRAVIS_HOME/.rustup/
before_cache:
- rm -rf "$TRAVIS_HOME/.cargo/registry/src"

18
Cargo.toml Normal file
View File

@ -0,0 +1,18 @@
[package]
name = "bytemuck"
description = "A crate for mucking around with piles of bytes."
version = "0.1.0"
authors = ["Lokathor <zefria@gmail.com>"]
repository = "https://github.com/Lokathor/bytemuck"
readme = "README.md"
keywords = ["transmute", "bytes", "casting"]
categories = ["encoding", "no-std"]
edition = "2018"
license = "0BSD"
[features]
extern_crate_alloc = []
[badges]
appveyor = { repository = "Lokathor/bytemuck" }
travis-ci = { repository = "Lokathor/bytemuck" }

12
LICENSE-0BSD.md Normal file
View File

@ -0,0 +1,12 @@
Copyright (C) 2019 Daniel Gee <zefria@gmail.com>
Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.

View File

@ -1,2 +1,14 @@
[![License:0BSD](https://img.shields.io/badge/License-0BSD-brightgreen.svg)](https://opensource.org/licenses/FPL-1.0.0)
![Minimum Rust Version](https://img.shields.io/badge/Min%20Rust-1.36-green.svg)
[![travis.ci](https://travis-ci.org/Lokathor/bytemuck.svg?branch=master)](https://travis-ci.org/Lokathor/bytemuck)
[![AppVeyor](https://ci.appveyor.com/api/projects/status/hgr4if0snmkmqj88/branch/master?svg=true)](https://ci.appveyor.com/project/Lokathor/bytemuck/branch/master)
[![crates.io](https://img.shields.io/crates/v/bytemuck.svg)](https://crates.io/crates/bytemuck)
[![docs.rs](https://docs.rs/bytemuck/badge.svg)](https://docs.rs/bytemuck/)
# bytemuck # bytemuck
A crate for mucking around with piles of bytes A crate for mucking around with piles of bytes
CI coverage:
* Tested on: `x86`, `x86_64`, `wasm`
* Built on: `armv7`, `aarch64`, `thumbv7neon`

45
appveyor.yml Normal file
View File

@ -0,0 +1,45 @@
os: Visual Studio 2015
branches:
only:
- staging
- trying
- master
- dev
matrix:
fast_finish: true
environment:
matrix:
# Stable
- channel: 1.36.0
target: i686-pc-windows-msvc
- channel: 1.36.0
target: i686-pc-windows-gnu
- channel: 1.36.0
target: x86_64-pc-windows-msvc
- channel: 1.36.0
target: x86_64-pc-windows-gnu
# Beta and Nightly are checked by TravisCI since builds there run in
# parallel.
install:
- appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe
- rustup-init -y --default-toolchain %channel% --default-host %target%
- set PATH=%PATH%;%USERPROFILE%\.cargo\bin
- rustup component add rustfmt
- rustup component add clippy
- rustc -vV
- cargo -vV
# On advice of retep we skip the "build" script phase
build: false
test_script:
- cargo fmt -- --check
- cargo clippy
- cargo test --no-default-features
- cargo test
- cargo test --all-features

1
bors.toml Normal file
View File

@ -0,0 +1 @@
status = ["continuous-integration/travis-ci/push"]

1
pedantic.bat Normal file
View File

@ -0,0 +1 @@
cargo clippy -- -W clippy::pedantic

7
rustfmt.toml Normal file
View File

@ -0,0 +1,7 @@
error_on_line_overflow = false
merge_imports = true
reorder_imports = true
use_try_shorthand = true
tab_spaces = 2
max_width = 100
color = "Never"

View File

@ -0,0 +1,16 @@
# Don't generate CPU mismatch warnings when cross-compiling
[target.arm-unknown-linux-gnueabihf]
ar = "arm-linux-gnueabihf-ar"
linker = "arm-linux-gnueabihf-gcc"
rustflags = ["-C","target-cpu=generic"]
[target.armv7-unknown-linux-gnueabihf]
ar = "arm-linux-gnueabihf-ar"
linker = "arm-linux-gnueabihf-gcc"
rustflags = ["-C","target-cpu=generic"]
[target.thumbv7neon-unknown-linux-gnueabihf]
ar = "arm-linux-gnueabihf-ar"
linker = "arm-linux-gnueabihf-gcc"
rustflags = ["-C","target-cpu=generic"]

View File

@ -0,0 +1,21 @@
# Android ar/linker/flags config for when building on linux.
[target.aarch64-linux-android]
ar = "aarch64-linux-android-ar"
linker = "aarch64-linux-android21-clang"
rustflags = ["-C","target-cpu=generic"]
[target.armv7-linux-androideabi]
ar = "armv7a-linux-androideabi-ar"
linker = "armv7a-linux-androideabi21-clang"
rustflags = ["-C","target-cpu=generic"]
[target.i686-linux-android]
ar = "i686-linux-android-ar"
linker = "i686-linux-android21-clang"
rustflags = ["-C","target-cpu=generic"]
[target.x86_64-linux-android]
ar = "x86_64-linux-android-ar"
linker = "x86_64-linux-android21-clang"
rustflags = ["-C","target-cpu=generic"]

55
scripts/travis.sh Normal file
View File

@ -0,0 +1,55 @@
#!/bin/bash
set -e
rustup component add clippy
cargo clippy
if [[ "$TARGET" != "" ]]; then rustup target install $TARGET; fi
if [[ "$TARGET" == "wasm32-"* && "$TARGET" != "wasm32-wasi" ]]; then
cargo-web --version || cargo install cargo-web
cargo web test --no-default-features $FLAGS --target=$TARGET
cargo web test $FLAGS --target=$TARGET
cargo web test --all-features $FLAGS --target=$TARGET
elif [[ "$TARGET" == *"-linux-android"* ]]; then
export PATH=/usr/local/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
pushd linux-android
cargo build --no-default-features --target=$TARGET $FLAGS
cargo build --target=$TARGET $FLAGS
cargo build --all-features --target=$TARGET $FLAGS
# Don't test, can't run android emulators successfully on travis currently
popd
elif [[ "$TARGET" == *"-apple-ios" || "$TARGET" == "wasm32-wasi" ]]; then
cargo build --no-default-features --target=$TARGET $FLAGS
cargo build --target=$TARGET $FLAGS
cargo build --all-features --target=$TARGET $FLAGS
# Don't test
# iOS simulator setup/teardown is complicated
# cargo-web doesn't support wasm32-wasi yet, nor can wasm-pack test specify a target
elif [[ "$TARGET" == *"-unknown-linux-gnueabihf" ]]; then
#sudo apt-get update
#sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
pushd generic-cross
cargo build --no-default-features --target=$TARGET $FLAGS
cargo build --target=$TARGET $FLAGS
cargo build --all-features --target=$TARGET $FLAGS
# Don't test
popd
elif [[ "$TARGET" != "" ]]; then
pushd generic-cross
cargo test --no-default-features --target=$TARGET $FLAGS
cargo test --target=$TARGET $FLAGS
cargo test --all-features --target=$TARGET $FLAGS
popd
else
# Push nothing, target host CPU architecture
cargo test --no-default-features $FLAGS
cargo test $FLAGS
cargo test --all-features $FLAGS
fi

View File

@ -0,0 +1,21 @@
# Android ar/linker/flags config for when building on windows.
[target.aarch64-linux-android]
ar = "aarch64-linux-android-ar.cmd"
linker = "aarch64-linux-android21-clang.cmd"
rustflags = ["-C","target-cpu=generic"]
[target.armv7-linux-androideabi]
ar = "armv7a-linux-androideabi-ar.cmd"
linker = "armv7a-linux-androideabi21-clang.cmd"
rustflags = ["-C","target-cpu=generic"]
[target.i686-linux-android]
ar = "i686-linux-android-ar.cmd"
linker = "i686-linux-android21-clang.cmd"
rustflags = ["-C","target-cpu=generic"]
[target.x86_64-linux-android]
ar = "x86_64-linux-android-ar.cmd"
linker = "x86_64-linux-android21-clang.cmd"
rustflags = ["-C","target-cpu=generic"]