libtree/cmake/Modules/GenerateCccc.cmake

48 lines
1.3 KiB
CMake

INCLUDE(CheckParent)
# search for CCCC binary
FIND_PROGRAM(CCCC cccc )
#
# check if the GENERATE_CCCC function has already been defined
#
get_property(_GENERATE_CCCC GLOBAL PROPERTY _GENERATE_CCCC)
IF (NOT _GENERATE_CCCC)
# set that we have defined GENERATE_CCCC
set_property(GLOBAL PROPERTY _GENERATE_CCCC "YES")
FUNCTION(GENERATE_CCCC)
IF(CCCC)
CMAKE_PARSE_ARGUMENTS(ARG "" "" "TARGETS" ${ARGN})
get_property(_ccccfiles GLOBAL PROPERTY _ccccfiles)
foreach(_target ${ARG_TARGETS})
get_target_property(_sources ${_target} SOURCES)
get_target_property(_source_dir ${_target} SOURCE_DIR)
foreach(_source ${_sources})
set(_fullsource "${_source_dir}/${_source}")
list(APPEND _ccccfiles "${_fullsource}")
endforeach()
endforeach()
set_property(GLOBAL PROPERTY _ccccfiles ${_ccccfiles})
ENDIF()
ENDFUNCTION()
FUNCTION(RESET_CCCC)
set_property(GLOBAL PROPERTY _ccccfiles "")
ENDFUNCTION()
FUNCTION(GENERATE_CCCC_TARGET)
IF (NOT hasParent AND CCCC)
get_property(_targetccccfiles GLOBAL PROPERTY _ccccfiles)
ADD_CUSTOM_TARGET(cccc
COMMAND ${CCCC} --outdir=cccc ${_targetccccfiles}
COMMENT "Generating cccc result")
ENDIF()
ENDFUNCTION()
ENDIF()