#!/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