First stab at autogen.sh

This commit is contained in:
Pim van Pelt
2019-01-03 20:47:34 +01:00
parent 1db8c1a0bf
commit 34cc6d5de2
6 changed files with 108 additions and 2 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
build/ build/
libs/ libs/
tests/
mgos_i2c mgos_i2c

View File

@ -14,10 +14,11 @@ SRCDIR = src
INCDIR = include INCDIR = include
OBJDIR = build OBJDIR = build
LIBDIR = libs LIBDIR = libs
TESTDIR = tests
BINDIR = . BINDIR = .
SRCS := $(shell find -L $(SRCDIR) $(LIBDIR) -type f -name '*.c' | egrep -v 'deps/|build/' ) SRCS := $(shell find -L $(SRCDIR) $(LIBDIR) $(TESTDIR) -type f -name '*.c' | egrep -v 'deps/|build/' )
INCS := $(shell find -L $(SRCDIR) $(LIBDIR) $(INCDIR) -type d -name 'include'| egrep -v 'deps/|build/' ) INCS := $(shell find -L $(SRCDIR) $(LIBDIR) $(TESTDIR) $(INCDIR) -type d -name 'include'| egrep -v 'deps/|build/' )
INCFLAGS := $(patsubst %,-I %, $(INCS)) INCFLAGS := $(patsubst %,-I %, $(INCS))
OBJS := $(patsubst %.c, build/%.o, $(SRCS)) OBJS := $(patsubst %.c, build/%.o, $(SRCS))
RM = rm -f RM = rm -f

97
autogen.sh Executable file
View File

@ -0,0 +1,97 @@
#!/bin/sh
OUT_SRC=src/tests_autogen.c
OUT_INC=include/tests_autogen.h
DATE=$(date)
# ---
gen_src_head() {
cat > $OUT_SRC << EOF
// Generated on $DATE by $USER
//
#include "mgos.h"
#include "$(basename $OUT_INC)"
EOF
}
gen_src_body() {
echo "GEN $OUT_SRC"
(
for func in create run destroy; do
echo "bool tests_${func}(void) {"
echo " uint32_t total=0, success=0;"
for n in $*; do
cat << EOF
if (!test_${n}_${func}()) {
LOG(LL_ERROR, ("Could not $func test $n"));
} else {
success++;
}
total++;
EOF
done
cat << EOF
return (total == success);
}
EOF
done
) >> $OUT_SRC
}
gen_src_tail() {
cat >> $OUT_SRC << EOF
EOF
}
gen_inc_head() {
cat > $OUT_INC << EOF
// Generated on $DATE by $USER
//
#pragma once
#include "mgos.h"
// Master test prototypes (called from main.c)
bool tests_create(void);
bool tests_run(void);
bool tests_destroy(void);
EOF
}
gen_inc_body() {
echo "GEN $OUT_INC"
for n in $*; do
cat >> $OUT_INC << EOF
// Test suite "$n"
bool test_${n}_create(void);
bool test_${n}_run(void);
bool test_${n}_destroy(void);
EOF
done
}
gen_inc_tail() {
cat >> $OUT_INC << EOF
EOF
}
gen_inc_head
gen_src_head
for f in tests/*.c; do
base=$(basename $f | cut -f1 -d'.')
echo "CHK $base in $f"
base_list="$base_list $base"
done
gen_inc_body $base_list
gen_src_body $base_list
gen_inc_tail
gen_src_tail

1
include/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
tests_autogen.h

1
src/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
tests_autogen.c

View File

@ -1,4 +1,5 @@
#include "mgos.h" #include "mgos.h"
#include "tests_autogen.h"
#include <fcntl.h> #include <fcntl.h>
#include <math.h> #include <math.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
@ -59,6 +60,10 @@ int main(int argc, char **argv, char **environ) {
i2c_scanner(i2c, true); i2c_scanner(i2c, true);
tests_create();
tests_run();
tests_destroy();
return 0; return 0;
(void)argc; (void)argc;
(void)argv; (void)argv;