diff options
author | Felipe Magno de Almeida <felipe@expertisesolutions.com.br> | 2015-01-06 20:05:47 -0200 |
---|---|---|
committer | Felipe Magno de Almeida <felipe@expertisesolutions.com.br> | 2015-01-06 20:05:47 -0200 |
commit | ebd3514937e23abc6ee3f9a510e1bd2b91273fce (patch) | |
tree | 1f3a10c699edf9b70eb682d38cc1025ea53afb7c | |
parent | d9c64b3697524bbebd549a57ff2c466629979229 (diff) | |
download | efl-ebd3514937e23abc6ee3f9a510e1bd2b91273fce.tar.gz |
Started compatibilization for nodejs/libv8/libuv
Modified configure.ac to allow compatibilization for versions of libv8 etc.
26 files changed, 190 insertions, 153 deletions
diff --git a/configure.ac b/configure.ac index acff24a232..907d9ca582 100644 --- a/configure.ac +++ b/configure.ac @@ -999,16 +999,46 @@ EFL_EVAL_PKGS([EINA_CXX]) EFL_LIB_END([Eina_Cxx]) #### End of Eina CXX -AC_ARG_ENABLE([js-bindings], - [AS_HELP_STRING([--enable-js-bindings],[enable JavaScript bindings. @<:@default=disabled@:>@])], - [want_js="${enableval}"], [want_js="no"]) -AM_CONDITIONAL([HAVE_JS], [test "x${want_js}" = "xyes"]) +AC_ARG_WITH([js], + [AS_HELP_STRING([--with-js=@<:@nodejs/libv8/libuv/none@:>@],[enable JavaScript bindings using nodejs or libv8/libuv as build dependencies. The libuv option implies libv8. @<:@default=none@:>@])], + [want_js="${withval}"], [want_js="none"]) + +AC_LANG_PUSH([C++]) +case "$want_js" in + nodejs) + AM_CONDITIONAL([HAVE_JS], [1]) + AC_CHECK_HEADER([node/v8.h], + [ + AC_DEFINE_UNQUOTED([V8_INCLUDE_HEADER], ["node/v8.h"], [Include header for libv8]) + AC_DEFINE_UNQUOTED([UV_INCLUDE_HEADER], ["node/uv.h"], [Include header for libuv]) + ], + [AC_MSG_ERROR([Could not find include headers from nodejs.])]) + ;; + libv8) + AM_CONDITIONAL([HAVE_JS], [1]) + EFL_DEPEND_PKG([EINA_JS], [V8], [v8 >= 3.25.28]) + EFL_DEPEND_PKG([EO_JS], [V8], [v8 >= 3.25.28]) + AC_DEFINE_UNQUOTED([V8_INCLUDE_HEADER], ["v8.h"], [Include header for libv8]) + ;; + libuv) + AM_CONDITIONAL([HAVE_JS], [1]) + EFL_DEPEND_PKG([EINA_JS], [V8], [v8 >= 3.25.28]) + EFL_DEPEND_PKG([EINA_JS], [UV], [v8 >= 1.1.0]) + EFL_DEPEND_PKG([EO_JS], [V8], [v8 >= 3.25.28]) + EFL_DEPEND_PKG([EO_JS], [UV], [v8 >= 1.1.0]) + AC_DEFINE_UNQUOTED([V8_INCLUDE_HEADER], ["v8.h"], [Include header for libv8]) + AC_DEFINE_UNQUOTED([UV_INCLUDE_HEADER], ["uv.h"], [Include header for libuv]) + ;; + none) + AM_CONDITIONAL([HAVE_JS], [0]) + ;; + *) AC_MSG_ERROR([Invalid javascript dependency (${want_js}): must be none, nodejs, libv8 or libuv]) ;; +esac +AC_LANG_POP([C++]) #### Eina JS EFL_LIB_START([Eina_Js]) -EFL_DEPEND_PKG([EINA_JS], [V8], [v8 >= 3.25.28]) - EFL_INTERNAL_DEPEND_PKG([EINA_JS], [eina]) EFL_ADD_CFLAGS([EINA_JS], [${EFL_PTHREAD_CFLAGS}]) EFL_EVAL_PKGS([EINA_JS]) @@ -1019,8 +1049,6 @@ EFL_LIB_END([Eina_Js]) #### Eina JS EFL_LIB_START([Eo_Js]) -EFL_DEPEND_PKG([EO_JS], [V8], [v8 >= 3.25.28]) - EFL_INTERNAL_DEPEND_PKG([EO_JS], [eina]) EFL_ADD_CFLAGS([EO_JS], [${EFL_PTHREAD_CFLAGS}]) EFL_EVAL_PKGS([EO_JS]) diff --git a/src/Makefile_Eina_Js.am b/src/Makefile_Eina_Js.am index f4003e3288..8f56f105c7 100644 --- a/src/Makefile_Eina_Js.am +++ b/src/Makefile_Eina_Js.am @@ -19,6 +19,7 @@ lib_eina_js_libeina_js_la_DEPENDENCIES = @EINA_INTERNAL_LIBS@ @DL_INTERNAL_LIBS@ lib_eina_js_libeina_js_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@ lib_eina_js_libeina_js_la_SOURCES = \ +bindings/eina_js/eina_js_compatibility.hh \ bindings/eina_js/eina_js_container.cc \ bindings/eina_js/eina_js_value.cc \ bindings/eina_js/eina_js_error.cc \ diff --git a/src/Makefile_Eo_Js.am b/src/Makefile_Eo_Js.am index e2ec258609..43c8579ac0 100644 --- a/src/Makefile_Eo_Js.am +++ b/src/Makefile_Eo_Js.am @@ -11,7 +11,6 @@ bindings/eo_js/eo_js_get_value_from_c.hh \ bindings/eo_js/eo_js_get_value.hh \ bindings/eo_js/eo_js_event.hh \ bindings/eo_js/eo_js_construct_from_eo.hh \ -bindings/eo_js/eo_js_compatibility.hh \ bindings/eo_js/Eo_Js.hh ### Unit tests diff --git a/src/Makefile_Eolian_Js.am b/src/Makefile_Eolian_Js.am index 88008c7f43..b8adba2b0d 100644 --- a/src/Makefile_Eolian_Js.am +++ b/src/Makefile_Eolian_Js.am @@ -27,7 +27,7 @@ lib_eolian_js_libeolian_js_la_SOURCES =\ $(generated_evas_canvas_js_bindings) lib_eolian_js_libeolian_js_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl -I$(top_builddir)/src/lib/efl/interfaces \ -@EINA_CFLAGS@ @EINA_CXX_CFLAGS@ @EO_JS_CFLAGS@ @EO_CFLAGS@ @EVAS_CFLAGS@ @ECORE_CFLAGS@ @ECORE_EVAS_CFLAGS@ @EINA_CFLAGS@ \ +@EINA_CFLAGS@ @EINA_CXX_CFLAGS@ @EINA_JS_CFLAGS@ @EO_JS_CFLAGS@ @EO_CFLAGS@ @EVAS_CFLAGS@ @ECORE_CFLAGS@ @ECORE_EVAS_CFLAGS@ @EINA_CFLAGS@ \ -I$(top_builddir)/src/lib/evas/canvas \ -DPACKAGE_BIN_DIR=\"$(bindir)\" \ -DPACKAGE_LIB_DIR=\"$(libdir)\" \ @@ -66,7 +66,7 @@ tests_eolian_js_eolian_js_suite_CXXFLAGS = \ -DPACKAGE_BUILD_DIR=\"$(abs_top_builddir)/src/tests/eolian_js\" \ -DPACKAGE_DATA_DIR=\"$(datadir)/eolian_js\" \ -DTESTS_BUILD_DIR=\"$(top_builddir)/src/tests/eolian_js\" \ -@CHECK_CFLAGS@ @EOLIAN_CXX_CFLAGS@ @EO_JS_CFLAGS@ @EINA_JS_CFLAGS@ \ +@CHECK_CFLAGS@ @EOLIAN_CXX_CFLAGS@ @EINA_JS_CFLAGS@ @EO_JS_CFLAGS@ @EINA_JS_CFLAGS@ \ @EOLIAN_CFLAGS@ @EINA_CFLAGS@ @EO_CFLAGS@ @ECORE_CFLAGS@ @EINA_CXX_CFLAGS@ \ @EO_JS_CFLAGS@ @EO_CXX_CFLAGS@ diff --git a/src/bin/eolian_js/main.cc b/src/bin/eolian_js/main.cc index 5c4c5ebd1e..d8c98192e0 100644 --- a/src/bin/eolian_js/main.cc +++ b/src/bin/eolian_js/main.cc @@ -243,7 +243,7 @@ int main(int argc, char** argv) os << "}\n\n"; } os << "#include <Eo_Js.hh>\n\n"; - os << "#include <node/v8.h>\n\n"; + os << "#include V8_INCLUDE_HEADER\n\n"; os << "extern \"C\" {\n"; if(is_evas(klass)) diff --git a/src/bindings/eina_js/eina_js_accessor.hh b/src/bindings/eina_js/eina_js_accessor.hh index 148f611326..807af4075c 100644 --- a/src/bindings/eina_js/eina_js_accessor.hh +++ b/src/bindings/eina_js/eina_js_accessor.hh @@ -1,7 +1,7 @@ #ifndef EINA_JS_ACCESSOR_HH #define EINA_JS_ACCESSOR_HH -#include <v8.h> +#include V8_INCLUDE_HEADER #include <Eina.hh> #include <memory> diff --git a/src/bindings/eo_js/eo_js_compatibility.hh b/src/bindings/eina_js/eina_js_compatibility.hh index b0a8087240..8a75b29c37 100644 --- a/src/bindings/eo_js/eo_js_compatibility.hh +++ b/src/bindings/eina_js/eina_js_compatibility.hh @@ -1,13 +1,9 @@ -#ifndef EFL_EO_JS_COMPATIBILITY_HH -#define EFL_EO_JS_COMPATIBILITY_HH +#ifndef EFL_EINA_JS_COMPATIBILITY_HH +#define EFL_EINA_JS_COMPATIBILITY_HH #include <type_traits> -#if 0 -#include <v8.h> -#else -#include <node/v8.h> -#endif +#include V8_INCLUDE_HEADER namespace v8 { @@ -16,7 +12,7 @@ struct FunctionCallbackInfo; } -namespace efl { namespace eo { namespace js { +namespace efl { namespace eina { namespace js { template <typename T = v8::External, typename Enable = void> struct _libv8_isolate_test; diff --git a/src/bindings/eina_js/eina_js_container.cc b/src/bindings/eina_js/eina_js_container.cc index 892bac14fc..b92a39f4af 100644 --- a/src/bindings/eina_js/eina_js_container.cc +++ b/src/bindings/eina_js/eina_js_container.cc @@ -2,7 +2,7 @@ #include <config.h> #endif -#include <v8.h> +#include V8_INCLUDE_HEADER #include <Eina.h> #include <cstdlib> diff --git a/src/bindings/eina_js/eina_js_error.cc b/src/bindings/eina_js/eina_js_error.cc index 7f71829fd7..fceffb1492 100644 --- a/src/bindings/eina_js/eina_js_error.cc +++ b/src/bindings/eina_js/eina_js_error.cc @@ -4,7 +4,7 @@ #include <eina_js_error.hh> -namespace efl { namespace js { +namespace efl { namespace eina {namespace js { EAPI void convert_error_to_javascript_exception(v8::Isolate *isolate) @@ -17,7 +17,7 @@ void convert_error_to_javascript_exception(v8::Isolate *isolate) if (!err) return; - Local<Object> je = Object::New(isolate); + Local<Object> je = compatibility_new<v8::Object>(isolate); je->Set(String::NewFromUtf8(isolate, "code"), String::NewFromUtf8(isolate, "Eina_Error")); je->Set(String::NewFromUtf8(isolate, "value"), @@ -25,4 +25,4 @@ void convert_error_to_javascript_exception(v8::Isolate *isolate) isolate->ThrowException(je); } -} } // namespace efl { namespace js { +} } } // namespace efl { namespace js { diff --git a/src/bindings/eina_js/eina_js_error.hh b/src/bindings/eina_js/eina_js_error.hh index e20d4d2670..4e6be83bb1 100644 --- a/src/bindings/eina_js/eina_js_error.hh +++ b/src/bindings/eina_js/eina_js_error.hh @@ -1,7 +1,7 @@ #ifndef EINA_JS_ERROR_HH #define EINA_JS_ERROR_HH -#include <v8.h> +#include V8_INCLUDE_HEADER #include <Eina.hh> namespace efl { namespace js { diff --git a/src/bindings/eina_js/eina_js_iterator.hh b/src/bindings/eina_js/eina_js_iterator.hh index e3b8a3b39c..cebaf79a83 100644 --- a/src/bindings/eina_js/eina_js_iterator.hh +++ b/src/bindings/eina_js/eina_js_iterator.hh @@ -1,7 +1,7 @@ #ifndef EINA_JS_ITERATOR_HH #define EINA_JS_ITERATOR_HH -#include <v8.h> +#include V8_INCLUDE_HEADER #include <Eina.hh> #include <type_traits> diff --git a/src/bindings/eina_js/eina_js_list.hh b/src/bindings/eina_js/eina_js_list.hh index 57002ffe6b..420e7ed7f4 100644 --- a/src/bindings/eina_js/eina_js_list.hh +++ b/src/bindings/eina_js/eina_js_list.hh @@ -4,6 +4,7 @@ #include <iostream> #include <eina_js_container.hh> +#include <eina_js_compatibility.hh> #include <Eina.hh> #include <iterator> @@ -31,7 +32,7 @@ struct eina_container_common : eina_container_type_specific<C, typename C::value s << ","; } std::cout << "string " << s.str() << std::endl; - return v8::String::NewFromUtf8(isolate, s.str().c_str()); + return compatibility_new<v8::String>(isolate, s.str().c_str()); } C _container; diff --git a/src/bindings/eina_js/eina_js_log.cc b/src/bindings/eina_js/eina_js_log.cc index 839e63bafd..c9d34c5f55 100644 --- a/src/bindings/eina_js/eina_js_log.cc +++ b/src/bindings/eina_js/eina_js_log.cc @@ -5,8 +5,9 @@ #include <string> #include <eina_js_log.hh> #include <eina_js_value.hh> +#include <eina_js_compatibility.hh> -namespace efl { namespace js { +namespace efl { namespace eina { namespace js { v8::Local<v8::String> to_v8_string(v8::Isolate *isolate, const char *fmt, va_list args) @@ -20,8 +21,7 @@ v8::Local<v8::String> to_v8_string(v8::Isolate *isolate, const char *fmt, s.size()); #else auto s = eina_stringshare_vprintf(fmt, args); - auto ret = v8::String::NewFromUtf8(isolate, s, v8::String::kNormalString, - eina_stringshare_strlen(s)); + auto ret = compatibility_new<v8::String>(isolate, s); eina_stringshare_del(s); return ret; #endif @@ -609,4 +609,4 @@ void register_log_timing(v8::Isolate *isolate, v8::Handle<v8::Object> global, global->Set(name, FunctionTemplate::New(isolate, func)->GetFunction()); } -} } // namespace efl { namespace js { +} } } // namespace efl { namespace js { diff --git a/src/bindings/eina_js/eina_js_log.hh b/src/bindings/eina_js/eina_js_log.hh index f22b3c9a75..58a852c3d5 100644 --- a/src/bindings/eina_js/eina_js_log.hh +++ b/src/bindings/eina_js/eina_js_log.hh @@ -1,7 +1,7 @@ #ifndef EINA_JS_LOG_HH #define EINA_JS_LOG_HH -#include <v8.h> +#include V8_INCLUDE_HEADER #include <Eina.hh> #include <type_traits> diff --git a/src/bindings/eina_js/eina_js_value.cc b/src/bindings/eina_js/eina_js_value.cc index bcfc578920..4c91e10b0b 100644 --- a/src/bindings/eina_js/eina_js_value.cc +++ b/src/bindings/eina_js/eina_js_value.cc @@ -3,95 +3,105 @@ #endif #include <eina_js_value.hh> +#include <eina_js_compatibility.hh> -namespace efl { namespace js { +namespace efl { namespace eina { namespace js { -EAPI -void register_make_value(v8::Isolate *isolate, v8::Handle<v8::Object> global, - v8::Handle<v8::String> name) -{ - using v8::Isolate; - using v8::Local; - using v8::Value; - using v8::Integer; - using v8::String; - using v8::Object; - using v8::FunctionTemplate; - using v8::FunctionCallbackInfo; - - typedef ::efl::eina::value value_type; - typedef value_type *ptr_type; +namespace { - auto ctor = [](const FunctionCallbackInfo<Value> &info) { - auto set = [](const FunctionCallbackInfo<Value> &info) { - if (info.Length() != 1) - return; - - void *ptr = info.Holder()->GetAlignedPointerFromInternalField(0); - Isolate *isolate = info.GetIsolate(); - try { - *static_cast<ptr_type>(ptr) = value_cast<value_type>(info[0]); - } catch(const std::bad_cast &e) { - Local<Object> je = Object::New(isolate); - je->Set(String::NewFromUtf8(isolate, "code"), - String::NewFromUtf8(isolate, "std::bad_cast")); - isolate->ThrowException(je); - } catch(const ::efl::eina::system_error &e) { - Local<Object> je = Object::New(isolate); - je->Set(String::NewFromUtf8(isolate, "code"), - String::NewFromUtf8(isolate, "std::error_code")); - je->Set(String::NewFromUtf8(isolate, "category"), - String::NewFromUtf8(isolate, e.code().category().name())); - je->Set(String::NewFromUtf8(isolate, "value"), - Integer::New(isolate, e.code().value())); - isolate->ThrowException(je); - } - }; - auto get = [](const FunctionCallbackInfo<Value> &info) { - void *ptr = info.Holder()->GetAlignedPointerFromInternalField(0); - auto &value = *static_cast<ptr_type>(ptr); - info.GetReturnValue().Set(value_cast<Local<Value>> - (value, info.GetIsolate())); - }; +compatibility_return_type eina_value_set(compatibility_callback_info_type args) +{ + if (args.Length() != 1) + return compatibility_return(args); + + void *ptr = args.Holder()->GetAlignedPointerFromInternalField(0); + Isolate *isolate = args.GetIsolate(); + try { + *static_cast<ptr_type>(ptr) = value_cast<value_type>(info[0]); + } catch(const std::bad_cast &e) { + Local<Object> je = Object::New(isolate); + je->Set(String::NewFromUtf8(isolate, "code"), + String::NewFromUtf8(isolate, "std::bad_cast")); + isolate->ThrowException(je); + } catch(const ::efl::eina::system_error &e) { + Local<Object> je = Object::New(isolate); + je->Set(String::NewFromUtf8(isolate, "code"), + String::NewFromUtf8(isolate, "std::error_code")); + je->Set(String::NewFromUtf8(isolate, "category"), + String::NewFromUtf8(isolate, e.code().category().name())); + je->Set(String::NewFromUtf8(isolate, "value"), + Integer::New(isolate, e.code().value())); + isolate->ThrowException(je); + } +} - if (info.Length() != 1) - return; +compatibility_return_type eina_value_get(compatibility_callback_info_type args) +{ + void *ptr = info.Holder()->GetAlignedPointerFromInternalField(0); + auto &value = *static_cast<ptr_type>(ptr); + info.GetReturnValue().Set(value_cast<Local<Value>> + (value, info.GetIsolate())); +} - Isolate *isolate = info.GetIsolate(); - auto obj_tpl = v8::ObjectTemplate::New(isolate); - obj_tpl->SetInternalFieldCount(1); - - auto ret = obj_tpl->NewInstance(); - info.GetReturnValue().Set(ret); - - ret->Set(String::NewFromUtf8(isolate, "set"), - FunctionTemplate::New(isolate, set)->GetFunction()); - ret->Set(String::NewFromUtf8(isolate, "get"), - FunctionTemplate::New(isolate, get)->GetFunction()); - - try { - std::unique_ptr<value_type> - ptr(new value_type(value_cast<value_type>(info[0]))); - ret->SetAlignedPointerInInternalField(0, ptr.get()); - ptr.release(); - } catch(const std::bad_cast &e) { - Local<Object> je = Object::New(isolate); - je->Set(String::NewFromUtf8(isolate, "code"), - String::NewFromUtf8(isolate, "std::bad_cast")); - isolate->ThrowException(je); - } catch(const ::efl::eina::system_error &e) { - Local<Object> je = Object::New(isolate); - je->Set(String::NewFromUtf8(isolate, "code"), - String::NewFromUtf8(isolate, "std::error_code")); - je->Set(String::NewFromUtf8(isolate, "category"), - String::NewFromUtf8(isolate, e.code().category().name())); - je->Set(String::NewFromUtf8(isolate, "value"), - Integer::New(isolate, e.code().value())); - isolate->ThrowException(je); - } - }; +compatibility_return_type eina_value_constructor(compatibility_callback_info_type args) +{ + if (info.Length() != 1) + return; + + try { + std::unique_ptr<value_type> + ptr(new value_type(value_cast<value_type>(info[0]))); + ret->SetAlignedPointerInInternalField(0, ptr.get()); + ptr.release(); + } catch(const std::bad_cast &e) { + Local<Object> je = Object::New(isolate); + je->Set(String::NewFromUtf8(isolate, "code"), + String::NewFromUtf8(isolate, "std::bad_cast")); + isolate->ThrowException(je); + } catch(const ::efl::eina::system_error &e) { + Local<Object> je = Object::New(isolate); + je->Set(String::NewFromUtf8(isolate, "code"), + String::NewFromUtf8(isolate, "std::error_code")); + je->Set(String::NewFromUtf8(isolate, "category"), + String::NewFromUtf8(isolate, e.code().category().name())); + je->Set(String::NewFromUtf8(isolate, "value"), + Integer::New(isolate, e.code().value())); + isolate->ThrowException(je); + } +} - global->Set(name, FunctionTemplate::New(isolate, ctor)->GetFunction()); +} + +EAPI +void register_make_value(v8::Isolate *isolate, v8::Handle<v8::Object> global, + v8::Handle<v8::String> name) +{ + using v8::Isolate; + using v8::Local; + using v8::Value; + using v8::Integer; + using v8::String; + using v8::Object; + using v8::FunctionTemplate; + using v8::FunctionCallbackInfo; + + typedef ::efl::eina::value value_type; + typedef value_type *ptr_type; + + v8::FunctionTemplate constructor + = compatibility_new<FunctionTemplate>(isolate, &eina_value_constructor); + + auto instance = constructor->InstanceTemplate(); + instance_template->SetInternalFieldCount(1); + + auto prototype = constructor->PrototypeTemplate(); + + prototype->Set(compatibility_new<v8::String>(isolate, "set") + , compatibility_new<FunctionTemplate>(isolate, &eina_value_set)); + prototype->Set(compatibility_new<v8::String>(isolate, "get") + , compatibility_new<FunctionTemplate>(isolate, &eina_value_get)); + + global->Set(name, constructor->GetFunction()); } EAPI @@ -119,4 +129,4 @@ void register_destroy_value(v8::Isolate *isolate, v8::Handle<v8::Object> global, global->Set(name, FunctionTemplate::New(isolate, dtor)->GetFunction()); } -} } // namespace efl { namespace js { +} } } // namespace efl { namespace js { diff --git a/src/bindings/eina_js/eina_js_value.hh b/src/bindings/eina_js/eina_js_value.hh index 853b8cf4b8..417a054448 100644 --- a/src/bindings/eina_js/eina_js_value.hh +++ b/src/bindings/eina_js/eina_js_value.hh @@ -1,11 +1,13 @@ #ifndef EINA_JS_VALUE_HH #define EINA_JS_VALUE_HH -#include <v8.h> +#include V8_INCLUDE_HEADER #include <Eina.hh> #include <type_traits> -namespace efl { namespace js { +#include <eina_js_compatibility.hh> + +namespace efl { namespace eina { namespace js { namespace detail { @@ -27,7 +29,7 @@ typename std::enable_if<is_representable_as_v8_integer<T>::value v8::Local<v8::Value>>::type to_v8_number(const T &v, v8::Isolate *isolate) { - return v8::Integer::New(isolate, v); + return compatibility_new<v8::Integer>(isolate, v); } template<class T> @@ -36,7 +38,7 @@ typename std::enable_if<is_representable_as_v8_integer<T>::value v8::Local<v8::Value>>::type to_v8_number(const T &v, v8::Isolate *isolate) { - return v8::Integer::NewFromUnsigned(isolate, v); + return compatibility_new<v8::Integer>(isolate, v); } template<class T> @@ -46,7 +48,7 @@ typename std::enable_if<(std::is_integral<T>::value v8::Local<v8::Value>>::type to_v8_number(const T &v, v8::Isolate *isolate) { - return v8::Number::New(isolate, v); + return compatibility_new<v8::Number>(isolate, v); } template<class T> @@ -55,8 +57,7 @@ typename std::enable_if<std::is_same<T, ::efl::eina::stringshare>::value v8::Local<v8::Value>>::type to_v8_string(const T &v, v8::Isolate *isolate) { - return v8::String::NewFromUtf8(isolate, v.c_str(), - v8::String::kNormalString, v.size()); + return compatibility_new<v8::String>(isolate, v.c_str()); } } // namespace detail @@ -139,6 +140,6 @@ void register_make_value(v8::Isolate *isolate, v8::Handle<v8::Object> global, void register_destroy_value(v8::Isolate *isolate, v8::Handle<v8::Object> global, v8::Handle<v8::String> name); -} } // namespace efl::js +} } } // namespace efl::js #endif /* EINA_JS_VALUE_HH */ diff --git a/src/bindings/eo_js/Eo_Js.hh b/src/bindings/eo_js/Eo_Js.hh index 289be71581..242c5fed1c 100644 --- a/src/bindings/eo_js/Eo_Js.hh +++ b/src/bindings/eo_js/Eo_Js.hh @@ -1,7 +1,6 @@ #ifndef EFL_EO_JS_HH #define EFL_EO_JS_HH -#include <eo_js_compatibility.hh> #include <eo_js_direction.hh> #include <eo_js_constructor.hh> #include <eo_js_call_function.hh> diff --git a/src/bindings/eo_js/eo_js_call_function.hh b/src/bindings/eo_js/eo_js_call_function.hh index a0efebb527..7904b0b4c6 100644 --- a/src/bindings/eo_js/eo_js_call_function.hh +++ b/src/bindings/eo_js/eo_js_call_function.hh @@ -1,7 +1,7 @@ #ifndef EFL_EO_JS_CALL_FUNCTION_HH #define EFL_EO_JS_CALL_FUNCTION_HH -#include <v8.h> +#include V8_INCLUDE_HEADER #include <eina_tuple.hh> #include <eina_tuple_c.hh> diff --git a/src/bindings/eo_js/eo_js_construct_from_eo.hh b/src/bindings/eo_js/eo_js_construct_from_eo.hh index 8daf38cc72..f4a23c879a 100644 --- a/src/bindings/eo_js/eo_js_construct_from_eo.hh +++ b/src/bindings/eo_js/eo_js_construct_from_eo.hh @@ -1,7 +1,7 @@ #ifndef EFL_EO_JS_CONSTRUCT_FROM_EO_HH #define EFL_EO_JS_CONSTRUCT_FROM_EO_HH -#include <v8.h> +#include V8_INCLUDE_HEADER #include <eina_tuple.hh> #include <eina_tuple_c.hh> diff --git a/src/bindings/eo_js/eo_js_constructor.hh b/src/bindings/eo_js/eo_js_constructor.hh index 4328ff4d8e..c7210731c3 100644 --- a/src/bindings/eo_js/eo_js_constructor.hh +++ b/src/bindings/eo_js/eo_js_constructor.hh @@ -1,11 +1,7 @@ #ifndef EFL_EO_JS_CONSTRUCTOR_HH #define EFL_EO_JS_CONSTRUCTOR_HH -#if 0 -#include <v8.h> -#else -#include <node/v8.h> -#endif +#include V8_INCLUDE_HEADER #include <eina_tuple.hh> #include <eina_function.hh> diff --git a/src/bindings/eo_js/eo_js_event.hh b/src/bindings/eo_js/eo_js_event.hh index 43892950f8..9d9056b1fa 100644 --- a/src/bindings/eo_js/eo_js_event.hh +++ b/src/bindings/eo_js/eo_js_event.hh @@ -1,7 +1,7 @@ #ifndef EFL_EO_JS_EVENT_HH #define EFL_EO_JS_EVENT_HH -#include <v8.h> +#include V8_INCLUDE_HEADER #include <eina_tuple.hh> #include <eina_tuple_c.hh> diff --git a/src/bindings/eo_js/eo_js_get_value.hh b/src/bindings/eo_js/eo_js_get_value.hh index c825924b9a..1083580915 100644 --- a/src/bindings/eo_js/eo_js_get_value.hh +++ b/src/bindings/eo_js/eo_js_get_value.hh @@ -1,13 +1,9 @@ #ifndef EFL_EO_JS_GET_VALUE_HH #define EFL_EO_JS_GET_VALUE_HH -#include <eo_js_compatibility.hh> +#include <eina_js_compatibility.hh> -#if 0 -#include <v8.h> -#else -#include <node/v8.h> -#endif +#include V8_INCLUDE_HEADER #include <type_traits> #include <cstdlib> diff --git a/src/bindings/eo_js/eo_js_get_value_from_c.hh b/src/bindings/eo_js/eo_js_get_value_from_c.hh index 8025e784bd..bf2d2ca89a 100644 --- a/src/bindings/eo_js/eo_js_get_value_from_c.hh +++ b/src/bindings/eo_js/eo_js_get_value_from_c.hh @@ -1,9 +1,9 @@ #ifndef EFL_EO_JS_GET_VALUE_FROM_C_HH #define EFL_EO_JS_GET_VALUE_FROM_C_HH -#include <eo_js_compatibility.hh> +#include <eina_js_compatibility.hh> -#include <v8.h> +#include V8_INCLUDE_HEADER #include <type_traits> #include <cstdlib> diff --git a/src/bindings/eolian_js/main.cc b/src/bindings/eolian_js/main.cc index 94682f3f6f..d8251a7adc 100644 --- a/src/bindings/eolian_js/main.cc +++ b/src/bindings/eolian_js/main.cc @@ -4,7 +4,7 @@ #endif #include <node/node.h> -#include <node/uv.h> +#include UV_INCLUDE_HEADER #include <iostream> diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c index 762ed4fab2..e4392f79fd 100644 --- a/src/lib/ecore/ecore_main.c +++ b/src/lib/ecore/ecore_main.c @@ -158,12 +158,7 @@ timerfd_settime(int fd EINA_UNUSED, #endif #ifdef USE_LIBUV -#define USE_NODEJS -#ifdef USE_NODEJS -#include <node/uv.h> -#else -#include <uv.h> -#endif +#include UV_INCLUDE_HEADER #include <dlfcn.h> static uv_prepare_t _ecore_main_uv_prepare; static uv_check_t _ecore_main_uv_check; @@ -464,7 +459,9 @@ _ecore_main_fdh_poll_add(Ecore_Fd_Handler *fdh) DBG("_ecore_main_fdh_poll_add"); int r = 0; +#ifdef USE_LIBUV if(!_dl_uv_run) +#endif { if ((!fdh->file) && HAVE_EPOLL && epoll_fd >= 0) { @@ -472,7 +469,9 @@ _ecore_main_fdh_poll_add(Ecore_Fd_Handler *fdh) _ecore_poll_events_from_fdh(fdh), fdh); } } +#ifdef USE_LIBUV else +#endif { #ifdef USE_LIBUV if(!fdh->file) @@ -511,7 +510,9 @@ _ecore_main_fdh_poll_add(Ecore_Fd_Handler *fdh) static inline void _ecore_main_fdh_poll_del(Ecore_Fd_Handler *fdh) { +#ifdef USE_LIBUV if(!_dl_uv_run) +#endif { if ((!fdh->file) && HAVE_EPOLL && epoll_fd >= 0) { @@ -537,7 +538,9 @@ _ecore_main_fdh_poll_del(Ecore_Fd_Handler *fdh) } } } +#ifdef USE_LIBUV else +#endif { #ifdef USE_LIBUV DBG("_ecore_main_fdh_poll_del libuv %p", fdh); @@ -558,7 +561,9 @@ _ecore_main_fdh_poll_modify(Ecore_Fd_Handler *fdh) { DBG("_ecore_main_fdh_poll_modify %p", fdh); int r = 0; +#ifdef USE_LIBUV if(!_dl_uv_run) +#endif { if ((!fdh->file) && HAVE_EPOLL && epoll_fd >= 0) { @@ -572,7 +577,9 @@ _ecore_main_fdh_poll_modify(Ecore_Fd_Handler *fdh) r = epoll_ctl(efd, EPOLL_CTL_MOD, fdh->fd, &ev); } } +#ifdef USE_LIBUV else +#endif { #ifdef USE_LIBUV abort(); @@ -956,8 +963,9 @@ detect_time_changes_stop(void) #endif } -static void _ecore_main_loop_idler_cb(uv_idle_t* handle EINA_UNUSED); +//static void _ecore_main_loop_idler_cb(uv_idle_t* handle EINA_UNUSED); +#ifdef USE_LIBUV static void _ecore_main_loop_timer_run(uv_timer_t* timer) { @@ -1043,8 +1051,7 @@ void _ecore_main_loop_timer_run(uv_timer_t* timer) DBG("exit\n"); } - -static void _ecore_main_loop_uv_prepare(uv_prepare_t* handle); +//static void _ecore_main_loop_uv_prepare(uv_prepare_t* handle); static void _ecore_main_loop_idler_cb(uv_idle_t* handle EINA_UNUSED) @@ -1135,6 +1142,7 @@ _ecore_main_loop_uv_check(uv_check_t* handle EINA_UNUSED) in_main_loop--; _ecore_unlock(); } +#endif void _ecore_main_loop_init(void) @@ -2186,6 +2194,7 @@ _ecore_main_fd_handlers_buf_call(void) return ret; } +#ifdef USE_LIBUV static void _ecore_main_loop_uv_prepare(uv_prepare_t* handle EINA_UNUSED) { @@ -2276,6 +2285,7 @@ _ecore_main_loop_uv_prepare(uv_prepare_t* handle EINA_UNUSED) _ecore_unlock(); in_main_loop--; } +#endif #if !defined(USE_G_MAIN_LOOP) enum { diff --git a/src/tests/eina_js/eina_js_suite.cc b/src/tests/eina_js/eina_js_suite.cc index 8717c29d69..dd4c91143d 100644 --- a/src/tests/eina_js/eina_js_suite.cc +++ b/src/tests/eina_js/eina_js_suite.cc @@ -3,7 +3,7 @@ #include <config.h> #endif -#include <v8.h> +#include V8_INCLUDE_HEADER #include <cassert> #include <cstdlib> |