diff --git a/CMakeLists.txt b/CMakeLists.txt index dc49d469d..80c8088a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ message("System TANGO_HOST=$ENV{TANGO_HOST}") set(TANGO_HOST $ENV{TANGO_HOST}) include(configure/CMakeLists.txt) -include_directories(generated) +include_directories(${PROJECT_BINARY_DIR}/generated) include_directories(include) #required for generated config.h include_directories(${PROJECT_BINARY_DIR}/include) diff --git a/generated/idl/CMakeLists.txt b/generated/idl/CMakeLists.txt index 72ee0ae75..c8f50f01a 100644 --- a/generated/idl/CMakeLists.txt +++ b/generated/idl/CMakeLists.txt @@ -1,26 +1,9 @@ -message("Generate tango.h, tangoSK.cpp and tangoDybSK.cpp from idl") - -execute_process(COMMAND ${OMNIIDL_PATH}omniidl -I${IDL_PKG_INCLUDE_DIRS} -bcxx -Wbh=.h -Wbs=SK.cpp -Wbd=DynSK.cpp -Wba ${IDL_PKG_INCLUDE_DIRS}/tango.idl - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - RESULT_VARIABLE FAILED) - -if(${FAILED}) - message(SEND_ERROR " Failed to generate source files from idl. rv=${FAILED}") -endif() - -FILE(GLOB ENHANCEMENTS Enhance*) - -foreach(ENHANCEMENT ${ENHANCEMENTS}) - message("Applying enhancement ${ENHANCEMENT}") - execute_process(COMMAND sed -i -f ${ENHANCEMENT} tango.h - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - RESULT_VARIABLE FAILED) - - #non-zero - if(${FAILED}) - message(SEND_ERROR " Failed to apply ${ENHANCEMENT}. rv=${FAILED}") - endif() -endforeach(ENHANCEMENT) +add_custom_command( + OUTPUT tango.h tangoSK.cpp tangoDynSK.cpp + COMMAND ${CMAKE_COMMAND} -DOMNIIDL_PATH=${OMNIIDL_PATH} -DIDL_PKG_INCLUDE_DIRS=${IDL_PKG_INCLUDE_DIRS} + -DCMAKE_INSTALL_FULL_INCLUDEDIR=${CMAKE_INSTALL_FULL_INCLUDEDIR} -DPATCHES_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/generate.cmake + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) set(SOURCES tangoSK.cpp tangoDynSK.cpp) @@ -28,4 +11,4 @@ set(SOURCES tangoSK.cpp add_library(idl_objects OBJECT ${SOURCES} tango.h) target_compile_options(idl_objects PRIVATE -fPIC) -install(FILES tango.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/idl") +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tango.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/idl") \ No newline at end of file diff --git a/generated/idl/generate.cmake b/generated/idl/generate.cmake new file mode 100644 index 000000000..017e3a502 --- /dev/null +++ b/generated/idl/generate.cmake @@ -0,0 +1,26 @@ +message("Generate tango.h, tangoSK.cpp and tangoDybSK.cpp from idl") +message("Using OMNIIDL_PATH=${OMNIIDL_PATH}") +message("Using IDL=${IDL_PKG_INCLUDE_DIRS}") + +execute_process(COMMAND ${OMNIIDL_PATH}omniidl -I${IDL_PKG_INCLUDE_DIRS} -bcxx -Wbh=.h -Wbs=SK.cpp -Wbd=DynSK.cpp -Wba ${IDL_PKG_INCLUDE_DIRS}/tango.idl + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + RESULT_VARIABLE FAILED) + +if(${FAILED}) + message(SEND_ERROR " Failed to generate source files from idl. rv=${FAILED}") +endif() + +message("Using PATCHES_SOURCE_DIR=${PATCHES_SOURCE_DIR}") + +FILE(GLOB ENHANCEMENTS ${PATCHES_SOURCE_DIR}/Enhance*) + +foreach(ENHANCEMENT ${ENHANCEMENTS}) + message("Applying enhancement ${ENHANCEMENT}") + execute_process(COMMAND sed -i -f ${ENHANCEMENT} tango.h + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + RESULT_VARIABLE FAILED) + #non-zero + if(${FAILED}) + message(SEND_ERROR " Failed to apply ${ENHANCEMENT}. rv=${FAILED}") + endif() +endforeach(ENHANCEMENT) \ No newline at end of file