diff --git a/Makefile.am b/Makefile.am index 7e3920f..fdb2bc5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,11 +11,54 @@ else SUBDIRS += lib mod bin t endif -if ENABLE_HCLGO -SUBDIRS += go -endif - DIST_SUBDIRS = $(SUBDIRS) distclean-local: @rm -rf $(top_srcdir)/autom4te.cache + + +clean-local: + rm -rf $(builddir)/go.mod $(builddir)/go.sum + +if ENABLE_HCLGO + +## 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 = hclgo +hclgo_SOURCES = \ + go/hcl.go \ + go/cb.go \ + go/inst.go \ + main.go \ + go.mod +hclgo_DEPENDENCIES = hclgo.bin + +## let the linker to move hclgo.bin to the actual target +hclgo_LINK = mv -f hclgo.bin hclgo$(EXEEXT) || echo "FAILED TO LINK" + +hclgo.bin: + cp -pf $(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 + sed -ri "/^[[:space:]]*replace[[:space:]]+cfg[[:space:]]*=>/d" $(builddir)/go.mod + echo -e "\nreplace cfg => $(abs_builddir)/go/cfg" >> $(builddir)/go.mod + [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true + go build -C $(srcdir) -x -o $(abs_builddir)/hclgo.bin -modfile $(abs_builddir)/go.mod + go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod + rm -rf $(builddir)/go.mod $(builddir)/go.sum + +## the go to o recipe is fake to deceive make +.go.o: + echo $< > $@ + +.mod.o: + echo $< > $@ + +endif + + diff --git a/Makefile.in b/Makefile.in index bc188c3..b710d00 100644 --- a/Makefile.in +++ b/Makefile.in @@ -13,6 +13,7 @@ # PARTICULAR PURPOSE. @SET_MAKE@ + VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ @@ -89,7 +90,7 @@ build_triplet = @build@ host_triplet = @host@ @ENABLE_STATIC_MODULE_TRUE@am__append_1 = mod lib bin t @ENABLE_STATIC_MODULE_FALSE@am__append_2 = lib mod bin t -@ENABLE_HCLGO_TRUE@am__append_3 = go +@ENABLE_HCLGO_TRUE@bin_PROGRAMS = hclgo$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ @@ -107,6 +108,15 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/hcl-cfg.h CONFIG_CLEAN_FILES = go/cfg/go.mod go/cfg/cfg.go CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am__hclgo_SOURCES_DIST = go/hcl.go go/cb.go go/inst.go main.go go.mod +am__dirstamp = $(am__leading_dot)dirstamp +@ENABLE_HCLGO_TRUE@am_hclgo_OBJECTS = go/hcl.$(OBJEXT) go/cb.$(OBJEXT) \ +@ENABLE_HCLGO_TRUE@ go/inst.$(OBJEXT) main.$(OBJEXT) \ +@ENABLE_HCLGO_TRUE@ go.$(OBJEXT) +hclgo_OBJECTS = $(am_hclgo_OBJECTS) +hclgo_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -119,8 +129,9 @@ AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = -SOURCES = -DIST_SOURCES = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib +SOURCES = $(hclgo_SOURCES) +DIST_SOURCES = $(am__hclgo_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ @@ -351,11 +362,21 @@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTION = foreign ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = t t/test-bi.hcl -SUBDIRS = $(am__append_1) $(am__append_2) $(am__append_3) +SUBDIRS = $(am__append_1) $(am__append_2) DIST_SUBDIRS = $(SUBDIRS) +@ENABLE_HCLGO_TRUE@hclgo_SOURCES = \ +@ENABLE_HCLGO_TRUE@ go/hcl.go \ +@ENABLE_HCLGO_TRUE@ go/cb.go \ +@ENABLE_HCLGO_TRUE@ go/inst.go \ +@ENABLE_HCLGO_TRUE@ main.go \ +@ENABLE_HCLGO_TRUE@ go.mod + +@ENABLE_HCLGO_TRUE@hclgo_DEPENDENCIES = hclgo.bin +@ENABLE_HCLGO_TRUE@hclgo_LINK = mv -f hclgo.bin hclgo$(EXEEXT) || echo "FAILED TO LINK" all: all-recursive .SUFFIXES: +.SUFFIXES: .go .mod .o am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @@ -393,6 +414,75 @@ go/cfg/go.mod: $(top_builddir)/config.status $(top_srcdir)/go/cfg/go.mod.in cd $(top_builddir) && $(SHELL) ./config.status $@ go/cfg/cfg.go: $(top_builddir)/config.status $(top_srcdir)/go/cfg/cfg.go.in cd $(top_builddir) && $(SHELL) ./config.status $@ +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +go/$(am__dirstamp): + @$(MKDIR_P) go + @: > go/$(am__dirstamp) +go/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) go/$(DEPDIR) + @: > go/$(DEPDIR)/$(am__dirstamp) +go/hcl.$(OBJEXT): go/$(am__dirstamp) go/$(DEPDIR)/$(am__dirstamp) +go/cb.$(OBJEXT): go/$(am__dirstamp) go/$(DEPDIR)/$(am__dirstamp) +go/inst.$(OBJEXT): go/$(am__dirstamp) go/$(DEPDIR)/$(am__dirstamp) + +hclgo$(EXEEXT): $(hclgo_OBJECTS) $(hclgo_DEPENDENCIES) $(EXTRA_hclgo_DEPENDENCIES) + @rm -f hclgo$(EXEEXT) + $(AM_V_GEN)$(hclgo_LINK) $(hclgo_OBJECTS) $(hclgo_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f go/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c mostlyclean-libtool: -rm -f *.lo @@ -707,9 +797,12 @@ distcleancheck: distclean exit 1; } >&2 check-am: all-am check: check-recursive -all-am: Makefile +all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive @@ -736,19 +829,22 @@ clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f go/$(DEPDIR)/$(am__dirstamp) + -rm -f go/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive -clean-am: clean-generic clean-libtool mostlyclean-am +clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ + mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-local distclean-tags +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-local distclean-tags dvi: dvi-recursive @@ -768,7 +864,7 @@ install-dvi: install-dvi-recursive install-dvi-am: -install-exec-am: +install-exec-am: install-binPROGRAMS install-html: install-html-recursive @@ -798,7 +894,8 @@ maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive -mostlyclean-am: mostlyclean-generic mostlyclean-libtool +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf: pdf-recursive @@ -808,26 +905,28 @@ ps: ps-recursive ps-am: -uninstall-am: +uninstall-am: uninstall-binPROGRAMS .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libtool cscope cscopelist-am ctags ctags-am dist \ - dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ - dist-xz dist-zip dist-zstd distcheck distclean \ + am--refresh check check-am clean clean-binPROGRAMS \ + clean-cscope clean-generic clean-libtool clean-local cscope \ + cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + dist-zstd distcheck distclean distclean-compile \ distclean-generic distclean-libtool distclean-local \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile @@ -835,6 +934,25 @@ uninstall-am: distclean-local: @rm -rf $(top_srcdir)/autom4te.cache +clean-local: + rm -rf $(builddir)/go.mod $(builddir)/go.sum + +@ENABLE_HCLGO_TRUE@hclgo.bin: +@ENABLE_HCLGO_TRUE@ cp -pf $(srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true +@ENABLE_HCLGO_TRUE@ chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change +@ENABLE_HCLGO_TRUE@ sed -ri "/^[[:space:]]*replace[[:space:]]+cfg[[:space:]]*=>/d" $(builddir)/go.mod +@ENABLE_HCLGO_TRUE@ echo -e "\nreplace cfg => $(abs_builddir)/go/cfg" >> $(builddir)/go.mod +@ENABLE_HCLGO_TRUE@ [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true +@ENABLE_HCLGO_TRUE@ go build -C $(srcdir) -x -o $(abs_builddir)/hclgo.bin -modfile $(abs_builddir)/go.mod +@ENABLE_HCLGO_TRUE@ go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod +@ENABLE_HCLGO_TRUE@ rm -rf $(builddir)/go.mod $(builddir)/go.sum + +@ENABLE_HCLGO_TRUE@.go.o: +@ENABLE_HCLGO_TRUE@ echo $< > $@ + +@ENABLE_HCLGO_TRUE@.mod.o: +@ENABLE_HCLGO_TRUE@ echo $< > $@ + # 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. .NOEXPORT: diff --git a/README.md b/README.md index 203c826..3cd878f 100644 --- a/README.md +++ b/README.md @@ -5,36 +5,43 @@ A HCL program is composed of expressions. ## Keywords -* nil -* true -* false +- nil +- true +- false ## Special Form Expression -* and -* break -* defclass -* defun -* do -* elif -* else -* if -* lambda -* or -* return -* set -* until -* while +- and +- break +- defclass +- defun +- do +- elif +- else +- if +- lambda +- or +- return +- set +- until +- while -## literals -* integer -* character -* small pointer -* error -* string -* dictionary -* array -* byte array +## Literals +- integer +- character +- small pointer +- error +- string +- dictionary `#{ }` +- array `[ ]` +- byte array `#[ ]` +- list `#( )` + +## Basic Expressions +- function calls `( )` +- message sends `(: )` +- variable declaration `| |` +- class variable delcarations `::: | |` ## Builtin functions @@ -79,6 +86,28 @@ A HCL program is composed of expressions. ) ``` +## Class + +``` +(defclass T + ::: | A B C | ; class variables + + (printf "initializing....\n") + + (defun ::: dump() + (printf "%d %d %d\n" A B C) + ) + + (set A 10) + (set B 20) + (set C 30) + + (printf "initialization done....\n") +) + +(:T dump) +``` + ## Redefining a primitive function ``` diff --git a/configure b/configure index c28f60a..15db4ed 100755 --- a/configure +++ b/configure @@ -18740,7 +18740,7 @@ printf "%s\n" "#define HCL_CONFIGURE_ARGS \"$ac_configure_args\"" >>confdefs.h printf "%s\n" "#define HCL_CONFIGURE_CMD \"$hcl_configure_cmd\"" >>confdefs.h -ac_config_files="$ac_config_files Makefile lib/Makefile mod/Makefile bin/Makefile go/Makefile go/cfg/go.mod go/cfg/cfg.go t/Makefile" +ac_config_files="$ac_config_files Makefile lib/Makefile mod/Makefile bin/Makefile go/cfg/go.mod go/cfg/cfg.go t/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -19792,7 +19792,6 @@ do "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "mod/Makefile") CONFIG_FILES="$CONFIG_FILES mod/Makefile" ;; "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; - "go/Makefile") CONFIG_FILES="$CONFIG_FILES go/Makefile" ;; "go/cfg/go.mod") CONFIG_FILES="$CONFIG_FILES go/cfg/go.mod" ;; "go/cfg/cfg.go") CONFIG_FILES="$CONFIG_FILES go/cfg/cfg.go" ;; "t/Makefile") CONFIG_FILES="$CONFIG_FILES t/Makefile" ;; diff --git a/configure.ac b/configure.ac index a1e0738..97bf9fe 100644 --- a/configure.ac +++ b/configure.ac @@ -690,7 +690,6 @@ AC_CONFIG_FILES([ lib/Makefile mod/Makefile bin/Makefile - go/Makefile go/cfg/go.mod go/cfg/cfg.go t/Makefile diff --git a/go/go.mod b/go.mod similarity index 52% rename from go/go.mod rename to go.mod index 07cf233..e154a28 100644 --- a/go/go.mod +++ b/go.mod @@ -2,4 +2,4 @@ module hcl go 1.20 -require cfg v0.0.0 +require cfg v0.0.0 \ No newline at end of file diff --git a/go/Makefile.am b/go/Makefile.am deleted file mode 100644 index 924ab1b..0000000 --- a/go/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ -AUTOMAKE_OPTIONS = nostdinc - -## 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 = hclgo -hclgo_SOURCES = \ - pkg/hcl.go \ - pkg/cb.go \ - pkg/inst.go \ - main.go \ - go.mod -hclgo_DEPENDENCIES = hclgo.bin - -## let the linker to move hclgo.bin to the actual target -hclgo_LINK = mv -f hclgo.bin hclgo$(EXEEXT) || echo "FAILED TO LINK" - -hclgo.bin: - cp -pf $(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 - sed -ri "/^[[:space:]]*replace[[:space:]]+cfg[[:space:]]*=>/d" $(builddir)/go.mod - echo -e "\nreplace cfg => $(abs_builddir)/cfg" >> $(builddir)/go.mod - [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true - go build -C $(srcdir) -x -o $(abs_builddir)/hclgo.bin -modfile $(abs_builddir)/go.mod - go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod - rm -rf $(builddir)/go.mod $(builddir)/go.sum - -## the go to o recipe is fake to deceive make -.go.o: - echo $< > $@ - -.mod.o: - echo $< > $@ - - -clean-local: - rm -rf $(builddir)/go.mod $(builddir)/go.sum diff --git a/go/Makefile.in b/go/Makefile.in deleted file mode 100644 index e979790..0000000 --- a/go/Makefile.in +++ /dev/null @@ -1,642 +0,0 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2021 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -bin_PROGRAMS = hclgo$(EXEEXT) -subdir = go -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ - $(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/hcl-cfg.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" -PROGRAMS = $(bin_PROGRAMS) -am__dirstamp = $(am__leading_dot)dirstamp -am_hclgo_OBJECTS = pkg/hcl.$(OBJEXT) pkg/cb.$(OBJEXT) \ - pkg/inst.$(OBJEXT) main.$(OBJEXT) go.$(OBJEXT) -hclgo_OBJECTS = $(am_hclgo_OBJECTS) -hclgo_LDADD = $(LDADD) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -SOURCES = $(hclgo_SOURCES) -DIST_SOURCES = $(hclgo_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BUILD_MODE = @BUILD_MODE@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CSCOPE = @CSCOPE@ -CTAGS = @CTAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DL_LIBS = @DL_LIBS@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ETAGS = @ETAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FILECMD = @FILECMD@ -GREP = @GREP@ -HCL_PROJECT_AUTHOR = @HCL_PROJECT_AUTHOR@ -HCL_PROJECT_URL = @HCL_PROJECT_URL@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTDL_LIBS = @LTDL_LIBS@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ -PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ -PACKAGE_VERSION_PATCH = @PACKAGE_VERSION_PATCH@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_CXX = @PTHREAD_CXX@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -QUADMATH_LIBS = @QUADMATH_LIBS@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -UNICOWS_LIBS = @UNICOWS_LIBS@ -UNWIND_LIBS = @UNWIND_LIBS@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_pthread_config = @ax_pthread_config@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = nostdinc -hclgo_SOURCES = \ - pkg/hcl.go \ - pkg/cb.go \ - pkg/inst.go \ - main.go \ - go.mod - -hclgo_DEPENDENCIES = hclgo.bin -hclgo_LINK = mv -f hclgo.bin hclgo$(EXEEXT) || echo "FAILED TO LINK" -all: all-am - -.SUFFIXES: -.SUFFIXES: .go .mod .o -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign go/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign go/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -pkg/$(am__dirstamp): - @$(MKDIR_P) pkg - @: > pkg/$(am__dirstamp) -pkg/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) pkg/$(DEPDIR) - @: > pkg/$(DEPDIR)/$(am__dirstamp) -pkg/hcl.$(OBJEXT): pkg/$(am__dirstamp) pkg/$(DEPDIR)/$(am__dirstamp) -pkg/cb.$(OBJEXT): pkg/$(am__dirstamp) pkg/$(DEPDIR)/$(am__dirstamp) -pkg/inst.$(OBJEXT): pkg/$(am__dirstamp) pkg/$(DEPDIR)/$(am__dirstamp) - -hclgo$(EXEEXT): $(hclgo_OBJECTS) $(hclgo_DEPENDENCIES) $(EXTRA_hclgo_DEPENDENCIES) - @rm -f hclgo$(EXEEXT) - $(AM_V_GEN)$(hclgo_LINK) $(hclgo_OBJECTS) $(hclgo_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -rm -f pkg/*.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -rm -f pkg/$(DEPDIR)/$(am__dirstamp) - -rm -f pkg/$(am__dirstamp) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ - mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ - clean-binPROGRAMS clean-generic clean-libtool clean-local \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ - uninstall-binPROGRAMS - -.PRECIOUS: Makefile - - -hclgo.bin: - cp -pf $(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 - sed -ri "/^[[:space:]]*replace[[:space:]]+cfg[[:space:]]*=>/d" $(builddir)/go.mod - echo -e "\nreplace cfg => $(abs_builddir)/cfg" >> $(builddir)/go.mod - [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true - go build -C $(srcdir) -x -o $(abs_builddir)/hclgo.bin -modfile $(abs_builddir)/go.mod - go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod - rm -rf $(builddir)/go.mod $(builddir)/go.sum - -.go.o: - echo $< > $@ - -.mod.o: - echo $< > $@ - -clean-local: - rm -rf $(builddir)/go.mod $(builddir)/go.sum - -# 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. -.NOEXPORT: diff --git a/go/pkg/cb.go b/go/cb.go similarity index 100% rename from go/pkg/cb.go rename to go/cb.go diff --git a/go/cfg/go.mod.in b/go/cfg/go.mod.in index c7e46e9..650b980 100644 --- a/go/cfg/go.mod.in +++ b/go/cfg/go.mod.in @@ -1,3 +1,6 @@ module cfg go 1.20 + +// this package is not supposed to be used by other parties. +// it's intended for internal use only to work around buld issues with autotools. diff --git a/go/hcl.go b/go/hcl.go new file mode 100644 index 0000000..4db9b28 --- /dev/null +++ b/go/hcl.go @@ -0,0 +1,128 @@ +package hcl + +/* +#cgo CFLAGS: -I/home/hyung-hwan/xxx/include -g -Wall +#cgo LDFLAGS: -L/home/hyung-hwan/xxx/lib -lhcl -ldl -lquadmath + +#include +#include +*/ +import "C" + +import ( + "fmt" + "runtime" + "unsafe" +) + +type HCL struct { + c *C.hcl_t + inst_no int + + io struct { + r IOHandle + w IOHandle + } +} + +type Ext struct { + inst_no int +} + +var inst_table InstanceTable + +func deregister_instance(g *HCL) { + if g.inst_no >= 0 { + inst_table.delete_instance(g.inst_no) + g.inst_no = -1 + } +} + +func New() (*HCL, error) { + var c *C.hcl_t + var g *HCL + var ext *Ext + var errnum C.hcl_errnum_t + + c = C.hcl_openstd(C.hcl_oow_t(unsafe.Sizeof(*ext)), &errnum) + if c == nil { + var buf [64]C.hcl_uch_t + var ptr *C.hcl_uch_t + var err error + + ptr = C.hcl_errnum_to_errucstr(errnum, &buf[0], C.hcl_oow_t(cap(buf))) + err = fmt.Errorf("%s", string(ucstr_to_rune_slice(ptr))) + return nil, err + } + + ext = (*Ext)(unsafe.Pointer(C.hcl_getxtn(c))) + + g = &HCL{c: c, inst_no: -1} + + runtime.SetFinalizer(g, deregister_instance) + g.inst_no = inst_table.add_instance(c, g) + ext.inst_no = g.inst_no + + return g, nil +} + +func (hcl *HCL) Close() { + C.hcl_close(hcl.c) + deregister_instance(hcl) +} + +func (hcl *HCL) Ignite(memsize uintptr) error { + if C.hcl_ignite(hcl.c, C.hcl_oow_t(memsize)) <= -1 { + return fmt.Errorf("unable to ignite: %s", string(ucstr_to_rune_slice(C.hcl_geterrstr(hcl.c)))) + } + + return nil +} + +func (hcl *HCL) AddBuiltinPrims() error { + if C.hcl_addbuiltinprims(hcl.c) <= -1 { + } + return nil +} + +func (hcl *HCL) AttachIO() error { + return nil +} + +func (hcl *HCL) FeedString(str []rune) error { + return nil +} + +func (hcl *HCL) BeginFeed() { +} + +func (hcl *HCL) EndFeed() { +} + +func (hcl *HCL) Execute() { +} + +func ucstr_to_rune_slice(str *C.hcl_uch_t) []rune { + return uchars_to_rune_slice(str, uintptr(C.hcl_count_ucstr(str))) +} + +func uchars_to_rune_slice(str *C.hcl_uch_t, len uintptr) []rune { + var res []rune + var i uintptr + + // TODO: proper encoding... + res = make([]rune, len) + for i = 0; i < len; i++ { + res[i] = *(*rune)(unsafe.Pointer(uintptr(unsafe.Pointer(str)) + unsafe.Sizeof(*str)*i)) + } + return res +} + +func c_to_go(c *C.hcl_t) *HCL { + var ext *Ext + var inst Instance + + ext = (*Ext)(unsafe.Pointer(C.hcl_getxtn(c))) + inst = inst_table.slot_to_instance(ext.inst_no) + return inst.g +} diff --git a/go/pkg/inst.go b/go/inst.go similarity index 90% rename from go/pkg/inst.go rename to go/inst.go index 817435e..8dac0ad 100644 --- a/go/pkg/inst.go +++ b/go/inst.go @@ -1,6 +1,9 @@ package hcl /* +#cgo CFLAGS: -I/home/hyung-hwan/xxx/include -g -Wall +#cgo LDFLAGS: -L/home/hyung-hwan/xxx/lib -lhcl -ldl -lquadmath + #include */ import "C" diff --git a/go/pkg/hcl.go b/go/pkg/hcl.go deleted file mode 100644 index 5a36ee0..0000000 --- a/go/pkg/hcl.go +++ /dev/null @@ -1,105 +0,0 @@ -package hcl - -/* -#cgo CFLAGS: -I/home/hyung-hwan/xxx/include -g -Wall -#cgo LDFLAGS: -L/home/hyung-hwan/xxx/lib -lhcl -ldl -lquadmath - -#include -#include -*/ -import "C" - -import ( - "fmt" - "runtime" -// "unsafe" -) - -type HCL struct { - inst *C.hcl_t - no int - - io struct { - r IOHandle - w IOHandle - } -} - -var inst_table InstanceTable - -func deregister_instance(hcl *HCL) { - if (hcl.no >= 0) { - inst_table.delete_instance(hcl.no) - hcl.no = -1 - } -} - -func New() (*HCL, error) { - var inst *C.hcl_t - var hcl* HCL - inst = C.hcl_open(nil, 0, nil, nil) // TODO: prim in, errnum out - hcl = &HCL{inst: inst, no : -1} - - runtime.SetFinalizer(hcl, deregister_instance) - hcl.no = inst_table.add_instance(inst, hcl) - - return hcl, nil -} - -func (hcl *HCL) Close() { - C.hcl_close (hcl.inst) - deregister_instance (hcl) -} - -func (hcl *HCL) Ignite(memsize uintptr) error { - if C.hcl_ignite(hcl.inst, C.hcl_oow_t(memsize)) <= -1 { - // TODO: need to convert string... - return fmt.Errorf ("unable to ignite: %s", ucstr_to_rune_slice(C.hcl_geterrstr(hcl.inst))) - } - - return nil -} - -func (hcl *HCL) AddBuiltinPrims() error { - if C.hcl_addbuiltinprims(hcl.inst) <= -1 { - } - return nil -} - -func (hcl *HCL) AttachIO() error { - return nil -} - -func (hcl *HCL) FeedString(str []rune) error { - return nil -} - -func (hcl *HCL) BeginFeed() { -} - -func (hcl *HCL) EndFeed() { -} - -func (hcl *HCL) Execute() { -} - -func ucstr_to_rune_slice(str *C.hcl_uch_t) []rune { - return uchars_to_rune_slice(str, uintptr(C.hcl_count_ucstr(str))) -} - -func uchars_to_rune_slice(str *C.hcl_uch_t, len uintptr) []rune { - var res []rune - var i uintptr - - // TODO: proper encoding... - res = make([]rune, len) - for i = 0; i < len; i++ { -//TODO res[i] := str[i] - } - return res -} - - -func c_to_go (inst *C.hcl_t) *HCL { - return nil -} diff --git a/lib/std.c b/lib/std.c index abf7b44..b2a97c5 100644 --- a/lib/std.c +++ b/lib/std.c @@ -129,6 +129,10 @@ #else +# if !defined(_GNU_SOURCE) +# define _GNU_SOURCE +# endif + # include # include # include @@ -3691,7 +3695,7 @@ int hcl_attachiostdwithucstr (hcl_t* hcl, const hcl_uch_t* read_file, const hcl_ xtn->scan_path = hcl_duputobcstr(hcl, scan_file, HCL_NULL); if (HCL_UNLIKELY(!xtn->scan_path)) { - hcl_freemem (hcl, xtn->read_path); + hcl_freemem (hcl, (void*)xtn->read_path); xtn->read_path = HCL_NULL; return -1; } @@ -3699,8 +3703,8 @@ int hcl_attachiostdwithucstr (hcl_t* hcl, const hcl_uch_t* read_file, const hcl_ xtn->print_path = hcl_duputobcstr(hcl, print_file, HCL_NULL); if (HCL_UNLIKELY(!xtn->print_path)) { - hcl_freemem (hcl, xtn->scan_path); - hcl_freemem (hcl, xtn->read_path); + hcl_freemem (hcl, (void*)xtn->scan_path); + hcl_freemem (hcl, (void*)xtn->read_path); xtn->scan_path = HCL_NULL; xtn->read_path = HCL_NULL; return -1; @@ -3708,9 +3712,9 @@ int hcl_attachiostdwithucstr (hcl_t* hcl, const hcl_uch_t* read_file, const hcl_ n = hcl_attachio(hcl, read_handler, scan_handler, print_handler); - hcl_freemem (hcl, xtn->read_path); - hcl_freemem (hcl, xtn->scan_path); - hcl_freemem (hcl, xtn->print_path); + hcl_freemem (hcl, (void*)xtn->read_path); + hcl_freemem (hcl, (void*)xtn->scan_path); + hcl_freemem (hcl, (void*)xtn->print_path); xtn->read_path = HCL_NULL; xtn->scan_path = HCL_NULL; diff --git a/go/main.go b/main.go similarity index 75% rename from go/main.go rename to main.go index d887f4a..920722a 100644 --- a/go/main.go +++ b/main.go @@ -30,9 +30,8 @@ int print_handler (hcl_t* hcl, hcl_iocmd_t cmd, void* arg) import ( "fmt" - hcl "hcl/pkg" + hcl "hcl/go" "os" - "cfg" ) /* @@ -102,33 +101,54 @@ import ( func main() { //run_hcl() + var x *hcl.HCL = nil + var err error = nil -/* - var rfh hcl.ReadFileHandler - var sfh hcl.ScanFileHandler - var pfh hcl.PrintFileHandler -*/ - fmt.Printf ("bindir = %s\n", cfg.BINDIR) + /* + var rfh hcl.ReadFileHandler + var sfh hcl.ScanFileHandler + var pfh hcl.PrintFileHandler + */ - x, err := hcl.New() + x, err = hcl.New() if err != nil { - fmt.Printf("ERROR %s\n", err) + fmt.Printf("ERROR failed to instantiate hcl - %s\n", err.Error()) os.Exit(1) } - x.Ignite(1000000) - x.AddBuiltinPrims() - -/* - err = x.AttachIO(&rfh, &sfh, &pfh) + err = x.Ignite(1000000) if err != nil { - fmt.Printf("Error - %s", err.Error()) + fmt.Printf("ERROR failed to ignite - %s\n", err.Error()) + goto oops } - x.FeedString(`(printf ">>>>>>>>> [%d]\n" (+ 30 455)) -(printf ">>>>>>>>> [%d]\n" (+ 11 455)) -#include "a.hcl" -(printf ">>>>>>>>> [%d]\n" (+ 20 455))`) - x.EndFeed() - x.Execute() + err = x.AddBuiltinPrims() + if err != nil { + fmt.Printf("ERROR failed to add builtin primitives - %s\n", err.Error()) + goto oops + } + + /* + err = x.AttachIO(&rfh, &sfh, &pfh) + if err != nil { + fmt.Printf("Error - %s", err.Error()) + } + x.FeedString(`(printf ">>>>>>>>> [%d]\n" (+ 30 455)) + + (printf ">>>>>>>>> [%d]\n" (+ 11 455)) + #include "a.hcl" + (printf ">>>>>>>>> [%d]\n" (+ 20 455))`) + + x.EndFeed() + x.Execute() + + */ x.Close() -*/ + + os.Exit(0) + +oops: + if x != nil { + x.Close() + x = nil + } + os.Exit(1) }