aboutsummaryrefslogtreecommitdiff
path: root/scripts/buildmk.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/buildmk.sh')
-rwxr-xr-xscripts/buildmk.sh71
1 files changed, 71 insertions, 0 deletions
diff --git a/scripts/buildmk.sh b/scripts/buildmk.sh
new file mode 100755
index 0000000..5edff96
--- /dev/null
+++ b/scripts/buildmk.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+gen_obj()
+{
+ dir=$1
+ for i in $SRC; do
+ echo -n $i | sed "s|^| $1|g" | sed 's/\.c$/.o/g'
+ done
+}
+
+SRC="$(find * -name '*.c') properties-parser.c properties-lexer.c"
+OBJA=$(gen_obj build/static/)
+OBJSO=$(gen_obj build/shared/)
+
+cat << EOF > Makefile
+include config.mk
+
+SRC = $SRC
+STATIC_OBJ =$OBJA
+SHARED_OBJ =$OBJSO
+
+CFLAGS = -DVERSION=${VER}
+LFLAGS = -ll -ly
+
+all: lib\${NAME}.a lib\${NAME}.so
+
+# Generate the lexer source
+properties-lexer.c: properties.l
+ \${LEX} properties.l
+ @mv lex.yy.c properties-lexer.c
+
+# Generate the parser source
+properties-parser.h properties-parser.c: properties.y
+ \${YACC} -d properties.y
+ @mv y.tab.c properties-parser.c
+ @mv y.tab.h properties-parser.h
+
+lib\${NAME}.a: \${STATIC_OBJ}
+ \${CC} \${STATIC_OBJ} -o \$@ \${LFLAGS}
+
+lib\${NAME}.so: \${SHARED_OBJ}
+ \${CC} \${SHARED_OBJ} -o \$@ \${LFLAGS}
+
+clean:
+ @rm -rf build
+ @rm -f properties-lexer.c lex.*
+ @rm -f properties-parser.* y.*
+
+EOF
+
+
+for obj in $OBJA; do
+src=$(echo $obj | sed 's/.*\/static\///g' | sed 's/\.o/.c/g')
+cat << EOF >> Makefile
+$obj: $src
+ @mkdir -p $(dirname $obj)
+ \${CC} \${CFLAGS} -c $src -o \$@
+
+EOF
+done
+
+
+for obj in $OBJSO; do
+src=$(echo $obj | sed 's/.*\/shared\///g' | sed 's/\.o/.c/g')
+cat << EOF >> Makefile
+$obj: $src
+ @mkdir -p $(dirname $obj)
+ \${CC} \${CFLAGS} -fPIC -c $src -o \$@
+
+EOF
+done \ No newline at end of file