commit 2991a390942ea72e959ef71f69b313d04ce281ea Author: kaj dijkstra Date: Thu Dec 25 11:03:04 2025 +0100 First commit 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 0000000..454752d Binary files /dev/null and b/build/Release/binding.node differ diff --git a/build/Release/binding2.node b/build/Release/binding2.node new file mode 100755 index 0000000..99de619 Binary files /dev/null and b/build/Release/binding2.node differ diff --git a/build/Release/obj.target/binding.node b/build/Release/obj.target/binding.node new file mode 100755 index 0000000..454752d Binary files /dev/null and b/build/Release/obj.target/binding.node differ diff --git a/build/Release/obj.target/binding/binding.o b/build/Release/obj.target/binding/binding.o new file mode 100644 index 0000000..e0754e0 Binary files /dev/null and b/build/Release/obj.target/binding/binding.o differ diff --git a/build/Release/obj.target/binding2.node b/build/Release/obj.target/binding2.node new file mode 100755 index 0000000..99de619 Binary files /dev/null and b/build/Release/obj.target/binding2.node differ diff --git a/build/Release/obj.target/binding2/binding2.o b/build/Release/obj.target/binding2/binding2.o new file mode 100644 index 0000000..995ac46 Binary files /dev/null and b/build/Release/obj.target/binding2/binding2.o differ 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