From bbd892b435c12395a6cf53bc53ed5acf195e4cbd Mon Sep 17 00:00:00 2001 From: Stefan Radomski Date: Thu, 13 Jun 2013 01:33:52 +0200 Subject: Fixed build for unices --- CMakeLists.txt | 88 +++++++++++++++++++++++++++++ config.h.in | 1 + src/bindings/swig/php/uscxmlNativePHP.php | 34 +++++++++++ src/uscxml/Factory.cpp | 16 ++++-- src/uscxml/plugins/datamodel/CMakeLists.txt | 29 +++++----- 5 files changed, 149 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ad77e19..9a7b463 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,6 +152,10 @@ else() endif() OPTION(ENABLE_GCOV "Compile with gcov support" OFF) +OPTION(BUILD_DM_ECMA "Build with ECMAScript datamodel" ON) +OPTION(BUILD_DM_XPATH "Build with XPath datamodel" ON) +OPTION(BUILD_DM_PROLOG "Build with Prolog datamodel" ON) + # a dummy target to depend on the targets needed for tests, see: # http://stackoverflow.com/questions/733475/cmake-ctest-make-test-doesnt-build-tests add_custom_target(ALL_TESTS COMMENT "Building all tests when BUILD_TESTS is enabled") @@ -565,6 +569,90 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DI configure_file(${CMAKE_CURRENT_SOURCE_DIR}/contrib/ctest/CTestCustom.ctest.in ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.ctest @ONCE) ############################################################ +# Some concluding remarks +############################################################ + +message(STATUS "Linking against external:") +set(SKIP_NEXT OFF) +foreach(LIBRARY ${USCXML_OPT_LIBS}) + if (LIBRARY MATCHES "debug") + if(CMAKE_BUILD_TYPE STREQUAL "Release") + set(SKIP_NEXT ON) + endif() + elseif (LIBRARY MATCHES "optimized") + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(SKIP_NEXT ON) + endif() + elseif (LIBRARY MATCHES "uscxml.*") + elseif (LIBRARY MATCHES "mmi_proto.*") + else() + if (NOT SKIP_NEXT) + message(STATUS " ${LIBRARY}") + else() + set(SKIP_NEXT OFF) + endif() + endif() +endforeach() + +set(AVAILABLE_DATAMODELS "") +set(ALL_FILES_STRING "${USCXML_FILES}") +if(ALL_FILES_STRING MATCHES ".*datamodel/ecmascript.*" OR TARGET datamodel_v8) + set(AVAILABLE_DATAMODELS "ecmascript ${AVAILABLE_DATAMODELS}") +endif() +if(ALL_FILES_STRING MATCHES ".*datamodel/prolog.*" OR TARGET datamodel_swi) + set(AVAILABLE_DATAMODELS "prolog ${AVAILABLE_DATAMODELS}") +endif() +if(ALL_FILES_STRING MATCHES ".*datamodel/xpath.*" OR TARGET datamodel_xpath) + set(AVAILABLE_DATAMODELS "xpath ${AVAILABLE_DATAMODELS}") +endif() + +set(AVAILABLE_LANGUAGE_BINDINGS "") +if (TARGET uscxmlNativePHP) + set(AVAILABLE_LANGUAGE_BINDINGS "php ${AVAILABLE_LANGUAGE_BINDINGS}") +endif() + +message(STATUS "Targets:") +message(STATUS " Available datamodels ........... : null ${AVAILABLE_DATAMODELS}") +message(STATUS " Available language bindings .... : ${AVAILABLE_LANGUAGE_BINDINGS}") +if (BUILD_SHARED_LIBS AND BUILD_BINDINGS) + message(STATUS "") + message(STATUS " Warning: Building language bindings BUILD_SHARED_LIBS=ON") + message(STATUS " introduces runtime dependency to libumundocore") + message(STATUS "") +endif() + +message(STATUS "General information:") +message(STATUS " Build type ..................... : ${CMAKE_BUILD_TYPE}") +if (BUILD_SHARED_LIBS) + message(STATUS " Building library as ............ : SHARED") +else() + message(STATUS " Building library as ............ : STATIC") +endif() + +if (BUILD_PREFER_STATIC_LIBRARIES) + message(STATUS " Preferring dependent libraries . : STATIC ") +else() + message(STATUS " Preferring dependent libraries . : SHARED") +endif() + +if (BUILD_PREFER_PREBUILT_LIBS) + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/" "" REL_USCXML_PREBUILT_LIBRARY_PATH ${USCXML_PREBUILT_LIBRARY_PATH}) + message(STATUS " Preferring dependent libraries . : from ${REL_USCXML_PREBUILT_LIBRARY_PATH}") +else() + message(STATUS " Preferring dependent libraries . : installed on system") +endif() + +STRING(REGEX REPLACE "${CMAKE_BINARY_DIR}" "BUILD_DIR" REL_CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) +STRING(REGEX REPLACE "${CMAKE_SOURCE_DIR}" "SOURCE_DIR" REL_CMAKE_LIBRARY_OUTPUT_DIRECTORY ${REL_CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + +STRING(REGEX REPLACE "${CMAKE_BINARY_DIR}" "BUILD_DIR" REL_CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +STRING(REGEX REPLACE "${CMAKE_SOURCE_DIR}" "SOURCE_DIR" REL_CMAKE_RUNTIME_OUTPUT_DIRECTORY ${REL_CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + +message(STATUS " Libraries will end up in ....... : " ${REL_CMAKE_LIBRARY_OUTPUT_DIRECTORY}) +message(STATUS " Binaries will end up in ........ : " ${REL_CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + + +############################################################ # Installation / Provide package target ############################################################ diff --git a/config.h.in b/config.h.in index f7ef7a2..63659f5 100644 --- a/config.h.in +++ b/config.h.in @@ -58,6 +58,7 @@ #cmakedefine SWI_FOUND #cmakedefine FFMPEG_FOUND #cmakedefine OPENSCENEGRAPH_FOUND +#cmakedefine PROTOBUF_FOUND /** Header files we found */ #cmakedefine HAS_UNISTD_H diff --git a/src/bindings/swig/php/uscxmlNativePHP.php b/src/bindings/swig/php/uscxmlNativePHP.php index 7ca2e84..7d8b0aa 100644 --- a/src/bindings/swig/php/uscxmlNativePHP.php +++ b/src/bindings/swig/php/uscxmlNativePHP.php @@ -270,6 +270,10 @@ class Data { return Data_isValid($this->_cPtr); } + function hasKey($key) { + return Data_hasKey($this->_cPtr,$key); + } + static function fromJSON($jsonString) { $r=Data_fromJSON($jsonString); if (is_resource($r)) { @@ -796,6 +800,20 @@ class Interpreter { return Interpreter_getBaseURI($this->_cPtr); } + function setNameSpaceInfo($namespaceInfo) { + Interpreter_setNameSpaceInfo($this->_cPtr,$namespaceInfo); + } + + function getNameSpaceInfo() { + $r=Interpreter_getNameSpaceInfo($this->_cPtr); + if (is_resource($r)) { + $c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3)); + if (class_exists($c)) return new $c($r); + return new StringMap($r); + } + return $r; + } + function setCmdLineOptions($argc,$argv) { Interpreter_setCmdLineOptions($this->_cPtr,$argc,$argv); } @@ -822,6 +840,14 @@ class Interpreter { Interpreter_setParentQueue($this->_cPtr,$parentQueue); } + function setFactory($factory) { + Interpreter_setFactory($this->_cPtr,$factory); + } + + function getFactory() { + return Interpreter_getFactory($this->_cPtr); + } + function getXPathPrefix() { return Interpreter_getXPathPrefix($this->_cPtr); } @@ -1014,6 +1040,14 @@ class Interpreter { return Interpreter_getUUID(); } + function getImpl() { + return Interpreter_getImpl($this->_cPtr); + } + + static function getInstances() { + return Interpreter_getInstances(); + } + function getConfiguration() { $r=Interpreter_getConfiguration($this->_cPtr); if (is_resource($r)) { diff --git a/src/uscxml/Factory.cpp b/src/uscxml/Factory.cpp index 667c6f0..84d7632 100644 --- a/src/uscxml/Factory.cpp +++ b/src/uscxml/Factory.cpp @@ -11,7 +11,6 @@ #else # include "uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.h" -# include "uscxml/plugins/ioprocessor/modality/MMIHTTPIOProcessor.h" # include "uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.h" # include "uscxml/plugins/invoker/scxml/USCXMLInvoker.h" # include "uscxml/plugins/invoker/http/HTTPServletInvoker.h" @@ -19,6 +18,10 @@ # include "uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h" # include "uscxml/plugins/invoker/system/SystemInvoker.h" +#ifdef PROTOBUF_FOUND +# include "uscxml/plugins/ioprocessor/modality/MMIHTTPIOProcessor.h" +#endif + # ifdef UMUNDO_FOUND # include "uscxml/plugins/invoker/umundo/UmundoInvoker.h" # include "uscxml/plugins/invoker/vxml/VoiceXMLInvoker.h" @@ -166,6 +169,13 @@ Factory::Factory() { } #endif +#ifdef PROTOBUF_FOUND + { + MMIHTTPIOProcessor* ioProcessor = new MMIHTTPIOProcessor(); + registerIOProcessor(ioProcessor); + } +#endif + // these are always available { NULLDataModel* dataModel = new NULLDataModel(); @@ -199,10 +209,6 @@ Factory::Factory() { BasicHTTPIOProcessor* ioProcessor = new BasicHTTPIOProcessor(); registerIOProcessor(ioProcessor); } - { - MMIHTTPIOProcessor* ioProcessor = new MMIHTTPIOProcessor(); - registerIOProcessor(ioProcessor); - } { SCXMLIOProcessor* ioProcessor = new SCXMLIOProcessor(); registerIOProcessor(ioProcessor); diff --git a/src/uscxml/plugins/datamodel/CMakeLists.txt b/src/uscxml/plugins/datamodel/CMakeLists.txt index 8acbcf7..c1a6961 100644 --- a/src/uscxml/plugins/datamodel/CMakeLists.txt +++ b/src/uscxml/plugins/datamodel/CMakeLists.txt @@ -48,25 +48,26 @@ endif() # XPath datamodel -file(GLOB XPATH_DATAMODEL - xpath/*.cpp - xpath/*.h -) -source_group("Datamodel\\xpath" FILES ${XPATH_DATAMODEL}) -if (BUILD_AS_PLUGINS) - add_library(datamodel_xpath SHARED ${XPATH_DATAMODEL}) - target_link_libraries(datamodel_xpath uscxml) - set_target_properties(datamodel_xpath PROPERTIES FOLDER "Plugin DataModel") -else() - list (APPEND USCXML_FILES ${XPATH_DATAMODEL}) +if (BUILD_DM_XPATH) + file(GLOB XPATH_DATAMODEL + xpath/*.cpp + xpath/*.h + ) + source_group("Datamodel\\xpath" FILES ${XPATH_DATAMODEL}) + if (BUILD_AS_PLUGINS) + add_library(datamodel_xpath SHARED ${XPATH_DATAMODEL}) + target_link_libraries(datamodel_xpath uscxml) + set_target_properties(datamodel_xpath PROPERTIES FOLDER "Plugin DataModel") + else() + list (APPEND USCXML_FILES ${XPATH_DATAMODEL}) + endif() endif() - # GOOGLE V8 ecmascript datamodel #if (NOT APPLE OR IOS) # set(ENV{V8_SRC} ${CMAKE_SOURCE_DIR}/../v8) - if (V8_FOUND) + if (V8_FOUND AND BUILD_DM_ECMA) file(GLOB V8_DATAMODEL ecmascript/v8/*.cpp ecmascript/v8/*.h @@ -97,7 +98,7 @@ endif() # SWI PROLOG datamodel -if (SWI_FOUND) +if (SWI_FOUND AND BUILD_DM_PROLOG) # message(FATAL_ERROR "SWI_INCLUDE_DIR: ${SWI_INCLUDE_DIR}") # if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") -- cgit v0.12