diff options
author | 2023-05-27 12:45:55 +0200 | |
---|---|---|
committer | 2023-05-27 12:45:55 +0200 | |
commit | 8841e2894b0160277a104f0da7838adbce5f6542 (patch) | |
tree | ff61ad13389602d298a7641a92f970765093b52c | |
parent | ffeb537ba0a28612f8024fda860ecbb17fba46fb (diff) | |
download | cherry-8841e2894b0160277a104f0da7838adbce5f6542.tar.gz cherry-8841e2894b0160277a104f0da7838adbce5f6542.zip |
Add script to build the Makefile
It is used only when I change some structure in the tree soruce, for example
when I add some new source file or I want to change the build directory.
-rwxr-xr-x | scripts/buildmk.sh | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/scripts/buildmk.sh b/scripts/buildmk.sh new file mode 100755 index 0000000..b85ccf0 --- /dev/null +++ b/scripts/buildmk.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +MAKEFILE=Makefile +SRC_DIR=src +BUILD_DIR=build +DIST_DIR=dist + +# Start composing the Makefile + +# Build OBJ variable +for i in `find ${SRC_DIR} -name '*.c'`; do + OBJ=$OBJ`printf "%s " $i | sed -E "s|${SRC_DIR}(.*)\.c|$\{BUILD_DIR\}\1\.o|g"` +done + +cat <<EOF > ${MAKEFILE} +# See LICENSE file for copyright and license details. + +include config.mk + +BUILD_DIR = ${BUILD_DIR} +DIST_DIR = ${DIST_DIR} +OBJ = $OBJ +INCLUDES != find $SRC_DIR -name '*.h' + +all: static shared + +\${DIST_DIR}: all + mkdir -p \$@/include/cherry + cp \${BUILD_DIR}/release/static/\${LIBNAME:=.a} \$@/ + cp \${BUILD_DIR}/release/shared/\${LIBNAME:=.so} \$@/ + cp \${INCLUDES} \$@/include/cherry + +debug: debug-static debug-shared + +static: + @make BUILD_DIR=\${BUILD_DIR}/release/static \${BUILD_DIR}/release/static/\${LIBNAME:=.a} + +shared: + @make BUILD_DIR=\${BUILD_DIR}/release/shared OPT="\${OPT} -fPIC" \${BUILD_DIR}/release/shared/\${LIBNAME:=.so} + +debug-static: + @make BUILD_DIR=\${BUILD_DIR}/debug/static OPT=-g \${BUILD_DIR}/debug/static/\${LIBNAME:=.a} + +debug-shared: + @make BUILD_DIR=\${BUILD_DIR}/debug/shared OPT="-g -fPIC" \${BUILD_DIR}/debug/shared/\${LIBNAME:=.so} + +\${BUILD_DIR}: + @mkdir -p \$@ + +\${BUILD_DIR}/\${LIBNAME:=.so}: \${BUILD_DIR} \${OBJ} + \${CC} \${LFLAGS} -shared \${OBJ} -o \$@ + +\${BUILD_DIR}/\${LIBNAME:=.a}: \${BUILD_DIR} \${OBJ} + ar rcs \$@ \${OBJ} + +clean-obj: + rm -rf ${OBJ} + +clean: + rm -rf \${BUILD_DIR} + rm -f *.core + +EOF + +# Targets for object files +for i in `find ${SRC_DIR} -name '*.c'`; do + target=`echo $i | sed -E "s|${SRC_DIR}(.*)\.c|$\{BUILD_DIR\}\1\.o|g"` +cat <<EOF >> ${MAKEFILE} +$target: $i + \${CC} \${CFLAGS} -c \$> -o \$@ + +EOF +done + + |