From: Bernd Waibel Date: Wed, 25 Aug 2021 09:29:17 +0200 Subject: [PATCH] use system provided act binary Signed-off-by: Bernd Waibel --- CMakeLists.txt | 110 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 73 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d70a030..9c91496 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,14 +62,19 @@ endif() ### The API generation target -if(CMAKE_HOST_UNIX) - if(APPLE) - set(ACT_COMMANDENDING darwin) - else() - set(ACT_COMMANDENDING linux) +option(USE_SYSTEM_ACT "Use system provided act binary" OFF) +if(NOT USE_SYSTEM_ACT) + if(CMAKE_HOST_UNIX) + if(APPLE) + set(ACT_COMMANDENDING darwin) + else() + set(ACT_COMMANDENDING linux) + endif() + elseif(CMAKE_HOST_WIN32) + set(ACT_COMMANDENDING exe) endif() -elseif(CMAKE_HOST_WIN32) - set(ACT_COMMANDENDING exe) +else() + find_program(ACT act) endif() set(CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED ${CMAKE_CURRENT_SOURCE_DIR}/Autogenerated) @@ -80,36 +85,67 @@ set(ACT_GENERATED_SOURCE ${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Source/lib3mf_interfacewrapper.cpp ${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Source/lib3mf_interfacejournal.cpp ) -add_custom_command( - BYPRODUCTS - ${ACT_GENERATED_SOURCE} - OUTPUT - ${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/LIB3MFACTGENERATIONSTAMP - WORKING_DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit - COMMAND - cmake -E make_directory "${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}" - COMMAND - cmake -E touch "${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/LIB3MFACTGENERATIONSTAMP" - COMMAND - ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit/bin/act.${ACT_COMMANDENDING} ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit/lib3mf.xml - COMMAND - cmake -E remove_directory "${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Source" - COMMAND - cmake -E remove_directory "${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Bindings" - COMMAND - cmake -E copy_directory "${CMAKE_TEMP_HEADER_FOLDER}/Bindings" ${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Bindings - COMMAND - cmake -E copy_directory "${CMAKE_TEMP_HEADER_FOLDER}/Implementations/Cpp/Interfaces" "${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Source/" - COMMAND - cmake -E remove_directory "${CMAKE_TEMP_HEADER_FOLDER}" - COMMENT - "Generating hourglass API bindings and implementation stub" - DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit/lib3mf.xml - VERBATIM -) - +if(NOT USE_SYSTEM_ACT) + add_custom_command( + BYPRODUCTS + ${ACT_GENERATED_SOURCE} + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/LIB3MFACTGENERATIONSTAMP + WORKING_DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit + COMMAND + cmake -E make_directory "${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}" + COMMAND + cmake -E touch "${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/LIB3MFACTGENERATIONSTAMP" + COMMAND + ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit/bin/act.${ACT_COMMANDENDING} ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit/lib3mf.xml + COMMAND + cmake -E remove_directory "${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Source" + COMMAND + cmake -E remove_directory "${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Bindings" + COMMAND + cmake -E copy_directory "${CMAKE_TEMP_HEADER_FOLDER}/Bindings" ${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Bindings + COMMAND + cmake -E copy_directory "${CMAKE_TEMP_HEADER_FOLDER}/Implementations/Cpp/Interfaces" "${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Source/" + COMMAND + cmake -E remove_directory "${CMAKE_TEMP_HEADER_FOLDER}" + COMMENT + "Generating hourglass API bindings and implementation stub" + DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit/lib3mf.xml + VERBATIM + ) +else() + add_custom_command( + BYPRODUCTS + ${ACT_GENERATED_SOURCE} + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/LIB3MFACTGENERATIONSTAMP + WORKING_DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit + COMMAND + cmake -E make_directory "${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}" + COMMAND + cmake -E touch "${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/LIB3MFACTGENERATIONSTAMP" + COMMAND + ${ACT} ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit/lib3mf.xml + COMMAND + cmake -E remove_directory "${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/Source" + COMMAND + cmake -E remove_directory "${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/Bindings" + COMMAND + cmake -E copy_directory "${CMAKE_TEMP_HEADER_FOLDER}/Bindings" ${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/Bindings + COMMAND + cmake -E copy_directory "${CMAKE_TEMP_HEADER_FOLDER}/Implementations/Cpp/Interfaces" "${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/Source/" + COMMAND + cmake -E remove_directory "${CMAKE_TEMP_HEADER_FOLDER}" + COMMENT + "Generating hourglass API bindings and implementation stub" + DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/AutomaticComponentToolkit/lib3mf.xml + VERBATIM + ) +endif() add_custom_target(lib3mfACT DEPENDS ${CMAKE_CURRENT_BINARY_DIR_AUTOGENERATED}/LIB3MFACTGENERATIONSTAMP -- 2.32.0