diff --git a/CMakeLists.txt b/CMakeLists.txt index 43a63556950d84951623d4dc95e1d5abfe626f60..59031614c5f6380852387ed92e4a5893a881b35f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,9 @@ IF((CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC) AND GPROF_PATH) OPTION(OGS_PROFILE "Enables compiling with flags set for profiling with gprof." OFF) ENDIF() # GCC AND GPROF_PATH +# Disable Qt +OPTION(OGS_DONT_USE_QT "Disables all Qt specific code." OFF) + ###################### ### Subdirectories ### ###################### diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index dc96a893f09aff6e318279964eff644263b7d7f7..9140083dd8e925f4d707ac7a151dacd6ee3426fe 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -28,3 +28,20 @@ ENDIF() FIND_PACKAGE(Metis) +## Qt4 library ## +IF(NOT OGS_DONT_USE_QT) + FIND_PACKAGE( Qt4 4.5) +ENDIF(NOT OGS_DONT_USE_QT) + +IF ( QT4_FOUND ) + # Enable more modules + SET(QT_USE_QTOPENGL TRUE) + SET(QT_USE_QTSQL TRUE) + SET(QT_USE_QTTEST TRUE) + SET(QT_USE_QTXML TRUE) + IF(QT_QTXMLPATTERNS_FOUND) + SET(QT_USE_QTXMLPATTERNS TRUE) + ENDIF(QT_QTXMLPATTERNS_FOUND) + INCLUDE( ${QT_USE_FILE} ) + ADD_DEFINITIONS(${QT_DEFINITIONS}) +ENDIF (QT4_FOUND ) diff --git a/scripts/cmake/cmake/CodeCoverage.cmake b/scripts/cmake/cmake/CodeCoverage.cmake index 4fe002368b74343e850159954827f5ec225e52b0..1277a3167d14bcb9faac7bb5f4a7a09bc7c8d7db 100644 --- a/scripts/cmake/cmake/CodeCoverage.cmake +++ b/scripts/cmake/cmake/CodeCoverage.cmake @@ -15,19 +15,12 @@ FIND_PROGRAM( GCOV_PATH gcov ) FIND_PROGRAM( LCOV_PATH lcov ) FIND_PROGRAM( GENHTML_PATH genhtml ) +FIND_PROGRAM( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/tests) IF(NOT GCOV_PATH) MESSAGE(FATAL_ERROR "gcov not found! Aborting...") ENDIF() # NOT GCOV_PATH -IF(NOT LCOV_PATH) - MESSAGE(FATAL_ERROR "lcov not found! Aborting...") -ENDIF() # NOT LCOV_PATH - -IF(NOT GENHTML_PATH) - MESSAGE(FATAL_ERROR "genhtml not found! Aborting...") -ENDIF() # NOT GENHTML_PATH - IF(NOT CMAKE_COMPILER_IS_GNUCXX) MESSAGE(FATAL_ERROR "Compiler is not GNU gcc! Aborting...") ENDIF() # NOT CMAKE_COMPILER_IS_GNUCXX @@ -46,27 +39,34 @@ LINK_LIBRARIES(gcov) # Param _testrunner The name of the target which runs the tests # Param _outputname lcov output is generated as _outputname.info # HTML report is generated in _outputname/index.html -FUNCTION(SETUP_TARGET_FOR_COVERAGE _targetname _testrunnerexe _outputname) +FUNCTION(SETUP_TARGET_FOR_COVERAGE _targetname _testrunner _outputname) + + IF(NOT LCOV_PATH) + MESSAGE(FATAL_ERROR "lcov not found! Aborting...") + ENDIF() # NOT LCOV_PATH + + IF(NOT GENHTML_PATH) + MESSAGE(FATAL_ERROR "genhtml not found! Aborting...") + ENDIF() # NOT GENHTML_PATH # Setup target ADD_CUSTOM_TARGET(${_targetname} # Cleanup lcov - lcov --directory . --zerocounters + ${LCOV_PATH} --directory . --zerocounters # Run tests COMMAND ${_testrunner} # Capturing lcov counters and generating report - COMMAND lcov --directory . --capture --output-file ${_outputname}.info - COMMAND lcov --remove ${_outputname}.info 'tests/*' '/usr/*' --output-file ${_outputname}.info.cleaned - COMMAND genhtml -o ${_outputname} ${_outputname}.info.cleaned + COMMAND ${LCOV_PATH} --directory . --capture --output-file ${_outputname}.info + COMMAND ${LCOV_PATH} --remove ${_outputname}.info 'tests/*' '/usr/*' --output-file ${_outputname}.info.cleaned + COMMAND ${GENHTML_PATH} -o ${_outputname} ${_outputname}.info.cleaned COMMAND ${CMAKE_COMMAND} -E remove ${_outputname}.info ${_outputname}.info.cleaned DEPENDS ${_testrunner} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMENT "Resetting code coverage counters to zero.\n - Processing code coverage counters and generating report." + COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report." ) # Show info where to find the report @@ -76,3 +76,36 @@ FUNCTION(SETUP_TARGET_FOR_COVERAGE _targetname _testrunnerexe _outputname) ) ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE + +# Param _targetname The name of new the custom make target +# Param _testrunner The name of the target which runs the tests +# Param _outputname lcov output is generated as _outputname.info +# HTML report is generated in _outputname/index.html +FUNCTION(SETUP_TARGET_FOR_COVERAGE_COBERTURA _targetname _testrunner _outputname) + + IF(NOT PYTHON_EXECUTABLE) + MESSAGE(FATAL_ERROR "Python not found! Aborting...") + ENDIF() # NOT PYTHON_EXECUTABLE + + IF(NOT GCOVR_PATH) + MESSAGE(FATAL_ERROR "gcovr not found! Aborting...") + ENDIF() # NOT GCOVR_PATH + + ADD_CUSTOM_TARGET(${_targetname} + + # Run tests + ${_testrunner} + + # Running gcovr + COMMAND ${GCOVR_PATH} -x -r ${CMAKE_SOURCE_DIR} -o ${_outputname}.xml + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMENT "Running gcovr to produce Cobertura code coverage report." + ) + + # Show info where to find the report + ADD_CUSTOM_COMMAND(TARGET ${_targetname} POST_BUILD + COMMAND ; + COMMENT "Cobertura code coverage report saved in ${_outputname}.xml." + ) + +ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE_COBERTURA \ No newline at end of file