#!/bin/bash # vim: ft=sh _meson_dir=`pwd` _meson_lang=c while getopts ":hl:" o; do case $o in l) _meson_lang=$OPTARG ;; h | *) echo "usage: $0 [flags]" echo "" echo "-h :: print help" echo "-l LANG (default: c) :: language to use" echo "" exit 0 ;; esac done shift $((OPTIND - 1)) log() { echo "[*] ${@}" >&2 } # allow setting target dir if [[ -n $1 ]]; then _meson_dir="$1" [[ ! -d $_meson_dir ]] && mkdir -p $_meson_dir log "creating in $_meson_dir" fi _meson_bin=`basename $_meson_dir` _meson_ignore_extra= declare -a _meson_default_options declare -a _meson_default_files case $_meson_lang in ### C ### c) _meson_default_options=( \ 'c_std=c11' \ 'warning_level=2' \ 'werror=true' \ ) _meson_default_files=('src/main.c') _meson_ignore_extra='**/*.o' _meson_output=" x = executable( '$_meson_bin', sources: src )" log "writing main.c" mkdir $_meson_dir/src cat > $_meson_dir/src/main.c < #include int main(int argc, char **argv) { printf("%s version %s\n\n", *argv, VERSION); printf("args (len: %d)", argc-1); for (int i=1; i < argc; ++i) { printf(" '%s'", argv[i]); } printf("\n"); return 0; } EOF ;; ### JAVA ### java) _meson_default_options= _meson_default_files=('pkg/Main.class') _meson_ignore_extra='**/*.jar' _meson_output=" x = jar( '$_meson_bin', main_class: 'pkg.Main', sources: src ) " log "writing Main.java" mkdir $_meson_dir/pkg cat > $_meson_dir/pkg/Main.java < $_meson_dir/meson.build < $_meson_dir/.gitignore < $_meson_dir/Makefile <