This commit is contained in:
@@ -37,3 +37,56 @@ hawk_LDFLAGS = $(LDFLAGS_COMMON)
|
|||||||
## of different behavior depending on the libtool tag.
|
## of different behavior depending on the libtool tag.
|
||||||
##
|
##
|
||||||
hawk_LDADD = $(LIBADD_COMMON) $(LIBM)
|
hawk_LDADD = $(LIBADD_COMMON) $(LIBM)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ENABLE_HAWKGO
|
||||||
|
|
||||||
|
## the attempt to compose a proper procedure using a regular compiler failed.
|
||||||
|
## e.g ./configure GOC=opt/go/pkg/tool/linux_amd64/
|
||||||
|
## while go.m4 is included in autoconf 2.71, the support for the go language
|
||||||
|
## is very limited and the go language itself is pursuing the module based builder.
|
||||||
|
##
|
||||||
|
## the following is to trick autoconf/automake as if it's building go files with
|
||||||
|
## a real compiler whereas the actual building is done thru `go build`
|
||||||
|
|
||||||
|
bin_PROGRAMS += hawkgo
|
||||||
|
hawkgo_SOURCES = \
|
||||||
|
../go.mod \
|
||||||
|
../hawk.go \
|
||||||
|
../hawk-inst.go \
|
||||||
|
hawkgo.go
|
||||||
|
##hawkgo_DEPENDENCIES =
|
||||||
|
|
||||||
|
## let the linker to move hawkgo.bin to the actual target
|
||||||
|
##hawkgo_LINK = mv -f hawkgo.bin hawkgo$(EXEEXT) || echo "FAILED TO LINK"
|
||||||
|
hawkgo_LINK =
|
||||||
|
|
||||||
|
if ENABLE_STATIC
|
||||||
|
CGO_CFLAGS_ADD="-static"
|
||||||
|
CGO_LDFLAGS_ADD="-static"
|
||||||
|
else
|
||||||
|
CGO_CFLAGS_ADD=""
|
||||||
|
CGO_LDFLAGS_ADD=""
|
||||||
|
endif
|
||||||
|
|
||||||
|
hawkgo$(EXEEXT): ../lib/libhawk.la $(hawkgo_OBJECTS)
|
||||||
|
cp -pf $(top_srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true
|
||||||
|
chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change
|
||||||
|
[ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true
|
||||||
|
## ---------------------------------------------------------------
|
||||||
|
CC=$(CC) \
|
||||||
|
CGO_CFLAGS="-I$(abs_top_srcdir)/lib -I$(abs_top_builddir)/lib $(CFLAGS) $(CGO_CFLAGS_EXTRA) $(CGO_CFLAGS_ADD)" \
|
||||||
|
CGO_LDFLAGS="-L$(abs_top_builddir)/lib -L$(abs_top_builddir)/lib/.libs -lhawk -ldl $(LIBM) $(CGO_LDFLAGS_EXTRA) $(CGO_LDFLAGS_ADD)" \
|
||||||
|
go build -C $(srcdir) -ldflags "-X 'main.BINDIR=$(bindir)' -X 'main.SBINDIR=$(sbindir)' -X 'main.LIBDIR=$(libdir)' -X 'main.SYSCONFDIR=$(sysconfdir)'" -x -o $(abs_builddir)/$@ -modfile $(abs_builddir)/go.mod $(abs_srcdir)/hawkgo.go
|
||||||
|
## ---------------------------------------------------------------
|
||||||
|
go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod
|
||||||
|
|
||||||
|
## the go to o recipe is fake to deceive make
|
||||||
|
.go.o:
|
||||||
|
echo $< > $@
|
||||||
|
|
||||||
|
.mod.o:
|
||||||
|
echo $< > $@
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -90,7 +90,8 @@ PRE_UNINSTALL = :
|
|||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
bin_PROGRAMS = hawk$(EXEEXT)
|
bin_PROGRAMS = hawk$(EXEEXT) $(am__EXEEXT_1)
|
||||||
|
@ENABLE_HAWKGO_TRUE@am__append_1 = hawkgo
|
||||||
subdir = bin
|
subdir = bin
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
||||||
@@ -109,6 +110,7 @@ mkinstalldirs = $(install_sh) -d
|
|||||||
CONFIG_HEADER = $(top_builddir)/lib/hawk-cfg.h
|
CONFIG_HEADER = $(top_builddir)/lib/hawk-cfg.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
@ENABLE_HAWKGO_TRUE@am__EXEEXT_1 = hawkgo$(EXEEXT)
|
||||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
am_hawk_OBJECTS = hawk-cut.$(OBJEXT) hawk-hawk.$(OBJEXT) \
|
am_hawk_OBJECTS = hawk-cut.$(OBJEXT) hawk-hawk.$(OBJEXT) \
|
||||||
@@ -123,6 +125,14 @@ am__v_lt_1 =
|
|||||||
hawk_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
hawk_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(hawk_CFLAGS) $(CFLAGS) \
|
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(hawk_CFLAGS) $(CFLAGS) \
|
||||||
$(hawk_LDFLAGS) $(LDFLAGS) -o $@
|
$(hawk_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
am__hawkgo_SOURCES_DIST = ../go.mod ../hawk.go ../hawk-inst.go \
|
||||||
|
hawkgo.go
|
||||||
|
am__dirstamp = $(am__leading_dot)dirstamp
|
||||||
|
@ENABLE_HAWKGO_TRUE@am_hawkgo_OBJECTS = ../go.$(OBJEXT) \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ ../hawk.$(OBJEXT) ../hawk-inst.$(OBJEXT) \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ hawkgo.$(OBJEXT)
|
||||||
|
hawkgo_OBJECTS = $(am_hawkgo_OBJECTS)
|
||||||
|
hawkgo_LDADD = $(LDADD)
|
||||||
AM_V_P = $(am__v_P_@AM_V@)
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
am__v_P_0 = false
|
am__v_P_0 = false
|
||||||
@@ -159,8 +169,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
|||||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
am__v_CCLD_1 =
|
am__v_CCLD_1 =
|
||||||
SOURCES = $(hawk_SOURCES)
|
SOURCES = $(hawk_SOURCES) $(hawkgo_SOURCES)
|
||||||
DIST_SOURCES = $(hawk_SOURCES)
|
DIST_SOURCES = $(hawk_SOURCES) $(am__hawkgo_SOURCES_DIST)
|
||||||
am__can_run_installinfo = \
|
am__can_run_installinfo = \
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
n|no|NO) false;; \
|
n|no|NO) false;; \
|
||||||
@@ -361,10 +371,21 @@ hawk_CPPFLAGS = $(CPPFLAGS_COMMON)
|
|||||||
hawk_CFLAGS = $(CFLAGS_COMMON)
|
hawk_CFLAGS = $(CFLAGS_COMMON)
|
||||||
hawk_LDFLAGS = $(LDFLAGS_COMMON)
|
hawk_LDFLAGS = $(LDFLAGS_COMMON)
|
||||||
hawk_LDADD = $(LIBADD_COMMON) $(LIBM)
|
hawk_LDADD = $(LIBADD_COMMON) $(LIBM)
|
||||||
|
@ENABLE_HAWKGO_TRUE@hawkgo_SOURCES = \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ ../go.mod \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ ../hawk.go \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ ../hawk-inst.go \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ hawkgo.go
|
||||||
|
|
||||||
|
@ENABLE_HAWKGO_TRUE@hawkgo_LINK =
|
||||||
|
@ENABLE_HAWKGO_TRUE@@ENABLE_STATIC_FALSE@CGO_CFLAGS_ADD = ""
|
||||||
|
@ENABLE_HAWKGO_TRUE@@ENABLE_STATIC_TRUE@CGO_CFLAGS_ADD = "-static"
|
||||||
|
@ENABLE_HAWKGO_TRUE@@ENABLE_STATIC_FALSE@CGO_LDFLAGS_ADD = ""
|
||||||
|
@ENABLE_HAWKGO_TRUE@@ENABLE_STATIC_TRUE@CGO_LDFLAGS_ADD = "-static"
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .c .lo .o .obj
|
.SUFFIXES: .c .go .lo .mod .o .obj
|
||||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
@@ -442,9 +463,24 @@ clean-binPROGRAMS:
|
|||||||
hawk$(EXEEXT): $(hawk_OBJECTS) $(hawk_DEPENDENCIES) $(EXTRA_hawk_DEPENDENCIES)
|
hawk$(EXEEXT): $(hawk_OBJECTS) $(hawk_DEPENDENCIES) $(EXTRA_hawk_DEPENDENCIES)
|
||||||
@rm -f hawk$(EXEEXT)
|
@rm -f hawk$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(hawk_LINK) $(hawk_OBJECTS) $(hawk_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(hawk_LINK) $(hawk_OBJECTS) $(hawk_LDADD) $(LIBS)
|
||||||
|
../$(am__dirstamp):
|
||||||
|
@$(MKDIR_P) ..
|
||||||
|
@: >>../$(am__dirstamp)
|
||||||
|
../$(DEPDIR)/$(am__dirstamp):
|
||||||
|
@$(MKDIR_P) ../$(DEPDIR)
|
||||||
|
@: >>../$(DEPDIR)/$(am__dirstamp)
|
||||||
|
../go.$(OBJEXT): ../$(am__dirstamp) ../$(DEPDIR)/$(am__dirstamp)
|
||||||
|
../hawk.$(OBJEXT): ../$(am__dirstamp) ../$(DEPDIR)/$(am__dirstamp)
|
||||||
|
../hawk-inst.$(OBJEXT): ../$(am__dirstamp) \
|
||||||
|
../$(DEPDIR)/$(am__dirstamp)
|
||||||
|
|
||||||
|
@ENABLE_HAWKGO_FALSE@hawkgo$(EXEEXT): $(hawkgo_OBJECTS) $(hawkgo_DEPENDENCIES) $(EXTRA_hawkgo_DEPENDENCIES)
|
||||||
|
@ENABLE_HAWKGO_FALSE@ @rm -f hawkgo$(EXEEXT)
|
||||||
|
@ENABLE_HAWKGO_FALSE@ $(AM_V_GEN)$(hawkgo_LINK) $(hawkgo_OBJECTS) $(hawkgo_LDADD) $(LIBS)
|
||||||
|
|
||||||
mostlyclean-compile:
|
mostlyclean-compile:
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
-rm -f ../*.$(OBJEXT)
|
||||||
|
|
||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
@@ -664,6 +700,8 @@ clean-generic:
|
|||||||
distclean-generic:
|
distclean-generic:
|
||||||
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
|
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
|
||||||
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
|
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
-$(am__rm_f) ../$(DEPDIR)/$(am__dirstamp)
|
||||||
|
-$(am__rm_f) ../$(am__dirstamp)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@@ -763,6 +801,22 @@ uninstall-am: uninstall-binPROGRAMS
|
|||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
|
|
||||||
|
|
||||||
|
@ENABLE_HAWKGO_TRUE@hawkgo$(EXEEXT): ../lib/libhawk.la $(hawkgo_OBJECTS)
|
||||||
|
@ENABLE_HAWKGO_TRUE@ cp -pf $(top_srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true
|
||||||
|
@ENABLE_HAWKGO_TRUE@ chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change
|
||||||
|
@ENABLE_HAWKGO_TRUE@ [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true
|
||||||
|
@ENABLE_HAWKGO_TRUE@ CC=$(CC) \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ CGO_CFLAGS="-I$(abs_top_srcdir)/lib -I$(abs_top_builddir)/lib $(CFLAGS) $(CGO_CFLAGS_EXTRA) $(CGO_CFLAGS_ADD)" \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ CGO_LDFLAGS="-L$(abs_top_builddir)/lib -L$(abs_top_builddir)/lib/.libs -lhawk -ldl $(LIBM) $(CGO_LDFLAGS_EXTRA) $(CGO_LDFLAGS_ADD)" \
|
||||||
|
@ENABLE_HAWKGO_TRUE@ go build -C $(srcdir) -ldflags "-X 'main.BINDIR=$(bindir)' -X 'main.SBINDIR=$(sbindir)' -X 'main.LIBDIR=$(libdir)' -X 'main.SYSCONFDIR=$(sysconfdir)'" -x -o $(abs_builddir)/$@ -modfile $(abs_builddir)/go.mod $(abs_srcdir)/hawkgo.go
|
||||||
|
@ENABLE_HAWKGO_TRUE@ go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod
|
||||||
|
|
||||||
|
@ENABLE_HAWKGO_TRUE@.go.o:
|
||||||
|
@ENABLE_HAWKGO_TRUE@ echo $< > $@
|
||||||
|
|
||||||
|
@ENABLE_HAWKGO_TRUE@.mod.o:
|
||||||
|
@ENABLE_HAWKGO_TRUE@ echo $< > $@
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
|||||||
72
bin/hawkgo.go
Normal file
72
bin/hawkgo.go
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "hawk"
|
||||||
|
import "fmt"
|
||||||
|
import "os"
|
||||||
|
import "runtime"
|
||||||
|
import "runtime/debug"
|
||||||
|
//import "sync"
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
func exit_with_error(msg string, err error) {
|
||||||
|
fmt.Printf("ERROR: %s - %s\n", msg, err.Error())
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func make_hawk(script string) (*hawk.Hawk, error) {
|
||||||
|
var h *hawk.Hawk
|
||||||
|
var err error
|
||||||
|
|
||||||
|
h, err = hawk.New()
|
||||||
|
if err != nil { return nil, err }
|
||||||
|
|
||||||
|
err = h.ParseText(script)
|
||||||
|
if err != nil {
|
||||||
|
h.Close()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return h, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var h *hawk.Hawk
|
||||||
|
var rtx *hawk.Rtx
|
||||||
|
var err error
|
||||||
|
|
||||||
|
debug.SetGCPercent(100) // enable normal GC
|
||||||
|
|
||||||
|
fmt.Printf ("BEGINNING OF TEST3\n")
|
||||||
|
|
||||||
|
h, err = make_hawk(`function main(s) {
|
||||||
|
print enbase64(s, "hello", 1.289);
|
||||||
|
print debase64(s);
|
||||||
|
return x
|
||||||
|
}`)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("ERROR: failed to make hawk - %s\n", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
rtx, err = h.NewRtx("test3")
|
||||||
|
if err != nil {
|
||||||
|
//
|
||||||
|
} else {
|
||||||
|
var v *hawk.Val
|
||||||
|
|
||||||
|
v, err = rtx.Call("main", hawk.Must(rtx.NewValFromStr("this is a test3 string")))
|
||||||
|
if err != nil {
|
||||||
|
//
|
||||||
|
} else {
|
||||||
|
fmt.Printf("V=>[%v]\n", v.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h.Close()
|
||||||
|
fmt.Printf ("END OF TEST3\n")
|
||||||
|
|
||||||
|
runtime.GC()
|
||||||
|
runtime.Gosched()
|
||||||
|
time.Sleep(1000 * time.Millisecond) // give finalizer time to print
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user