From 587981015f2d32acf88be7b70e7f9a08882883ff Mon Sep 17 00:00:00 2001 From: Laurence Withers Date: Mon, 24 Jul 2006 22:37:26 +0100 Subject: [PATCH] Further work in progress. --- skel/scripts/build.c++.lib/TopSource.cpp | 2 +- skel/scripts/build.c++.lib/build.install-lib | 10 +++---- skel/scripts/build.c++.lib/build.lib | 28 ++++++++++---------- skel/scripts/build.c++.lib/build.monolithic | 6 ++--- skel/scripts/build.c++.lib/soversion | 13 +++++++++ skel/scripts/build.c++.tests/build.tests | 12 +++------ skel/scripts/build.c++.tests/instantiate | 17 ++---------- skel/scripts/build.c.lib/TopHeader.h | 6 ++--- skel/scripts/build.c.lib/TopSource.c | 2 +- skel/scripts/build.c.lib/build.install-lib | 10 +++---- skel/scripts/build.c.lib/build.lib | 28 ++++++++++---------- skel/scripts/build.c.lib/build.monolithic | 8 +++--- skel/scripts/build.c.lib/soversion | 13 +++++++++ skel/scripts/build.c.tests/build.tests | 12 +++------ skel/version | 11 -------- 15 files changed, 86 insertions(+), 92 deletions(-) create mode 100644 skel/scripts/build.c++.lib/soversion create mode 100644 skel/scripts/build.c.lib/soversion diff --git a/skel/scripts/build.c++.lib/TopSource.cpp b/skel/scripts/build.c++.lib/TopSource.cpp index e28105f..7a87e51 100644 --- a/skel/scripts/build.c++.lib/TopSource.cpp +++ b/skel/scripts/build.c++.lib/TopSource.cpp @@ -4,7 +4,7 @@ * COPYING for more information / terms of license. */ -#include "@HEADER@" +#include "@HEADER_NAME@" // Below are all the includes used throughout the library. diff --git a/skel/scripts/build.c++.lib/build.install-lib b/skel/scripts/build.c++.lib/build.install-lib index 27c87da..d5b4ea7 100644 --- a/skel/scripts/build.c++.lib/build.install-lib +++ b/skel/scripts/build.c++.lib/build.install-lib @@ -7,8 +7,8 @@ build_dir_tree "${INCLUDEDIR}" || return 1 # install library echo "Installing libraries into '${LIBDIR}'" -install_file ${@PNAME@} ${LIBDIR} 0755 || return 1 -BASE="${@PNAME@_BASE}.so" +install_file ${@CNAME@} ${LIBDIR} 0755 || return 1 +BASE="${@CNAME@_BASE}.so" MAJOR="${BASE}.${SOMAJOR}" MINOR="${MAJOR}.${SOMINOR}" MICRO="${MINOR}.${SOMICRO}" @@ -17,12 +17,12 @@ install_symlink "${MAJOR}" "${MINOR}" "${LIBDIR}" install_symlink "${BASE}" "${MAJOR}" "${LIBDIR}" # install header -echo "Installing header file '${@PNAME@_HEADER}' into ${INCLUDEDIR}" -install_header ${@PNAME@_HEADER} ${INCLUDEDIR} 0644 || return 1 +echo "Installing header file '${@CNAME@_HEADER}' into ${INCLUDEDIR}" +install_header ${@CNAME@_HEADER} ${INCLUDEDIR} 0644 || return 1 # install pkgconfig file echo "Installing package config file into ${PKGCONFDIR}" -PKGCONFFILE=${PKGCONFDIR}/@PNAME@.pc +PKGCONFFILE=${PKGCONFDIR}/@CNAME@.pc do_cmd rm -f ${PKGCONFFILE} do_cmd_redir ${PKGCONFFILE} sed \ -e "s,@VERSION@,${VERSION}," \ diff --git a/skel/scripts/build.c++.lib/build.lib b/skel/scripts/build.c++.lib/build.lib index 839e4cd..3d34e73 100644 --- a/skel/scripts/build.c++.lib/build.lib +++ b/skel/scripts/build.c++.lib/build.lib @@ -1,25 +1,25 @@ # These are external variables, and shouldn't clash with anything else -# @PNAME@ -# @PNAME@_BUILT -# @PNAME@_HEADER -# @PNAME@_BASE +# @CNAME@ +# @CNAME@_BUILT +# @CNAME@_HEADER +# @CNAME@_BASE -if [ -z ${@PNAME@_BUILT} ] +if [ -z ${@CNAME@_BUILT} ] then - @PNAME@_BASE=@NAME@ + @CNAME@_BASE=@NAME@ source src/@NAME@/soversion - @NAME@="obj/${@PNAME@_BASE}.so.${SOMAJOR}.${SOMINOR}.${SOMICRO}" + @CNAME@="obj/${@CNAME@_BASE}.so.${SOMAJOR}.${SOMINOR}.${SOMICRO}" SO_EXTRA="-lstdc++ -lc" # @TODO@ libs, cflags - echo "Building library ${@PNAME@}..." + echo "Building library ${@CNAME@}..." source src/@NAME@/build.monolithic MODIFIED=0 for test in ${MONOLITHIC_TESTS} ${HDR} ${SRC} do - if [ ${test} -nt ${@PNAME@} ] + if [ ${test} -nt ${@CNAME@} ] then MODIFIED=1 break @@ -30,21 +30,21 @@ then then echo " Compiling" - SONAME="${@PNAME@_BASE}.so.${SOMAJOR}.${SOMINOR}" - do_cmd ${CXX} ${CFLAGS} -shared -fpic -o "${@PNAME@}" \ + SONAME="${@CNAME@_BASE}.so.${SOMAJOR}.${SOMINOR}" + do_cmd ${CXX} ${CFLAGS} -shared -fpic -o "${@CNAME@}" \ -Wl,-soname,${SONAME} \ ${SRC} ${SO_EXTRA} || return 1 # make tests work - do_cmd ln -sf $(basename ${LIB}) obj/${SONAME} || return 1 + do_cmd ln -sf $(basename ${@CNAME@}) obj/${SONAME} || return 1 print_success "Library built" else print_success "Library up to date" fi - @PNAME@_BUILT=1 - @PNAME@_HEADER=${HDR} + @CNAME@_BUILT=1 + @CNAME@_HEADER=${HDR} fi # kate: replace-trailing-space-save true; space-indent true; tab-width 4; diff --git a/skel/scripts/build.c++.lib/build.monolithic b/skel/scripts/build.c++.lib/build.monolithic index 196e5cd..d956417 100644 --- a/skel/scripts/build.c++.lib/build.monolithic +++ b/skel/scripts/build.c++.lib/build.monolithic @@ -1,7 +1,7 @@ # These are external variables, and shouldn't clash with anything else -# @PNAME@_MONOLITHIC +# @CNAME@_MONOLITHIC -if [ -z "${@PNAME@_MONOLITHIC}" ] +if [ -z "${@CNAME@_MONOLITHIC}" ] then SRC="obj/@NAME@.cpp" HDR="obj/@HEADER_NAME@" @@ -13,7 +13,7 @@ then MONOLITHIC_SOURCE="$(echo src/@NAME@/TopSource.cpp)" make_monolithic ${SRC} C || return 1 - @PNAME@_MONOLITHIC=1 + @CNAME@_MONOLITHIC=1 MONOLITHIC_DOC="${MONOLITHIC_DOC} ${HDR}" fi # kate: replace-trailing-space-save true; space-indent true; tab-width 4; diff --git a/skel/scripts/build.c++.lib/soversion b/skel/scripts/build.c++.lib/soversion new file mode 100644 index 0000000..a429ec1 --- /dev/null +++ b/skel/scripts/build.c++.lib/soversion @@ -0,0 +1,13 @@ +# @P@/src/@NAME@/soversion +# + + + +# SOMAJOR and SOMINOR are included in the library's soname. They need to +# be bumped on a binary-incompatible release. They are both single +# integers. +SOMAJOR=0 +SOMINOR=0 + +# SOMICRO is bumped every time there is a binary-compatible release. +SOMICRO=0 diff --git a/skel/scripts/build.c++.tests/build.tests b/skel/scripts/build.c++.tests/build.tests index 87e5924..cc7d694 100644 --- a/skel/scripts/build.c++.tests/build.tests +++ b/skel/scripts/build.c++.tests/build.tests @@ -2,23 +2,19 @@ # @NAME@_BUILT # -build_target @LIBS@ +#@TODO@ build_target libs if [ -z ${@NAME@_BUILT} ] then - LIBS="" - for lib in @LIBS@ - do - LIBS="${LIBS} ${!${lib}}" - done + LIBS="" # @TODO@ internal libs EXTRAS="" # @TODO@ libs, cflags echo "Building test programs..." - do_cmd mkdir -p obj/@NAME@ || return 1 + do_cmd mkdir -p obj/tests || return 1 for SRC in src/@NAME@/*.cpp do - TEST="obj/@NAME@/$(basename ${SRC} | sed -e 's,.cpp$,,')" + TEST="obj/tests/$(basename ${SRC} | sed -e 's,.cpp$,,')" MODIFIED=0 for file in ${LIBS} ${SRC} src/@NAME@/build.tests do diff --git a/skel/scripts/build.c++.tests/instantiate b/skel/scripts/build.c++.tests/instantiate index 251815a..49e9e24 100644 --- a/skel/scripts/build.c++.tests/instantiate +++ b/skel/scripts/build.c++.tests/instantiate @@ -1,21 +1,9 @@ -if [ $# -lt 1 ] +if [ $# -ne 0 ] then - print_failure "Not enough arguments after module; need LIBS." - echo "LIBS are the library module names for these test programs." + print_failure "Unexpected extra parameters." exit 1 fi -LIBS="$@" - -for lib in ${LIBS} -do - if [ ! -e src/${lib} ] - then - print_failure "src/${lib} does not exist" - exit 1 - fi -done - if [ -e src/${NAME} ] then print_failure "src/${NAME} already exists." @@ -30,7 +18,6 @@ do_cmd cp ${TEMPLATE}/* src/${NAME} || exit 1 do_cmd cd src/${NAME} || exit 1 do_cmd rm instantiate || exit 1 do_cmd find . -type f -exec sed -e "s,@NAME@,${NAME},g" -i {} \; || exit 1 -do_cmd find . -type f -exec sed -e "s,@LIBS@,${LIBS},g" -i {} \; || exit 1 do_cmd grep "@TODO@" * || exit 1 print_success "Module instantiated." diff --git a/skel/scripts/build.c.lib/TopHeader.h b/skel/scripts/build.c.lib/TopHeader.h index 3be1712..62a5ff6 100644 --- a/skel/scripts/build.c.lib/TopHeader.h +++ b/skel/scripts/build.c.lib/TopHeader.h @@ -1,11 +1,11 @@ -/* @P@/src/clib/TopHeader.h +/* @P@/src/@NAME@/TopHeader.h * * (c)@YEAR@, @AUTHOR@. Released under the GNU GPL. See file * COPYING for more information / terms of license. */ -#ifndef HEADER_lib@PC@ -#define HEADER_lib@PC@ +#ifndef HEADER_@CNAME@ +#define HEADER_@CNAME@ // standard includes, or includes needed for type declarations diff --git a/skel/scripts/build.c.lib/TopSource.c b/skel/scripts/build.c.lib/TopSource.c index eba9f82..22ca931 100644 --- a/skel/scripts/build.c.lib/TopSource.c +++ b/skel/scripts/build.c.lib/TopSource.c @@ -1,4 +1,4 @@ -/* @P@/src/clib/TopSource.c +/* @P@/src/@NAME@@NAME@/TopSource.c * * (c)@YEAR@, @AUTHOR@. Released under the GNU GPL. See file * COPYING for more information / terms of license. diff --git a/skel/scripts/build.c.lib/build.install-lib b/skel/scripts/build.c.lib/build.install-lib index 27c87da..d5b4ea7 100644 --- a/skel/scripts/build.c.lib/build.install-lib +++ b/skel/scripts/build.c.lib/build.install-lib @@ -7,8 +7,8 @@ build_dir_tree "${INCLUDEDIR}" || return 1 # install library echo "Installing libraries into '${LIBDIR}'" -install_file ${@PNAME@} ${LIBDIR} 0755 || return 1 -BASE="${@PNAME@_BASE}.so" +install_file ${@CNAME@} ${LIBDIR} 0755 || return 1 +BASE="${@CNAME@_BASE}.so" MAJOR="${BASE}.${SOMAJOR}" MINOR="${MAJOR}.${SOMINOR}" MICRO="${MINOR}.${SOMICRO}" @@ -17,12 +17,12 @@ install_symlink "${MAJOR}" "${MINOR}" "${LIBDIR}" install_symlink "${BASE}" "${MAJOR}" "${LIBDIR}" # install header -echo "Installing header file '${@PNAME@_HEADER}' into ${INCLUDEDIR}" -install_header ${@PNAME@_HEADER} ${INCLUDEDIR} 0644 || return 1 +echo "Installing header file '${@CNAME@_HEADER}' into ${INCLUDEDIR}" +install_header ${@CNAME@_HEADER} ${INCLUDEDIR} 0644 || return 1 # install pkgconfig file echo "Installing package config file into ${PKGCONFDIR}" -PKGCONFFILE=${PKGCONFDIR}/@PNAME@.pc +PKGCONFFILE=${PKGCONFDIR}/@CNAME@.pc do_cmd rm -f ${PKGCONFFILE} do_cmd_redir ${PKGCONFFILE} sed \ -e "s,@VERSION@,${VERSION}," \ diff --git a/skel/scripts/build.c.lib/build.lib b/skel/scripts/build.c.lib/build.lib index 686d9c4..2b4126f 100644 --- a/skel/scripts/build.c.lib/build.lib +++ b/skel/scripts/build.c.lib/build.lib @@ -1,25 +1,25 @@ # These are external variables, and shouldn't clash with anything else -# @PNAME@ -# @PNAME@_BUILT -# @PNAME@_HEADER -# @PNAME@_BASE +# @CNAME@ +# @CNAME@_BUILT +# @CNAME@_HEADER +# @CNAME@_BASE -if [ -z ${@PNAME@_BUILT} ] +if [ -z ${@CNAME@_BUILT} ] then - @PNAME@_BASE=@NAME@ + @CNAME@_BASE=@NAME@ source src/@NAME@/soversion - @NAME@="obj/${@PNAME@_BASE}.so.${SOMAJOR}.${SOMINOR}.${SOMICRO}" + @CNAME@="obj/${@CNAME@_BASE}.so.${SOMAJOR}.${SOMINOR}.${SOMICRO}" SO_EXTRA="-lc" # @TODO@ libs, cflags - echo "Building library ${@PNAME@}..." + echo "Building library ${@CNAME@}..." source src/@NAME@/build.monolithic MODIFIED=0 for test in ${MONOLITHIC_TESTS} ${HDR} ${SRC} do - if [ ${test} -nt ${@PNAME@} ] + if [ ${test} -nt ${@CNAME@} ] then MODIFIED=1 break @@ -30,21 +30,21 @@ then then echo " Compiling" - SONAME="${@PNAME@_BASE}.so.${SOMAJOR}.${SOMINOR}" - do_cmd ${CC} ${CFLAGS} -shared -fpic -o "${@PNAME@}" \ + SONAME="${@CNAME@_BASE}.so.${SOMAJOR}.${SOMINOR}" + do_cmd ${CC} ${CFLAGS} -shared -fpic -o "${@CNAME@}" \ -Wl,-soname,${SONAME} \ ${SRC} ${SO_EXTRA} || return 1 # make tests work - do_cmd ln -sf $(basename ${LIB}) obj/${SONAME} || return 1 + do_cmd ln -sf $(basename ${@CNAME@}) obj/${SONAME} || return 1 print_success "Library built" else print_success "Library up to date" fi - @PNAME@_BUILT=1 - @PNAME@_HEADER=${HDR} + @CNAME@_BUILT=1 + @CNAME@_HEADER=${HDR} fi # kate: replace-trailing-space-save true; space-indent true; tab-width 4; diff --git a/skel/scripts/build.c.lib/build.monolithic b/skel/scripts/build.c.lib/build.monolithic index f12a361..895a44c 100644 --- a/skel/scripts/build.c.lib/build.monolithic +++ b/skel/scripts/build.c.lib/build.monolithic @@ -1,7 +1,7 @@ # These are external variables, and shouldn't clash with anything else -# @PNAME@_MONOLITHIC +# @CNAME@_MONOLITHIC -if [ -z "${@PNAME@_MONOLITHIC}" ] +if [ -z "${@CNAME@_MONOLITHIC}" ] then SRC="obj/@NAME@.c" HDR="obj/@HEADER_NAME@" @@ -10,10 +10,10 @@ then MONOLITHIC_SOURCE="$(echo src/@NAME@/{TopHeader,BottomHeader}.h)" make_monolithic ${HDR} C || return 1 - MONOLITHIC_SOURCE="$(echo src/@NAME@/TopSource.cpp)" + MONOLITHIC_SOURCE="$(echo src/@NAME@/TopSource.c)" make_monolithic ${SRC} C || return 1 - @PNAME@_MONOLITHIC=1 + @CNAME@_MONOLITHIC=1 MONOLITHIC_DOC="${MONOLITHIC_DOC} ${HDR}" fi # kate: replace-trailing-space-save true; space-indent true; tab-width 4; diff --git a/skel/scripts/build.c.lib/soversion b/skel/scripts/build.c.lib/soversion new file mode 100644 index 0000000..a429ec1 --- /dev/null +++ b/skel/scripts/build.c.lib/soversion @@ -0,0 +1,13 @@ +# @P@/src/@NAME@/soversion +# + + + +# SOMAJOR and SOMINOR are included in the library's soname. They need to +# be bumped on a binary-incompatible release. They are both single +# integers. +SOMAJOR=0 +SOMINOR=0 + +# SOMICRO is bumped every time there is a binary-compatible release. +SOMICRO=0 diff --git a/skel/scripts/build.c.tests/build.tests b/skel/scripts/build.c.tests/build.tests index 0222993..5f8ccb6 100644 --- a/skel/scripts/build.c.tests/build.tests +++ b/skel/scripts/build.c.tests/build.tests @@ -2,23 +2,19 @@ # @NAME@_BUILT # -build_target @LIBS@ +#@TODO@ build_target libs if [ -z ${@NAME@_BUILT} ] then - LIBS="" - for lib in @LIBS@ - do - LIBS="${LIBS} ${!${lib}}" - done + LIBS="" # @TODO@ internal libs EXTRAS="" # @TODO@ libs, cflags echo "Building test programs..." - do_cmd mkdir -p obj/@NAME@ || return 1 + do_cmd mkdir -p obj/tests || return 1 for SRC in src/@NAME@/*.c do - TEST="obj/@NAME@/$(basename ${SRC} | sed -e 's,.c$,,')" + TEST="obj/tests/$(basename ${SRC} | sed -e 's,.c$,,')" MODIFIED=0 for file in ${LIBS} ${SRC} src/@NAME@/build.tests do diff --git a/skel/version b/skel/version index 5785ac2..929834b 100644 --- a/skel/version +++ b/skel/version @@ -10,14 +10,3 @@ VERMAJOR=1 VERMINOR=0 VERMICRO=2 VEREXTRA="" - - - -# SOMAJOR and SOMINOR are included in the library's soname. They need to -# be bumped on a binary-incompatible release. They are both single -# integers. -SOMAJOR=0 -SOMINOR=0 - -# SOMICRO is bumped every time there is a binary-compatible release. -SOMICRO=0