summaryrefslogtreecommitdiffstats
path: root/cmake/modules/UseCheckAPI.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/UseCheckAPI.cmake')
-rw-r--r--cmake/modules/UseCheckAPI.cmake41
1 files changed, 41 insertions, 0 deletions
diff --git a/cmake/modules/UseCheckAPI.cmake b/cmake/modules/UseCheckAPI.cmake
new file mode 100644
index 0000000..1518fb4
--- /dev/null
+++ b/cmake/modules/UseCheckAPI.cmake
@@ -0,0 +1,41 @@
+# Add a target to call checkAPIs.pl on the specified source files
+# The target is excluded from the ALL targte so must be manually
+# specified in a build command.
+# The target is added to the top-level checkAPIs target
+#
+# Parameters:
+# NAME: The name of the target, must be unique
+# SWITCHES: Switches to be supplied to the script
+# SOURCES: The sources to be checked
+
+include(CMakeParseArguments)
+
+macro( CHECKAPI )
+ cmake_parse_arguments(CHECKAPI "DEBUG" "" "NAME;SWITCHES;SOURCES" ${ARGN} )
+
+ if (CHECKAPI_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "CHECKAPIS Unknown argument: ${CHECKAPI_UNPARSED_ARGUMENTS}")
+ endif()
+
+ if( CHECKAPI_DEBUG )
+ set (CHECKAPI_SWITCHES ${CHECKAPI_SWITCHES --debug)
+ endif()
+
+ set(TARGET_NAME checkAPI_${CHECKAPI_NAME})
+ add_custom_target(${TARGET_NAME}
+ COMMAND ${PERL_EXECUTABLE}
+ ${CMAKE_SOURCE_DIR}/tools/checkAPIs.pl
+ ${CHECKAPI_SWITCHES}
+ ${CHECKAPI_SOURCES}
+ WORKING_DIRECTORY
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMENT
+ "Running ${TARGET_NAME}"
+ )
+ add_dependencies(checkAPI ${TARGET_NAME})
+ set_target_properties(${TARGET_NAME}
+ PROPERTIES FOLDER "Auxiliary/CheckAPIs"
+ EXCLUDE_FROM_ALL True
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+ENDMACRO()