toxcore/cmake/ApiDsl.cmake

45 lines
1.3 KiB
CMake
Raw Normal View History

################################################################################
#
# :: APIDSL regeneration
#
################################################################################
find_program(APIDSL NAMES
apidsl
apidsl.native
apidsl.byte
${CMAKE_SOURCE_DIR}/../apidsl/apigen.native)
find_program(ASTYLE NAMES
astyle
$ENV{ASTYLE})
function(apidsl)
if(APIDSL AND ASTYLE)
foreach(in_file ${ARGN})
# Get the directory component of the input file name.
if(CMAKE_VERSION VERSION_LESS 3.0)
execute_process(
COMMAND dirname ${in_file}
OUTPUT_VARIABLE dirname
OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
get_filename_component(dirname ${in_file} DIRECTORY)
endif()
# Get the name without extension (i.e. without ".api.h").
get_filename_component(filename ${in_file} NAME_WE)
# Put them together, with the new extension that is ".h".
set(out_file ${CMAKE_SOURCE_DIR}/${dirname}/${filename}.h)
# Run apidsl.
add_custom_command(
OUTPUT ${out_file}
COMMAND "${APIDSL}" "${CMAKE_SOURCE_DIR}/${in_file}"
| "${ASTYLE}" --options="${CMAKE_SOURCE_DIR}/other/astyle/astylerc"
> "${out_file}"
DEPENDS ${in_file})
endforeach()
endif()
endfunction()