]>
Commit | Line | Data |
---|---|---|
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 | ||
6 | cmake_minimum_required(VERSION 2.8 FATAL_ERROR) | |
7 | ||
8 | find_program(RULECHECKER_SRCML NAMES src2srcml) | |
9 | message(STATUS "Check for src2srcml: ${RULECHECKER_SRCML}") | |
10 | find_package(Java) | |
11 | message(STATUS "Check for Java: ${JAVA_RUNTIME}") | |
12 | ||
13 | set(IRST_INSTALLDIR $ENV{IRST_INSTALLDIR}) | |
14 | if(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) | |
19 | endif(NOT IRST_INSTALLDIR) | |
20 | ||
21 | if(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) | |
31 | else() | |
32 | message(STATUS "RuleChecker not found on this system") | |
33 | endif(IRST_INSTALLDIR) | |
34 | ||
c2a2c0b8 | 35 | macro(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) | |
84 | endmacro(ALICE_CheckModule) | |
85 |