From 2991a390942ea72e959ef71f69b313d04ce281ea Mon Sep 17 00:00:00 2001 From: kaj dijkstra Date: Thu, 25 Dec 2025 11:03:04 +0100 Subject: [PATCH] First commit --- binding.cc | 33 ++ binding.gyp | 12 + binding2.cc | 21 + build/Howto build | 8 + build/Makefile | 359 +++++++++++++++ build/Release/.deps/Release/binding.node.d | 1 + build/Release/.deps/Release/binding2.node.d | 1 + .../.deps/Release/obj.target/binding.node.d | 1 + .../Release/obj.target/binding/binding.o.d | 115 +++++ .../.deps/Release/obj.target/binding2.node.d | 1 + .../Release/obj.target/binding2/binding2.o.d | 127 ++++++ build/Release/binding.node | Bin 0 -> 13320 bytes build/Release/binding2.node | Bin 0 -> 13072 bytes build/Release/obj.target/binding.node | Bin 0 -> 13320 bytes build/Release/obj.target/binding/binding.o | Bin 0 -> 4824 bytes build/Release/obj.target/binding2.node | Bin 0 -> 13072 bytes build/Release/obj.target/binding2/binding2.o | Bin 0 -> 4232 bytes build/binding.Makefile | 6 + build/binding.target.mk | 154 +++++++ build/binding2.target.mk | 154 +++++++ build/config.gypi | 430 ++++++++++++++++++ package.json | 8 + src/binding.cc | 33 ++ src/binding.gyp | 12 + src/binding2.cc | 21 + test-worker.js | 13 + test.js | 3 + 27 files changed, 1513 insertions(+) create mode 100644 binding.cc create mode 100644 binding.gyp create mode 100644 binding2.cc create mode 100644 build/Howto build create mode 100644 build/Makefile create mode 100644 build/Release/.deps/Release/binding.node.d create mode 100644 build/Release/.deps/Release/binding2.node.d create mode 100644 build/Release/.deps/Release/obj.target/binding.node.d create mode 100644 build/Release/.deps/Release/obj.target/binding/binding.o.d create mode 100644 build/Release/.deps/Release/obj.target/binding2.node.d create mode 100644 build/Release/.deps/Release/obj.target/binding2/binding2.o.d create mode 100755 build/Release/binding.node create mode 100755 build/Release/binding2.node create mode 100755 build/Release/obj.target/binding.node create mode 100644 build/Release/obj.target/binding/binding.o create mode 100755 build/Release/obj.target/binding2.node create mode 100644 build/Release/obj.target/binding2/binding2.o create mode 100644 build/binding.Makefile create mode 100644 build/binding.target.mk create mode 100644 build/binding2.target.mk create mode 100644 build/config.gypi create mode 100644 package.json create mode 100644 src/binding.cc create mode 100644 src/binding.gyp create mode 100644 src/binding2.cc create mode 100644 test-worker.js create mode 100644 test.js diff --git a/binding.cc b/binding.cc new file mode 100644 index 0000000..b9a13be --- /dev/null +++ b/binding.cc @@ -0,0 +1,33 @@ +#include +#include + +static void Method(const v8::FunctionCallbackInfo& args) { + v8::Isolate* isolate = args.GetIsolate(); + args.GetReturnValue().Set(v8::String::NewFromUtf8( + isolate, "world").ToLocalChecked()); +} + +// Not using the full NODE_MODULE_INIT() macro here because we want to test the +// addon loader's reaction to the FakeInit() entry point below. +extern "C" NODE_MODULE_EXPORT void +NODE_MODULE_INITIALIZER(v8::Local exports, + v8::Local module, + v8::Local context) { + NODE_SET_METHOD(exports, "hello", Method); +} + +static void FakeInit(v8::Local exports, + v8::Local module, + v8::Local context) { + auto isolate = context->GetIsolate(); + auto exception = v8::Exception::Error(v8::String::NewFromUtf8(isolate, + "FakeInit should never run!").ToLocalChecked()); + isolate->ThrowException(exception); +} + +// Define a Node.js module, but with the wrong version. Node.js should still be +// able to load this module, multiple times even, because it exposes the +// specially named initializer above. +#undef NODE_MODULE_VERSION +#define NODE_MODULE_VERSION 3 +NODE_MODULE(NODE_GYP_MODULE_NAME, FakeInit) \ No newline at end of file diff --git a/binding.gyp b/binding.gyp new file mode 100644 index 0000000..52ea244 --- /dev/null +++ b/binding.gyp @@ -0,0 +1,12 @@ +{ + 'targets': [ + { + 'target_name': 'binding', + 'sources': [ 'binding.cc' ] + }, + { + 'target_name': 'binding2', + 'sources': [ 'binding2.cc' ] + } + ] +} \ No newline at end of file diff --git a/binding2.cc b/binding2.cc new file mode 100644 index 0000000..affa77a --- /dev/null +++ b/binding2.cc @@ -0,0 +1,21 @@ +// Include uv.h and v8.h ahead of node.h to verify that node.h doesn't need to +// be included first. Disable clang-format as it will sort the include lists. +// clang-format off +#include +#include +#include +// clang-format on + +static void Method(const v8::FunctionCallbackInfo& args) { + v8::Isolate* isolate = args.GetIsolate(); + args.GetReturnValue().Set( + v8::String::NewFromUtf8(isolate, "world").ToLocalChecked()); +} + +static void InitModule(v8::Local exports, + v8::Local module, + v8::Local context) { + NODE_SET_METHOD(exports, "hello", Method); +} + +NODE_MODULE(NODE_GYP_MODULE_NAME, InitModule) diff --git a/build/Howto build b/build/Howto build new file mode 100644 index 0000000..a5a38ae --- /dev/null +++ b/build/Howto build @@ -0,0 +1,8 @@ +node-gyp configure + +node-gyp build + + +const binding = require("./build/Release/binding"); + +console.log(binding.hello()); // Will log "hello world" \ No newline at end of file diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..6add9be --- /dev/null +++ b/build/Makefile @@ -0,0 +1,359 @@ +# We borrow heavily from the kernel build setup, though we are simpler since +# we don't have Kconfig tweaking settings on us. + +# The implicit make rules have it looking for RCS files, among other things. +# We instead explicitly write all the rules we care about. +# It's even quicker (saves ~200ms) to pass -r on the command line. +MAKEFLAGS=-r + +# The source directory tree. +srcdir := .. +abs_srcdir := $(abspath $(srcdir)) + +# The name of the builddir. +builddir_name ?= . + +# The V=1 flag on command line makes us verbosely print command lines. +ifdef V + quiet= +else + quiet=quiet_ +endif + +# Specify BUILDTYPE=Release on the command line for a release build. +BUILDTYPE ?= Release + +# Directory all our build output goes into. +# Note that this must be two directories beneath src/ for unit tests to pass, +# as they reach into the src/ directory for data with relative paths. +builddir ?= $(builddir_name)/$(BUILDTYPE) +abs_builddir := $(abspath $(builddir)) +depsdir := $(builddir)/.deps + +# Object output directory. +obj := $(builddir)/obj +abs_obj := $(abspath $(obj)) + +# We build up a list of every single one of the targets so we can slurp in the +# generated dependency rule Makefiles in one pass. +all_deps := + + + +CC.target ?= $(CC) +CFLAGS.target ?= $(CPPFLAGS) $(CFLAGS) +CXX.target ?= $(CXX) +CXXFLAGS.target ?= $(CPPFLAGS) $(CXXFLAGS) +LINK.target ?= $(LINK) +LDFLAGS.target ?= $(LDFLAGS) +AR.target ?= $(AR) +PLI.target ?= pli + +# C++ apps need to be linked with g++. +LINK ?= $(CXX.target) + +# TODO(evan): move all cross-compilation logic to gyp-time so we don't need +# to replicate this environment fallback in make as well. +CC.host ?= gcc +CFLAGS.host ?= $(CPPFLAGS_host) $(CFLAGS_host) +CXX.host ?= g++ +CXXFLAGS.host ?= $(CPPFLAGS_host) $(CXXFLAGS_host) +LINK.host ?= $(CXX.host) +LDFLAGS.host ?= $(LDFLAGS_host) +AR.host ?= ar +PLI.host ?= pli + +# Define a dir function that can handle spaces. +# http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions +# "leading spaces cannot appear in the text of the first argument as written. +# These characters can be put into the argument value by variable substitution." +empty := +space := $(empty) $(empty) + +# http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path-with-spaces +replace_spaces = $(subst $(space),?,$1) +unreplace_spaces = $(subst ?,$(space),$1) +dirx = $(call unreplace_spaces,$(dir $(call replace_spaces,$1))) + +# Flags to make gcc output dependency info. Note that you need to be +# careful here to use the flags that ccache and distcc can understand. +# We write to a dep file on the side first and then rename at the end +# so we can't end up with a broken dep file. +depfile = $(depsdir)/$(call replace_spaces,$@).d +DEPFLAGS = -MMD -MF $(depfile).raw + +# We have to fixup the deps output in a few ways. +# (1) the file output should mention the proper .o file. +# ccache or distcc lose the path to the target, so we convert a rule of +# the form: +# foobar.o: DEP1 DEP2 +# into +# path/to/foobar.o: DEP1 DEP2 +# (2) we want missing files not to cause us to fail to build. +# We want to rewrite +# foobar.o: DEP1 DEP2 \ +# DEP3 +# to +# DEP1: +# DEP2: +# DEP3: +# so if the files are missing, they're just considered phony rules. +# We have to do some pretty insane escaping to get those backslashes +# and dollar signs past make, the shell, and sed at the same time. +# Doesn't work with spaces, but that's fine: .d files have spaces in +# their names replaced with other characters. +define fixup_dep +# The depfile may not exist if the input file didn't have any #includes. +touch $(depfile).raw +# Fixup path as in (1). +sed -e "s|^$(notdir $@)|$@|" $(depfile).raw >> $(depfile) +# Add extra rules as in (2). +# We remove slashes and replace spaces with new lines; +# remove blank lines; +# delete the first line and append a colon to the remaining lines. +sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\ + grep -v '^$$' |\ + sed -e 1d -e 's|$$|:|' \ + >> $(depfile) +rm $(depfile).raw +endef + +# Command definitions: +# - cmd_foo is the actual command to run; +# - quiet_cmd_foo is the brief-output summary of the command. + +quiet_cmd_cc = CC($(TOOLSET)) $@ +cmd_cc = $(CC.$(TOOLSET)) -o $@ $< $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c + +quiet_cmd_cxx = CXX($(TOOLSET)) $@ +cmd_cxx = $(CXX.$(TOOLSET)) -o $@ $< $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c + +quiet_cmd_touch = TOUCH $@ +cmd_touch = touch $@ + +quiet_cmd_copy = COPY $@ +# send stderr to /dev/null to ignore messages when linking directories. +cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp -af "$<" "$@") + +quiet_cmd_symlink = SYMLINK $@ +cmd_symlink = ln -sf "$<" "$@" + +quiet_cmd_alink = AR($(TOOLSET)) $@ +cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^) + +quiet_cmd_alink_thin = AR($(TOOLSET)) $@ +cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^) + +# Due to circular dependencies between libraries :(, we wrap the +# special "figure out circular dependencies" flags around the entire +# input list during linking. +quiet_cmd_link = LINK($(TOOLSET)) $@ +cmd_link = $(LINK.$(TOOLSET)) -o $@ $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,--start-group $(LD_INPUTS) $(LIBS) -Wl,--end-group + +# Note: this does not handle spaces in paths +define xargs + $(1) $(word 1,$(2)) +$(if $(word 2,$(2)),$(call xargs,$(1),$(wordlist 2,$(words $(2)),$(2)))) +endef + +define write-to-file + @: >$(1) +$(call xargs,@printf "%s\n" >>$(1),$(2)) +endef + +OBJ_FILE_LIST := ar-file-list + +define create_archive + rm -f $(1) $(1).$(OBJ_FILE_LIST); mkdir -p `dirname $(1)` + $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2))) + $(AR.$(TOOLSET)) crs $(1) @$(1).$(OBJ_FILE_LIST) +endef + +define create_thin_archive + rm -f $(1) $(OBJ_FILE_LIST); mkdir -p `dirname $(1)` + $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2))) + $(AR.$(TOOLSET)) crsT $(1) @$(1).$(OBJ_FILE_LIST) +endef + +# We support two kinds of shared objects (.so): +# 1) shared_library, which is just bundling together many dependent libraries +# into a link line. +# 2) loadable_module, which is generating a module intended for dlopen(). +# +# They differ only slightly: +# In the former case, we want to package all dependent code into the .so. +# In the latter case, we want to package just the API exposed by the +# outermost module. +# This means shared_library uses --whole-archive, while loadable_module doesn't. +# (Note that --whole-archive is incompatible with the --start-group used in +# normal linking.) + +# Other shared-object link notes: +# - Set SONAME to the library filename so our binaries don't reference +# the local, absolute paths used on the link command-line. +quiet_cmd_solink = SOLINK($(TOOLSET)) $@ +cmd_solink = $(LINK.$(TOOLSET)) -o $@ -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS) + +quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ +cmd_solink_module = $(LINK.$(TOOLSET)) -o $@ -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS) + + +# Define an escape_quotes function to escape single quotes. +# This allows us to handle quotes properly as long as we always use +# use single quotes and escape_quotes. +escape_quotes = $(subst ','\'',$(1)) +# This comment is here just to include a ' to unconfuse syntax highlighting. +# Define an escape_vars function to escape '$' variable syntax. +# This allows us to read/write command lines with shell variables (e.g. +# $LD_LIBRARY_PATH), without triggering make substitution. +escape_vars = $(subst $$,$$$$,$(1)) +# Helper that expands to a shell command to echo a string exactly as it is in +# make. This uses printf instead of echo because printf's behaviour with respect +# to escape sequences is more portable than echo's across different shells +# (e.g., dash, bash). +exact_echo = printf '%s\n' '$(call escape_quotes,$(1))' + +# Helper to compare the command we're about to run against the command +# we logged the last time we ran the command. Produces an empty +# string (false) when the commands match. +# Tricky point: Make has no string-equality test function. +# The kernel uses the following, but it seems like it would have false +# positives, where one string reordered its arguments. +# arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \ +# $(filter-out $(cmd_$@), $(cmd_$(1)))) +# We instead substitute each for the empty string into the other, and +# say they're equal if both substitutions produce the empty string. +# .d files contain ? instead of spaces, take that into account. +command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\ + $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1)))) + +# Helper that is non-empty when a prerequisite changes. +# Normally make does this implicitly, but we force rules to always run +# so we can check their command lines. +# $? -- new prerequisites +# $| -- order-only dependencies +prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?)) + +# Helper that executes all postbuilds until one fails. +define do_postbuilds + @E=0;\ + for p in $(POSTBUILDS); do\ + eval $$p;\ + E=$$?;\ + if [ $$E -ne 0 ]; then\ + break;\ + fi;\ + done;\ + if [ $$E -ne 0 ]; then\ + rm -rf "$@";\ + exit $$E;\ + fi +endef + +# do_cmd: run a command via the above cmd_foo names, if necessary. +# Should always run for a given target to handle command-line changes. +# Second argument, if non-zero, makes it do asm/C/C++ dependency munging. +# Third argument, if non-zero, makes it do POSTBUILDS processing. +# Note: We intentionally do NOT call dirx for depfile, since it contains ? for +# spaces already and dirx strips the ? characters. +define do_cmd +$(if $(or $(command_changed),$(prereq_changed)), + @$(call exact_echo, $($(quiet)cmd_$(1))) + @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))" + $(if $(findstring flock,$(word 1,$(cmd_$1))), + @$(cmd_$(1)) + @echo " $(quiet_cmd_$(1)): Finished", + @$(cmd_$(1)) + ) + @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile) + @$(if $(2),$(fixup_dep)) + $(if $(and $(3), $(POSTBUILDS)), + $(call do_postbuilds) + ) +) +endef + +# Declare the "all" target first so it is the default, +# even though we don't have the deps yet. +.PHONY: all +all: + +# make looks for ways to re-generate included makefiles, but in our case, we +# don't have a direct way. Explicitly telling make that it has nothing to do +# for them makes it go faster. +%.d: ; + +# Use FORCE_DO_CMD to force a target to run. Should be coupled with +# do_cmd. +.PHONY: FORCE_DO_CMD +FORCE_DO_CMD: + +TOOLSET := target +# Suffix rules, putting all outputs into $(obj). +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + +# Try building from generated source, too. +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + +$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + + +ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ + $(findstring $(join ^,$(prefix)),\ + $(join ^,binding.target.mk)))),) + include binding.target.mk +endif +ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ + $(findstring $(join ^,$(prefix)),\ + $(join ^,binding2.target.mk)))),) + include binding2.target.mk +endif + +quiet_cmd_regen_makefile = ACTION Regenerating $@ +cmd_regen_makefile = cd $(srcdir); /home/kaj/.nvm/versions/node/v20.19.4/lib/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/home/kaj/.cache/node-gyp/20.19.4" "-Dnode_gyp_dir=/home/kaj/.nvm/versions/node/v20.19.4/lib/node_modules/node-gyp" "-Dnode_lib_file=/home/kaj/.cache/node-gyp/20.19.4/<(target_arch)/node.lib" "-Dmodule_root_dir=/home/kaj/Desktop/node_c" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/home/kaj/Desktop/node_c/build/config.gypi -I/home/kaj/.nvm/versions/node/v20.19.4/lib/node_modules/node-gyp/addon.gypi -I/home/kaj/.cache/node-gyp/20.19.4/include/node/common.gypi "--toplevel-dir=." binding.gyp +Makefile: $(srcdir)/../../.cache/node-gyp/20.19.4/include/node/common.gypi $(srcdir)/../../.nvm/versions/node/v20.19.4/lib/node_modules/node-gyp/addon.gypi $(srcdir)/binding.gyp $(srcdir)/build/config.gypi + $(call do_cmd,regen_makefile) + +# "all" is a concatenation of the "all" targets from all the included +# sub-makefiles. This is just here to clarify. +all: + +# Add in dependency-tracking rules. $(all_deps) is the list of every single +# target in our tree. Only consider the ones with .d (dependency) info: +d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d)) +ifneq ($(d_files),) + include $(d_files) +endif diff --git a/build/Release/.deps/Release/binding.node.d b/build/Release/.deps/Release/binding.node.d new file mode 100644 index 0000000..5d0ee1e --- /dev/null +++ b/build/Release/.deps/Release/binding.node.d @@ -0,0 +1 @@ +cmd_Release/binding.node := ln -f "Release/obj.target/binding.node" "Release/binding.node" 2>/dev/null || (rm -rf "Release/binding.node" && cp -af "Release/obj.target/binding.node" "Release/binding.node") diff --git a/build/Release/.deps/Release/binding2.node.d b/build/Release/.deps/Release/binding2.node.d new file mode 100644 index 0000000..2102a52 --- /dev/null +++ b/build/Release/.deps/Release/binding2.node.d @@ -0,0 +1 @@ +cmd_Release/binding2.node := ln -f "Release/obj.target/binding2.node" "Release/binding2.node" 2>/dev/null || (rm -rf "Release/binding2.node" && cp -af "Release/obj.target/binding2.node" "Release/binding2.node") diff --git a/build/Release/.deps/Release/obj.target/binding.node.d b/build/Release/.deps/Release/obj.target/binding.node.d new file mode 100644 index 0000000..3f3770f --- /dev/null +++ b/build/Release/.deps/Release/obj.target/binding.node.d @@ -0,0 +1 @@ +cmd_Release/obj.target/binding.node := g++ -o Release/obj.target/binding.node -shared -pthread -rdynamic -m64 -Wl,-soname=binding.node -Wl,--start-group Release/obj.target/binding/binding.o -Wl,--end-group diff --git a/build/Release/.deps/Release/obj.target/binding/binding.o.d b/build/Release/.deps/Release/obj.target/binding/binding.o.d new file mode 100644 index 0000000..dd10ed6 --- /dev/null +++ b/build/Release/.deps/Release/obj.target/binding/binding.o.d @@ -0,0 +1,115 @@ +cmd_Release/obj.target/binding/binding.o := g++ -o Release/obj.target/binding/binding.o ../binding.cc '-DNODE_GYP_MODULE_NAME=binding' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_FILE_OFFSET_BITS=64' '-D_LARGEFILE_SOURCE' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DBUILDING_NODE_EXTENSION' -I/home/kaj/.cache/node-gyp/20.19.4/include/node -I/home/kaj/.cache/node-gyp/20.19.4/src -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/config -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/openssl/include -I/home/kaj/.cache/node-gyp/20.19.4/deps/uv/include -I/home/kaj/.cache/node-gyp/20.19.4/deps/zlib -I/home/kaj/.cache/node-gyp/20.19.4/deps/v8/include -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++17 -MMD -MF ./Release/.deps/Release/obj.target/binding/binding.o.d.raw -c +Release/obj.target/binding/binding.o: ../binding.cc \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/node.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/cppgc/common.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8config.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-array-buffer.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-local-handle.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-internal.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-version.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8config.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-object.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-maybe.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-persistent-handle.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-weak-callback-info.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-primitive.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-data.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-value.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-traced-handle.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-container.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-context.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-snapshot.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-date.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-debug.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-script.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-callbacks.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-promise.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-message.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-exception.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-extension.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-external.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-function.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-function-callback.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-template.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-memory-span.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-initialization.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-isolate.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-embedder-heap.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-microtask.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-statistics.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-unwinder.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-embedder-state-scope.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-platform.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-json.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-locker.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-microtask-queue.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-primitive-object.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-proxy.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-regexp.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-typed-array.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-value-serializer.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-wasm.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/node_version.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/node_api.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/js_native_api.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/js_native_api_types.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/node_api_types.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8.h +../binding.cc: +/home/kaj/.cache/node-gyp/20.19.4/include/node/node.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/cppgc/common.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8config.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-array-buffer.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-local-handle.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-internal.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-version.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8config.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-object.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-maybe.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-persistent-handle.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-weak-callback-info.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-primitive.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-data.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-value.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-traced-handle.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-container.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-context.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-snapshot.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-date.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-debug.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-script.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-callbacks.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-promise.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-message.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-exception.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-extension.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-external.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-function.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-function-callback.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-template.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-memory-span.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-initialization.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-isolate.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-embedder-heap.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-microtask.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-statistics.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-unwinder.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-embedder-state-scope.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-platform.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-json.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-locker.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-microtask-queue.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-primitive-object.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-proxy.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-regexp.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-typed-array.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-value-serializer.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-wasm.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/node_version.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/node_api.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/js_native_api.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/js_native_api_types.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/node_api_types.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8.h: diff --git a/build/Release/.deps/Release/obj.target/binding2.node.d b/build/Release/.deps/Release/obj.target/binding2.node.d new file mode 100644 index 0000000..2ee6ad3 --- /dev/null +++ b/build/Release/.deps/Release/obj.target/binding2.node.d @@ -0,0 +1 @@ +cmd_Release/obj.target/binding2.node := g++ -o Release/obj.target/binding2.node -shared -pthread -rdynamic -m64 -Wl,-soname=binding2.node -Wl,--start-group Release/obj.target/binding2/binding2.o -Wl,--end-group diff --git a/build/Release/.deps/Release/obj.target/binding2/binding2.o.d b/build/Release/.deps/Release/obj.target/binding2/binding2.o.d new file mode 100644 index 0000000..09266b1 --- /dev/null +++ b/build/Release/.deps/Release/obj.target/binding2/binding2.o.d @@ -0,0 +1,127 @@ +cmd_Release/obj.target/binding2/binding2.o := g++ -o Release/obj.target/binding2/binding2.o ../binding2.cc '-DNODE_GYP_MODULE_NAME=binding2' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_FILE_OFFSET_BITS=64' '-D_LARGEFILE_SOURCE' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DBUILDING_NODE_EXTENSION' -I/home/kaj/.cache/node-gyp/20.19.4/include/node -I/home/kaj/.cache/node-gyp/20.19.4/src -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/config -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/openssl/include -I/home/kaj/.cache/node-gyp/20.19.4/deps/uv/include -I/home/kaj/.cache/node-gyp/20.19.4/deps/zlib -I/home/kaj/.cache/node-gyp/20.19.4/deps/v8/include -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++17 -MMD -MF ./Release/.deps/Release/obj.target/binding2/binding2.o.d.raw -c +Release/obj.target/binding2/binding2.o: ../binding2.cc \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/uv.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/uv/errno.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/uv/version.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/uv/unix.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/uv/threadpool.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/uv/linux.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/cppgc/common.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8config.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-array-buffer.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-local-handle.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-internal.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-version.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8config.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-object.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-maybe.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-persistent-handle.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-weak-callback-info.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-primitive.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-data.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-value.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-traced-handle.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-container.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-context.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-snapshot.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-date.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-debug.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-script.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-callbacks.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-promise.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-message.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-exception.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-extension.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-external.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-function.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-function-callback.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-template.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-memory-span.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-initialization.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-isolate.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-embedder-heap.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-microtask.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-statistics.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-unwinder.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-embedder-state-scope.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-platform.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-json.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-locker.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-microtask-queue.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-primitive-object.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-proxy.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-regexp.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-typed-array.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-value-serializer.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8-wasm.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/node.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/v8.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/node_version.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/node_api.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/js_native_api.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/js_native_api_types.h \ + /home/kaj/.cache/node-gyp/20.19.4/include/node/node_api_types.h +../binding2.cc: +/home/kaj/.cache/node-gyp/20.19.4/include/node/uv.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/uv/errno.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/uv/version.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/uv/unix.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/uv/threadpool.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/uv/linux.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/cppgc/common.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8config.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-array-buffer.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-local-handle.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-internal.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-version.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8config.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-object.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-maybe.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-persistent-handle.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-weak-callback-info.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-primitive.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-data.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-value.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-traced-handle.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-container.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-context.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-snapshot.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-date.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-debug.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-script.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-callbacks.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-promise.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-message.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-exception.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-extension.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-external.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-function.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-function-callback.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-template.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-memory-span.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-initialization.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-isolate.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-embedder-heap.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-microtask.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-statistics.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-unwinder.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-embedder-state-scope.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-platform.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-json.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-locker.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-microtask-queue.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-primitive-object.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-proxy.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-regexp.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-typed-array.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-value-serializer.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8-wasm.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/node.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/v8.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/node_version.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/node_api.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/js_native_api.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/js_native_api_types.h: +/home/kaj/.cache/node-gyp/20.19.4/include/node/node_api_types.h: diff --git a/build/Release/binding.node b/build/Release/binding.node new file mode 100755 index 0000000000000000000000000000000000000000..454752d8f97993f0aa4a6c732a93a013476fb174 GIT binary patch literal 13320 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 L@L5NILxukVFTjn0 literal 0 HcmV?d00001 diff --git a/build/Release/binding2.node b/build/Release/binding2.node new file mode 100755 index 0000000000000000000000000000000000000000..99de619c389d6b587f29161a40c5217fcdb24ae7 GIT binary patch literal 13072 zcmeHN4Qw1&5uWo;;-*RLhBQf2T3e+7r;e|8PVFQOp}CyTUdQ&;_1UE@4cqnI+P?H| z*X->%aZyzxx0Md#5+RT(C{jSG2tNW#2q~=uxJn7B5F%76R0Yvc2%M9Mh9W{z6fc^$ zGwb!{wzR20LfjX{b2D$|&Ahj7-@cjM$6`Gl6@dUSD&b?W$N}u8hC@xPfwJwe0(QgA zaFfujUTnGoKcGgYP-m;4k1G60yq6xXvGtg8JK8M+fFn2A?MIrI(hZe1-$0b@D#-2x z*_|Lera}RMiU2_FMT{8d7|Ff#R$JYnVoWqP{C#M>t>C30vSZ5r5~t17)!6ls-5mMz z(kz&O2)~1g(1Ju^<25S@Y zqZt1DDa*2~O)bcyyZMuXzYTeeW`0iaw;+%1=Vt}K5qS)2{;=TJAdjnd{*d5TAdgct zKPmVM2~mUx|E!Wm(e9 zuK6th^QL84I6i4+*9|xaGu0TEwBw?Ay)<3DZi_uF*I1`&>nCyW$B2@>G*gX!q|Fzl z7cN#xh2zo-f4NHv9G8B%V6K&>t4}xC9n@H-hHLBF7wvKGCwD!I%Ou}4C{6A9I^OtF z;k3C@n%VW#W`N>17c8rovMlR(^`lz=0{f2D);s>ue*S<6Uc@yRe)%~ZrZm%fX^rS8 zVPD#MY5LPO#a#=Qh1a)Eng*#5-5^cxyZ93JSKNv%)6qJ&v>jkjDx8jdysKbE?u`sa z2C%cn;zv+-=FwTHa7-#3FE%1uc)fTS>D0NJSa>e{(te0MhpQs|vQ&6|KS(pJie*_{ zh2#4H|JnYgUJUgVE=Yx+7S}FdSUYcobTLVy>x{OYap+dJ*_+3xo z&&7rX%jzloUMjrSQ@GGmu!=vvY*~-bnL9DI;#+7iqrUoy$b*r6kxxcsF>l50%a(Qa ztHZVRkBeKdxD)yBF7n?-{zqb7#l(rbpo}ugD5H!r$|$3ZGOiAIq~-tb1%s~C-Hk8# z$U6Yw7Plhdc^~~>`^bM*;iU9Su-8Zan?Py(dLQ}MeEPw>w_%A#8wDTzjXv^!`iu*& zL8<;R5i2DJSsuyinw&Eg!<1!^y9RpYlxnCW>71z=1HI9VuBijcP)4=eO1H?#gNi(y z)|5>85f$VI;w|Ib+Y+Xc)<(kNxO$+&(6fW)@b*|=JRxuE%IO)!RAYVJ$#_BzZ;h)5 zY~6v0F*TMZ`*4dgmX_0+sT!J+3AYUBJ$h2f#Ij@NL~NXtxUX=iQ#GS`!%#KTX$*%Y zMN4JWL{cA9qv55_y&Y^@>>#RZrh3rTPg_S`OPXn28&I=j7&?Z$w7b5J@&4|3LT(AM zZdA!+hLq&PUD~kT6;H^m_bQpZ8jHnZ$cV9YCGL=sjmW65Bat4_6fdOnNA1rjkuf!JHm!LpJOD8c8PQ z9CBflCvEvqT1%z1k(MBK2c11#d!lknuqD`v_h|qEP$B-}uPguA8p|se_lo?+^fg!v ztfx96*BQA^*GC1kS*jzl{1E9M^~mc;f6gOk{ty)cxgV42cu#xev((QKk9>;sPuy0K+|tQR9+R=}(}}C3nZO!6m052{gFm z?z(cLOYW{$hFo%tiLu=!=Q%~}cFD0w$BmlTyiYZG46B8SFsQP9&*W7yW|IS zBa?zrHIvaH7`)wCt;wXba)ma|1@8AacC3#EATWnAp6dz^AGon{Cq5%k=lmJVk^tc3 zS<5;B0Ef?6))>mqS=Q4O3)Wr{fk*lwaIh|LLYx`F&uMy9! z3;^_N?_i5B?(Q^E2)UJ(O>t3&Q838;R$$!balx9E8sn z1V4-azF_G>KnDD*KYE?5$Iti%YUgKi6UE18m<_hNbG9hbxrM@p?KBbm+~YF>9hV@q z&hCKajn~^e$5})6d{$t83zi*!4e49N^SqxY{*UDN67lTkzYXU-w+F{*qJBm6Ped;e zT}Jc0j_8Mpwh`?hdN0voqT@uLBb!?Awv9b)EKo$oVzfa|&n{%U!fabKu_DtL&-BhG|) zEF?K!M{x!OfEkkWKF0gZVR6P?50i9$=I>6v|cy^0lRZP6(a#5*Jd!aX;;eSoB;zq5uW;5g;|bBv+AH>nr-XdHGe3+k3;8-{zh%t&)YZ=W z$gi&`T^9`b)X#c-RReHi&PRTxvUGiJS=C}K!Ht`JzDd)(X?_&4csMrHZ!yHma(pn;@!(!=DHnVaPi4t)GG&3Rf2E|qCb$^?~g}%yP_b=1HDo1ptI-h zJ&_*y?v9Q`Y(O4}?CFVd`RqSka$Qp9-R&-p*(KliQH?EGy`w_%`>ZLxzY6G;=Kn** z-*-_qeaDKwDCGMUW#4OU*jXK=OYJ3IM3j8l0Kwcu)>MWdm@^HVj`A-}H`U;XmJbf) z)0tFrIt4+zGa-oedhks*7=p$(8A|551PC{@*H^m>@ zo$YKWmxEwZ&t_E(8+oun#WaodP~KF%XW^>>=3$s)(2>vgdsPM<+Z+VNxySy-7QyFU zrkv+7y!KCc>}M$urlPj!0;P8jy~AVA=R~IKd0+&#XWZ$r=QBA|&SM$g`0?C%!LoG6 z4Lcypc`WB~cs6%qFM!BR*`D)PrccuW6YcOP+w(E7pX&B(&-pM@&VLzvUS&K0AaYT* z=lqi?zk}uYS&!)mfXHo`=lqr_zl-$7&lsm#G~07N&6M+L_U|1(el&{LWDj-7`8iY0 z=g}Thcdz|tX0C;`b_zIZ3fRD(=T}LAHVOm8SJ0&Ecxg0`+bMa@UFk_d+g6s z{7h%rkl^+IL#pL)`or}Z{!W{hGlT7!z62oN1F=2VZ;sM;^Q^~Up6M$TKil*Bt+{_= z&v=9O9=7MY1%J2C6U+XX^0>}={PX*;6ZN(SUcU^sXL{aa&-J7t*^7^wU0^$=mpt~I z&rXtK&TARocrd}nzIgncm(GzQ`(g09WmJj04EQyj1GdNg-3_*9x+-8lKNu(a>|f`} ze*-HLyz3X6dF{JVM;j03Q3%{eanIxN@cxH&HXgehCpX#LS3C|q;Q*EoOW8ksn{EFg JkAa7Ue*qi8x0C$S&;voT&frIavP?~c72c6Y4V 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 L@L5NILxukVFTjn0 literal 0 HcmV?d00001 diff --git a/build/Release/obj.target/binding/binding.o b/build/Release/obj.target/binding/binding.o new file mode 100644 index 0000000000000000000000000000000000000000..e0754e05faa2a4577a3fb453e96e19afd44ef975 GIT binary patch literal 4824 zcmbtYU2GiH6+UYxv4MoRKp_yMY$Q~SREC{RHnu^aESs^%cv+0srd5hNjCZfSy0+@PfpT#6tx_h^A82LLVwip`pB02&qxkHthoQt|abNHKc=&o8Zh@O&LI31~PN&l` zw{pmu!DnT2h%a-V83V!RWd1#jv4o>mRQ|{sT;m{)rh}S_N|}m+Evn)4_#R zz#kI+FjEY!a!}L3hq(49&EQg)qu-%EC5oJ!M}ZkL_s6SvPl;*Qk?B^=YuBr3 zSF8y??YG^-P!sjK2by-@lH*n#cSWmIfL^0KZas+4Fu5uQ)xp=nRH1NxdUUF^a8Fv# zX&FsVXEWJc=16uTJvt|dZ*$;NGF(vnhbP0N_rVo55%P#*r5W9^bde*ce>Ae(%umi5uqj4h@ICPLQ0{m75IZ zS}6DU4e)IMsFBQnx-x}*dmjGTVCltOTf2X{XJcsK{m3c+i~ztZB)^xQNx*gOf`4~* znjh@0x*vmKcKU&S1{C>l%>d!IjQlK#hifDZ!XAF@A_(pDc#i+oum;z6<)S?z!l1%4 z-U?r^iv4&u9PU;;MEDi)hiT0C4dpYAs|ozURFwZX#uNCJ1pf6Dz)g^Xb7Uy2I{^GP zLH^SO{>udZ&VildyqLh>Hn_9=R097(0{=z=|HlNLHwoM?tdqrKj|y4ys&g}??AmxX zGud`4((&AaU9T_Ml~dF1vNv5STe&CfdRrKVfjZ;7Eul`X=vC}G${c%aX;oCDVHl-y z#_H2zVyxh~Qk+2Vt8@&CO1(&CQg`*8k8k%38}uEga^<=9nluE3PfuKDL#ERhuYyZcF;@ ziuC-4Ma^Dwq6F(l%T84o%gdr7!+Or5>xlw~X-Fx#!q>#E>r+B@CHu<7mG0GRoCU|q zLYC}?=vTO=zSQzZ%0l)_DyB|!e0{ZXLw#A1^~ic{J(hF>vTGYh{v-RuZGM|DEy5Izo_v075)_QXdivCoi#;X zwZEb8c#g9CFBD$&`v--;S&{!#;qi{ZcK)jH-&FYP=z@Xky;b24DEw^-f0TG!7oL%9 ze?pO0*Hu*b1B(2j!r!j&s|tUI!v9d=)ja$>fqzrs4=Q$ER`T!-h3ESouIoC5A6De? zUd8JrI=p%GZVkP&3f-g4yGan&jzAuL@V#VI;ZZ*PYlH5B2$aQt43l1%XFK&6&*%4R z3a`cqT5G)_?IqA!(vO}se)C1$*6{oRt!hgfw53)HG~dGkitCyVJt3_nZC|#VL^-Y_ zE!+3)bs|D7U(~fao`9fLyhcN~5;WJ7LYpcr+}o0NX*|!^l zQ}BNQ@7P#_zFg3K5%CuF4FkVL71&Got*G}vM4GOMBUCKxEi}db!}b3b@!W5W&trZW zaT@RBX!Gmp>*PPn4hZZ&{A)-7`{$>TkiSt{H{Y8X@%&-lcFJFd6f>lV`NJB;^Y>kV z@cWOif1LcYJcGylEGPJXiu`k(&_C+19`jB@{f?9WYx;r%AygCmpCSMJeWQPDskr}j z^3Qo<{DA!5#{_}v#?K#-ejL9f{Ww^U@e%+G#r7n`Ins~E#ql%VA^&lA{~+RR79_;= z@jTqAf3_)qPmvzx56@%P=lbD#;=U0-p@w>&CU2tiKdz5wL%jD8$7w_PTWm6(Ka49T Q5+Y6i5B2M4*hO6bD@#FQ>i_@% literal 0 HcmV?d00001 diff --git a/build/Release/obj.target/binding2.node b/build/Release/obj.target/binding2.node new file mode 100755 index 0000000000000000000000000000000000000000..99de619c389d6b587f29161a40c5217fcdb24ae7 GIT binary patch literal 13072 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 Mi2u{-w1%+$-~4{Rwg3PC literal 0 HcmV?d00001 diff --git a/build/binding.Makefile b/build/binding.Makefile new file mode 100644 index 0000000..cfe8ba7 --- /dev/null +++ b/build/binding.Makefile @@ -0,0 +1,6 @@ +# This file is generated by gyp; do not edit. + +export builddir_name ?= ./build/. +.PHONY: all +all: + $(MAKE) binding2 binding diff --git a/build/binding.target.mk b/build/binding.target.mk new file mode 100644 index 0000000..9432c10 --- /dev/null +++ b/build/binding.target.mk @@ -0,0 +1,154 @@ +# This file is generated by gyp; do not edit. + +TOOLSET := target +TARGET := binding +DEFS_Debug := \ + '-DNODE_GYP_MODULE_NAME=binding' \ + '-DUSING_UV_SHARED=1' \ + '-DUSING_V8_SHARED=1' \ + '-DV8_DEPRECATION_WARNINGS=1' \ + '-D_GLIBCXX_USE_CXX11_ABI=1' \ + '-D_FILE_OFFSET_BITS=64' \ + '-D_LARGEFILE_SOURCE' \ + '-D__STDC_FORMAT_MACROS' \ + '-DOPENSSL_NO_PINSHARED' \ + '-DOPENSSL_THREADS' \ + '-DBUILDING_NODE_EXTENSION' \ + '-DDEBUG' \ + '-D_DEBUG' + +# Flags passed to all source files. +CFLAGS_Debug := \ + -fPIC \ + -pthread \ + -Wall \ + -Wextra \ + -Wno-unused-parameter \ + -m64 \ + -g \ + -O0 + +# Flags passed to only C files. +CFLAGS_C_Debug := + +# Flags passed to only C++ files. +CFLAGS_CC_Debug := \ + -fno-rtti \ + -fno-exceptions \ + -std=gnu++17 + +INCS_Debug := \ + -I/home/kaj/.cache/node-gyp/20.19.4/include/node \ + -I/home/kaj/.cache/node-gyp/20.19.4/src \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/config \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/openssl/include \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/uv/include \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/zlib \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/v8/include + +DEFS_Release := \ + '-DNODE_GYP_MODULE_NAME=binding' \ + '-DUSING_UV_SHARED=1' \ + '-DUSING_V8_SHARED=1' \ + '-DV8_DEPRECATION_WARNINGS=1' \ + '-D_GLIBCXX_USE_CXX11_ABI=1' \ + '-D_FILE_OFFSET_BITS=64' \ + '-D_LARGEFILE_SOURCE' \ + '-D__STDC_FORMAT_MACROS' \ + '-DOPENSSL_NO_PINSHARED' \ + '-DOPENSSL_THREADS' \ + '-DBUILDING_NODE_EXTENSION' + +# Flags passed to all source files. +CFLAGS_Release := \ + -fPIC \ + -pthread \ + -Wall \ + -Wextra \ + -Wno-unused-parameter \ + -m64 \ + -O3 \ + -fno-omit-frame-pointer + +# Flags passed to only C files. +CFLAGS_C_Release := + +# Flags passed to only C++ files. +CFLAGS_CC_Release := \ + -fno-rtti \ + -fno-exceptions \ + -std=gnu++17 + +INCS_Release := \ + -I/home/kaj/.cache/node-gyp/20.19.4/include/node \ + -I/home/kaj/.cache/node-gyp/20.19.4/src \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/config \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/openssl/include \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/uv/include \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/zlib \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/v8/include + +OBJS := \ + $(obj).target/$(TARGET)/binding.o + +# Add to the list of files we specially track dependencies for. +all_deps += $(OBJS) + +# CFLAGS et al overrides must be target-local. +# See "Target-specific Variable Values" in the GNU Make manual. +$(OBJS): TOOLSET := $(TOOLSET) +$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) +$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) + +# Suffix rules, putting all outputs into $(obj). + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +# Try building from generated source, too. + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +# End of this set of suffix rules +### Rules for final target. +LDFLAGS_Debug := \ + -pthread \ + -rdynamic \ + -m64 + +LDFLAGS_Release := \ + -pthread \ + -rdynamic \ + -m64 + +LIBS := + +$(obj).target/binding.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) +$(obj).target/binding.node: LIBS := $(LIBS) +$(obj).target/binding.node: TOOLSET := $(TOOLSET) +$(obj).target/binding.node: $(OBJS) FORCE_DO_CMD + $(call do_cmd,solink_module) + +all_deps += $(obj).target/binding.node +# Add target alias +.PHONY: binding +binding: $(builddir)/binding.node + +# Copy this to the executable output path. +$(builddir)/binding.node: TOOLSET := $(TOOLSET) +$(builddir)/binding.node: $(obj).target/binding.node FORCE_DO_CMD + $(call do_cmd,copy) + +all_deps += $(builddir)/binding.node +# Short alias for building this executable. +.PHONY: binding.node +binding.node: $(obj).target/binding.node $(builddir)/binding.node + +# Add executable to "all" target. +.PHONY: all +all: $(builddir)/binding.node + diff --git a/build/binding2.target.mk b/build/binding2.target.mk new file mode 100644 index 0000000..3b1a7d1 --- /dev/null +++ b/build/binding2.target.mk @@ -0,0 +1,154 @@ +# This file is generated by gyp; do not edit. + +TOOLSET := target +TARGET := binding2 +DEFS_Debug := \ + '-DNODE_GYP_MODULE_NAME=binding2' \ + '-DUSING_UV_SHARED=1' \ + '-DUSING_V8_SHARED=1' \ + '-DV8_DEPRECATION_WARNINGS=1' \ + '-D_GLIBCXX_USE_CXX11_ABI=1' \ + '-D_FILE_OFFSET_BITS=64' \ + '-D_LARGEFILE_SOURCE' \ + '-D__STDC_FORMAT_MACROS' \ + '-DOPENSSL_NO_PINSHARED' \ + '-DOPENSSL_THREADS' \ + '-DBUILDING_NODE_EXTENSION' \ + '-DDEBUG' \ + '-D_DEBUG' + +# Flags passed to all source files. +CFLAGS_Debug := \ + -fPIC \ + -pthread \ + -Wall \ + -Wextra \ + -Wno-unused-parameter \ + -m64 \ + -g \ + -O0 + +# Flags passed to only C files. +CFLAGS_C_Debug := + +# Flags passed to only C++ files. +CFLAGS_CC_Debug := \ + -fno-rtti \ + -fno-exceptions \ + -std=gnu++17 + +INCS_Debug := \ + -I/home/kaj/.cache/node-gyp/20.19.4/include/node \ + -I/home/kaj/.cache/node-gyp/20.19.4/src \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/config \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/openssl/include \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/uv/include \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/zlib \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/v8/include + +DEFS_Release := \ + '-DNODE_GYP_MODULE_NAME=binding2' \ + '-DUSING_UV_SHARED=1' \ + '-DUSING_V8_SHARED=1' \ + '-DV8_DEPRECATION_WARNINGS=1' \ + '-D_GLIBCXX_USE_CXX11_ABI=1' \ + '-D_FILE_OFFSET_BITS=64' \ + '-D_LARGEFILE_SOURCE' \ + '-D__STDC_FORMAT_MACROS' \ + '-DOPENSSL_NO_PINSHARED' \ + '-DOPENSSL_THREADS' \ + '-DBUILDING_NODE_EXTENSION' + +# Flags passed to all source files. +CFLAGS_Release := \ + -fPIC \ + -pthread \ + -Wall \ + -Wextra \ + -Wno-unused-parameter \ + -m64 \ + -O3 \ + -fno-omit-frame-pointer + +# Flags passed to only C files. +CFLAGS_C_Release := + +# Flags passed to only C++ files. +CFLAGS_CC_Release := \ + -fno-rtti \ + -fno-exceptions \ + -std=gnu++17 + +INCS_Release := \ + -I/home/kaj/.cache/node-gyp/20.19.4/include/node \ + -I/home/kaj/.cache/node-gyp/20.19.4/src \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/config \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/openssl/openssl/include \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/uv/include \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/zlib \ + -I/home/kaj/.cache/node-gyp/20.19.4/deps/v8/include + +OBJS := \ + $(obj).target/$(TARGET)/binding2.o + +# Add to the list of files we specially track dependencies for. +all_deps += $(OBJS) + +# CFLAGS et al overrides must be target-local. +# See "Target-specific Variable Values" in the GNU Make manual. +$(OBJS): TOOLSET := $(TOOLSET) +$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) +$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) + +# Suffix rules, putting all outputs into $(obj). + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +# Try building from generated source, too. + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +# End of this set of suffix rules +### Rules for final target. +LDFLAGS_Debug := \ + -pthread \ + -rdynamic \ + -m64 + +LDFLAGS_Release := \ + -pthread \ + -rdynamic \ + -m64 + +LIBS := + +$(obj).target/binding2.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) +$(obj).target/binding2.node: LIBS := $(LIBS) +$(obj).target/binding2.node: TOOLSET := $(TOOLSET) +$(obj).target/binding2.node: $(OBJS) FORCE_DO_CMD + $(call do_cmd,solink_module) + +all_deps += $(obj).target/binding2.node +# Add target alias +.PHONY: binding2 +binding2: $(builddir)/binding2.node + +# Copy this to the executable output path. +$(builddir)/binding2.node: TOOLSET := $(TOOLSET) +$(builddir)/binding2.node: $(obj).target/binding2.node FORCE_DO_CMD + $(call do_cmd,copy) + +all_deps += $(builddir)/binding2.node +# Short alias for building this executable. +.PHONY: binding2.node +binding2.node: $(obj).target/binding2.node $(builddir)/binding2.node + +# Add executable to "all" target. +.PHONY: all +all: $(builddir)/binding2.node + diff --git a/build/config.gypi b/build/config.gypi new file mode 100644 index 0000000..f1d3b92 --- /dev/null +++ b/build/config.gypi @@ -0,0 +1,430 @@ +# Do not edit. File was generated by node-gyp's "configure" step +{ + "target_defaults": { + "cflags": [], + "default_configuration": "Release", + "defines": [], + "include_dirs": [], + "libraries": [] + }, + "variables": { + "asan": 0, + "clang": 0, + "coverage": "false", + "dcheck_always_on": 0, + "debug_nghttp2": "false", + "debug_node": "false", + "enable_lto": "false", + "enable_pgo_generate": "false", + "enable_pgo_use": "false", + "error_on_warn": "false", + "force_dynamic_crt": 0, + "gas_version": "2.35", + "host_arch": "x64", + "icu_data_in": "../../deps/icu-tmp/icudt77l.dat", + "icu_endianness": "l", + "icu_gyp_path": "tools/icu/icu-generic.gyp", + "icu_path": "deps/icu-small", + "icu_small": "false", + "icu_ver_major": "77", + "is_debug": 0, + "libdir": "lib", + "llvm_version": "0.0", + "napi_build_version": "9", + "node_builtin_shareable_builtins": [ + "deps/cjs-module-lexer/lexer.js", + "deps/cjs-module-lexer/dist/lexer.js", + "deps/undici/undici.js" + ], + "node_byteorder": "little", + "node_debug_lib": "false", + "node_enable_d8": "false", + "node_enable_v8_vtunejit": "false", + "node_fipsinstall": "false", + "node_install_corepack": "true", + "node_install_npm": "true", + "node_library_files": [ + "lib/_http_agent.js", + "lib/_http_client.js", + "lib/_http_common.js", + "lib/_http_incoming.js", + "lib/_http_outgoing.js", + "lib/_http_server.js", + "lib/_stream_duplex.js", + "lib/_stream_passthrough.js", + "lib/_stream_readable.js", + "lib/_stream_transform.js", + "lib/_stream_wrap.js", + "lib/_stream_writable.js", + "lib/_tls_common.js", + "lib/_tls_wrap.js", + "lib/assert.js", + "lib/assert/strict.js", + "lib/async_hooks.js", + "lib/buffer.js", + "lib/child_process.js", + "lib/cluster.js", + "lib/console.js", + "lib/constants.js", + "lib/crypto.js", + "lib/dgram.js", + "lib/diagnostics_channel.js", + "lib/dns.js", + "lib/dns/promises.js", + "lib/domain.js", + "lib/events.js", + "lib/fs.js", + "lib/fs/promises.js", + "lib/http.js", + "lib/http2.js", + "lib/https.js", + "lib/inspector.js", + "lib/inspector/promises.js", + "lib/internal/abort_controller.js", + "lib/internal/assert.js", + "lib/internal/assert/assertion_error.js", + "lib/internal/assert/calltracker.js", + "lib/internal/assert/utils.js", + "lib/internal/async_hooks.js", + "lib/internal/blob.js", + "lib/internal/blocklist.js", + "lib/internal/bootstrap/node.js", + "lib/internal/bootstrap/realm.js", + "lib/internal/bootstrap/shadow_realm.js", + "lib/internal/bootstrap/switches/does_not_own_process_state.js", + "lib/internal/bootstrap/switches/does_own_process_state.js", + "lib/internal/bootstrap/switches/is_main_thread.js", + "lib/internal/bootstrap/switches/is_not_main_thread.js", + "lib/internal/bootstrap/web/exposed-wildcard.js", + "lib/internal/bootstrap/web/exposed-window-or-worker.js", + "lib/internal/buffer.js", + "lib/internal/child_process.js", + "lib/internal/child_process/serialization.js", + "lib/internal/cli_table.js", + "lib/internal/cluster/child.js", + "lib/internal/cluster/primary.js", + "lib/internal/cluster/round_robin_handle.js", + "lib/internal/cluster/shared_handle.js", + "lib/internal/cluster/utils.js", + "lib/internal/cluster/worker.js", + "lib/internal/console/constructor.js", + "lib/internal/console/global.js", + "lib/internal/constants.js", + "lib/internal/crypto/aes.js", + "lib/internal/crypto/certificate.js", + "lib/internal/crypto/cfrg.js", + "lib/internal/crypto/cipher.js", + "lib/internal/crypto/diffiehellman.js", + "lib/internal/crypto/ec.js", + "lib/internal/crypto/hash.js", + "lib/internal/crypto/hashnames.js", + "lib/internal/crypto/hkdf.js", + "lib/internal/crypto/keygen.js", + "lib/internal/crypto/keys.js", + "lib/internal/crypto/mac.js", + "lib/internal/crypto/pbkdf2.js", + "lib/internal/crypto/random.js", + "lib/internal/crypto/rsa.js", + "lib/internal/crypto/scrypt.js", + "lib/internal/crypto/sig.js", + "lib/internal/crypto/util.js", + "lib/internal/crypto/webcrypto.js", + "lib/internal/crypto/webidl.js", + "lib/internal/crypto/x509.js", + "lib/internal/debugger/inspect.js", + "lib/internal/debugger/inspect_client.js", + "lib/internal/debugger/inspect_repl.js", + "lib/internal/dgram.js", + "lib/internal/dns/callback_resolver.js", + "lib/internal/dns/promises.js", + "lib/internal/dns/utils.js", + "lib/internal/encoding.js", + "lib/internal/error_serdes.js", + "lib/internal/errors.js", + "lib/internal/event_target.js", + "lib/internal/events/abort_listener.js", + "lib/internal/events/symbols.js", + "lib/internal/file.js", + "lib/internal/fixed_queue.js", + "lib/internal/freelist.js", + "lib/internal/freeze_intrinsics.js", + "lib/internal/fs/cp/cp-sync.js", + "lib/internal/fs/cp/cp.js", + "lib/internal/fs/dir.js", + "lib/internal/fs/promises.js", + "lib/internal/fs/read/context.js", + "lib/internal/fs/recursive_watch.js", + "lib/internal/fs/rimraf.js", + "lib/internal/fs/streams.js", + "lib/internal/fs/sync_write_stream.js", + "lib/internal/fs/utils.js", + "lib/internal/fs/watchers.js", + "lib/internal/heap_utils.js", + "lib/internal/histogram.js", + "lib/internal/http.js", + "lib/internal/http2/compat.js", + "lib/internal/http2/core.js", + "lib/internal/http2/util.js", + "lib/internal/inspector_async_hook.js", + "lib/internal/inspector_network_tracking.js", + "lib/internal/js_stream_socket.js", + "lib/internal/legacy/processbinding.js", + "lib/internal/linkedlist.js", + "lib/internal/main/check_syntax.js", + "lib/internal/main/embedding.js", + "lib/internal/main/eval_stdin.js", + "lib/internal/main/eval_string.js", + "lib/internal/main/inspect.js", + "lib/internal/main/mksnapshot.js", + "lib/internal/main/print_help.js", + "lib/internal/main/prof_process.js", + "lib/internal/main/repl.js", + "lib/internal/main/run_main_module.js", + "lib/internal/main/test_runner.js", + "lib/internal/main/watch_mode.js", + "lib/internal/main/worker_thread.js", + "lib/internal/mime.js", + "lib/internal/modules/cjs/loader.js", + "lib/internal/modules/esm/assert.js", + "lib/internal/modules/esm/create_dynamic_module.js", + "lib/internal/modules/esm/fetch_module.js", + "lib/internal/modules/esm/formats.js", + "lib/internal/modules/esm/get_format.js", + "lib/internal/modules/esm/hooks.js", + "lib/internal/modules/esm/initialize_import_meta.js", + "lib/internal/modules/esm/load.js", + "lib/internal/modules/esm/loader.js", + "lib/internal/modules/esm/module_job.js", + "lib/internal/modules/esm/module_map.js", + "lib/internal/modules/esm/package_config.js", + "lib/internal/modules/esm/resolve.js", + "lib/internal/modules/esm/shared_constants.js", + "lib/internal/modules/esm/translators.js", + "lib/internal/modules/esm/utils.js", + "lib/internal/modules/esm/worker.js", + "lib/internal/modules/helpers.js", + "lib/internal/modules/package_json_reader.js", + "lib/internal/modules/run_main.js", + "lib/internal/navigator.js", + "lib/internal/net.js", + "lib/internal/options.js", + "lib/internal/per_context/domexception.js", + "lib/internal/per_context/messageport.js", + "lib/internal/per_context/primordials.js", + "lib/internal/perf/event_loop_delay.js", + "lib/internal/perf/event_loop_utilization.js", + "lib/internal/perf/nodetiming.js", + "lib/internal/perf/observe.js", + "lib/internal/perf/performance.js", + "lib/internal/perf/performance_entry.js", + "lib/internal/perf/resource_timing.js", + "lib/internal/perf/timerify.js", + "lib/internal/perf/usertiming.js", + "lib/internal/perf/utils.js", + "lib/internal/policy/manifest.js", + "lib/internal/policy/sri.js", + "lib/internal/priority_queue.js", + "lib/internal/process/execution.js", + "lib/internal/process/per_thread.js", + "lib/internal/process/permission.js", + "lib/internal/process/policy.js", + "lib/internal/process/pre_execution.js", + "lib/internal/process/promises.js", + "lib/internal/process/report.js", + "lib/internal/process/signal.js", + "lib/internal/process/task_queues.js", + "lib/internal/process/warning.js", + "lib/internal/process/worker_thread_only.js", + "lib/internal/promise_hooks.js", + "lib/internal/querystring.js", + "lib/internal/readline/callbacks.js", + "lib/internal/readline/emitKeypressEvents.js", + "lib/internal/readline/interface.js", + "lib/internal/readline/promises.js", + "lib/internal/readline/utils.js", + "lib/internal/repl.js", + "lib/internal/repl/await.js", + "lib/internal/repl/history.js", + "lib/internal/repl/utils.js", + "lib/internal/socket_list.js", + "lib/internal/socketaddress.js", + "lib/internal/source_map/prepare_stack_trace.js", + "lib/internal/source_map/source_map.js", + "lib/internal/source_map/source_map_cache.js", + "lib/internal/source_map/source_map_cache_map.js", + "lib/internal/stream_base_commons.js", + "lib/internal/streams/add-abort-signal.js", + "lib/internal/streams/compose.js", + "lib/internal/streams/destroy.js", + "lib/internal/streams/duplex.js", + "lib/internal/streams/duplexify.js", + "lib/internal/streams/duplexpair.js", + "lib/internal/streams/end-of-stream.js", + "lib/internal/streams/from.js", + "lib/internal/streams/lazy_transform.js", + "lib/internal/streams/legacy.js", + "lib/internal/streams/operators.js", + "lib/internal/streams/passthrough.js", + "lib/internal/streams/pipeline.js", + "lib/internal/streams/readable.js", + "lib/internal/streams/state.js", + "lib/internal/streams/transform.js", + "lib/internal/streams/utils.js", + "lib/internal/streams/writable.js", + "lib/internal/test/binding.js", + "lib/internal/test/transfer.js", + "lib/internal/test_runner/coverage.js", + "lib/internal/test_runner/harness.js", + "lib/internal/test_runner/mock/loader.js", + "lib/internal/test_runner/mock/mock.js", + "lib/internal/test_runner/mock/mock_timers.js", + "lib/internal/test_runner/reporter/dot.js", + "lib/internal/test_runner/reporter/junit.js", + "lib/internal/test_runner/reporter/lcov.js", + "lib/internal/test_runner/reporter/spec.js", + "lib/internal/test_runner/reporter/tap.js", + "lib/internal/test_runner/reporter/utils.js", + "lib/internal/test_runner/reporter/v8-serializer.js", + "lib/internal/test_runner/runner.js", + "lib/internal/test_runner/test.js", + "lib/internal/test_runner/tests_stream.js", + "lib/internal/test_runner/utils.js", + "lib/internal/timers.js", + "lib/internal/tls/secure-context.js", + "lib/internal/tls/secure-pair.js", + "lib/internal/trace_events_async_hooks.js", + "lib/internal/tty.js", + "lib/internal/url.js", + "lib/internal/util.js", + "lib/internal/util/colors.js", + "lib/internal/util/comparisons.js", + "lib/internal/util/debuglog.js", + "lib/internal/util/inspect.js", + "lib/internal/util/inspector.js", + "lib/internal/util/parse_args/parse_args.js", + "lib/internal/util/parse_args/utils.js", + "lib/internal/util/types.js", + "lib/internal/v8/startup_snapshot.js", + "lib/internal/v8_prof_polyfill.js", + "lib/internal/v8_prof_processor.js", + "lib/internal/validators.js", + "lib/internal/vm.js", + "lib/internal/vm/module.js", + "lib/internal/wasm_web_api.js", + "lib/internal/watch_mode/files_watcher.js", + "lib/internal/watchdog.js", + "lib/internal/webidl.js", + "lib/internal/webstreams/adapters.js", + "lib/internal/webstreams/compression.js", + "lib/internal/webstreams/encoding.js", + "lib/internal/webstreams/queuingstrategies.js", + "lib/internal/webstreams/readablestream.js", + "lib/internal/webstreams/transfer.js", + "lib/internal/webstreams/transformstream.js", + "lib/internal/webstreams/util.js", + "lib/internal/webstreams/writablestream.js", + "lib/internal/worker.js", + "lib/internal/worker/io.js", + "lib/internal/worker/js_transferable.js", + "lib/internal/worker/messaging.js", + "lib/module.js", + "lib/net.js", + "lib/os.js", + "lib/path.js", + "lib/path/posix.js", + "lib/path/win32.js", + "lib/perf_hooks.js", + "lib/process.js", + "lib/punycode.js", + "lib/querystring.js", + "lib/readline.js", + "lib/readline/promises.js", + "lib/repl.js", + "lib/sea.js", + "lib/stream.js", + "lib/stream/consumers.js", + "lib/stream/promises.js", + "lib/stream/web.js", + "lib/string_decoder.js", + "lib/sys.js", + "lib/test.js", + "lib/test/reporters.js", + "lib/timers.js", + "lib/timers/promises.js", + "lib/tls.js", + "lib/trace_events.js", + "lib/tty.js", + "lib/url.js", + "lib/util.js", + "lib/util/types.js", + "lib/v8.js", + "lib/vm.js", + "lib/wasi.js", + "lib/worker_threads.js", + "lib/zlib.js" + ], + "node_module_version": 115, + "node_no_browser_globals": "false", + "node_prefix": "/", + "node_release_urlbase": "https://nodejs.org/download/release/", + "node_section_ordering_info": "", + "node_shared": "false", + "node_shared_ada": "false", + "node_shared_brotli": "false", + "node_shared_cares": "false", + "node_shared_http_parser": "false", + "node_shared_libuv": "false", + "node_shared_nghttp2": "false", + "node_shared_nghttp3": "false", + "node_shared_ngtcp2": "false", + "node_shared_openssl": "false", + "node_shared_simdjson": "false", + "node_shared_simdutf": "false", + "node_shared_uvwasi": "false", + "node_shared_zlib": "false", + "node_tag": "", + "node_target_type": "executable", + "node_use_bundled_v8": "true", + "node_use_node_code_cache": "true", + "node_use_node_snapshot": "true", + "node_use_openssl": "true", + "node_use_v8_platform": "true", + "node_with_ltcg": "false", + "node_without_node_options": "false", + "node_write_snapshot_as_array_literals": "false", + "openssl_is_fips": "false", + "openssl_quic": "true", + "ossfuzz": "false", + "shlib_suffix": "so.115", + "single_executable_application": "true", + "target_arch": "x64", + "ubsan": 0, + "use_prefix_to_find_headers": "false", + "v8_enable_31bit_smis_on_64bit_arch": 0, + "v8_enable_extensible_ro_snapshot": 0, + "v8_enable_gdbjit": 0, + "v8_enable_hugepage": 0, + "v8_enable_i18n_support": 1, + "v8_enable_inspector": 1, + "v8_enable_javascript_promise_hooks": 1, + "v8_enable_lite_mode": 0, + "v8_enable_maglev": 0, + "v8_enable_object_print": 1, + "v8_enable_pointer_compression": 0, + "v8_enable_sandbox": 0, + "v8_enable_shared_ro_heap": 1, + "v8_enable_short_builtin_calls": 1, + "v8_enable_v8_checks": 0, + "v8_enable_webassembly": 1, + "v8_no_strict_aliasing": 1, + "v8_optimized_debug": 1, + "v8_promise_internal_field_count": 1, + "v8_random_seed": 0, + "v8_trace_maps": 0, + "v8_use_siphash": 1, + "want_separate_host_toolset": 0, + "nodedir": "/home/kaj/.cache/node-gyp/20.19.4", + "python": "/usr/bin/python3", + "standalone_static_library": 1 + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..485a30d --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "targets": [ + { + "target_name": "binding", + "sources": [ "src/binding.cc" ] + } + ] +} \ No newline at end of file diff --git a/src/binding.cc b/src/binding.cc new file mode 100644 index 0000000..b9a13be --- /dev/null +++ b/src/binding.cc @@ -0,0 +1,33 @@ +#include +#include + +static void Method(const v8::FunctionCallbackInfo& args) { + v8::Isolate* isolate = args.GetIsolate(); + args.GetReturnValue().Set(v8::String::NewFromUtf8( + isolate, "world").ToLocalChecked()); +} + +// Not using the full NODE_MODULE_INIT() macro here because we want to test the +// addon loader's reaction to the FakeInit() entry point below. +extern "C" NODE_MODULE_EXPORT void +NODE_MODULE_INITIALIZER(v8::Local exports, + v8::Local module, + v8::Local context) { + NODE_SET_METHOD(exports, "hello", Method); +} + +static void FakeInit(v8::Local exports, + v8::Local module, + v8::Local context) { + auto isolate = context->GetIsolate(); + auto exception = v8::Exception::Error(v8::String::NewFromUtf8(isolate, + "FakeInit should never run!").ToLocalChecked()); + isolate->ThrowException(exception); +} + +// Define a Node.js module, but with the wrong version. Node.js should still be +// able to load this module, multiple times even, because it exposes the +// specially named initializer above. +#undef NODE_MODULE_VERSION +#define NODE_MODULE_VERSION 3 +NODE_MODULE(NODE_GYP_MODULE_NAME, FakeInit) \ No newline at end of file diff --git a/src/binding.gyp b/src/binding.gyp new file mode 100644 index 0000000..52ea244 --- /dev/null +++ b/src/binding.gyp @@ -0,0 +1,12 @@ +{ + 'targets': [ + { + 'target_name': 'binding', + 'sources': [ 'binding.cc' ] + }, + { + 'target_name': 'binding2', + 'sources': [ 'binding2.cc' ] + } + ] +} \ No newline at end of file diff --git a/src/binding2.cc b/src/binding2.cc new file mode 100644 index 0000000..affa77a --- /dev/null +++ b/src/binding2.cc @@ -0,0 +1,21 @@ +// Include uv.h and v8.h ahead of node.h to verify that node.h doesn't need to +// be included first. Disable clang-format as it will sort the include lists. +// clang-format off +#include +#include +#include +// clang-format on + +static void Method(const v8::FunctionCallbackInfo& args) { + v8::Isolate* isolate = args.GetIsolate(); + args.GetReturnValue().Set( + v8::String::NewFromUtf8(isolate, "world").ToLocalChecked()); +} + +static void InitModule(v8::Local exports, + v8::Local module, + v8::Local context) { + NODE_SET_METHOD(exports, "hello", Method); +} + +NODE_MODULE(NODE_GYP_MODULE_NAME, InitModule) diff --git a/test-worker.js b/test-worker.js new file mode 100644 index 0000000..1362891 --- /dev/null +++ b/test-worker.js @@ -0,0 +1,13 @@ +'use strict'; +const common = require('../../common'); +const assert = require('assert'); +const path = require('path'); +const { Worker } = require('worker_threads'); +const binding = path.resolve(__dirname, `./build/${common.buildType}/binding`); + +const w = new Worker(` +require('worker_threads').parentPort.postMessage( + require(${JSON.stringify(binding)}).hello());`, { eval: true }); +w.on('message', common.mustCall((message) => { + assert.strictEqual(message, 'world'); +})); \ No newline at end of file diff --git a/test.js b/test.js new file mode 100644 index 0000000..a9f7ef5 --- /dev/null +++ b/test.js @@ -0,0 +1,3 @@ +const binding = require("./build/Release/binding"); + +console.log(binding.hello()); // Will log "hello world" \ No newline at end of file