48 lines
1.3 KiB
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()
|