diff --git a/.gitignore b/.gitignore index 281170e..8e53e12 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ - sqlite3.plt .svn */.svn @@ -17,3 +16,4 @@ TEST*.xml *.obj *.dll rebar.cross_compile.config +config.tmp \ No newline at end of file diff --git a/GNUmakefile b/GNUmakefile index 4deab9f..5b31723 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,8 +1,10 @@ REBAR=./rebar +REBAR_DEBUG=$(REBAR) -C rebar.debug.config REBAR_COMPILE=$(REBAR) get-deps compile +LAST_CONFIG:=$(shell cat config.tmp) PLT=dialyzer/sqlite3.plt -all: compile +all: config_normal compile compile: $(REBAR_COMPILE) @@ -11,20 +13,48 @@ test: $(REBAR_COMPILE) eunit clean: - -rm -rf deps ebin priv doc/* .eunit c_src/*.o + -rm -rf deps ebin priv doc/* .eunit c_src/*.o config.tmp docs: $(REBAR_COMPILE) doc -static: - $(REBAR_COMPILE) +static: config_debug + $(REBAR_DEBUG) get-deps compile ifeq ($(wildcard $(PLT)),) dialyzer --build_plt --apps kernel stdlib erts --output_plt $(PLT) else dialyzer --plt $(PLT) -r ebin endif -cross_compile: clean +cross_compile: config_cross $(REBAR_COMPILE) -C rebar.cross_compile.config -.PHONY: all compile test clean docs static +valgrind: clean + $(REBAR_DEBUG) get-deps compile + valgrind --tool=memcheck --leak-check=yes --num-callers=20 ./test.sh + +ifeq ($(LAST_CONFIG),normal) +config_normal: ; +else +config_normal: clean + rm -f config.tmp + echo "normal" > config.tmp +endif + +ifeq ($(LAST_CONFIG),debug) +config_debug: ; +else +config_debug: clean + rm -f config.tmp + echo "debug" > config.tmp +endif + +ifeq ($(LAST_CONFIG),cross) +config_cross: ; +else +config_cross: clean + rm -f config.tmp + echo "cross" > config.tmp +endif + +.PHONY: all compile test clean docs static valgrind config_normal config_debug config_cross diff --git a/rebar.config b/rebar.config index d56d101..26684ed 100644 --- a/rebar.config +++ b/rebar.config @@ -1,9 +1,7 @@ % -*- mode: erlang -*- -{erl_opts, [debug_info]}. %% required for dialyzer {port_envs, [{"^(?!.*win32)", "DRV_CFLAGS", "$DRV_CFLAGS -Wall -Wextra -Wno-unused-parameter"}, {"^(?!.*win32)", "DRV_LDFLAGS", "$DRV_LDFLAGS -lsqlite3"}, {"win32", "CFLAGS", "/IF:/MyProgramming/sqlite-amalgamation /Ic_src /W4 /wd4100 /wd4204"}, {"win32", "LDFLAGS", "sqlite3.lib"}]}. {cover_enabled, true}. {eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}. -{dialyzer_opts, [{plt, "dialyzer/sqlite3.plt"}]}. diff --git a/rebar.debug.config b/rebar.debug.config new file mode 100644 index 0000000..f7d88f2 --- /dev/null +++ b/rebar.debug.config @@ -0,0 +1,9 @@ +% -*- mode: erlang -*- +{erl_opts, [debug_info]}. %% required for dialyzer +{port_envs, [{"^(?!.*win32)", "DRV_CFLAGS", "$DRV_CFLAGS -g -Wall -Wextra -Wno-unused-parameter"}, + {"^(?!.*win32)", "DRV_LDFLAGS", "$DRV_LDFLAGS -lsqlite3"}, + {"win32", "CFLAGS", "/IF:/MyProgramming/sqlite-amalgamation /Ic_src /W4 /wd4100 /wd4204"}, + {"win32", "LDFLAGS", "sqlite3.lib"}]}. +{cover_enabled, true}. +{eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}. +{dialyzer_opts, [{plt, "dialyzer/sqlite3.plt"}]}. diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..ba8344d --- /dev/null +++ b/test.sh @@ -0,0 +1,3 @@ +# separate file to simplify valgrind use + +./rebar eunit