]> git.uio.no Git - u/mrichter/AliRoot.git/blame - cmake/FindRuleChecker.cmake
Major Fixes which caused the normal build to crash due to the addition of the par...
[u/mrichter/AliRoot.git] / cmake / FindRuleChecker.cmake
CommitLineData
6db31708 1# AliRoot Build System Module to find and configure IRST ALICE Coding Coventions RuleChecker
2#
3# Author: Johny Jose (johny.jose@cern.ch)
4# Port of previous Makefile build to cmake
5
6cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
7
8find_program(RULECHECKER_SRCML NAMES src2srcml)
9message(STATUS "Check for src2srcml: ${RULECHECKER_SRCML}")
10find_package(Java)
11message(STATUS "Check for Java: ${JAVA_RUNTIME}")
12
13set(IRST_INSTALLDIR $ENV{IRST_INSTALLDIR})
14if(NOT IRST_INSTALLDIR)
15 if(ALICE)
c2a2c0b8 16 message(STATUS "Setting IRST_INSTALLDIR to ${ALICE}/local/ALICENewRuleChecker")
6db31708 17 set(IRST_INSTALLDIR ${ALICE}/local/ALICENewRuleChecker)
18 endif(ALICE)
19endif(NOT IRST_INSTALLDIR)
20
21if(IRST_INSTALLDIR)
c2a2c0b8 22 find_file(RULECHECKER_JAR NAMES NewRuleChecker.jar PATHS ${IRST_INSTALLDIR}/NewRuleChecker)
7eaa67f4 23 find_file(RULECHECKER_RULES NAMES CodingConventions.xml PATHS ${IRST_INSTALLDIR}/NewRuleChecker/config)
c2a2c0b8 24 find_file(FACTEXTRACTOR_JAR NAME FactExtractor.jar PATHS ${IRST_INSTALLDIR}/FactExtractor)
6db31708 25 if(RULECHECKER_JAR AND RULECHECKER_RULES AND RULECHECKER_SRCML AND JAVA_RUNTIME)
26 set(RULECHECKER_FOUND TRUE)
27 message(STATUS "RuleChecker found on the system")
28 else()
29 message(STATUS "RuleChecker not found on this system")
30 endif(RULECHECKER_JAR AND RULECHECKER_RULES AND RULECHECKER_SRCML AND JAVA_RUNTIME)
31else()
32 message(STATUS "RuleChecker not found on this system")
33endif(IRST_INSTALLDIR)
34
c2a2c0b8 35macro(ALICE_CheckModule)
36 if(RULECHECKER_FOUND)
811ffdcc 37 set(CHECKDIR ${CMAKE_BINARY_DIR}/${MODULE}/check)
c2a2c0b8 38 set(violFiles)
8948a174 39 add_custom_command( OUTPUT ${MODULE}-${PACKAGE}-factFile
40 COMMAND ${CMAKE_COMMAND} -E make_directory ${CHECKDIR}
41 COMMAND ${CMAKE_COMMAND} -E make_directory ${CHECKDIR}/viols
42 COMMAND ${JAVA_RUNTIME} -jar ${FACTEXTRACTOR_JAR} ${CHECKDIR} ${CHECKDIR}
43 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
44
c2a2c0b8 45 foreach(_srcfile ${SRCS})
46 string (REGEX REPLACE "cxx$" "h" _header ${_srcfile})
47 get_filename_component(_srcname ${_srcfile} NAME)
48 string (REGEX REPLACE "cxx$" "viol" _viol ${_srcname})
49 string (REGEX REPLACE "cxx$" "cxx.xml" _srcxml ${_srcname})
50 string (REGEX REPLACE "cxx$" "h.xml" _hxml ${_srcname})
811ffdcc 51 string (REGEX REPLACE ".cxx$" "" _class ${_srcname})
8948a174 52 set(_depends ${_srcfile} ${MODULE}-${PACKAGE}-factFile)
53
c2a2c0b8 54 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_header})
55 list(APPEND depends ${_header})
56 add_custom_command( OUTPUT ${_viol}
c2a2c0b8 57 COMMAND ${RULECHECKER_SRCML} ${_srcfile} ${CHECKDIR}/${_srcxml}
58 COMMAND ${RULECHECKER_SRCML} ${_header} ${CHECKDIR}/${_hxml}
811ffdcc 59 COMMAND ${JAVA_RUNTIME} -jar ${RULECHECKER_JAR} ${CHECKDIR}/${_srcxml} ${CHECKDIR}/${_hxml} ${CHECKDIR}/factFile.xml ${RULECHECKER_RULES} > ${CHECKDIR}/viols/${_viol}
c2a2c0b8 60 DEPENDS ${_depends}
61 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
62 list(APPEND violFiles ${_viol})
63 else()
64 add_custom_command( OUTPUT ${_viol}
c2a2c0b8 65 COMMAND ${RULECHECKER_SRCML} ${_srcfile} ${CHECKDIR}/${_srcxml}
811ffdcc 66 COMMAND ${JAVA_RUNTIME} -jar ${RULECHECKER_JAR} ${CHECKDIR}/${_srcxml} ${CHECKDIR}/${_hxml} ${CHECKDIR}/factFile.xml ${RULECHECKER_RULES} > ${CHECKDIR}/viols/${_viol}
c2a2c0b8 67 DEPENDS ${_depends}
68 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
69 list(APPEND violFiles ${_viol})
70 endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_header})
8948a174 71 if(CLASSCHECK STREQUAL "YES")
72 add_custom_target(${MODULE}-${_class}-check DEPENDS ${_viol})
73 endif(CLASSCHECK STREQUAL "YES")
811ffdcc 74 endforeach(_srcfile ${SRCS})
c2a2c0b8 75 if(violFiles)
76 add_custom_target(${PACKAGE}-check DEPENDS ${violFiles})
77 add_dependencies(${PACKAGE}-check ${violFiles})
78 add_dependencies(${MODULE}-check-all ${PACKAGE}-check)
79 endif(violFiles)
80 add_custom_command(TARGET clean
81 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CHECKDIR})
82
83 endif(RULECHECKER_FOUND)
84endmacro(ALICE_CheckModule)
85