diff --git a/scripts/jw-build-create-project.sh b/scripts/jw-build-create-project.sh new file mode 100644 index 00000000..5bebbc2a --- /dev/null +++ b/scripts/jw-build-create-project.sh @@ -0,0 +1,145 @@ +#!/bin/bash + +log() +{ + echo $@ +} + +err() +{ + log $@ +} + +fatal() +{ + err $@ + exit 1 +} + +usage() +{ + echo "$myname [-h] [-s summary] [-d description] name" + [ "$1" ] && exit $1 +} + +cat_Makefile() +{ + cat <<-EOT + TOPDIR = . + + include \$(TOPDIR)/make/proj.mk + include \$(MODDIR)/make/topdir.mk + EOT +} + +cat_VERSION() +{ + cat <<-EOT + 1.0.0-0-dev + EOT +} + +cat_make_Makefile() +{ + cat <<-EOT + TOPDIR = .. + + include \$(TOPDIR)/make/proj.mk + include \$(MODDIR)/make/make.mk + EOT +} + +cat_make_proj_mk() +{ + cat <<-EOT + # to be included from inside the project directory + + CVS_PROJ_DIR ?= \$(TOPDIR)/.. + + ifeq (\$(TARGET),mingw) + FLAVOUR_PATH_PREFIX = win32/ + endif + MODDIR = \$(firstword \$(wildcard \$(CVS_PROJ_DIR)/ytools /opt/\$(FLAVOUR_PATH_PREFIX)ytools)) + + USE_PROJECT_LIB = false + HDRDIR_SCOPE_SUFFIX = \$(PROJECT) + EOT +} + +cat_make_project_conf() +{ + cat <<-EOT + [summary] + $summary + + [description] + $description + + [global] + group = System/Libraries + subpackages = $subpackages + + [pkg.required] + run = ytools-run = VERSION + devel = $name-run = VERSION-REVISION, ytools-devel = VERSION + build = ytools-devel + EOT +} + +# ---------------------- here we go + +myname=`basename $0` +projdir=. + +summary= +description= +subpackages="run devel" + +eval set -- `getopt -- hd:s:p: "$@"` + +while [ "$1" != -- ]; do +case $1 in + -d) + eval description=\"$2\" + shift;; + -s) + eval summary=\"$2\" + shift;; + -p) + eval subpackages=\"$2\" + shift;; + -h) + usage=0;; + *) + usage=1;; +esac +shift +done +shift + +[ -z "$description" ] && description="$summary" +[ -z "$summary" ] && summary="$description" + +[ -f $projdir/Makefile ] || { + fatal "$projdir doesn't contain a Makefile" +} + +name="$1" + +[ -d $projdir/$name ] && { + fatal "$projdir/$name already exists" +} + +set -ex + +mkdir -p $projdir +mkdir $name +cd $projdir/$name + +mkdir make +cat_Makefile > Makefile +cat_make_Makefile > make/Makefile +cat_VERSION > VERSION +cat_make_proj_mk > make/proj.mk +cat_make_project_conf > make/project.conf +