diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-04-25 20:36:03 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-04-25 20:36:03 (GMT) |
commit | 00f5d8af3c8e42ba8a0d0c206d2c2e8f1867a61e (patch) | |
tree | afa4183b1bb4ee777cad27475c3d7679822c8046 /src | |
parent | 4d6fb580b1c1378cb1441fff4adeca889cbba58e (diff) | |
download | uscxml-00f5d8af3c8e42ba8a0d0c206d2c2e8f1867a61e.zip uscxml-00f5d8af3c8e42ba8a0d0c206d2c2e8f1867a61e.tar.gz uscxml-00f5d8af3c8e42ba8a0d0c206d2c2e8f1867a61e.tar.bz2 |
Refactored CMakeLists and updated W3C tests
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/swig/php/uscxmlNativePHP.php | 16 | ||||
-rw-r--r-- | src/uscxml/CMakeLists.txt | 58 | ||||
-rw-r--r-- | src/uscxml/Common.h | 2 | ||||
-rw-r--r-- | src/uscxml/plugins/datamodel/CMakeLists.txt | 132 | ||||
-rw-r--r-- | src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp | 70 | ||||
-rw-r--r-- | src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp | 28 | ||||
-rw-r--r-- | src/uscxml/plugins/element/CMakeLists.txt | 53 | ||||
-rw-r--r-- | src/uscxml/plugins/invoker/CMakeLists.txt | 272 | ||||
-rw-r--r-- | src/uscxml/plugins/ioprocessor/CMakeLists.txt | 53 |
9 files changed, 666 insertions, 18 deletions
diff --git a/src/bindings/swig/php/uscxmlNativePHP.php b/src/bindings/swig/php/uscxmlNativePHP.php index 86eba7b..e7ef93d 100644 --- a/src/bindings/swig/php/uscxmlNativePHP.php +++ b/src/bindings/swig/php/uscxmlNativePHP.php @@ -224,6 +224,22 @@ class Event { Event_setDOM($this->_cPtr,$dom); } + function getFirstDOMElement() { + return Event_getFirstDOMElement($this->_cPtr); + } + + function getStrippedDOM() { + return Event_getStrippedDOM($this->_cPtr); + } + + function getRaw() { + return Event_getRaw($this->_cPtr); + } + + function setRaw($raw) { + Event_setRaw($this->_cPtr,$raw); + } + function getContent() { return Event_getContent($this->_cPtr); } diff --git a/src/uscxml/CMakeLists.txt b/src/uscxml/CMakeLists.txt new file mode 100644 index 0000000..3167405 --- /dev/null +++ b/src/uscxml/CMakeLists.txt @@ -0,0 +1,58 @@ +############################################################ +# Actual files of core library +############################################################ + +file(GLOB_RECURSE USCXML_SERVER + src/uscxml/server/*.cpp + src/uscxml/server/*.h +) +source_group("Interpreter" FILES ${USCXML_SERVER}) +list (APPEND USCXML_FILES ${USCXML_SERVER}) + +file(GLOB_RECURSE USCXML_CONCURRENCY + src/uscxml/concurrency/*.cpp + src/uscxml/concurrency/*.h +) +source_group("Interpreter" FILES ${USCXML_CONCURRENCY}) +list (APPEND USCXML_FILES ${USCXML_CONCURRENCY}) + +file(GLOB_RECURSE USCXML_DEBUG + src/uscxml/debug/*.cpp + src/uscxml/debug/*.h +) +source_group("Interpreter" FILES ${USCXML_DEBUG}) +list (APPEND USCXML_FILES ${USCXML_DEBUG}) + +file(GLOB_RECURSE USCXML_INTERPRETERS + src/uscxml/interpreter/*.cpp + src/uscxml/interpreter/*.h +) +source_group("Interpreter" FILES ${USCXML_INTERPRETERS}) +list (APPEND USCXML_FILES ${USCXML_INTERPRETERS}) + +file(GLOB USCXML_CORE + ${CMAKE_SOURCE_DIR}/contrib/src/jsmn/jsmn.c + src/uscxml/*.cpp + src/uscxml/*.h +) +source_group("Interpreter" FILES ${USCXML_CORE}) +list (APPEND USCXML_FILES ${USCXML_CORE}) + +if (BUILD_AS_PLUGINS) + list (APPEND USCXML_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/src/uscxml/plugins) + file(GLOB PLUMA + src/uscxml/plugins/Pluma/*.cpp + src/uscxml/plugins/Pluma/*.h + src/uscxml/plugins/*.cpp + src/uscxml/plugins/*.h + ) + source_group("Interpreter" FILES ${PLUMA}) + list (APPEND USCXML_FILES ${PLUMA}) + add_definitions("-DBUILD_AS_PLUGINS") +endif() + +include(src/uscxml/plugins/datamodel/CMakeLists.txt) +include(src/uscxml/plugins/element/CMakeLists.txt) +include(src/uscxml/plugins/invoker/CMakeLists.txt) +include(src/uscxml/plugins/ioprocessor/CMakeLists.txt) + diff --git a/src/uscxml/Common.h b/src/uscxml/Common.h index 0b0a628..5840d97 100644 --- a/src/uscxml/Common.h +++ b/src/uscxml/Common.h @@ -14,7 +14,7 @@ // possible loss of data #pragma warning (disable : 4244) #pragma warning (disable : 4267) -// 'this' : used in base member initializer list (TypedSubscriber) +// 'this' : used in base member initializer list #pragma warning (disable : 4355) // is thrown alot in arabica headers diff --git a/src/uscxml/plugins/datamodel/CMakeLists.txt b/src/uscxml/plugins/datamodel/CMakeLists.txt new file mode 100644 index 0000000..0634984 --- /dev/null +++ b/src/uscxml/plugins/datamodel/CMakeLists.txt @@ -0,0 +1,132 @@ +# JavaScriptCore ecmascript datamodel +if (APPLE AND IOS AND OFF) + FIND_LIBRARY(JSC_LIBRARY JavaScriptCore) + set(JSC_FOUND ON) + file(GLOB JSC_DATAMODEL + src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/*.cpp + src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/*.h + ) + source_group("Datamodel\\jsc" FILES ${JSC_DATAMODEL}) + file(GLOB_RECURSE JSC_DOM + src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/dom/*.cpp + src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/dom/*.h + ) + source_group("Datamodel\\DOM" FILES ${JSC_DOM}) + if (BUILD_AS_PLUGINS) + add_library( + datamodel_jsc SHARED + ${JSC_DATAMODEL} + ${JSC_DOM}) + target_link_libraries(datamodel_jsc + uscxml + ${JSC_LIBRARY}) + set_target_properties(datamodel_jsc PROPERTIES FOLDER "Plugin DataModel") + else() + list (APPEND USCXML_FILES ${JSC_DATAMODEL}) + list (APPEND USCXML_FILES ${JSC_DOM}) + list (APPEND USCXML_OPT_LIBS ${JSC_LIBRARY}) + endif() + +endif() + + +# NULL datamodel + +file(GLOB NULL_DATAMODEL + src/uscxml/plugins/datamodel/null/*.cpp + src/uscxml/plugins/datamodel/null/*.h +) +source_group("Datamodel\\null" FILES ${NULL_DATAMODEL}) +if (BUILD_AS_PLUGINS) + add_library(datamodel_null SHARED ${NULL_DATAMODEL}) + target_link_libraries(datamodel_null uscxml) + set_target_properties(datamodel_null PROPERTIES FOLDER "Plugin DataModel") +else() + list (APPEND USCXML_FILES ${NULL_DATAMODEL}) +endif() + + +# XPath datamodel + +file(GLOB XPATH_DATAMODEL + src/uscxml/plugins/datamodel/xpath/*.cpp + src/uscxml/plugins/datamodel/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() + + +# GOOGLE V8 ecmascript datamodel + +#if (NOT APPLE OR IOS) + # set(ENV{V8_SRC} ${CMAKE_SOURCE_DIR}/../v8) + find_package(V8) + if (V8_FOUND) + list (APPEND USCXML_INCLUDE_DIRS ${V8_INCLUDE_DIR}) + file(GLOB V8_DATAMODEL + src/uscxml/plugins/datamodel/ecmascript/v8/*.cpp + src/uscxml/plugins/datamodel/ecmascript/v8/*.h + ) + source_group("Datamodel\\v8" FILES ${V8_DATAMODEL}) + file(GLOB_RECURSE V8_DOM + src/uscxml/plugins/datamodel/ecmascript/v8/dom/*.cpp + src/uscxml/plugins/datamodel/ecmascript/v8/dom/*.h + ) + source_group("Datamodel\\v8\\DOM" FILES ${V8_DOM}) + + if (BUILD_AS_PLUGINS) + add_library( + datamodel_v8 SHARED + ${V8_DATAMODEL} + ${V8_DOM}) + target_link_libraries(datamodel_v8 + uscxml + ${V8_LIBRARY}) + set_target_properties(datamodel_v8 PROPERTIES FOLDER "Plugin DataModel") + else() + list (APPEND USCXML_FILES ${V8_DATAMODEL}) + list (APPEND USCXML_FILES ${V8_DOM}) + list (APPEND USCXML_OPT_LIBS ${V8_LIBRARY}) + endif() + endif() +#endif() + + +# SWI PROLOG datamodel + +#set(SWI_INCLUDE_HINT ${CMAKE_SOURCE_DIR}/../pl-devel/include) +#set(SWI_LIBRARY_HINT ${CMAKE_SOURCE_DIR}/../pl-devel/lib/x86_64-darwin12.2.0) +find_package(SWI) +#find_package(GMP) +#find_package(CURSES) +if (SWI_FOUND) + list (APPEND USCXML_INCLUDE_DIRS ${SWI_INCLUDE_DIR}) +# message(FATAL_ERROR "SWI_INCLUDE_DIR: ${SWI_INCLUDE_DIR}") +# include_directories(${GMP_INCLUDE_DIR}) +# include_directories(${CURSES_INCLUDE_DIR}) + file(GLOB_RECURSE SWI_DATAMODEL + src/uscxml/plugins/datamodel/prolog/swi/*.cpp + src/uscxml/plugins/datamodel/prolog/swi/*.h + ) + source_group("Datamodel\\swi" FILES ${SWI_DATAMODEL}) + if (BUILD_AS_PLUGINS) + add_library( + datamodel_swi SHARED + ${SWI_DATAMODEL}) + target_link_libraries(datamodel_swi + uscxml +# ${GMP_LIBRARY} +# ${CURSES_LIBRARIES} + ${SWI_LIBRARY}) + set_target_properties(datamodel_swi PROPERTIES FOLDER "Plugin DataModel") + else() + list (APPEND USCXML_FILES ${SWI_DATAMODEL}) + list (APPEND USCXML_OPT_LIBS ${SWI_LIBRARY}) # ${GMP_LIBRARY} ${CURSES_LIBRARIES}) + endif() +endif() diff --git a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp index db91869..5d6455f 100644 --- a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp +++ b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp @@ -43,6 +43,12 @@ boost::shared_ptr<DataModelImpl> SWIDataModel::create(InterpreterImpl* interpret return boost::shared_ptr<DataModelImpl>(); } + // load SWI XML parser + PlCall("use_module", PlCompound("library", PlTerm("sgml"))); + PlCall("assert", PlCompound("sessionId", PlTerm(PlString(dm->_interpreter->getSessionId().c_str())))); + PlCall("assert", PlCompound("name", PlTerm(PlString(dm->_interpreter->getName().c_str())))); + + PlCall("assert(eventName(X) :- event(Y,_), arg(1, Y, X))."); return dm; } @@ -76,8 +82,55 @@ void SWIDataModel::initialize() { } void SWIDataModel::setEvent(const Event& event) { -// std::cout << "SWIDataModel::setEvent" << std::endl; - _event = event; + // remove old event + PlCall("system", "retractall", PlTermv("event")); + + PlTermv plEvent(7); + plEvent[0] = PlCompound("name", PlTerm(PlString(event.name.c_str()))); + plEvent[1] = PlCompound("raw", PlTerm(PlString(event.raw.c_str()))); + plEvent[2] = PlCompound("origin", PlTerm(PlString(event.origin.c_str()))); + plEvent[3] = PlCompound("origintype", PlTerm(PlString(event.origintype.c_str()))); + plEvent[4] = PlCompound("data", PlTerm(PlString(event.content.c_str()))); + + Event::params_t::const_iterator paramIter; + // count unique keys in params + paramIter = event.params.begin(); + size_t uniqueKeys = 0; + while(paramIter != event.params.end()) { + uniqueKeys++; + paramIter = event.params.upper_bound(paramIter->first); + } + + // create a compund for every unique key + PlTermv paramTerm(uniqueKeys); + paramIter = event.params.begin(); + for(int i = 0; paramIter != event.params.end(); i++) { + Event::params_t::const_iterator lastValueIter = event.params.upper_bound(paramIter->first); + size_t items = event.params.count(paramIter->first); + PlTermv keyTerm(items); + for (int j = 0; paramIter != lastValueIter; j++) { + keyTerm[j] = PlString(paramIter->second.c_str()); + paramIter++; + } + paramTerm[i] = PlCompound(paramIter->first.c_str(), keyTerm); + paramIter = lastValueIter; + } + plEvent[5] = PlCompound("params", paramTerm); + + PlTerm type; + switch (event.type) { + case Event::PLATFORM: + type = "platform"; + break; + case Event::INTERNAL: + type = "internal"; + break; + case Event::EXTERNAL: + type = "external"; + break; + } + plEvent[6] = PlCompound("type", type); + PlCall("assert", PlCompound("event", plEvent)); } Data SWIDataModel::getStringAsData(const std::string& content) { @@ -128,13 +181,12 @@ std::string SWIDataModel::evalAsString(const std::string& expr) { PlQuery query(compound.name(), termv); std::stringstream ss; + const char* separator = ""; while (query.next_solution()) { for (int i = 0; i < compound.arity(); i++) { - const char* separator = ""; ss << separator << (char *)termv[i]; separator = ", "; } - ss << std::endl; } return ss.str(); } @@ -158,7 +210,15 @@ void SWIDataModel::assign(const std::string& location, const Data& data) { void SWIDataModel::init(const Arabica::DOM::Element<std::string>& dataElem, const Arabica::DOM::Document<std::string>& doc, - const std::string& content) {} + const std::string& content) { + std::string key; + if (HAS_ATTR(dataElem, "id")) { + key = ATTR(dataElem, "id"); + } else if (HAS_ATTR(dataElem, "location")) { + key = ATTR(dataElem, "location"); + } + assign(dataElem, doc, content); +} void SWIDataModel::init(const std::string& location, const Data& data) {} bool SWIDataModel::isDeclared(const std::string& expr) { diff --git a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp index 6377af2..1af56b5 100644 --- a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp +++ b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp @@ -380,19 +380,23 @@ void XPathDataModel::assign(const Element<std::string>& assignElem, // test 326ff XPathValue<std::string> key = _xpath.evaluate_expr(location, _doc); +#if 0 if (key.type() == NODE_SET) { - for (int i = 0; i < key.asNodeSet().size(); i++) { - Node<std::string> node = key.asNodeSet()[i]; - if (node == _varResolver.resolveVariable("", "_ioprocessors").asNodeSet()[0]) - throw Event("error.execution", Event::PLATFORM); - if (node == _varResolver.resolveVariable("", "_sessionid").asNodeSet()[0]) - throw Event("error.execution", Event::PLATFORM); - if (node == _varResolver.resolveVariable("", "_name").asNodeSet()[0]) - throw Event("error.execution", Event::PLATFORM); - if (node == _varResolver.resolveVariable("", "_event").asNodeSet()[0]) - throw Event("error.execution", Event::PLATFORM); - } + try { + for (int i = 0; i < key.asNodeSet().size(); i++) { + Node<std::string> node = key.asNodeSet()[i]; + if (node == _varResolver.resolveVariable("", "_ioprocessors").asNodeSet()[0]) + throw Event("error.execution", Event::PLATFORM); + if (node == _varResolver.resolveVariable("", "_sessionid").asNodeSet()[0]) + throw Event("error.execution", Event::PLATFORM); + if (node == _varResolver.resolveVariable("", "_name").asNodeSet()[0]) + throw Event("error.execution", Event::PLATFORM); + if (node == _varResolver.resolveVariable("", "_event").asNodeSet()[0]) + throw Event("error.execution", Event::PLATFORM); + } + } catch (Event e) {} } +#endif NodeSet<std::string> nodeSet; if (doc) { if (doc.getDocumentElement()) { @@ -495,7 +499,7 @@ void XPathDataModel::init(const Element<std::string>& dataElem, // put data element into nodeset and bind to xpath variable NodeSet<std::string> nodeSet; -#if 1 +#if 0 nodeSet.push_back(container); #else Node<std::string> node = container.getFirstChild(); diff --git a/src/uscxml/plugins/element/CMakeLists.txt b/src/uscxml/plugins/element/CMakeLists.txt new file mode 100644 index 0000000..fa54fc3 --- /dev/null +++ b/src/uscxml/plugins/element/CMakeLists.txt @@ -0,0 +1,53 @@ +# Fetch element + +file(GLOB_RECURSE FETCH_ELEMENT + src/uscxml/plugins/element/fetch/*.cpp + src/uscxml/plugins/element/fetch/*.h +) +source_group("Element\\fetch" FILES ${FETCH_ELEMENT}) +if (BUILD_AS_PLUGINS) + add_library( + element_fetch SHARED + ${FETCH_ELEMENT}) + target_link_libraries(element_fetch uscxml) + set_target_properties(element_fetch PROPERTIES FOLDER "Plugin Element") +else() + list (APPEND USCXML_FILES ${FETCH_ELEMENT}) +endif() + + +# Postpone element + +file(GLOB_RECURSE POSTPONE_ELEMENT + src/uscxml/plugins/element/postpone/*.cpp + src/uscxml/plugins/element/postpone/*.h +) +source_group("Element\\postpone" FILES ${POSTPONE_ELEMENT}) +if (BUILD_AS_PLUGINS) + add_library( + element_postpone SHARED + ${POSTPONE_ELEMENT}) + target_link_libraries(element_postpone uscxml) + set_target_properties(element_postpone PROPERTIES FOLDER "Plugin Element") +else() + list (APPEND USCXML_FILES ${POSTPONE_ELEMENT}) +endif() + + +# Respond element + +file(GLOB_RECURSE RESPOND_ELEMENT + src/uscxml/plugins/element/respond/*.cpp + src/uscxml/plugins/element/respond/*.h +) +source_group("Element\\respond" FILES ${RESPOND_ELEMENT}) +if (BUILD_AS_PLUGINS) + add_library( + element_respond SHARED + ${RESPOND_ELEMENT}) + target_link_libraries(element_respond uscxml) + set_target_properties(element_respond PROPERTIES FOLDER "Plugin Element") +else() + list (APPEND USCXML_FILES ${RESPOND_ELEMENT}) +endif() + diff --git a/src/uscxml/plugins/invoker/CMakeLists.txt b/src/uscxml/plugins/invoker/CMakeLists.txt new file mode 100644 index 0000000..4d38199 --- /dev/null +++ b/src/uscxml/plugins/invoker/CMakeLists.txt @@ -0,0 +1,272 @@ +# sample invoker - include to make sure it compiles +file(GLOB_RECURSE SAMPLE_INVOKER + src/uscxml/plugins/invoker/sample/*.cpp + src/uscxml/plugins/invoker/sample/*.h +) +source_group("Invoker\\sample" FILES ${SAMPLE_INVOKER}) +if (BUILD_AS_PLUGINS) + add_library( + invoker_sample SHARED + ${SAMPLE_INVOKER}) + target_link_libraries(invoker_sample uscxml) + set_target_properties(invoker_sample PROPERTIES FOLDER "Plugin Invoker") +else() + list (APPEND USCXML_FILES ${SAMPLE_INVOKER}) +endif() + + +# DirMon invoker to watch for filesystem changes + +file(GLOB_RECURSE DIRMON_INVOKER + src/uscxml/plugins/invoker/filesystem/dirmon/*.cpp + src/uscxml/plugins/invoker/filesystem/dirmon/*.h +) +source_group("Invoker\\dirmon" FILES ${DIRMON_INVOKER}) +if (BUILD_AS_PLUGINS) + add_library( + invoker_dirmon SHARED + ${DIRMON_INVOKER}) + target_link_libraries(invoker_dirmon uscxml) + set_target_properties(invoker_dirmon PROPERTIES FOLDER "Plugin Invoker") +else() + list (APPEND USCXML_FILES ${DIRMON_INVOKER}) +endif() + + +# System invoker to open a native command + +file(GLOB_RECURSE SYSTEM_INVOKER + src/uscxml/plugins/invoker/system/*.cpp + src/uscxml/plugins/invoker/system/*.h +) +source_group("Invoker\\system" FILES ${SYSTEM_INVOKER}) +if (BUILD_AS_PLUGINS) + add_library( + invoker_system SHARED + ${SYSTEM_INVOKER}) + target_link_libraries(invoker_system uscxml) + set_target_properties(invoker_system PROPERTIES FOLDER "Plugin Invoker") +else() + list (APPEND USCXML_FILES ${SYSTEM_INVOKER}) +endif() + + +# SQLite3 SQL Invoker + +find_package(Sqlite3) +if (SQLITE3_FOUND) + file(GLOB_RECURSE SQLITE3_INVOKER + src/uscxml/plugins/invoker/sqlite3/*.cpp + src/uscxml/plugins/invoker/sqlite3/*.h + ) + source_group("Invoker\\sqlite" FILES ${SQLITE3_INVOKER}) + if (BUILD_AS_PLUGINS) + add_library( + invoker_sqlite3 SHARED + ${SQLITE3_INVOKER}) + target_link_libraries(invoker_sqlite3 uscxml) + set_target_properties(invoker_sqlite3 PROPERTIES FOLDER "Plugin Invoker") + else() + list (APPEND USCXML_FILES ${SQLITE3_INVOKER}) + endif() +endif() + + +# ffmpeg invoker + +find_package(FFMPEG) +if (FFMPEG_FOUND) + list (APPEND USCXML_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIR}) + file(GLOB_RECURSE FFMPEG_INVOKER + src/uscxml/plugins/invoker/ffmpeg/*.cpp + src/uscxml/plugins/invoker/ffmpeg/*.h + ) + source_group("Invoker\\ffmpeg" FILES ${FFMPEG_INVOKER}) + if (BUILD_AS_PLUGINS) + add_library( + invoker_ffmpeg SHARED + ${FFMPEG_INVOKER}) + target_link_libraries(invoker_ffmpeg uscxml) + set_target_properties(invoker_ffmpeg PROPERTIES FOLDER "Plugin Invoker") + else() + list (APPEND USCXML_FILES ${FFMPEG_INVOKER}) + endif() +endif() + + +# UMUNDO invoker + +if (WIN32) + find_package(UMUNDO COMPONENTS convenience) +else() + find_package(UMUNDO COMPONENTS rpc serial core) +endif() +if (UMUNDO_FOUND) + list (APPEND USCXML_INCLUDE_DIRS ${UMUNDO_INCLUDE_DIR}) + file(GLOB_RECURSE UMUNDO_INVOKER + src/uscxml/plugins/invoker/umundo/*.cpp + src/uscxml/plugins/invoker/umundo/*.h) + source_group("Invoker\\umundo" FILES ${UMUNDO_INVOKER}) + if (BUILD_AS_PLUGINS) + add_library( + invoker_umundo SHARED + ${UMUNDO_INVOKER}) + target_link_libraries(invoker_umundo + uscxml + ${UMUNDO_LIBRARIES}) + set_target_properties(invoker_umundo PROPERTIES FOLDER "Plugin Invoker") + else() + list (APPEND USCXML_FILES ${UMUNDO_INVOKER}) + list (APPEND USCXML_OPT_LIBS ${UMUNDO_LIBRARIES}) + endif() + add_definitions("-DUMUNDO_STATIC") +endif() + + +# USCXML invoker + +file(GLOB_RECURSE USCXML_INVOKER + src/uscxml/plugins/invoker/scxml/*.cpp + src/uscxml/plugins/invoker/scxml/*.h) +source_group("Invoker\\uscxml" FILES ${USCXML_INVOKER}) +if (BUILD_AS_PLUGINS) + add_library( + invoker_uscxml SHARED + ${USCXML_INVOKER}) + target_link_libraries(invoker_uscxml + uscxml) + set_target_properties(invoker_uscxml PROPERTIES FOLDER "Plugin Invoker") +else() + list (APPEND USCXML_FILES ${USCXML_INVOKER}) +endif() + + +# HTTP server invoker + +file(GLOB_RECURSE HTTPSERVLET_INVOKER + src/uscxml/plugins/invoker/http/*.cpp + src/uscxml/plugins/invoker/http/*.h) +source_group("Invoker\\httpservlet" FILES ${HTTPSERVLET_INVOKER}) +if (BUILD_AS_PLUGINS) + add_library( + invoker_httpserver SHARED + ${HTTPSERVLET_INVOKER}) + target_link_libraries(invoker_httpserver + uscxml) + set_target_properties(invoker_httpserver PROPERTIES FOLDER "Plugin Invoker") +else() + list (APPEND USCXML_FILES ${HTTPSERVLET_INVOKER}) +endif() + + +# Heartbeat invoker + +file(GLOB_RECURSE HEARTBEAT_INVOKER + src/uscxml/plugins/invoker/heartbeat/*.cpp + src/uscxml/plugins/invoker/heartbeat/*.h +) +source_group("Invoker\\heartbeat" FILES ${HEARTBEAT_INVOKER}) +if (BUILD_AS_PLUGINS) + add_library( + invoker_heartbeat SHARED + ${HEARTBEAT_INVOKER}) + target_link_libraries(invoker_heartbeat uscxml) + set_target_properties(invoker_heartbeat PROPERTIES FOLDER "Plugin Invoker") +else() + list (APPEND USCXML_FILES ${HEARTBEAT_INVOKER}) +endif() + + +# OpenSceneGraph invoker +if (UNIX) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_ORIG}) # link dynamically! +elseif(WIN32) + if (ENV{OSG_ROOT} STREQUAL "") + set(ENV{OSG_ROOT} "C:/Program Files/OpenSceneGraph-3.0.1") + endif() +endif() +find_package(OpenSceneGraph COMPONENTS osgViewer osgGA osgText osgFX osgManipulator osgDB osgUtil OpenThreads) +find_package(OpenGL) +if (OPENSCENEGRAPH_FOUND AND OPENGL_FOUND) + list (APPEND USCXML_INCLUDE_DIRS ${OPENSCENEGRAPH_INCLUDE_DIRS}) + list (APPEND USCXML_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR}) + + file(GLOB OPENSCENEGRAPH_INVOKER + src/uscxml/plugins/invoker/graphics/openscenegraph/*.cpp + src/uscxml/plugins/invoker/graphics/openscenegraph/*.h) + source_group("Invoker\\scenegraph" FILES ${OPENSCENEGRAPH_INVOKER}) + + if (BUILD_AS_PLUGINS) + add_library( + invoker_openscenegraph SHARED + ${OPENSCENEGRAPH_INVOKER}) + target_link_libraries(invoker_openscenegraph + ${OPENSCENEGRAPH_LIBRARIES} + ${OPENGL_LIBRARIES} + uscxml) + set_target_properties(invoker_openscenegraph PROPERTIES FOLDER "Plugin Invoker") + else() + list (APPEND USCXML_FILES ${OPENSCENEGRAPH_INVOKER}) + list (APPEND USCXML_OPT_LIBS ${OPENSCENEGRAPH_LIBRARIES} ${OPENGL_LIBRARIES}) + endif() + + file(GLOB OPENSCENEGRAPH_CONVERTER_INVOKER + src/uscxml/plugins/invoker/graphics/openscenegraph/converter/*.cpp + src/uscxml/plugins/invoker/graphics/openscenegraph/converter/*.h) + source_group("Invoker\\scenegraph\\convert" FILES ${OPENSCENEGRAPH_CONVERTER_INVOKER}) + + if (BUILD_AS_PLUGINS) + add_library( + invoker_openscenegraph_convert SHARED + ${OPENSCENEGRAPH_CONVERTER_INVOKER}) + target_link_libraries(invoker_openscenegraph_convert + ${OPENSCENEGRAPH_LIBRARIES} + ${OPENGL_LIBRARIES} + uscxml) + set_target_properties(invoker_openscenegraph_convert PROPERTIES FOLDER "Plugin Invoker") + else() + list (APPEND USCXML_FILES ${OPENSCENEGRAPH_CONVERTER_INVOKER}) + list (APPEND USCXML_OPT_LIBS ${OPENSCENEGRAPH_LIBRARIES} ${OPENGL_LIBRARIES}) + endif() + +endif() +if (UNIX) + set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) +endif() + + +# MILES modality components + +find_package(MILES) +if (MILES_FOUND AND OFF) + list (APPEND USCXML_INCLUDE_DIRS ${MILES_INCLUDE_DIR}) + + # openal is only needed for miles + find_package(OpenAL REQUIRED) +# find_package(JPEG REQUIRED) + list (APPEND MILES_LIBRARIES "iconv") + list (APPEND MILES_LIBRARIES ${JPEG_LIBRARIES}) + list (APPEND USCXML_INCLUDE_DIRS ${OPENAL_INCLUDE_DIR}) + + file(GLOB_RECURSE MILES_INVOKER + src/uscxml/plugins/invoker/miles/*.cpp + src/uscxml/plugins/invoker/miles/*.h) + source_group("Invoker\\miles" FILES ${MILES_INVOKER}) +# message("MILES_INVOKER ${MILES_INVOKER}") + + if (BUILD_AS_PLUGINS) + add_library( + invoker_miles SHARED + ${MILES_INVOKER}) + target_link_libraries(invoker_miles + ${MILES_LIBRARIES} + ${OPENAL_LIBRARY} + uscxml) + set_target_properties(invoker_miles PROPERTIES FOLDER "Plugin Invoker") + else() + list (APPEND USCXML_FILES ${MILES_INVOKER}) + list (APPEND USCXML_OPT_LIBS ${MILES_LIBRARIES}) + list (APPEND USCXML_OPT_LIBS ${OPENAL_LIBRARY}) + endif() +endif() + diff --git a/src/uscxml/plugins/ioprocessor/CMakeLists.txt b/src/uscxml/plugins/ioprocessor/CMakeLists.txt new file mode 100644 index 0000000..c5f46e8 --- /dev/null +++ b/src/uscxml/plugins/ioprocessor/CMakeLists.txt @@ -0,0 +1,53 @@ +# LIBEVENT basichttp ioprocessor - this one is already required above + +file(GLOB_RECURSE BASICHTTP_IOPROCESSOR + src/uscxml/plugins/ioprocessor/basichttp/*.cpp + src/uscxml/plugins/ioprocessor/basichttp/*.h +) +source_group("IOProcessor\\basichttp" FILES ${BASICHTTP_IOPROCESSOR}) +if (BUILD_AS_PLUGINS) + add_library( + ioprocessor_basichttp SHARED + ${BASICHTTP_IOPROCESSOR}) + target_link_libraries(ioprocessor_basichttp uscxml) + set_target_properties(ioprocessor_basichttp PROPERTIES FOLDER "Plugin IOProcessor") +else() + list (APPEND USCXML_FILES ${BASICHTTP_IOPROCESSOR}) +endif() + + +# scxml ioprocessor - this one is already required above + +file(GLOB_RECURSE SCXML_IOPROCESSOR + src/uscxml/plugins/ioprocessor/scxml/*.cpp + src/uscxml/plugins/ioprocessor/scxml/*.h +) +source_group("IOProcessor\\scxml" FILES ${SCXML_IOPROCESSOR}) +if (BUILD_AS_PLUGINS) + add_library( + ioprocessor_scxml SHARED + ${SCXML_IOPROCESSOR}) + target_link_libraries(ioprocessor_scxml uscxml) + set_target_properties(ioprocessor_scxml PROPERTIES FOLDER "Plugin IOProcessor") +else() + list (APPEND USCXML_FILES ${SCXML_IOPROCESSOR}) +endif() + + +# mmi ioprocessor + +file(GLOB_RECURSE MMI_IOPROCESSOR + src/uscxml/plugins/ioprocessor/modality/*.cpp + src/uscxml/plugins/ioprocessor/modality/*.h +) +source_group("IOProcessor\\modality" FILES ${MMI_IOPROCESSOR}) +if (BUILD_AS_PLUGINS) + add_library( + ioprocessor_mmi SHARED + ${MMI_IOPROCESSOR}) + target_link_libraries(ioprocessor_mmi uscxml) + set_target_properties(ioprocessor_mmi PROPERTIES FOLDER "Plugin IOProcessor") +else() + list (APPEND USCXML_FILES ${MMI_IOPROCESSOR}) +endif() + |