diff --git a/SConstruct b/SConstruct index 2f3b6e210..6efadf6de 100644 --- a/SConstruct +++ b/SConstruct @@ -6,11 +6,15 @@ import os libFiles = Glob('lib/*.cpp') libEnv = Environment() if "gcc" in libEnv["TOOLS"]: - libEnv.Append(CCFLAGS = ['-Wall']) - if 'release' in COMMAND_LINE_TARGETS: - libEnv.Append(CCFLAGS = ['-O3']) - else: - libEnv.Append(CCFLAGS = ['-g','-O0']) + libEnv.Append(CCFLAGS = ['-Wall', '-Wextra']) + if 'release' in COMMAND_LINE_TARGETS: + libEnv.Append(CCFLAGS = ['-O3']) + elif 'coverage' in COMMAND_LINE_TARGETS: + libEnv.Append(CCFLAGS = ['-g', '-fprofile-arcs', '-ftest-coverage']) + libEnv.Append(LINKFLAGS = ['-g', '-fprofile-arcs', '-ftest-coverage']) + else: + libEnv.Append(CCFLAGS = ['-g','-O0']) + libEnv.Append(CPPPATH = ['lib']) libObjects = libEnv.Object(libFiles) @@ -18,14 +22,20 @@ libObjects = libEnv.Object(libFiles) cliFiles = Glob('cli/*.cpp')+libObjects cliEnv = libEnv.Clone() cliEnv.Append(CPPPATH = ['cli']) +if "gcc" in libEnv["TOOLS"]: + cliEnv.Append(CCFLAGS = ['-pedantic']) cppcheck = cliEnv.Program('cppcheck',cliFiles) +Alias('cppcheck',[cppcheck]) Default(cppcheck) # Testrunner testFiles = Glob('test/*.cpp')+libObjects testEnv = libEnv.Clone() testEnv.Append(CPPPATH = ['test']) +if "gcc" in libEnv["TOOLS"]: + testEnv.Append(CCFLAGS = ['-pedantic']) testrunner = testEnv.Program('testrunner', testFiles) +Alias('testrunner',[testrunner]) # GUI QTDIR = os.popen('qmake -query QT_INSTALL_DATA').read() @@ -41,12 +51,25 @@ uiFiles = Glob('gui/*.ui') uis = [guiEnv.Uic4(ui) for ui in uiFiles] guiFiles = Glob('gui/*.cpp')+libObjects gui = guiEnv.Program(target="gui_cppcheck", source=[rccs, guiFiles]) +Alias('gui',[gui]) # Execute testrunner -AlwaysBuild(Alias("test", testrunner, "./$SOURCE")) +test = AlwaysBuild(Alias("test", testrunner, "./$SOURCE")) # All Alias('all',[testrunner,cppcheck,gui]) # Release Alias('release',[cppcheck]) + +# Coverage +Alias('coverage',[test],[ + 'rm -r coverage_report', + 'gcov lib/*.cpp -o lib/', + 'lcov --directory ./ --capture --output-file lcov.info -b ./', + 'genhtml lcov.info -o coverage_report', + 'rm lib/*.gcda', + 'rm lib/*.gcno', + 'rm test/*.gcda', + 'rm test/*.gcno', + 'rm lcov.info'])