change python config, add jupyter and ein

This commit is contained in:
2024-05-05 20:36:39 +02:00
parent b18d02d8d5
commit 8b80ceda39
168 changed files with 177127 additions and 46 deletions

View File

@@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}

93
lisp/zmq/Makefile Normal file
View File

@@ -0,0 +1,93 @@
ROOT = .
SHELL = bash
EMACS ?= emacs
EFILES := zmq.el
# CPPFLAGS = -DEZMQ_DEBUG=0
ELCFILES = $(EFILES:.el=.elc)
export ZMQ_GIT_REPO ?= https://github.com/zeromq/libzmq
# The version of ZMQ to build
export ZMQ_VERSION ?= 4.3.1
# Directory in which the emacs-zmq module will be written
EZMQ_LIBDIR ?= $(CURDIR)
# NOTE: The ZMQ_LIBS and ZMQ_CFLAGS can be set before configuring the project
# to point to the ZMQ to build with.
MODULE_EXT := $(shell $(EMACS) -Q --batch --eval "(princ (and (boundp 'module-file-suffix) module-file-suffix))")
ifeq ($(MODULE_EXT), nil)
$(error No module support in $(EMACS))
endif
EZMQ_MODULE := emacs-zmq$(MODULE_EXT)
.PHONY: all
all: $(EZMQ_LIBDIR)/$(EZMQ_MODULE) compile
.PHONY: configure
configure: src/configure
cd src && ./configure CPPFLAGS="$(CPPFLAGS)" \
--prefix=$(CURDIR) \
--enable-shared=emacs-zmq --enable-static=zeromq \
--without-docs --enable-drafts=yes --enable-libunwind=no \
--disable-curve-keygen --disable-perf --disable-eventfd
$(EZMQ_LIBDIR)/$(EZMQ_MODULE): src/Makefile
$(MAKE) -C src
mkdir -p $(EZMQ_LIBDIR)
cp src/.libs/$(EZMQ_MODULE) $(EZMQ_LIBDIR)/$(EZMQ_MODULE)
src/Makefile: src/configure
$(MAKE) configure
# Needed for static Windows builds of libzmq, see libzmq/INSTALL
ifeq ($(MODULE_EXT),.dll)
CPPFLAGS += -DZMQ_STATIC
endif
src/configure: src/configure.ac src/Makefile.am
cd src && autoreconf -i
.PHONY: test
test:
$(EMACS) -nw -Q -batch -L . -l ert -l zmq-tests.el \
--eval "(ert-run-tests-batch-and-exit)"
.PHONY: clean
clean:
$(MAKE) -C src clean
$(RM) emacs-zmq.* $(ELCFILES)
.PHONY: clean-zmq-build
clean-zmq-build:
$(RM) -r src/libzmq-build
$(MAKE) -C src clean-libzmq
.PHONY: compile
compile: $(ELCFILES)
$(ELCFILES): %.elc: %.el
$(EMACS) --batch -Q -L . -f batch-byte-compile $<
ifneq (,$(filter products,$(MAKECMDGOALS)))
ifeq (,$(shell which $(CC)))
$(error "Compiler $(CC) not found.")
endif
PRODUCT := emacs-zmq-$(shell $(CC) -dumpmachine)
ifneq ($(shell command -v shasum),)
SHA256SUM := shasum -a 256
else
SHA256SUM := sha256sum
endif
endif
.PHONY: products
products: products/$(PRODUCT).tar.gz.sha256
products/$(PRODUCT).tar.gz: $(EZMQ_LIBDIR)/$(EZMQ_MODULE)
mkdir -p products/$(PRODUCT)
cp $(EZMQ_LIBDIR)/*$(EZMQ_MODULE) products/$(PRODUCT)
cd products && \
tar -czf $(CURDIR)/products/$(PRODUCT).tar.gz $(PRODUCT)
products/$(PRODUCT).tar.gz.sha256: products/$(PRODUCT).tar.gz
cd products && \
$(SHA256SUM) $(PRODUCT).tar.gz > $(PRODUCT).tar.gz.sha256

BIN
lisp/zmq/emacs-zmq.so Executable file

Binary file not shown.

View File

@@ -0,0 +1,148 @@
emacs_zmq_la-constants.lo: constants.c /usr/include/stdc-predef.h core.h \
/usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/bits/wordsize.h /usr/include/bits/timesize.h \
/usr/include/sys/cdefs.h /usr/include/bits/long-double.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \
/usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/endianness.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/string.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/strings.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h \
/usr/include/zmq.h /usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__mbstate_t.h \
/usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \
/usr/include/signal.h /usr/include/bits/signum-generic.h \
/usr/include/bits/signum-arch.h /usr/include/bits/types/sig_atomic_t.h \
/usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \
/usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \
/usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \
/usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \
/usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \
/usr/include/bits/sigstksz.h /usr/include/bits/ss_flags.h \
/usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \
/usr/include/bits/signal_ext.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h emacs-module.h
/usr/include/stdc-predef.h:
core.h:
/usr/include/stdlib.h:
/usr/include/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/features-time64.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/timesize.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/long-double.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/bits/floatn.h:
/usr/include/bits/floatn-common.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/bits/time64.h:
/usr/include/bits/types/clock_t.h:
/usr/include/bits/types/clockid_t.h:
/usr/include/bits/types/time_t.h:
/usr/include/bits/types/timer_t.h:
/usr/include/bits/stdint-intn.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/endianness.h:
/usr/include/bits/byteswap.h:
/usr/include/bits/uintn-identity.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/types/sigset_t.h:
/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/types/struct_timeval.h:
/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/thread-shared-types.h:
/usr/include/bits/pthreadtypes-arch.h:
/usr/include/bits/atomic_wide_counter.h:
/usr/include/bits/struct_mutex.h:
/usr/include/bits/struct_rwlock.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib-bsearch.h:
/usr/include/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/bits/types/locale_t.h:
/usr/include/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h:
/usr/include/zmq.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/asm-generic/errno.h:
/usr/include/asm-generic/errno-base.h:
/usr/include/stdio.h:
/usr/include/bits/types/__fpos_t.h:
/usr/include/bits/types/__mbstate_t.h:
/usr/include/bits/types/__fpos64_t.h:
/usr/include/bits/types/__FILE.h:
/usr/include/bits/types/FILE.h:
/usr/include/bits/types/struct_FILE.h:
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/bits/stdint-uintn.h:
/usr/include/bits/stdint-least.h:
/usr/include/signal.h:
/usr/include/bits/signum-generic.h:
/usr/include/bits/signum-arch.h:
/usr/include/bits/types/sig_atomic_t.h:
/usr/include/bits/types/siginfo_t.h:
/usr/include/bits/types/__sigval_t.h:
/usr/include/bits/siginfo-arch.h:
/usr/include/bits/siginfo-consts.h:
/usr/include/bits/types/sigval_t.h:
/usr/include/bits/types/sigevent_t.h:
/usr/include/bits/sigevent-consts.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/include/bits/types/stack_t.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigstack.h:
/usr/include/bits/sigstksz.h:
/usr/include/bits/ss_flags.h:
/usr/include/bits/types/struct_sigstack.h:
/usr/include/bits/sigthread.h:
/usr/include/bits/signal_ext.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h:
emacs-module.h:

View File

@@ -0,0 +1,149 @@
emacs_zmq_la-context.lo: context.c /usr/include/stdc-predef.h context.h \
core.h /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/bits/wordsize.h /usr/include/bits/timesize.h \
/usr/include/sys/cdefs.h /usr/include/bits/long-double.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \
/usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/endianness.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/string.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/strings.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h \
/usr/include/zmq.h /usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__mbstate_t.h \
/usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \
/usr/include/signal.h /usr/include/bits/signum-generic.h \
/usr/include/bits/signum-arch.h /usr/include/bits/types/sig_atomic_t.h \
/usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \
/usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \
/usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \
/usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \
/usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \
/usr/include/bits/sigstksz.h /usr/include/bits/ss_flags.h \
/usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \
/usr/include/bits/signal_ext.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h emacs-module.h
/usr/include/stdc-predef.h:
context.h:
core.h:
/usr/include/stdlib.h:
/usr/include/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/features-time64.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/timesize.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/long-double.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/bits/floatn.h:
/usr/include/bits/floatn-common.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/bits/time64.h:
/usr/include/bits/types/clock_t.h:
/usr/include/bits/types/clockid_t.h:
/usr/include/bits/types/time_t.h:
/usr/include/bits/types/timer_t.h:
/usr/include/bits/stdint-intn.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/endianness.h:
/usr/include/bits/byteswap.h:
/usr/include/bits/uintn-identity.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/types/sigset_t.h:
/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/types/struct_timeval.h:
/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/thread-shared-types.h:
/usr/include/bits/pthreadtypes-arch.h:
/usr/include/bits/atomic_wide_counter.h:
/usr/include/bits/struct_mutex.h:
/usr/include/bits/struct_rwlock.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib-bsearch.h:
/usr/include/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/bits/types/locale_t.h:
/usr/include/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h:
/usr/include/zmq.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/asm-generic/errno.h:
/usr/include/asm-generic/errno-base.h:
/usr/include/stdio.h:
/usr/include/bits/types/__fpos_t.h:
/usr/include/bits/types/__mbstate_t.h:
/usr/include/bits/types/__fpos64_t.h:
/usr/include/bits/types/__FILE.h:
/usr/include/bits/types/FILE.h:
/usr/include/bits/types/struct_FILE.h:
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/bits/stdint-uintn.h:
/usr/include/bits/stdint-least.h:
/usr/include/signal.h:
/usr/include/bits/signum-generic.h:
/usr/include/bits/signum-arch.h:
/usr/include/bits/types/sig_atomic_t.h:
/usr/include/bits/types/siginfo_t.h:
/usr/include/bits/types/__sigval_t.h:
/usr/include/bits/siginfo-arch.h:
/usr/include/bits/siginfo-consts.h:
/usr/include/bits/types/sigval_t.h:
/usr/include/bits/types/sigevent_t.h:
/usr/include/bits/sigevent-consts.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/include/bits/types/stack_t.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigstack.h:
/usr/include/bits/sigstksz.h:
/usr/include/bits/ss_flags.h:
/usr/include/bits/types/struct_sigstack.h:
/usr/include/bits/sigthread.h:
/usr/include/bits/signal_ext.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h:
emacs-module.h:

View File

@@ -0,0 +1,150 @@
emacs_zmq_la-core.lo: core.c /usr/include/stdc-predef.h core.h \
/usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/bits/wordsize.h /usr/include/bits/timesize.h \
/usr/include/sys/cdefs.h /usr/include/bits/long-double.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \
/usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/endianness.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/string.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/strings.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h \
/usr/include/zmq.h /usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__mbstate_t.h \
/usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \
/usr/include/signal.h /usr/include/bits/signum-generic.h \
/usr/include/bits/signum-arch.h /usr/include/bits/types/sig_atomic_t.h \
/usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \
/usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \
/usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \
/usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \
/usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \
/usr/include/bits/sigstksz.h /usr/include/bits/ss_flags.h \
/usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \
/usr/include/bits/signal_ext.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h emacs-module.h \
/usr/include/assert.h
/usr/include/stdc-predef.h:
core.h:
/usr/include/stdlib.h:
/usr/include/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/features-time64.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/timesize.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/long-double.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/bits/floatn.h:
/usr/include/bits/floatn-common.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/bits/time64.h:
/usr/include/bits/types/clock_t.h:
/usr/include/bits/types/clockid_t.h:
/usr/include/bits/types/time_t.h:
/usr/include/bits/types/timer_t.h:
/usr/include/bits/stdint-intn.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/endianness.h:
/usr/include/bits/byteswap.h:
/usr/include/bits/uintn-identity.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/types/sigset_t.h:
/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/types/struct_timeval.h:
/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/thread-shared-types.h:
/usr/include/bits/pthreadtypes-arch.h:
/usr/include/bits/atomic_wide_counter.h:
/usr/include/bits/struct_mutex.h:
/usr/include/bits/struct_rwlock.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib-bsearch.h:
/usr/include/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/bits/types/locale_t.h:
/usr/include/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h:
/usr/include/zmq.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/asm-generic/errno.h:
/usr/include/asm-generic/errno-base.h:
/usr/include/stdio.h:
/usr/include/bits/types/__fpos_t.h:
/usr/include/bits/types/__mbstate_t.h:
/usr/include/bits/types/__fpos64_t.h:
/usr/include/bits/types/__FILE.h:
/usr/include/bits/types/FILE.h:
/usr/include/bits/types/struct_FILE.h:
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/bits/stdint-uintn.h:
/usr/include/bits/stdint-least.h:
/usr/include/signal.h:
/usr/include/bits/signum-generic.h:
/usr/include/bits/signum-arch.h:
/usr/include/bits/types/sig_atomic_t.h:
/usr/include/bits/types/siginfo_t.h:
/usr/include/bits/types/__sigval_t.h:
/usr/include/bits/siginfo-arch.h:
/usr/include/bits/siginfo-consts.h:
/usr/include/bits/types/sigval_t.h:
/usr/include/bits/types/sigevent_t.h:
/usr/include/bits/sigevent-consts.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/include/bits/types/stack_t.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigstack.h:
/usr/include/bits/sigstksz.h:
/usr/include/bits/ss_flags.h:
/usr/include/bits/types/struct_sigstack.h:
/usr/include/bits/sigthread.h:
/usr/include/bits/signal_ext.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h:
emacs-module.h:
/usr/include/assert.h:

View File

@@ -0,0 +1,157 @@
emacs_zmq_la-emacs-zmq.lo: emacs-zmq.c /usr/include/stdc-predef.h \
emacs-zmq.h core.h /usr/include/stdlib.h \
/usr/include/bits/libc-header-start.h /usr/include/features.h \
/usr/include/features-time64.h /usr/include/bits/wordsize.h \
/usr/include/bits/timesize.h /usr/include/sys/cdefs.h \
/usr/include/bits/long-double.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \
/usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/endianness.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/string.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/strings.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h \
/usr/include/zmq.h /usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__mbstate_t.h \
/usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \
/usr/include/signal.h /usr/include/bits/signum-generic.h \
/usr/include/bits/signum-arch.h /usr/include/bits/types/sig_atomic_t.h \
/usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \
/usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \
/usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \
/usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \
/usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \
/usr/include/bits/sigstksz.h /usr/include/bits/ss_flags.h \
/usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \
/usr/include/bits/signal_ext.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h emacs-module.h \
util.h msg.h socket.h context.h poll.h /usr/include/assert.h
/usr/include/stdc-predef.h:
emacs-zmq.h:
core.h:
/usr/include/stdlib.h:
/usr/include/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/features-time64.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/timesize.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/long-double.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/bits/floatn.h:
/usr/include/bits/floatn-common.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/bits/time64.h:
/usr/include/bits/types/clock_t.h:
/usr/include/bits/types/clockid_t.h:
/usr/include/bits/types/time_t.h:
/usr/include/bits/types/timer_t.h:
/usr/include/bits/stdint-intn.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/endianness.h:
/usr/include/bits/byteswap.h:
/usr/include/bits/uintn-identity.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/types/sigset_t.h:
/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/types/struct_timeval.h:
/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/thread-shared-types.h:
/usr/include/bits/pthreadtypes-arch.h:
/usr/include/bits/atomic_wide_counter.h:
/usr/include/bits/struct_mutex.h:
/usr/include/bits/struct_rwlock.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib-bsearch.h:
/usr/include/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/bits/types/locale_t.h:
/usr/include/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h:
/usr/include/zmq.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/asm-generic/errno.h:
/usr/include/asm-generic/errno-base.h:
/usr/include/stdio.h:
/usr/include/bits/types/__fpos_t.h:
/usr/include/bits/types/__mbstate_t.h:
/usr/include/bits/types/__fpos64_t.h:
/usr/include/bits/types/__FILE.h:
/usr/include/bits/types/FILE.h:
/usr/include/bits/types/struct_FILE.h:
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/bits/stdint-uintn.h:
/usr/include/bits/stdint-least.h:
/usr/include/signal.h:
/usr/include/bits/signum-generic.h:
/usr/include/bits/signum-arch.h:
/usr/include/bits/types/sig_atomic_t.h:
/usr/include/bits/types/siginfo_t.h:
/usr/include/bits/types/__sigval_t.h:
/usr/include/bits/siginfo-arch.h:
/usr/include/bits/siginfo-consts.h:
/usr/include/bits/types/sigval_t.h:
/usr/include/bits/types/sigevent_t.h:
/usr/include/bits/sigevent-consts.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/include/bits/types/stack_t.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigstack.h:
/usr/include/bits/sigstksz.h:
/usr/include/bits/ss_flags.h:
/usr/include/bits/types/struct_sigstack.h:
/usr/include/bits/sigthread.h:
/usr/include/bits/signal_ext.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h:
emacs-module.h:
util.h:
msg.h:
socket.h:
context.h:
poll.h:
/usr/include/assert.h:

View File

@@ -0,0 +1,149 @@
emacs_zmq_la-msg.lo: msg.c /usr/include/stdc-predef.h msg.h core.h \
/usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/bits/wordsize.h /usr/include/bits/timesize.h \
/usr/include/sys/cdefs.h /usr/include/bits/long-double.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \
/usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/endianness.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/string.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/strings.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h \
/usr/include/zmq.h /usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__mbstate_t.h \
/usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \
/usr/include/signal.h /usr/include/bits/signum-generic.h \
/usr/include/bits/signum-arch.h /usr/include/bits/types/sig_atomic_t.h \
/usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \
/usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \
/usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \
/usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \
/usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \
/usr/include/bits/sigstksz.h /usr/include/bits/ss_flags.h \
/usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \
/usr/include/bits/signal_ext.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h emacs-module.h
/usr/include/stdc-predef.h:
msg.h:
core.h:
/usr/include/stdlib.h:
/usr/include/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/features-time64.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/timesize.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/long-double.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/bits/floatn.h:
/usr/include/bits/floatn-common.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/bits/time64.h:
/usr/include/bits/types/clock_t.h:
/usr/include/bits/types/clockid_t.h:
/usr/include/bits/types/time_t.h:
/usr/include/bits/types/timer_t.h:
/usr/include/bits/stdint-intn.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/endianness.h:
/usr/include/bits/byteswap.h:
/usr/include/bits/uintn-identity.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/types/sigset_t.h:
/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/types/struct_timeval.h:
/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/thread-shared-types.h:
/usr/include/bits/pthreadtypes-arch.h:
/usr/include/bits/atomic_wide_counter.h:
/usr/include/bits/struct_mutex.h:
/usr/include/bits/struct_rwlock.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib-bsearch.h:
/usr/include/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/bits/types/locale_t.h:
/usr/include/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h:
/usr/include/zmq.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/asm-generic/errno.h:
/usr/include/asm-generic/errno-base.h:
/usr/include/stdio.h:
/usr/include/bits/types/__fpos_t.h:
/usr/include/bits/types/__mbstate_t.h:
/usr/include/bits/types/__fpos64_t.h:
/usr/include/bits/types/__FILE.h:
/usr/include/bits/types/FILE.h:
/usr/include/bits/types/struct_FILE.h:
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/bits/stdint-uintn.h:
/usr/include/bits/stdint-least.h:
/usr/include/signal.h:
/usr/include/bits/signum-generic.h:
/usr/include/bits/signum-arch.h:
/usr/include/bits/types/sig_atomic_t.h:
/usr/include/bits/types/siginfo_t.h:
/usr/include/bits/types/__sigval_t.h:
/usr/include/bits/siginfo-arch.h:
/usr/include/bits/siginfo-consts.h:
/usr/include/bits/types/sigval_t.h:
/usr/include/bits/types/sigevent_t.h:
/usr/include/bits/sigevent-consts.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/include/bits/types/stack_t.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigstack.h:
/usr/include/bits/sigstksz.h:
/usr/include/bits/ss_flags.h:
/usr/include/bits/types/struct_sigstack.h:
/usr/include/bits/sigthread.h:
/usr/include/bits/signal_ext.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h:
emacs-module.h:

View File

@@ -0,0 +1,149 @@
emacs_zmq_la-poll.lo: poll.c /usr/include/stdc-predef.h poll.h core.h \
/usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/bits/wordsize.h /usr/include/bits/timesize.h \
/usr/include/sys/cdefs.h /usr/include/bits/long-double.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \
/usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/endianness.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/string.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/strings.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h \
/usr/include/zmq.h /usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__mbstate_t.h \
/usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \
/usr/include/signal.h /usr/include/bits/signum-generic.h \
/usr/include/bits/signum-arch.h /usr/include/bits/types/sig_atomic_t.h \
/usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \
/usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \
/usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \
/usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \
/usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \
/usr/include/bits/sigstksz.h /usr/include/bits/ss_flags.h \
/usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \
/usr/include/bits/signal_ext.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h emacs-module.h
/usr/include/stdc-predef.h:
poll.h:
core.h:
/usr/include/stdlib.h:
/usr/include/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/features-time64.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/timesize.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/long-double.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/bits/floatn.h:
/usr/include/bits/floatn-common.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/bits/time64.h:
/usr/include/bits/types/clock_t.h:
/usr/include/bits/types/clockid_t.h:
/usr/include/bits/types/time_t.h:
/usr/include/bits/types/timer_t.h:
/usr/include/bits/stdint-intn.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/endianness.h:
/usr/include/bits/byteswap.h:
/usr/include/bits/uintn-identity.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/types/sigset_t.h:
/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/types/struct_timeval.h:
/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/thread-shared-types.h:
/usr/include/bits/pthreadtypes-arch.h:
/usr/include/bits/atomic_wide_counter.h:
/usr/include/bits/struct_mutex.h:
/usr/include/bits/struct_rwlock.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib-bsearch.h:
/usr/include/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/bits/types/locale_t.h:
/usr/include/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h:
/usr/include/zmq.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/asm-generic/errno.h:
/usr/include/asm-generic/errno-base.h:
/usr/include/stdio.h:
/usr/include/bits/types/__fpos_t.h:
/usr/include/bits/types/__mbstate_t.h:
/usr/include/bits/types/__fpos64_t.h:
/usr/include/bits/types/__FILE.h:
/usr/include/bits/types/FILE.h:
/usr/include/bits/types/struct_FILE.h:
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/bits/stdint-uintn.h:
/usr/include/bits/stdint-least.h:
/usr/include/signal.h:
/usr/include/bits/signum-generic.h:
/usr/include/bits/signum-arch.h:
/usr/include/bits/types/sig_atomic_t.h:
/usr/include/bits/types/siginfo_t.h:
/usr/include/bits/types/__sigval_t.h:
/usr/include/bits/siginfo-arch.h:
/usr/include/bits/siginfo-consts.h:
/usr/include/bits/types/sigval_t.h:
/usr/include/bits/types/sigevent_t.h:
/usr/include/bits/sigevent-consts.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/include/bits/types/stack_t.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigstack.h:
/usr/include/bits/sigstksz.h:
/usr/include/bits/ss_flags.h:
/usr/include/bits/types/struct_sigstack.h:
/usr/include/bits/sigthread.h:
/usr/include/bits/signal_ext.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h:
emacs-module.h:

View File

@@ -0,0 +1,151 @@
emacs_zmq_la-socket.lo: socket.c /usr/include/stdc-predef.h socket.h \
core.h /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/bits/wordsize.h /usr/include/bits/timesize.h \
/usr/include/sys/cdefs.h /usr/include/bits/long-double.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \
/usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/endianness.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/string.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/strings.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h \
/usr/include/zmq.h /usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__mbstate_t.h \
/usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \
/usr/include/signal.h /usr/include/bits/signum-generic.h \
/usr/include/bits/signum-arch.h /usr/include/bits/types/sig_atomic_t.h \
/usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \
/usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \
/usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \
/usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \
/usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \
/usr/include/bits/sigstksz.h /usr/include/bits/ss_flags.h \
/usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \
/usr/include/bits/signal_ext.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h emacs-module.h \
/usr/include/assert.h
/usr/include/stdc-predef.h:
socket.h:
core.h:
/usr/include/stdlib.h:
/usr/include/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/features-time64.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/timesize.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/long-double.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/bits/floatn.h:
/usr/include/bits/floatn-common.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/bits/time64.h:
/usr/include/bits/types/clock_t.h:
/usr/include/bits/types/clockid_t.h:
/usr/include/bits/types/time_t.h:
/usr/include/bits/types/timer_t.h:
/usr/include/bits/stdint-intn.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/endianness.h:
/usr/include/bits/byteswap.h:
/usr/include/bits/uintn-identity.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/types/sigset_t.h:
/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/types/struct_timeval.h:
/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/thread-shared-types.h:
/usr/include/bits/pthreadtypes-arch.h:
/usr/include/bits/atomic_wide_counter.h:
/usr/include/bits/struct_mutex.h:
/usr/include/bits/struct_rwlock.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib-bsearch.h:
/usr/include/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/bits/types/locale_t.h:
/usr/include/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h:
/usr/include/zmq.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/asm-generic/errno.h:
/usr/include/asm-generic/errno-base.h:
/usr/include/stdio.h:
/usr/include/bits/types/__fpos_t.h:
/usr/include/bits/types/__mbstate_t.h:
/usr/include/bits/types/__fpos64_t.h:
/usr/include/bits/types/__FILE.h:
/usr/include/bits/types/FILE.h:
/usr/include/bits/types/struct_FILE.h:
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/bits/stdint-uintn.h:
/usr/include/bits/stdint-least.h:
/usr/include/signal.h:
/usr/include/bits/signum-generic.h:
/usr/include/bits/signum-arch.h:
/usr/include/bits/types/sig_atomic_t.h:
/usr/include/bits/types/siginfo_t.h:
/usr/include/bits/types/__sigval_t.h:
/usr/include/bits/siginfo-arch.h:
/usr/include/bits/siginfo-consts.h:
/usr/include/bits/types/sigval_t.h:
/usr/include/bits/types/sigevent_t.h:
/usr/include/bits/sigevent-consts.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/include/bits/types/stack_t.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigstack.h:
/usr/include/bits/sigstksz.h:
/usr/include/bits/ss_flags.h:
/usr/include/bits/types/struct_sigstack.h:
/usr/include/bits/sigthread.h:
/usr/include/bits/signal_ext.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h:
emacs-module.h:
/usr/include/assert.h:

View File

@@ -0,0 +1,149 @@
emacs_zmq_la-util.lo: util.c /usr/include/stdc-predef.h util.h core.h \
/usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/bits/wordsize.h /usr/include/bits/timesize.h \
/usr/include/sys/cdefs.h /usr/include/bits/long-double.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \
/usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/endianness.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/string.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/strings.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h \
/usr/include/zmq.h /usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__mbstate_t.h \
/usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \
/usr/include/signal.h /usr/include/bits/signum-generic.h \
/usr/include/bits/signum-arch.h /usr/include/bits/types/sig_atomic_t.h \
/usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \
/usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \
/usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \
/usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \
/usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \
/usr/include/bits/sigstksz.h /usr/include/bits/ss_flags.h \
/usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \
/usr/include/bits/signal_ext.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h emacs-module.h
/usr/include/stdc-predef.h:
util.h:
core.h:
/usr/include/stdlib.h:
/usr/include/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/features-time64.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/timesize.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/long-double.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/bits/floatn.h:
/usr/include/bits/floatn-common.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/bits/time64.h:
/usr/include/bits/types/clock_t.h:
/usr/include/bits/types/clockid_t.h:
/usr/include/bits/types/time_t.h:
/usr/include/bits/types/timer_t.h:
/usr/include/bits/stdint-intn.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/endianness.h:
/usr/include/bits/byteswap.h:
/usr/include/bits/uintn-identity.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/types/sigset_t.h:
/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/types/struct_timeval.h:
/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/thread-shared-types.h:
/usr/include/bits/pthreadtypes-arch.h:
/usr/include/bits/atomic_wide_counter.h:
/usr/include/bits/struct_mutex.h:
/usr/include/bits/struct_rwlock.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib-bsearch.h:
/usr/include/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/bits/types/locale_t.h:
/usr/include/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdarg.h:
/usr/include/zmq.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/asm-generic/errno.h:
/usr/include/asm-generic/errno-base.h:
/usr/include/stdio.h:
/usr/include/bits/types/__fpos_t.h:
/usr/include/bits/types/__mbstate_t.h:
/usr/include/bits/types/__fpos64_t.h:
/usr/include/bits/types/__FILE.h:
/usr/include/bits/types/FILE.h:
/usr/include/bits/types/struct_FILE.h:
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/bits/stdint-uintn.h:
/usr/include/bits/stdint-least.h:
/usr/include/signal.h:
/usr/include/bits/signum-generic.h:
/usr/include/bits/signum-arch.h:
/usr/include/bits/types/sig_atomic_t.h:
/usr/include/bits/types/siginfo_t.h:
/usr/include/bits/types/__sigval_t.h:
/usr/include/bits/siginfo-arch.h:
/usr/include/bits/siginfo-consts.h:
/usr/include/bits/types/sigval_t.h:
/usr/include/bits/types/sigevent_t.h:
/usr/include/bits/sigevent-consts.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/include/bits/types/stack_t.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigstack.h:
/usr/include/bits/sigstksz.h:
/usr/include/bits/ss_flags.h:
/usr/include/bits/types/struct_sigstack.h:
/usr/include/bits/sigthread.h:
/usr/include/bits/signal_ext.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/include/stdbool.h:
emacs-module.h:

View File

@@ -0,0 +1 @@
../emacs-zmq.la

View File

@@ -0,0 +1,41 @@
# emacs-zmq.la - a libtool library file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='emacs-zmq.so'
# Names of this library.
library_names='emacs-zmq.so emacs-zmq.so emacs-zmq.so'
# The name of the static archive.
old_library=''
# Linker flags that cannot go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lzmq'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for emacs-zmq.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=yes
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/home/daniel/repos/emacs-conf/lisp/zmq/lib'

BIN
lisp/zmq/src/.libs/emacs-zmq.so Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1057
lisp/zmq/src/Makefile Normal file

File diff suppressed because it is too large Load Diff

19
lisp/zmq/src/Makefile.am Normal file
View File

@@ -0,0 +1,19 @@
SUBDIRS = $(MAYBE_LIBZMQ)
ACLOCAL_AMFLAGS = -I m4
lib_LTLIBRARIES = emacs-zmq.la
emacs_zmq_la_CFLAGS =
emacs_zmq_la_LDFLAGS = -module -avoid-version -shrext $(MODULE_EXT)
if WINDOWS
emacs_zmq_la_LDFLAGS += -no-undefined
endif
if ZMQ_BUILD_LOCALLY
# Its necessary to pass static libraries directly to the linker since libtool
# won't build emacs-zmq as a dynamic module on Windows otherwise.
emacs_zmq_la_LDFLAGS += -Wl,libzmq/src/.libs/libzmq.a
emacs_zmq_la_CFLAGS += -Ilibzmq/include -fvisibility=hidden
emacs_zmq_la_CPPFLAGS = -DZMQ_BUILD_DRAFT_API=1
endif
emacs_zmq_la_SOURCES = socket.c context.c msg.c constants.c util.c core.c poll.c emacs-zmq.c

1057
lisp/zmq/src/Makefile.in Normal file

File diff suppressed because it is too large Load Diff

1559
lisp/zmq/src/aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

271
lisp/zmq/src/ar-lib Executable file
View File

@@ -0,0 +1,271 @@
#! /bin/sh
# Wrapper for Microsoft lib.exe
me=ar-lib
scriptversion=2019-07-04.01; # UTC
# Copyright (C) 2010-2021 Free Software Foundation, Inc.
# Written by Peter Rosin <peda@lysator.liu.se>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
# func_error message
func_error ()
{
echo "$me: $1" 1>&2
exit 1
}
file_conv=
# func_file_conv build_file
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN* | MSYS*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv in
mingw)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin | msys)
file=`cygpath -m "$file" || echo "$file"`
;;
wine)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_at_file at_file operation archive
# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
# for each of them.
# When interpreting the content of the @FILE, do NOT use func_file_conv,
# since the user would need to supply preconverted file names to
# binutils ar, at least for MinGW.
func_at_file ()
{
operation=$2
archive=$3
at_file_contents=`cat "$1"`
eval set x "$at_file_contents"
shift
for member
do
$AR -NOLOGO $operation:"$member" "$archive" || exit $?
done
}
case $1 in
'')
func_error "no command. Try '$0 --help' for more information."
;;
-h | --h*)
cat <<EOF
Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
Members may be specified in a file named with @FILE.
EOF
exit $?
;;
-v | --v*)
echo "$me, version $scriptversion"
exit $?
;;
esac
if test $# -lt 3; then
func_error "you must specify a program, an action and an archive"
fi
AR=$1
shift
while :
do
if test $# -lt 2; then
func_error "you must specify a program, an action and an archive"
fi
case $1 in
-lib | -LIB \
| -ltcg | -LTCG \
| -machine* | -MACHINE* \
| -subsystem* | -SUBSYSTEM* \
| -verbose | -VERBOSE \
| -wx* | -WX* )
AR="$AR $1"
shift
;;
*)
action=$1
shift
break
;;
esac
done
orig_archive=$1
shift
func_file_conv "$orig_archive"
archive=$file
# strip leading dash in $action
action=${action#-}
delete=
extract=
list=
quick=
replace=
index=
create=
while test -n "$action"
do
case $action in
d*) delete=yes ;;
x*) extract=yes ;;
t*) list=yes ;;
q*) quick=yes ;;
r*) replace=yes ;;
s*) index=yes ;;
S*) ;; # the index is always updated implicitly
c*) create=yes ;;
u*) ;; # TODO: don't ignore the update modifier
v*) ;; # TODO: don't ignore the verbose modifier
*)
func_error "unknown action specified"
;;
esac
action=${action#?}
done
case $delete$extract$list$quick$replace,$index in
yes,* | ,yes)
;;
yesyes*)
func_error "more than one action specified"
;;
*)
func_error "no action specified"
;;
esac
if test -n "$delete"; then
if test ! -f "$orig_archive"; then
func_error "archive not found"
fi
for member
do
case $1 in
@*)
func_at_file "${1#@}" -REMOVE "$archive"
;;
*)
func_file_conv "$1"
$AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
;;
esac
done
elif test -n "$extract"; then
if test ! -f "$orig_archive"; then
func_error "archive not found"
fi
if test $# -gt 0; then
for member
do
case $1 in
@*)
func_at_file "${1#@}" -EXTRACT "$archive"
;;
*)
func_file_conv "$1"
$AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
;;
esac
done
else
$AR -NOLOGO -LIST "$archive" | tr -d '\r' | sed -e 's/\\/\\\\/g' \
| while read member
do
$AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
done
fi
elif test -n "$quick$replace"; then
if test ! -f "$orig_archive"; then
if test -z "$create"; then
echo "$me: creating $orig_archive"
fi
orig_archive=
else
orig_archive=$archive
fi
for member
do
case $1 in
@*)
func_file_conv "${1#@}"
set x "$@" "@$file"
;;
*)
func_file_conv "$1"
set x "$@" "$file"
;;
esac
shift
shift
done
if test -n "$orig_archive"; then
$AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
else
$AR -NOLOGO -OUT:"$archive" "$@" || exit $?
fi
elif test -n "$list"; then
if test ! -f "$orig_archive"; then
func_error "archive not found"
fi
$AR -NOLOGO -LIST "$archive" || exit $?
fi

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,626 @@
# This file was generated by Autom4te 2.72.
# It contains the lists of macros which have been traced.
# It can be safely removed.
@request = (
bless( [
'0',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'/usr/share/aclocal-1.16/internal/ac-config-macro-dirs.m4',
'/usr/share/aclocal/libtool.m4',
'/usr/share/aclocal/ltargz.m4',
'/usr/share/aclocal/ltdl.m4',
'/usr/share/aclocal/ltoptions.m4',
'/usr/share/aclocal/ltsugar.m4',
'/usr/share/aclocal/ltversion.m4',
'/usr/share/aclocal/lt~obsolete.m4',
'/usr/share/aclocal/pkg.m4',
'/usr/share/aclocal-1.16/amversion.m4',
'/usr/share/aclocal-1.16/ar-lib.m4',
'/usr/share/aclocal-1.16/auxdir.m4',
'/usr/share/aclocal-1.16/cond.m4',
'/usr/share/aclocal-1.16/depend.m4',
'/usr/share/aclocal-1.16/depout.m4',
'/usr/share/aclocal-1.16/init.m4',
'/usr/share/aclocal-1.16/install-sh.m4',
'/usr/share/aclocal-1.16/lead-dot.m4',
'/usr/share/aclocal-1.16/make.m4',
'/usr/share/aclocal-1.16/missing.m4',
'/usr/share/aclocal-1.16/options.m4',
'/usr/share/aclocal-1.16/prog-cc-c-o.m4',
'/usr/share/aclocal-1.16/runlog.m4',
'/usr/share/aclocal-1.16/sanity.m4',
'/usr/share/aclocal-1.16/silent.m4',
'/usr/share/aclocal-1.16/strip.m4',
'/usr/share/aclocal-1.16/substnot.m4',
'/usr/share/aclocal-1.16/tar.m4',
'configure.ac'
],
{
'AC_CHECK_LIBM' => 1,
'AC_CONFIG_MACRO_DIR' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AC_DEFUN' => 1,
'AC_DEFUN_ONCE' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'AC_DISABLE_SHARED' => 1,
'AC_DISABLE_STATIC' => 1,
'AC_ENABLE_FAST_INSTALL' => 1,
'AC_ENABLE_SHARED' => 1,
'AC_ENABLE_STATIC' => 1,
'AC_LIBLTDL_CONVENIENCE' => 1,
'AC_LIBLTDL_INSTALLABLE' => 1,
'AC_LIBTOOL_COMPILER_OPTION' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'AC_LIBTOOL_CXX' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
'AC_LIBTOOL_DLOPEN_SELF' => 1,
'AC_LIBTOOL_F77' => 1,
'AC_LIBTOOL_FC' => 1,
'AC_LIBTOOL_GCJ' => 1,
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
'AC_LIBTOOL_LINKER_OPTION' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'AC_LIBTOOL_PICMODE' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'AC_LIBTOOL_PROG_CC_C_O' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
'AC_LIBTOOL_RC' => 1,
'AC_LIBTOOL_SETUP' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
'AC_LIBTOOL_WIN32_DLL' => 1,
'AC_LIB_LTDL' => 1,
'AC_LTDL_DLLIB' => 1,
'AC_LTDL_DLSYM_USCORE' => 1,
'AC_LTDL_ENABLE_INSTALL' => 1,
'AC_LTDL_OBJDIR' => 1,
'AC_LTDL_PREOPEN' => 1,
'AC_LTDL_SHLIBEXT' => 1,
'AC_LTDL_SHLIBPATH' => 1,
'AC_LTDL_SYMBOL_USCORE' => 1,
'AC_LTDL_SYSSEARCHPATH' => 1,
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
'AC_PATH_MAGIC' => 1,
'AC_PATH_TOOL_PREFIX' => 1,
'AC_PROG_EGREP' => 1,
'AC_PROG_LD' => 1,
'AC_PROG_LD_GNU' => 1,
'AC_PROG_LD_RELOAD_FLAG' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_PROG_NM' => 1,
'AC_WITH_LTDL' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'AM_CONDITIONAL' => 1,
'AM_DEP_TRACK' => 1,
'AM_DISABLE_SHARED' => 1,
'AM_DISABLE_STATIC' => 1,
'AM_ENABLE_SHARED' => 1,
'AM_ENABLE_STATIC' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AM_MAKE_INCLUDE' => 1,
'AM_MISSING_HAS_RUN' => 1,
'AM_MISSING_PROG' => 1,
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AM_PROG_AR' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_INSTALL_SH' => 1,
'AM_PROG_INSTALL_STRIP' => 1,
'AM_PROG_LD' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_PROG_NM' => 1,
'AM_RUN_LOG' => 1,
'AM_SANITY_CHECK' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'AM_SET_DEPDIR' => 1,
'AM_SET_LEADING_DOT' => 1,
'AM_SILENT_RULES' => 1,
'AM_SUBST_NOTMAKE' => 1,
'AU_DEFUN' => 1,
'LTDL_CONVENIENCE' => 1,
'LTDL_INIT' => 1,
'LTDL_INSTALLABLE' => 1,
'LTOBSOLETE_VERSION' => 1,
'LTOPTIONS_VERSION' => 1,
'LTSUGAR_VERSION' => 1,
'LTVERSION_VERSION' => 1,
'LT_AC_PROG_EGREP' => 1,
'LT_AC_PROG_GCJ' => 1,
'LT_AC_PROG_RC' => 1,
'LT_AC_PROG_SED' => 1,
'LT_CMD_MAX_LEN' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'LT_FUNC_ARGZ' => 1,
'LT_FUNC_DLSYM_USCORE' => 1,
'LT_INIT' => 1,
'LT_LANG' => 1,
'LT_LIB_DLLOAD' => 1,
'LT_LIB_M' => 1,
'LT_OUTPUT' => 1,
'LT_PATH_LD' => 1,
'LT_PATH_NM' => 1,
'LT_PROG_GCJ' => 1,
'LT_PROG_GO' => 1,
'LT_PROG_RC' => 1,
'LT_SUPPORTED_TAG' => 1,
'LT_SYS_DLOPEN_DEPLIBS' => 1,
'LT_SYS_DLOPEN_SELF' => 1,
'LT_SYS_DLSEARCH_PATH' => 1,
'LT_SYS_MODULE_EXT' => 1,
'LT_SYS_MODULE_PATH' => 1,
'LT_SYS_SYMBOL_USCORE' => 1,
'LT_WITH_LTDL' => 1,
'PKG_CHECK_EXISTS' => 1,
'PKG_CHECK_MODULES' => 1,
'PKG_CHECK_MODULES_STATIC' => 1,
'PKG_CHECK_VAR' => 1,
'PKG_HAVE_DEFINE_WITH_MODULES' => 1,
'PKG_HAVE_WITH_MODULES' => 1,
'PKG_INSTALLDIR' => 1,
'PKG_NOARCH_INSTALLDIR' => 1,
'PKG_PROG_PKG_CONFIG' => 1,
'PKG_WITH_MODULES' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'_AC_PROG_LIBTOOL' => 1,
'_AM_AUTOCONF_VERSION' => 1,
'_AM_CONFIG_MACRO_DIRS' => 1,
'_AM_DEPENDENCIES' => 1,
'_AM_IF_OPTION' => 1,
'_AM_MANGLE_OPTION' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'_AM_PROG_CC_C_O' => 1,
'_AM_PROG_TAR' => 1,
'_AM_SET_OPTION' => 1,
'_AM_SET_OPTIONS' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_LTDL_SETUP' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'_LT_AC_LANG_CXX' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
'_LT_AC_LANG_C_CONFIG' => 1,
'_LT_AC_LANG_F77' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'_LT_AC_LANG_GCJ' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'_LT_AC_LOCK' => 1,
'_LT_AC_PROG_CXXCPP' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'_LT_AC_SHELL_INIT' => 1,
'_LT_AC_SYS_COMPILER' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'_LT_AC_TAGCONFIG' => 1,
'_LT_AC_TAGVAR' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'_LT_CC_BASENAME' => 1,
'_LT_COMPILER_BOILERPLATE' => 1,
'_LT_COMPILER_OPTION' => 1,
'_LT_DLL_DEF_P' => 1,
'_LT_LIBOBJ' => 1,
'_LT_LINKER_BOILERPLATE' => 1,
'_LT_LINKER_OPTION' => 1,
'_LT_PATH_TOOL_PREFIX' => 1,
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
'_LT_PROG_CXX' => 1,
'_LT_PROG_ECHO_BACKSLASH' => 1,
'_LT_PROG_F77' => 1,
'_LT_PROG_FC' => 1,
'_LT_PROG_LTMAIN' => 1,
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
'_LT_WITH_SYSROOT' => 1,
'_PKG_SHORT_ERRORS_SUPPORTED' => 1,
'_m4_warn' => 1,
'include' => 1,
'm4_include' => 1,
'm4_pattern_allow' => 1,
'm4_pattern_forbid' => 1
}
], 'Autom4te::Request' ),
bless( [
'1',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.ac'
],
{
'AC_CANONICAL_BUILD' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_CONFIG_FILES' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FC_FREEFORM' => 1,
'AC_FC_PP_DEFINE' => 1,
'AC_FC_PP_SRCEXT' => 1,
'AC_FC_SRCEXT' => 1,
'AC_INIT' => 1,
'AC_LIBSOURCE' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_SUBST' => 1,
'AC_SUBST_TRACE' => 1,
'AH_OUTPUT' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_CONDITIONAL' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
'AM_GNU_GETTEXT' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'AM_NLS' => 1,
'AM_PATH_GUILE' => 1,
'AM_POT_TOOLS' => 1,
'AM_PROG_AR' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_CXX_C_O' => 1,
'AM_PROG_F77_C_O' => 1,
'AM_PROG_FC_C_O' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_PROG_MKDIR_P' => 1,
'AM_PROG_MOC' => 1,
'AM_SILENT_RULES' => 1,
'AM_XGETTEXT_OPTION' => 1,
'GTK_DOC_CHECK' => 1,
'IT_PROG_INTLTOOL' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'LT_INIT' => 1,
'LT_SUPPORTED_TAG' => 1,
'_AM_COND_ELSE' => 1,
'_AM_COND_ENDIF' => 1,
'_AM_COND_IF' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_LT_AC_TAGCONFIG' => 1,
'_m4_warn' => 1,
'include' => 1,
'm4_include' => 1,
'm4_pattern_allow' => 1,
'm4_pattern_forbid' => 1,
'm4_sinclude' => 1,
'sinclude' => 1
}
], 'Autom4te::Request' ),
bless( [
'2',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'/usr/share/aclocal-1.16/internal/ac-config-macro-dirs.m4',
'/usr/share/aclocal/ltargz.m4',
'/usr/share/aclocal/ltdl.m4',
'/usr/share/aclocal/pkg.m4',
'/usr/share/aclocal-1.16/amversion.m4',
'/usr/share/aclocal-1.16/ar-lib.m4',
'/usr/share/aclocal-1.16/auxdir.m4',
'/usr/share/aclocal-1.16/cond.m4',
'/usr/share/aclocal-1.16/depend.m4',
'/usr/share/aclocal-1.16/depout.m4',
'/usr/share/aclocal-1.16/init.m4',
'/usr/share/aclocal-1.16/install-sh.m4',
'/usr/share/aclocal-1.16/lead-dot.m4',
'/usr/share/aclocal-1.16/make.m4',
'/usr/share/aclocal-1.16/missing.m4',
'/usr/share/aclocal-1.16/options.m4',
'/usr/share/aclocal-1.16/prog-cc-c-o.m4',
'/usr/share/aclocal-1.16/runlog.m4',
'/usr/share/aclocal-1.16/sanity.m4',
'/usr/share/aclocal-1.16/silent.m4',
'/usr/share/aclocal-1.16/strip.m4',
'/usr/share/aclocal-1.16/substnot.m4',
'/usr/share/aclocal-1.16/tar.m4',
'm4/libtool.m4',
'm4/ltoptions.m4',
'm4/ltsugar.m4',
'm4/ltversion.m4',
'm4/lt~obsolete.m4',
'configure.ac'
],
{
'AC_CHECK_LIBM' => 1,
'AC_CONFIG_MACRO_DIR' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AC_DEFUN' => 1,
'AC_DEFUN_ONCE' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'AC_DISABLE_SHARED' => 1,
'AC_DISABLE_STATIC' => 1,
'AC_ENABLE_FAST_INSTALL' => 1,
'AC_ENABLE_SHARED' => 1,
'AC_ENABLE_STATIC' => 1,
'AC_LIBLTDL_CONVENIENCE' => 1,
'AC_LIBLTDL_INSTALLABLE' => 1,
'AC_LIBTOOL_COMPILER_OPTION' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'AC_LIBTOOL_CXX' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
'AC_LIBTOOL_DLOPEN_SELF' => 1,
'AC_LIBTOOL_F77' => 1,
'AC_LIBTOOL_FC' => 1,
'AC_LIBTOOL_GCJ' => 1,
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
'AC_LIBTOOL_LINKER_OPTION' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'AC_LIBTOOL_PICMODE' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'AC_LIBTOOL_PROG_CC_C_O' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
'AC_LIBTOOL_RC' => 1,
'AC_LIBTOOL_SETUP' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
'AC_LIBTOOL_WIN32_DLL' => 1,
'AC_LIB_LTDL' => 1,
'AC_LTDL_DLLIB' => 1,
'AC_LTDL_DLSYM_USCORE' => 1,
'AC_LTDL_ENABLE_INSTALL' => 1,
'AC_LTDL_OBJDIR' => 1,
'AC_LTDL_PREOPEN' => 1,
'AC_LTDL_SHLIBEXT' => 1,
'AC_LTDL_SHLIBPATH' => 1,
'AC_LTDL_SYMBOL_USCORE' => 1,
'AC_LTDL_SYSSEARCHPATH' => 1,
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
'AC_PATH_MAGIC' => 1,
'AC_PATH_TOOL_PREFIX' => 1,
'AC_PROG_EGREP' => 1,
'AC_PROG_LD' => 1,
'AC_PROG_LD_GNU' => 1,
'AC_PROG_LD_RELOAD_FLAG' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_PROG_NM' => 1,
'AC_WITH_LTDL' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'AM_CONDITIONAL' => 1,
'AM_DEP_TRACK' => 1,
'AM_DISABLE_SHARED' => 1,
'AM_DISABLE_STATIC' => 1,
'AM_ENABLE_SHARED' => 1,
'AM_ENABLE_STATIC' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AM_MAKE_INCLUDE' => 1,
'AM_MISSING_HAS_RUN' => 1,
'AM_MISSING_PROG' => 1,
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AM_PROG_AR' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_INSTALL_SH' => 1,
'AM_PROG_INSTALL_STRIP' => 1,
'AM_PROG_LD' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_PROG_NM' => 1,
'AM_RUN_LOG' => 1,
'AM_SANITY_CHECK' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'AM_SET_DEPDIR' => 1,
'AM_SET_LEADING_DOT' => 1,
'AM_SILENT_RULES' => 1,
'AM_SUBST_NOTMAKE' => 1,
'AU_DEFUN' => 1,
'LTDL_CONVENIENCE' => 1,
'LTDL_INIT' => 1,
'LTDL_INSTALLABLE' => 1,
'LTOBSOLETE_VERSION' => 1,
'LTOPTIONS_VERSION' => 1,
'LTSUGAR_VERSION' => 1,
'LTVERSION_VERSION' => 1,
'LT_AC_PROG_EGREP' => 1,
'LT_AC_PROG_GCJ' => 1,
'LT_AC_PROG_RC' => 1,
'LT_AC_PROG_SED' => 1,
'LT_CMD_MAX_LEN' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'LT_FUNC_ARGZ' => 1,
'LT_FUNC_DLSYM_USCORE' => 1,
'LT_INIT' => 1,
'LT_LANG' => 1,
'LT_LIB_DLLOAD' => 1,
'LT_LIB_M' => 1,
'LT_OUTPUT' => 1,
'LT_PATH_LD' => 1,
'LT_PATH_NM' => 1,
'LT_PROG_GCJ' => 1,
'LT_PROG_GO' => 1,
'LT_PROG_RC' => 1,
'LT_SUPPORTED_TAG' => 1,
'LT_SYS_DLOPEN_DEPLIBS' => 1,
'LT_SYS_DLOPEN_SELF' => 1,
'LT_SYS_DLSEARCH_PATH' => 1,
'LT_SYS_MODULE_EXT' => 1,
'LT_SYS_MODULE_PATH' => 1,
'LT_SYS_SYMBOL_USCORE' => 1,
'LT_WITH_LTDL' => 1,
'PKG_CHECK_EXISTS' => 1,
'PKG_CHECK_MODULES' => 1,
'PKG_CHECK_MODULES_STATIC' => 1,
'PKG_CHECK_VAR' => 1,
'PKG_HAVE_DEFINE_WITH_MODULES' => 1,
'PKG_HAVE_WITH_MODULES' => 1,
'PKG_INSTALLDIR' => 1,
'PKG_NOARCH_INSTALLDIR' => 1,
'PKG_PROG_PKG_CONFIG' => 1,
'PKG_WITH_MODULES' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'_AC_PROG_LIBTOOL' => 1,
'_AM_AUTOCONF_VERSION' => 1,
'_AM_CONFIG_MACRO_DIRS' => 1,
'_AM_DEPENDENCIES' => 1,
'_AM_IF_OPTION' => 1,
'_AM_MANGLE_OPTION' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'_AM_PROG_CC_C_O' => 1,
'_AM_PROG_TAR' => 1,
'_AM_SET_OPTION' => 1,
'_AM_SET_OPTIONS' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_LTDL_SETUP' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'_LT_AC_LANG_CXX' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
'_LT_AC_LANG_C_CONFIG' => 1,
'_LT_AC_LANG_F77' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'_LT_AC_LANG_GCJ' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'_LT_AC_LOCK' => 1,
'_LT_AC_PROG_CXXCPP' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'_LT_AC_SHELL_INIT' => 1,
'_LT_AC_SYS_COMPILER' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'_LT_AC_TAGCONFIG' => 1,
'_LT_AC_TAGVAR' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'_LT_CC_BASENAME' => 1,
'_LT_COMPILER_BOILERPLATE' => 1,
'_LT_COMPILER_OPTION' => 1,
'_LT_DLL_DEF_P' => 1,
'_LT_LIBOBJ' => 1,
'_LT_LINKER_BOILERPLATE' => 1,
'_LT_LINKER_OPTION' => 1,
'_LT_PATH_TOOL_PREFIX' => 1,
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
'_LT_PROG_CXX' => 1,
'_LT_PROG_ECHO_BACKSLASH' => 1,
'_LT_PROG_F77' => 1,
'_LT_PROG_FC' => 1,
'_LT_PROG_LTMAIN' => 1,
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
'_LT_WITH_SYSROOT' => 1,
'_PKG_SHORT_ERRORS_SUPPORTED' => 1,
'_m4_warn' => 1,
'include' => 1,
'm4_include' => 1,
'm4_pattern_allow' => 1,
'm4_pattern_forbid' => 1
}
], 'Autom4te::Request' ),
bless( [
'3',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'/usr/share/autoconf/autoconf/trailer.m4',
'configure.ac'
],
{
'AC_CANONICAL_BUILD' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_CONFIG_FILES' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FC_FREEFORM' => 1,
'AC_FC_PP_DEFINE' => 1,
'AC_FC_PP_SRCEXT' => 1,
'AC_FC_SRCEXT' => 1,
'AC_INIT' => 1,
'AC_LIBSOURCE' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_SUBST' => 1,
'AC_SUBST_TRACE' => 1,
'AH_OUTPUT' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_CONDITIONAL' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
'AM_GNU_GETTEXT' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'AM_NLS' => 1,
'AM_PATH_GUILE' => 1,
'AM_POT_TOOLS' => 1,
'AM_PROG_AR' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_CXX_C_O' => 1,
'AM_PROG_F77_C_O' => 1,
'AM_PROG_FC_C_O' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_PROG_MKDIR_P' => 1,
'AM_PROG_MOC' => 1,
'AM_SILENT_RULES' => 1,
'AM_XGETTEXT_OPTION' => 1,
'GTK_DOC_CHECK' => 1,
'IT_PROG_INTLTOOL' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'LT_INIT' => 1,
'LT_SUPPORTED_TAG' => 1,
'_AM_COND_ELSE' => 1,
'_AM_COND_ENDIF' => 1,
'_AM_COND_IF' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_LT_AC_TAGCONFIG' => 1,
'_m4_warn' => 1,
'include' => 1,
'm4_include' => 1,
'm4_pattern_allow' => 1,
'm4_pattern_forbid' => 1,
'm4_sinclude' => 1,
'sinclude' => 1
}
], 'Autom4te::Request' )
);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,595 @@
m4trace:aclocal.m4:1103: -1- AC_SUBST([am__quote])
m4trace:aclocal.m4:1103: -1- AC_SUBST_TRACE([am__quote])
m4trace:aclocal.m4:1103: -1- m4_pattern_allow([^am__quote$])
m4trace:aclocal.m4:1555: -1- m4_include([m4/libtool.m4])
m4trace:aclocal.m4:1556: -1- m4_include([m4/ltoptions.m4])
m4trace:aclocal.m4:1557: -1- m4_include([m4/ltsugar.m4])
m4trace:aclocal.m4:1558: -1- m4_include([m4/ltversion.m4])
m4trace:aclocal.m4:1559: -1- m4_include([m4/lt~obsolete.m4])
m4trace:configure.ac:2: -1- AC_INIT([emacs-zmq], [1.0.0], [nathanielnicandro@gmail.com])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.ac:2: -1- AC_SUBST([SHELL])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([SHELL])
m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$])
m4trace:configure.ac:2: -1- AC_SUBST([PATH_SEPARATOR])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_NAME])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_STRING])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_URL])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:2: -1- AC_SUBST([exec_prefix], [NONE])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([exec_prefix])
m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$])
m4trace:configure.ac:2: -1- AC_SUBST([prefix], [NONE])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([prefix])
m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$])
m4trace:configure.ac:2: -1- AC_SUBST([program_transform_name], [s,x,x,])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([program_transform_name])
m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$])
m4trace:configure.ac:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([bindir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$])
m4trace:configure.ac:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sbindir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$])
m4trace:configure.ac:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libexecdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$])
m4trace:configure.ac:2: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datarootdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.ac:2: -1- AC_SUBST([datadir], ['${datarootdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datadir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$])
m4trace:configure.ac:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sysconfdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sharedstatedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$])
m4trace:configure.ac:2: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localstatedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.ac:2: -1- AC_SUBST([runstatedir], ['${localstatedir}/run'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([runstatedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^runstatedir$])
m4trace:configure.ac:2: -1- AC_SUBST([includedir], ['${prefix}/include'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([includedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$])
m4trace:configure.ac:2: -1- AC_SUBST([oldincludedir], ['/usr/include'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([oldincludedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$])
m4trace:configure.ac:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
['${datarootdir}/doc/${PACKAGE}'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([docdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$])
m4trace:configure.ac:2: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([infodir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$])
m4trace:configure.ac:2: -1- AC_SUBST([htmldir], ['${docdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([htmldir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$])
m4trace:configure.ac:2: -1- AC_SUBST([dvidir], ['${docdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([dvidir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$])
m4trace:configure.ac:2: -1- AC_SUBST([pdfdir], ['${docdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([pdfdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$])
m4trace:configure.ac:2: -1- AC_SUBST([psdir], ['${docdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([psdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$])
m4trace:configure.ac:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$])
m4trace:configure.ac:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$])
m4trace:configure.ac:2: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([mandir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
@%:@undef PACKAGE_NAME])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
@%:@undef PACKAGE_TARNAME])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
@%:@undef PACKAGE_VERSION])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
@%:@undef PACKAGE_STRING])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
@%:@undef PACKAGE_BUGREPORT])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
@%:@undef PACKAGE_URL])
m4trace:configure.ac:2: -1- AC_SUBST([DEFS])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([DEFS])
m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$])
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_C])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_C])
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$])
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_N])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_N])
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$])
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_T])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_T])
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$])
m4trace:configure.ac:2: -1- AC_SUBST([LIBS])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:2: -1- AC_SUBST([build_alias])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([build_alias])
m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$])
m4trace:configure.ac:2: -1- AC_SUBST([host_alias])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([host_alias])
m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$])
m4trace:configure.ac:2: -1- AC_SUBST([target_alias])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([target_alias])
m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$])
m4trace:configure.ac:5: -1- AC_CONFIG_MACRO_DIR_TRACE([m4])
m4trace:configure.ac:6: -1- AM_INIT_AUTOMAKE([-Wall -Wno-override foreign])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
m4trace:configure.ac:6: -1- AM_AUTOMAKE_VERSION([1.16.5])
m4trace:configure.ac:6: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
m4trace:configure.ac:6: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
m4trace:configure.ac:6: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL_DATA])
m4trace:configure.ac:6: -1- m4_pattern_allow([^INSTALL_DATA$])
m4trace:configure.ac:6: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([am__isrc])
m4trace:configure.ac:6: -1- m4_pattern_allow([^am__isrc$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([am__isrc])
m4trace:configure.ac:6: -1- AC_SUBST([CYGPATH_W])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([CYGPATH_W])
m4trace:configure.ac:6: -1- m4_pattern_allow([^CYGPATH_W$])
m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:6: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([VERSION])
m4trace:configure.ac:6: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
@%:@undef PACKAGE])
m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
m4trace:configure.ac:6: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:6: -1- AH_OUTPUT([VERSION], [/* Version number of package */
@%:@undef VERSION])
m4trace:configure.ac:6: -1- AC_REQUIRE_AUX_FILE([missing])
m4trace:configure.ac:6: -1- AC_SUBST([ACLOCAL])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ACLOCAL])
m4trace:configure.ac:6: -1- m4_pattern_allow([^ACLOCAL$])
m4trace:configure.ac:6: -1- AC_SUBST([AUTOCONF])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AUTOCONF])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AUTOCONF$])
m4trace:configure.ac:6: -1- AC_SUBST([AUTOMAKE])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AUTOMAKE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AUTOMAKE$])
m4trace:configure.ac:6: -1- AC_SUBST([AUTOHEADER])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AUTOHEADER])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AUTOHEADER$])
m4trace:configure.ac:6: -1- AC_SUBST([MAKEINFO])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([MAKEINFO])
m4trace:configure.ac:6: -1- m4_pattern_allow([^MAKEINFO$])
m4trace:configure.ac:6: -1- AC_SUBST([install_sh])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([install_sh])
m4trace:configure.ac:6: -1- m4_pattern_allow([^install_sh$])
m4trace:configure.ac:6: -1- AC_SUBST([STRIP])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:6: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:6: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
m4trace:configure.ac:6: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:6: -1- AC_SUBST([MKDIR_P])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:6: -1- m4_pattern_allow([^MKDIR_P$])
m4trace:configure.ac:6: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([mkdir_p])
m4trace:configure.ac:6: -1- m4_pattern_allow([^mkdir_p$])
m4trace:configure.ac:6: -1- AC_SUBST([AWK])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AWK])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AWK$])
m4trace:configure.ac:6: -1- AC_SUBST([SET_MAKE])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:6: -1- AC_SUBST([am__leading_dot])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([am__leading_dot])
m4trace:configure.ac:6: -1- m4_pattern_allow([^am__leading_dot$])
m4trace:configure.ac:6: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AMTAR])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AMTAR$])
m4trace:configure.ac:6: -1- AC_SUBST([am__tar])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([am__tar])
m4trace:configure.ac:6: -1- m4_pattern_allow([^am__tar$])
m4trace:configure.ac:6: -1- AC_SUBST([am__untar])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([am__untar])
m4trace:configure.ac:6: -1- m4_pattern_allow([^am__untar$])
m4trace:configure.ac:6: -1- AC_SUBST([CTAGS])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([CTAGS])
m4trace:configure.ac:6: -1- m4_pattern_allow([^CTAGS$])
m4trace:configure.ac:6: -1- AC_SUBST([ETAGS])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ETAGS])
m4trace:configure.ac:6: -1- m4_pattern_allow([^ETAGS$])
m4trace:configure.ac:6: -1- AC_SUBST([CSCOPE])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([CSCOPE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^CSCOPE$])
m4trace:configure.ac:6: -1- AM_SILENT_RULES
m4trace:configure.ac:6: -1- AC_SUBST([AM_V])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_V])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_V$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_V])
m4trace:configure.ac:6: -1- AC_SUBST([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_DEFAULT_V$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
m4trace:configure.ac:6: -1- AC_SUBST([AM_BACKSLASH])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_BACKSLASH])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_BACKSLASH$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:7: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:7: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:7: -1- AC_SUBST([LIBS])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:7: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:7: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([EXEEXT])
m4trace:configure.ac:7: -1- m4_pattern_allow([^EXEEXT$])
m4trace:configure.ac:7: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([OBJEXT])
m4trace:configure.ac:7: -1- m4_pattern_allow([^OBJEXT$])
m4trace:configure.ac:7: -1- AC_REQUIRE_AUX_FILE([compile])
m4trace:configure.ac:7: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([DEPDIR])
m4trace:configure.ac:7: -1- m4_pattern_allow([^DEPDIR$])
m4trace:configure.ac:7: -1- AC_SUBST([am__include])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([am__include])
m4trace:configure.ac:7: -1- m4_pattern_allow([^am__include$])
m4trace:configure.ac:7: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
m4trace:configure.ac:7: -1- AC_SUBST([AMDEP_TRUE])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([AMDEP_TRUE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^AMDEP_TRUE$])
m4trace:configure.ac:7: -1- AC_SUBST([AMDEP_FALSE])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([AMDEP_FALSE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^AMDEP_FALSE$])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
m4trace:configure.ac:7: -1- AC_SUBST([AMDEPBACKSLASH])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
m4trace:configure.ac:7: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
m4trace:configure.ac:7: -1- AC_SUBST([am__nodep])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([am__nodep])
m4trace:configure.ac:7: -1- m4_pattern_allow([^am__nodep$])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([am__nodep])
m4trace:configure.ac:7: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CCDEPMODE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CCDEPMODE$])
m4trace:configure.ac:7: -1- AM_CONDITIONAL([am__fastdepCC], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:7: -1- AC_SUBST([am__fastdepCC_TRUE])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
m4trace:configure.ac:7: -1- AC_SUBST([am__fastdepCC_FALSE])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
m4trace:configure.ac:8: -1- AM_PROG_AR
m4trace:configure.ac:8: -1- AC_REQUIRE_AUX_FILE([ar-lib])
m4trace:configure.ac:8: -1- AC_SUBST([AR])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:8: -1- AC_SUBST([ac_ct_AR])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([ac_ct_AR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^ac_ct_AR$])
m4trace:configure.ac:8: -1- AC_SUBST([AR])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:9: -1- AC_CANONICAL_HOST
m4trace:configure.ac:9: -1- AC_CANONICAL_BUILD
m4trace:configure.ac:9: -1- AC_REQUIRE_AUX_FILE([config.sub])
m4trace:configure.ac:9: -1- AC_REQUIRE_AUX_FILE([config.guess])
m4trace:configure.ac:9: -1- AC_SUBST([build], [$ac_cv_build])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([build])
m4trace:configure.ac:9: -1- m4_pattern_allow([^build$])
m4trace:configure.ac:9: -1- AC_SUBST([build_cpu], [$[1]])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([build_cpu])
m4trace:configure.ac:9: -1- m4_pattern_allow([^build_cpu$])
m4trace:configure.ac:9: -1- AC_SUBST([build_vendor], [$[2]])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([build_vendor])
m4trace:configure.ac:9: -1- m4_pattern_allow([^build_vendor$])
m4trace:configure.ac:9: -1- AC_SUBST([build_os])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([build_os])
m4trace:configure.ac:9: -1- m4_pattern_allow([^build_os$])
m4trace:configure.ac:9: -1- AC_SUBST([host], [$ac_cv_host])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([host])
m4trace:configure.ac:9: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:9: -1- AC_SUBST([host_cpu], [$[1]])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.ac:9: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:9: -1- AC_SUBST([host_vendor], [$[2]])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([host_vendor])
m4trace:configure.ac:9: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.ac:9: -1- AC_SUBST([host_os])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.ac:9: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:11: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
m4trace:configure.ac:11: -1- AC_SUBST([PKG_CONFIG])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PKG_CONFIG])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG$])
m4trace:configure.ac:11: -1- AC_SUBST([PKG_CONFIG_PATH])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG_PATH$])
m4trace:configure.ac:11: -1- AC_SUBST([PKG_CONFIG_LIBDIR])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$])
m4trace:configure.ac:11: -1- AC_SUBST([PKG_CONFIG])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PKG_CONFIG])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG$])
m4trace:configure.ac:11: -1- AC_SUBST([ZMQ_CFLAGS])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ZMQ_CFLAGS])
m4trace:configure.ac:11: -1- m4_pattern_allow([^ZMQ_CFLAGS$])
m4trace:configure.ac:11: -1- AC_SUBST([ZMQ_LIBS])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ZMQ_LIBS])
m4trace:configure.ac:11: -1- m4_pattern_allow([^ZMQ_LIBS$])
m4trace:configure.ac:11: -1- AC_DEFINE_TRACE_LITERAL([ZMQ_BUILD_DRAFT_API])
m4trace:configure.ac:11: -1- m4_pattern_allow([^ZMQ_BUILD_DRAFT_API$])
m4trace:configure.ac:28: -1- AC_CONFIG_SUBDIRS([libzmq])
m4trace:configure.ac:28: -1- AC_SUBST([subdirs], ["$subdirs libzmq"])
m4trace:configure.ac:28: -1- AC_SUBST_TRACE([subdirs])
m4trace:configure.ac:28: -1- m4_pattern_allow([^subdirs$])
m4trace:configure.ac:71: -1- AM_CONDITIONAL([WINDOWS], [test "x$ON_WINDOWS" != x])
m4trace:configure.ac:71: -1- AC_SUBST([WINDOWS_TRUE])
m4trace:configure.ac:71: -1- AC_SUBST_TRACE([WINDOWS_TRUE])
m4trace:configure.ac:71: -1- m4_pattern_allow([^WINDOWS_TRUE$])
m4trace:configure.ac:71: -1- AC_SUBST([WINDOWS_FALSE])
m4trace:configure.ac:71: -1- AC_SUBST_TRACE([WINDOWS_FALSE])
m4trace:configure.ac:71: -1- m4_pattern_allow([^WINDOWS_FALSE$])
m4trace:configure.ac:71: -1- _AM_SUBST_NOTMAKE([WINDOWS_TRUE])
m4trace:configure.ac:71: -1- _AM_SUBST_NOTMAKE([WINDOWS_FALSE])
m4trace:configure.ac:72: -1- AM_CONDITIONAL([ZMQ_BUILD_LOCALLY], [test "x$ZMQ_BUILD_LOCALLY" != x])
m4trace:configure.ac:72: -1- AC_SUBST([ZMQ_BUILD_LOCALLY_TRUE])
m4trace:configure.ac:72: -1- AC_SUBST_TRACE([ZMQ_BUILD_LOCALLY_TRUE])
m4trace:configure.ac:72: -1- m4_pattern_allow([^ZMQ_BUILD_LOCALLY_TRUE$])
m4trace:configure.ac:72: -1- AC_SUBST([ZMQ_BUILD_LOCALLY_FALSE])
m4trace:configure.ac:72: -1- AC_SUBST_TRACE([ZMQ_BUILD_LOCALLY_FALSE])
m4trace:configure.ac:72: -1- m4_pattern_allow([^ZMQ_BUILD_LOCALLY_FALSE$])
m4trace:configure.ac:72: -1- _AM_SUBST_NOTMAKE([ZMQ_BUILD_LOCALLY_TRUE])
m4trace:configure.ac:72: -1- _AM_SUBST_NOTMAKE([ZMQ_BUILD_LOCALLY_FALSE])
m4trace:configure.ac:78: -1- AC_SUBST([MAYBE_LIBZMQ])
m4trace:configure.ac:78: -1- AC_SUBST_TRACE([MAYBE_LIBZMQ])
m4trace:configure.ac:78: -1- m4_pattern_allow([^MAYBE_LIBZMQ$])
m4trace:configure.ac:81: -1- AC_SUBST([MODULE_EXT])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([MODULE_EXT])
m4trace:configure.ac:81: -1- m4_pattern_allow([^MODULE_EXT$])
m4trace:configure.ac:83: -1- LT_INIT([win32-dll shared disable-static])
m4trace:configure.ac:83: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
m4trace:configure.ac:83: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
m4trace:configure.ac:83: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
m4trace:configure.ac:83: -1- AC_SUBST([AS])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([AS])
m4trace:configure.ac:83: -1- m4_pattern_allow([^AS$])
m4trace:configure.ac:83: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:83: -1- AC_SUBST([LIBTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LIBTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LIBTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([SED])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([SED])
m4trace:configure.ac:83: -1- m4_pattern_allow([^SED$])
m4trace:configure.ac:83: -1- AC_SUBST([GREP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:83: -1- AC_SUBST([EGREP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([EGREP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^EGREP$])
m4trace:configure.ac:83: -1- AC_SUBST([FGREP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([FGREP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^FGREP$])
m4trace:configure.ac:83: -1- AC_SUBST([GREP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:83: -1- AC_SUBST([LD])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LD])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:83: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:83: -1- AC_SUBST([ac_ct_DUMPBIN])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
m4trace:configure.ac:83: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
m4trace:configure.ac:83: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:83: -1- AC_SUBST([NM])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([NM])
m4trace:configure.ac:83: -1- m4_pattern_allow([^NM$])
m4trace:configure.ac:83: -1- AC_SUBST([LN_S], [$as_ln_s])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LN_S])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LN_S$])
m4trace:configure.ac:83: -1- AC_SUBST([FILECMD])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([FILECMD])
m4trace:configure.ac:83: -1- m4_pattern_allow([^FILECMD$])
m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:83: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([AR])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:83: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:83: -1- AC_SUBST([ac_ct_AR])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([ac_ct_AR])
m4trace:configure.ac:83: -1- m4_pattern_allow([^ac_ct_AR$])
m4trace:configure.ac:83: -1- AC_SUBST([STRIP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:83: -1- AC_SUBST([RANLIB])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([RANLIB])
m4trace:configure.ac:83: -1- m4_pattern_allow([^RANLIB$])
m4trace:configure.ac:83: -1- m4_pattern_allow([LT_OBJDIR])
m4trace:configure.ac:83: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LT_OBJDIR$])
m4trace:configure.ac:83: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory where libtool stores uninstalled libraries. */
@%:@undef LT_OBJDIR])
m4trace:configure.ac:83: -1- LT_SUPPORTED_TAG([CC])
m4trace:configure.ac:83: -1- AC_SUBST([MANIFEST_TOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^MANIFEST_TOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([DSYMUTIL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DSYMUTIL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DSYMUTIL$])
m4trace:configure.ac:83: -1- AC_SUBST([NMEDIT])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([NMEDIT])
m4trace:configure.ac:83: -1- m4_pattern_allow([^NMEDIT$])
m4trace:configure.ac:83: -1- AC_SUBST([LIPO])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LIPO])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LIPO$])
m4trace:configure.ac:83: -1- AC_SUBST([OTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([OTOOL64])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OTOOL64])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OTOOL64$])
m4trace:configure.ac:83: -1- AC_SUBST([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
@%:@undef HAVE_DLFCN_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the <stdio.h> header file. */
@%:@undef HAVE_STDIO_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
@%:@undef HAVE_INTTYPES_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
@%:@undef HAVE_STDINT_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
@%:@undef HAVE_STRINGS_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
@%:@undef HAVE_SYS_STAT_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
@%:@undef HAVE_SYS_TYPES_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
m4trace:configure.ac:83: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
m4trace:configure.ac:83: -1- m4_pattern_allow([^STDC_HEADERS$])
m4trace:configure.ac:83: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C89 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
@%:@undef STDC_HEADERS])
m4trace:configure.ac:83: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
m4trace:configure.ac:83: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
m4trace:configure.ac:84: -1- AC_CONFIG_FILES([Makefile])
m4trace:configure.ac:85: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:85: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:85: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.ac:85: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:85: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:85: -1- AC_SUBST([am__EXEEXT_TRUE])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
m4trace:configure.ac:85: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:85: -1- AC_SUBST([am__EXEEXT_FALSE])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
m4trace:configure.ac:85: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:85: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:85: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:85: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,595 @@
m4trace:aclocal.m4:1103: -1- AC_SUBST([am__quote])
m4trace:aclocal.m4:1103: -1- AC_SUBST_TRACE([am__quote])
m4trace:aclocal.m4:1103: -1- m4_pattern_allow([^am__quote$])
m4trace:aclocal.m4:1555: -1- m4_include([m4/libtool.m4])
m4trace:aclocal.m4:1556: -1- m4_include([m4/ltoptions.m4])
m4trace:aclocal.m4:1557: -1- m4_include([m4/ltsugar.m4])
m4trace:aclocal.m4:1558: -1- m4_include([m4/ltversion.m4])
m4trace:aclocal.m4:1559: -1- m4_include([m4/lt~obsolete.m4])
m4trace:configure.ac:2: -1- AC_INIT([emacs-zmq], [1.0.0], [nathanielnicandro@gmail.com])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.ac:2: -1- AC_SUBST([SHELL])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([SHELL])
m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$])
m4trace:configure.ac:2: -1- AC_SUBST([PATH_SEPARATOR])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_NAME])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_STRING])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_URL])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:2: -1- AC_SUBST([exec_prefix], [NONE])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([exec_prefix])
m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$])
m4trace:configure.ac:2: -1- AC_SUBST([prefix], [NONE])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([prefix])
m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$])
m4trace:configure.ac:2: -1- AC_SUBST([program_transform_name], [s,x,x,])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([program_transform_name])
m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$])
m4trace:configure.ac:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([bindir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$])
m4trace:configure.ac:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sbindir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$])
m4trace:configure.ac:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libexecdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$])
m4trace:configure.ac:2: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datarootdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.ac:2: -1- AC_SUBST([datadir], ['${datarootdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datadir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$])
m4trace:configure.ac:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sysconfdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sharedstatedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$])
m4trace:configure.ac:2: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localstatedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.ac:2: -1- AC_SUBST([runstatedir], ['${localstatedir}/run'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([runstatedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^runstatedir$])
m4trace:configure.ac:2: -1- AC_SUBST([includedir], ['${prefix}/include'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([includedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$])
m4trace:configure.ac:2: -1- AC_SUBST([oldincludedir], ['/usr/include'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([oldincludedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$])
m4trace:configure.ac:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
['${datarootdir}/doc/${PACKAGE}'])])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([docdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$])
m4trace:configure.ac:2: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([infodir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$])
m4trace:configure.ac:2: -1- AC_SUBST([htmldir], ['${docdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([htmldir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$])
m4trace:configure.ac:2: -1- AC_SUBST([dvidir], ['${docdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([dvidir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$])
m4trace:configure.ac:2: -1- AC_SUBST([pdfdir], ['${docdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([pdfdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$])
m4trace:configure.ac:2: -1- AC_SUBST([psdir], ['${docdir}'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([psdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$])
m4trace:configure.ac:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libdir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$])
m4trace:configure.ac:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localedir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$])
m4trace:configure.ac:2: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([mandir])
m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
@%:@undef PACKAGE_NAME])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
@%:@undef PACKAGE_TARNAME])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
@%:@undef PACKAGE_VERSION])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
@%:@undef PACKAGE_STRING])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
@%:@undef PACKAGE_BUGREPORT])
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
@%:@undef PACKAGE_URL])
m4trace:configure.ac:2: -1- AC_SUBST([DEFS])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([DEFS])
m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$])
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_C])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_C])
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$])
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_N])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_N])
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$])
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_T])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_T])
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$])
m4trace:configure.ac:2: -1- AC_SUBST([LIBS])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:2: -1- AC_SUBST([build_alias])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([build_alias])
m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$])
m4trace:configure.ac:2: -1- AC_SUBST([host_alias])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([host_alias])
m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$])
m4trace:configure.ac:2: -1- AC_SUBST([target_alias])
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([target_alias])
m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$])
m4trace:configure.ac:5: -1- AC_CONFIG_MACRO_DIR_TRACE([m4])
m4trace:configure.ac:6: -1- AM_INIT_AUTOMAKE([-Wall -Wno-override foreign])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
m4trace:configure.ac:6: -1- AM_AUTOMAKE_VERSION([1.16.5])
m4trace:configure.ac:6: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
m4trace:configure.ac:6: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
m4trace:configure.ac:6: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL_DATA])
m4trace:configure.ac:6: -1- m4_pattern_allow([^INSTALL_DATA$])
m4trace:configure.ac:6: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([am__isrc])
m4trace:configure.ac:6: -1- m4_pattern_allow([^am__isrc$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([am__isrc])
m4trace:configure.ac:6: -1- AC_SUBST([CYGPATH_W])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([CYGPATH_W])
m4trace:configure.ac:6: -1- m4_pattern_allow([^CYGPATH_W$])
m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:6: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([VERSION])
m4trace:configure.ac:6: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
@%:@undef PACKAGE])
m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
m4trace:configure.ac:6: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:6: -1- AH_OUTPUT([VERSION], [/* Version number of package */
@%:@undef VERSION])
m4trace:configure.ac:6: -1- AC_REQUIRE_AUX_FILE([missing])
m4trace:configure.ac:6: -1- AC_SUBST([ACLOCAL])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ACLOCAL])
m4trace:configure.ac:6: -1- m4_pattern_allow([^ACLOCAL$])
m4trace:configure.ac:6: -1- AC_SUBST([AUTOCONF])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AUTOCONF])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AUTOCONF$])
m4trace:configure.ac:6: -1- AC_SUBST([AUTOMAKE])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AUTOMAKE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AUTOMAKE$])
m4trace:configure.ac:6: -1- AC_SUBST([AUTOHEADER])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AUTOHEADER])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AUTOHEADER$])
m4trace:configure.ac:6: -1- AC_SUBST([MAKEINFO])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([MAKEINFO])
m4trace:configure.ac:6: -1- m4_pattern_allow([^MAKEINFO$])
m4trace:configure.ac:6: -1- AC_SUBST([install_sh])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([install_sh])
m4trace:configure.ac:6: -1- m4_pattern_allow([^install_sh$])
m4trace:configure.ac:6: -1- AC_SUBST([STRIP])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:6: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:6: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
m4trace:configure.ac:6: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:6: -1- AC_SUBST([MKDIR_P])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:6: -1- m4_pattern_allow([^MKDIR_P$])
m4trace:configure.ac:6: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([mkdir_p])
m4trace:configure.ac:6: -1- m4_pattern_allow([^mkdir_p$])
m4trace:configure.ac:6: -1- AC_SUBST([AWK])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AWK])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AWK$])
m4trace:configure.ac:6: -1- AC_SUBST([SET_MAKE])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:6: -1- AC_SUBST([am__leading_dot])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([am__leading_dot])
m4trace:configure.ac:6: -1- m4_pattern_allow([^am__leading_dot$])
m4trace:configure.ac:6: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AMTAR])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AMTAR$])
m4trace:configure.ac:6: -1- AC_SUBST([am__tar])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([am__tar])
m4trace:configure.ac:6: -1- m4_pattern_allow([^am__tar$])
m4trace:configure.ac:6: -1- AC_SUBST([am__untar])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([am__untar])
m4trace:configure.ac:6: -1- m4_pattern_allow([^am__untar$])
m4trace:configure.ac:6: -1- AC_SUBST([CTAGS])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([CTAGS])
m4trace:configure.ac:6: -1- m4_pattern_allow([^CTAGS$])
m4trace:configure.ac:6: -1- AC_SUBST([ETAGS])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ETAGS])
m4trace:configure.ac:6: -1- m4_pattern_allow([^ETAGS$])
m4trace:configure.ac:6: -1- AC_SUBST([CSCOPE])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([CSCOPE])
m4trace:configure.ac:6: -1- m4_pattern_allow([^CSCOPE$])
m4trace:configure.ac:6: -1- AM_SILENT_RULES
m4trace:configure.ac:6: -1- AC_SUBST([AM_V])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_V])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_V$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_V])
m4trace:configure.ac:6: -1- AC_SUBST([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_DEFAULT_V$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
m4trace:configure.ac:6: -1- AC_SUBST([AM_BACKSLASH])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_BACKSLASH])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_BACKSLASH$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:7: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:7: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:7: -1- AC_SUBST([LIBS])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:7: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:7: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:7: -1- AC_SUBST([CC])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:7: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([EXEEXT])
m4trace:configure.ac:7: -1- m4_pattern_allow([^EXEEXT$])
m4trace:configure.ac:7: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([OBJEXT])
m4trace:configure.ac:7: -1- m4_pattern_allow([^OBJEXT$])
m4trace:configure.ac:7: -1- AC_REQUIRE_AUX_FILE([compile])
m4trace:configure.ac:7: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([DEPDIR])
m4trace:configure.ac:7: -1- m4_pattern_allow([^DEPDIR$])
m4trace:configure.ac:7: -1- AC_SUBST([am__include])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([am__include])
m4trace:configure.ac:7: -1- m4_pattern_allow([^am__include$])
m4trace:configure.ac:7: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
m4trace:configure.ac:7: -1- AC_SUBST([AMDEP_TRUE])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([AMDEP_TRUE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^AMDEP_TRUE$])
m4trace:configure.ac:7: -1- AC_SUBST([AMDEP_FALSE])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([AMDEP_FALSE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^AMDEP_FALSE$])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
m4trace:configure.ac:7: -1- AC_SUBST([AMDEPBACKSLASH])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
m4trace:configure.ac:7: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
m4trace:configure.ac:7: -1- AC_SUBST([am__nodep])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([am__nodep])
m4trace:configure.ac:7: -1- m4_pattern_allow([^am__nodep$])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([am__nodep])
m4trace:configure.ac:7: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([CCDEPMODE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^CCDEPMODE$])
m4trace:configure.ac:7: -1- AM_CONDITIONAL([am__fastdepCC], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:7: -1- AC_SUBST([am__fastdepCC_TRUE])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
m4trace:configure.ac:7: -1- AC_SUBST([am__fastdepCC_FALSE])
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
m4trace:configure.ac:7: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
m4trace:configure.ac:7: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
m4trace:configure.ac:8: -1- AM_PROG_AR
m4trace:configure.ac:8: -1- AC_REQUIRE_AUX_FILE([ar-lib])
m4trace:configure.ac:8: -1- AC_SUBST([AR])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:8: -1- AC_SUBST([ac_ct_AR])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([ac_ct_AR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^ac_ct_AR$])
m4trace:configure.ac:8: -1- AC_SUBST([AR])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:9: -1- AC_CANONICAL_HOST
m4trace:configure.ac:9: -1- AC_CANONICAL_BUILD
m4trace:configure.ac:9: -1- AC_REQUIRE_AUX_FILE([config.sub])
m4trace:configure.ac:9: -1- AC_REQUIRE_AUX_FILE([config.guess])
m4trace:configure.ac:9: -1- AC_SUBST([build], [$ac_cv_build])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([build])
m4trace:configure.ac:9: -1- m4_pattern_allow([^build$])
m4trace:configure.ac:9: -1- AC_SUBST([build_cpu], [$[1]])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([build_cpu])
m4trace:configure.ac:9: -1- m4_pattern_allow([^build_cpu$])
m4trace:configure.ac:9: -1- AC_SUBST([build_vendor], [$[2]])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([build_vendor])
m4trace:configure.ac:9: -1- m4_pattern_allow([^build_vendor$])
m4trace:configure.ac:9: -1- AC_SUBST([build_os])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([build_os])
m4trace:configure.ac:9: -1- m4_pattern_allow([^build_os$])
m4trace:configure.ac:9: -1- AC_SUBST([host], [$ac_cv_host])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([host])
m4trace:configure.ac:9: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:9: -1- AC_SUBST([host_cpu], [$[1]])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.ac:9: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:9: -1- AC_SUBST([host_vendor], [$[2]])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([host_vendor])
m4trace:configure.ac:9: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.ac:9: -1- AC_SUBST([host_os])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.ac:9: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:11: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
m4trace:configure.ac:11: -1- AC_SUBST([PKG_CONFIG])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PKG_CONFIG])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG$])
m4trace:configure.ac:11: -1- AC_SUBST([PKG_CONFIG_PATH])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG_PATH$])
m4trace:configure.ac:11: -1- AC_SUBST([PKG_CONFIG_LIBDIR])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$])
m4trace:configure.ac:11: -1- AC_SUBST([PKG_CONFIG])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PKG_CONFIG])
m4trace:configure.ac:11: -1- m4_pattern_allow([^PKG_CONFIG$])
m4trace:configure.ac:11: -1- AC_SUBST([ZMQ_CFLAGS])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ZMQ_CFLAGS])
m4trace:configure.ac:11: -1- m4_pattern_allow([^ZMQ_CFLAGS$])
m4trace:configure.ac:11: -1- AC_SUBST([ZMQ_LIBS])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ZMQ_LIBS])
m4trace:configure.ac:11: -1- m4_pattern_allow([^ZMQ_LIBS$])
m4trace:configure.ac:11: -1- AC_DEFINE_TRACE_LITERAL([ZMQ_BUILD_DRAFT_API])
m4trace:configure.ac:11: -1- m4_pattern_allow([^ZMQ_BUILD_DRAFT_API$])
m4trace:configure.ac:28: -1- AC_CONFIG_SUBDIRS([libzmq])
m4trace:configure.ac:28: -1- AC_SUBST([subdirs], ["$subdirs libzmq"])
m4trace:configure.ac:28: -1- AC_SUBST_TRACE([subdirs])
m4trace:configure.ac:28: -1- m4_pattern_allow([^subdirs$])
m4trace:configure.ac:71: -1- AM_CONDITIONAL([WINDOWS], [test "x$ON_WINDOWS" != x])
m4trace:configure.ac:71: -1- AC_SUBST([WINDOWS_TRUE])
m4trace:configure.ac:71: -1- AC_SUBST_TRACE([WINDOWS_TRUE])
m4trace:configure.ac:71: -1- m4_pattern_allow([^WINDOWS_TRUE$])
m4trace:configure.ac:71: -1- AC_SUBST([WINDOWS_FALSE])
m4trace:configure.ac:71: -1- AC_SUBST_TRACE([WINDOWS_FALSE])
m4trace:configure.ac:71: -1- m4_pattern_allow([^WINDOWS_FALSE$])
m4trace:configure.ac:71: -1- _AM_SUBST_NOTMAKE([WINDOWS_TRUE])
m4trace:configure.ac:71: -1- _AM_SUBST_NOTMAKE([WINDOWS_FALSE])
m4trace:configure.ac:72: -1- AM_CONDITIONAL([ZMQ_BUILD_LOCALLY], [test "x$ZMQ_BUILD_LOCALLY" != x])
m4trace:configure.ac:72: -1- AC_SUBST([ZMQ_BUILD_LOCALLY_TRUE])
m4trace:configure.ac:72: -1- AC_SUBST_TRACE([ZMQ_BUILD_LOCALLY_TRUE])
m4trace:configure.ac:72: -1- m4_pattern_allow([^ZMQ_BUILD_LOCALLY_TRUE$])
m4trace:configure.ac:72: -1- AC_SUBST([ZMQ_BUILD_LOCALLY_FALSE])
m4trace:configure.ac:72: -1- AC_SUBST_TRACE([ZMQ_BUILD_LOCALLY_FALSE])
m4trace:configure.ac:72: -1- m4_pattern_allow([^ZMQ_BUILD_LOCALLY_FALSE$])
m4trace:configure.ac:72: -1- _AM_SUBST_NOTMAKE([ZMQ_BUILD_LOCALLY_TRUE])
m4trace:configure.ac:72: -1- _AM_SUBST_NOTMAKE([ZMQ_BUILD_LOCALLY_FALSE])
m4trace:configure.ac:78: -1- AC_SUBST([MAYBE_LIBZMQ])
m4trace:configure.ac:78: -1- AC_SUBST_TRACE([MAYBE_LIBZMQ])
m4trace:configure.ac:78: -1- m4_pattern_allow([^MAYBE_LIBZMQ$])
m4trace:configure.ac:81: -1- AC_SUBST([MODULE_EXT])
m4trace:configure.ac:81: -1- AC_SUBST_TRACE([MODULE_EXT])
m4trace:configure.ac:81: -1- m4_pattern_allow([^MODULE_EXT$])
m4trace:configure.ac:83: -1- LT_INIT([win32-dll shared disable-static])
m4trace:configure.ac:83: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
m4trace:configure.ac:83: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
m4trace:configure.ac:83: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
m4trace:configure.ac:83: -1- AC_SUBST([AS])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([AS])
m4trace:configure.ac:83: -1- m4_pattern_allow([^AS$])
m4trace:configure.ac:83: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:83: -1- AC_SUBST([LIBTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LIBTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LIBTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([SED])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([SED])
m4trace:configure.ac:83: -1- m4_pattern_allow([^SED$])
m4trace:configure.ac:83: -1- AC_SUBST([GREP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:83: -1- AC_SUBST([EGREP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([EGREP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^EGREP$])
m4trace:configure.ac:83: -1- AC_SUBST([FGREP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([FGREP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^FGREP$])
m4trace:configure.ac:83: -1- AC_SUBST([GREP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:83: -1- AC_SUBST([LD])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LD])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:83: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:83: -1- AC_SUBST([ac_ct_DUMPBIN])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
m4trace:configure.ac:83: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
m4trace:configure.ac:83: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:83: -1- AC_SUBST([NM])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([NM])
m4trace:configure.ac:83: -1- m4_pattern_allow([^NM$])
m4trace:configure.ac:83: -1- AC_SUBST([LN_S], [$as_ln_s])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LN_S])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LN_S$])
m4trace:configure.ac:83: -1- AC_SUBST([FILECMD])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([FILECMD])
m4trace:configure.ac:83: -1- m4_pattern_allow([^FILECMD$])
m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:83: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([AR])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:83: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:83: -1- AC_SUBST([ac_ct_AR])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([ac_ct_AR])
m4trace:configure.ac:83: -1- m4_pattern_allow([^ac_ct_AR$])
m4trace:configure.ac:83: -1- AC_SUBST([STRIP])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:83: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:83: -1- AC_SUBST([RANLIB])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([RANLIB])
m4trace:configure.ac:83: -1- m4_pattern_allow([^RANLIB$])
m4trace:configure.ac:83: -1- m4_pattern_allow([LT_OBJDIR])
m4trace:configure.ac:83: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LT_OBJDIR$])
m4trace:configure.ac:83: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory where libtool stores uninstalled libraries. */
@%:@undef LT_OBJDIR])
m4trace:configure.ac:83: -1- LT_SUPPORTED_TAG([CC])
m4trace:configure.ac:83: -1- AC_SUBST([MANIFEST_TOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^MANIFEST_TOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([DSYMUTIL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([DSYMUTIL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^DSYMUTIL$])
m4trace:configure.ac:83: -1- AC_SUBST([NMEDIT])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([NMEDIT])
m4trace:configure.ac:83: -1- m4_pattern_allow([^NMEDIT$])
m4trace:configure.ac:83: -1- AC_SUBST([LIPO])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LIPO])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LIPO$])
m4trace:configure.ac:83: -1- AC_SUBST([OTOOL])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OTOOL])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OTOOL$])
m4trace:configure.ac:83: -1- AC_SUBST([OTOOL64])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OTOOL64])
m4trace:configure.ac:83: -1- m4_pattern_allow([^OTOOL64$])
m4trace:configure.ac:83: -1- AC_SUBST([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:83: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:83: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
@%:@undef HAVE_DLFCN_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the <stdio.h> header file. */
@%:@undef HAVE_STDIO_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
@%:@undef HAVE_INTTYPES_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
@%:@undef HAVE_STDINT_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
@%:@undef HAVE_STRINGS_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
@%:@undef HAVE_SYS_STAT_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
@%:@undef HAVE_SYS_TYPES_H])
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
m4trace:configure.ac:83: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
m4trace:configure.ac:83: -1- m4_pattern_allow([^STDC_HEADERS$])
m4trace:configure.ac:83: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C89 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
@%:@undef STDC_HEADERS])
m4trace:configure.ac:83: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
m4trace:configure.ac:83: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
m4trace:configure.ac:84: -1- AC_CONFIG_FILES([Makefile])
m4trace:configure.ac:85: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:85: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:85: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.ac:85: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:85: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:85: -1- AC_SUBST([am__EXEEXT_TRUE])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
m4trace:configure.ac:85: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:85: -1- AC_SUBST([am__EXEEXT_FALSE])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
m4trace:configure.ac:85: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:85: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:85: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.ac:85: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:85: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])

348
lisp/zmq/src/compile Executable file
View File

@@ -0,0 +1,348 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2021 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN* | MSYS*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/* | msys/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

1748
lisp/zmq/src/config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

684
lisp/zmq/src/config.log Normal file
View File

@@ -0,0 +1,684 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by emacs-zmq configure 1.0.0, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ ./configure CPPFLAGS= --prefix=/home/daniel/repos/emacs-conf/lisp/zmq --enable-shared=emacs-zmq --enable-static=zeromq --without-docs --enable-drafts=yes --enable-libunwind=no --disable-curve-keygen --disable-perf --disable-eventfd
## --------- ##
## Platform. ##
## --------- ##
hostname = daniel-pc
uname -m = x86_64
uname -r = 6.8.8-arch1-1
uname -s = Linux
uname -v = #1 SMP PREEMPT_DYNAMIC Sun, 28 Apr 2024 15:59:47 +0000
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
PATH: /home/daniel/.basher/cellar/bin/
PATH: /home/daniel/.basher/bin/
PATH: /usr/local/go/bin/
PATH: /home/daniel/Sync/dotfiles/aa-pc/.local/bin/
PATH: /home/daniel/Sync/dotfiles/.local/bin/
PATH: /home/daniel/.local/bin/
PATH: /home/daniel/.bin/
PATH: /usr/sbin/
PATH: /sbin/
PATH: /usr/local/sbin/
PATH: /usr/local/bin/
PATH: /usr/bin/
PATH: /opt/cuda/bin/
PATH: /opt/cuda/nsight_compute/
PATH: /opt/cuda/nsight_systems/bin/
PATH: /home/daniel/.dotnet/tools/
PATH: /usr/lib/jvm/default/bin/
PATH: /usr/bin/site_perl/
PATH: /usr/bin/vendor_perl/
PATH: /usr/bin/core_perl/
PATH: /home/daniel/salome_meca/appli_V2020.0.1_universal_universal/
PATH: /home/daniel/go/bin/
## ----------- ##
## Core tests. ##
## ----------- ##
configure:2397: looking for aux files: ltmain.sh config.guess config.sub ar-lib compile missing install-sh
configure:2410: trying ./
configure:2439: ./ltmain.sh found
configure:2439: ./config.guess found
configure:2439: ./config.sub found
configure:2439: ./ar-lib found
configure:2439: ./compile found
configure:2439: ./missing found
configure:2421: ./install-sh found
configure:2572: checking for a BSD-compatible install
configure:2646: result: /usr/bin/install -c
configure:2657: checking whether build environment is sane
configure:2712: result: yes
configure:2873: checking for a race-free mkdir -p
configure:2916: result: /usr/sbin/mkdir -p
configure:2923: checking for gawk
configure:2944: found /usr/sbin/gawk
configure:2956: result: gawk
configure:2967: checking whether make sets $(MAKE)
configure:2991: result: yes
configure:3021: checking whether make supports nested variables
configure:3040: result: yes
configure:3239: checking for gcc
configure:3260: found /usr/sbin/gcc
configure:3272: result: gcc
configure:3631: checking for C compiler version
configure:3640: gcc --version >&5
gcc (GCC) 13.2.1 20240417
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:3651: $? = 0
configure:3640: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=ada,c,c++,d,fortran,go,lto,m2,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://gitlab.archlinux.org/archlinux/packaging/packages/gcc/-/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.1 20240417 (GCC)
configure:3651: $? = 0
configure:3640: gcc -V >&5
gcc: error: unrecognized command-line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:3651: $? = 1
configure:3640: gcc -qversion >&5
gcc: error: unrecognized command-line option '-qversion'; did you mean '--version'?
gcc: fatal error: no input files
compilation terminated.
configure:3651: $? = 1
configure:3640: gcc -version >&5
gcc: error: unrecognized command-line option '-version'
gcc: fatal error: no input files
compilation terminated.
configure:3651: $? = 1
configure:3671: checking whether the C compiler works
configure:3693: gcc conftest.c >&5
configure:3697: $? = 0
configure:3748: result: yes
configure:3752: checking for C compiler default output file name
configure:3754: result: a.out
configure:3760: checking for suffix of executables
configure:3767: gcc -o conftest conftest.c >&5
configure:3771: $? = 0
configure:3795: result:
configure:3819: checking whether we are cross compiling
configure:3827: gcc -o conftest conftest.c >&5
configure:3831: $? = 0
configure:3838: ./conftest
configure:3842: $? = 0
configure:3857: result: no
configure:3863: checking for suffix of object files
configure:3886: gcc -c conftest.c >&5
configure:3890: $? = 0
configure:3914: result: o
configure:3918: checking whether the compiler supports GNU C
configure:3938: gcc -c conftest.c >&5
configure:3938: $? = 0
configure:3950: result: yes
configure:3961: checking whether gcc accepts -g
configure:3982: gcc -c -g conftest.c >&5
configure:3982: $? = 0
configure:4029: result: yes
configure:4049: checking for gcc option to enable C11 features
configure:4064: gcc -c -g -O2 conftest.c >&5
configure:4064: $? = 0
configure:4083: result: none needed
configure:4207: checking whether gcc understands -c and -o together
configure:4230: gcc -c conftest.c -o conftest2.o
configure:4233: $? = 0
configure:4230: gcc -c conftest.c -o conftest2.o
configure:4233: $? = 0
configure:4246: result: yes
configure:4266: checking whether make supports the include directive
configure:4281: make -f confmf.GNU && cat confinc.out
make[2]: Entering directory '/home/daniel/repos/emacs-conf/lisp/zmq/src'
make[2]: Leaving directory '/home/daniel/repos/emacs-conf/lisp/zmq/src'
this is the am__doit target
configure:4284: $? = 0
configure:4303: result: yes (GNU style)
configure:4329: checking dependency style of gcc
configure:4442: result: gcc3
configure:4514: checking for ar
configure:4535: found /usr/sbin/ar
configure:4547: result: ar
configure:4573: checking the archiver (ar) interface
configure:4590: gcc -c -g -O2 conftest.c >&5
configure:4590: $? = 0
configure:4593: ar cru libconftest.a conftest.o >&5
ar: `u' modifier ignored since `D' is the default (see `U')
configure:4596: $? = 0
configure:4625: result: ar
configure:4651: checking build system type
configure:4667: result: x86_64-pc-linux-gnu
configure:4687: checking host system type
configure:4702: result: x86_64-pc-linux-gnu
configure:4783: checking for pkg-config
configure:4806: found /usr/sbin/pkg-config
configure:4819: result: /usr/sbin/pkg-config
configure:4844: checking pkg-config is at least version 0.9.0
configure:4847: result: yes
configure:4857: checking for libzmq
configure:4864: $PKG_CONFIG --exists --print-errors "libzmq"
configure:4867: $? = 0
configure:4881: $PKG_CONFIG --exists --print-errors "libzmq"
configure:4884: $? = 0
configure:4930: result: yes
configure:4933: checking for library containing zmq_poller_new
configure:4969: gcc -o conftest -g -O2 conftest.c >&5
/usr/sbin/ld: /tmp/ccL2xWUv.o: in function `main':
/home/daniel/repos/emacs-conf/lisp/zmq/src/conftest.c:25:(.text.startup+0x5): undefined reference to `zmq_poller_new'
collect2: error: ld returned 1 exit status
configure:4969: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "emacs-zmq"
| #define PACKAGE_TARNAME "emacs-zmq"
| #define PACKAGE_VERSION "1.0.0"
| #define PACKAGE_STRING "emacs-zmq 1.0.0"
| #define PACKAGE_BUGREPORT "nathanielnicandro@gmail.com"
| #define PACKAGE_URL ""
| #define PACKAGE "emacs-zmq"
| #define VERSION "1.0.0"
| /* end confdefs.h. */
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply.
| The 'extern "C"' is for builds by C++ compilers;
| although this is not generally supported in C code supporting it here
| has little cost and some practical benefit (sr 110532). */
| #ifdef __cplusplus
| extern "C"
| #endif
| char zmq_poller_new (void);
| int
| main (void)
| {
| return zmq_poller_new ();
| ;
| return 0;
| }
configure:4969: gcc -o conftest -g -O2 conftest.c -lzmq >&5
configure:4969: $? = 0
configure:4991: result: -lzmq
configure:5136: checking how to print strings
configure:5163: result: printf
configure:5184: checking for a sed that does not truncate output
configure:5256: result: /usr/sbin/sed
configure:5274: checking for grep that handles long lines and -e
configure:5340: result: /usr/sbin/grep
configure:5345: checking for egrep
configure:5415: result: /usr/sbin/grep -E
configure:5422: checking for fgrep
configure:5492: result: /usr/sbin/grep -F
configure:5529: checking for ld used by gcc
configure:5598: result: /usr/sbin/ld
configure:5605: checking if the linker (/usr/sbin/ld) is GNU ld
configure:5622: result: yes
configure:5634: checking for BSD- or MS-compatible name lister (nm)
configure:5690: result: /usr/sbin/nm -B
configure:5832: checking the name lister (/usr/sbin/nm -B) interface
configure:5840: gcc -c -g -O2 conftest.c >&5
configure:5843: /usr/sbin/nm -B "conftest.o"
configure:5846: output
0000000000000000 B some_variable
configure:5854: result: BSD nm
configure:5857: checking whether ln -s works
configure:5861: result: yes
configure:5869: checking the maximum length of command line arguments
configure:6002: result: 1572864
configure:6050: checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format
configure:6092: result: func_convert_file_noop
configure:6099: checking how to convert x86_64-pc-linux-gnu file names to toolchain format
configure:6121: result: func_convert_file_noop
configure:6128: checking for /usr/sbin/ld option to reload object files
configure:6137: result: -r
configure:6217: checking for file
configure:6238: found /usr/sbin/file
configure:6250: result: file
configure:6327: checking for objdump
configure:6348: found /usr/sbin/objdump
configure:6360: result: objdump
configure:6389: checking how to recognize dependent libraries
configure:6591: result: pass_all
configure:6682: checking for dlltool
configure:6718: result: no
configure:6745: checking how to associate runtime and link libraries
configure:6774: result: printf %s\n
configure:6926: checking for archiver @FILE support
configure:6944: gcc -c -g -O2 conftest.c >&5
configure:6944: $? = 0
configure:6948: ar cr libconftest.a @conftest.lst >&5
configure:6951: $? = 0
configure:6956: ar cr libconftest.a @conftest.lst >&5
ar: conftest.o: No such file or directory
configure:6959: $? = 1
configure:6972: result: @
configure:7036: checking for strip
configure:7057: found /usr/sbin/strip
configure:7069: result: strip
configure:7147: checking for ranlib
configure:7168: found /usr/sbin/ranlib
configure:7180: result: ranlib
configure:7282: checking command to parse /usr/sbin/nm -B output from gcc object
configure:7436: gcc -c -g -O2 conftest.c >&5
configure:7439: $? = 0
configure:7443: /usr/sbin/nm -B conftest.o \| /usr/sbin/sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | /usr/sbin/sed '/ __gnu_lto/d' \> conftest.nm
configure:7446: $? = 0
configure:7512: gcc -o conftest -g -O2 conftest.c conftstm.o >&5
configure:7515: $? = 0
configure:7554: result: ok
configure:7601: checking for sysroot
configure:7633: result: no
configure:7640: checking for a working dd
configure:7685: result: /usr/sbin/dd
configure:7689: checking how to truncate binary pipes
configure:7706: result: /usr/sbin/dd bs=4096 count=1
configure:7843: gcc -c -g -O2 conftest.c >&5
configure:7846: $? = 0
configure:8046: checking for mt
configure:8082: result: no
configure:8102: checking if : is a manifest tool
configure:8109: : '-?'
configure:8118: result: no
configure:8857: checking for stdio.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8857: checking for stdlib.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8857: checking for string.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8857: checking for inttypes.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8857: checking for stdint.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8857: checking for strings.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8857: checking for sys/stat.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8857: checking for sys/types.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8857: checking for unistd.h
configure:8857: gcc -c -g -O2 conftest.c >&5
configure:8857: $? = 0
configure:8857: result: yes
configure:8882: checking for dlfcn.h
configure:8882: gcc -c -g -O2 conftest.c >&5
configure:8882: $? = 0
configure:8882: result: yes
configure:9479: checking for objdir
configure:9496: result: .libs
configure:9762: checking if gcc supports -fno-rtti -fno-exceptions
configure:9781: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5
cc1: warning: command-line option '-fno-rtti' is valid for C++/D/ObjC++ but not for C
configure:9785: $? = 0
configure:9799: result: no
configure:10157: checking for gcc option to produce PIC
configure:10166: result: -fPIC -DPIC
configure:10174: checking if gcc PIC flag -fPIC -DPIC works
configure:10193: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5
configure:10197: $? = 0
configure:10211: result: yes
configure:10240: checking if gcc static flag -static works
configure:10270: result: no
configure:10285: checking if gcc supports -c -o file.o
configure:10307: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5
configure:10311: $? = 0
configure:10334: result: yes
configure:10342: checking if gcc supports -c -o file.o
configure:10391: result: yes
configure:10424: checking whether the gcc linker (/usr/sbin/ld -m elf_x86_64) supports shared libraries
configure:11697: result: yes
configure:11734: checking whether -lc should be explicitly linked in
configure:11743: gcc -c -g -O2 conftest.c >&5
configure:11746: $? = 0
configure:11761: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/sbin/grep -lc \>/dev/null 2\>\&1
configure:11764: $? = 0
configure:11779: result: no
configure:11939: checking dynamic linker characteristics
configure:12521: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c -lzmq >&5
configure:12521: $? = 0
configure:12761: result: GNU/Linux ld.so
configure:12883: checking how to hardcode library paths into programs
configure:12908: result: immediate
configure:13508: checking whether stripping libraries is possible
configure:13517: result: yes
configure:13559: checking if libtool supports shared libraries
configure:13561: result: yes
configure:13564: checking whether to build shared libraries
configure:13589: result: yes
configure:13592: checking whether to build static libraries
configure:13596: result: no
configure:13770: checking that generated files are newer than configure
configure:13776: result: done
configure:13807: creating ./config.status
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by emacs-zmq config.status 1.0.0, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES =
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ./config.status
on daniel-pc
config.status:1022: creating Makefile
config.status:1194: executing depfiles commands
config.status:1271: cd . && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles
make[2]: Entering directory '/home/daniel/repos/emacs-conf/lisp/zmq/src'
make[2]: Leaving directory '/home/daniel/repos/emacs-conf/lisp/zmq/src'
config.status:1276: $? = 0
config.status:1194: executing libtool commands
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_build=x86_64-pc-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=set
ac_cv_env_CPPFLAGS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_LT_SYS_LIBRARY_PATH_set=
ac_cv_env_LT_SYS_LIBRARY_PATH_value=
ac_cv_env_PKG_CONFIG_LIBDIR_set=
ac_cv_env_PKG_CONFIG_LIBDIR_value=
ac_cv_env_PKG_CONFIG_PATH_set=
ac_cv_env_PKG_CONFIG_PATH_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_ZMQ_CFLAGS_set=
ac_cv_env_ZMQ_CFLAGS_value=
ac_cv_env_ZMQ_LIBS_set=
ac_cv_env_ZMQ_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_header_dlfcn_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdio_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_host=x86_64-pc-linux-gnu
ac_cv_objext=o
ac_cv_path_EGREP='/usr/sbin/grep -E'
ac_cv_path_EGREP_TRADITIONAL='/usr/sbin/grep -E'
ac_cv_path_FGREP='/usr/sbin/grep -F'
ac_cv_path_GREP=/usr/sbin/grep
ac_cv_path_SED=/usr/sbin/sed
ac_cv_path_ac_pt_PKG_CONFIG=/usr/sbin/pkg-config
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_lt_DD=/usr/sbin/dd
ac_cv_path_mkdir=/usr/sbin/mkdir
ac_cv_prog_AWK=gawk
ac_cv_prog_ac_ct_AR=ar
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_FILECMD=file
ac_cv_prog_ac_ct_OBJDUMP=objdump
ac_cv_prog_ac_ct_RANLIB=ranlib
ac_cv_prog_ac_ct_STRIP=strip
ac_cv_prog_cc_c11=
ac_cv_prog_cc_g=yes
ac_cv_prog_cc_stdc=
ac_cv_prog_make_make_set=yes
ac_cv_search_zmq_poller_new=-lzmq
am_cv_CC_dependencies_compiler_type=gcc3
am_cv_ar_interface=ar
am_cv_make_support_nested_variables=yes
am_cv_prog_cc_c_o=yes
lt_cv_ar_at_file=@
lt_cv_archive_cmds_need_lc=no
lt_cv_deplibs_check_method=pass_all
lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
lt_cv_ld_reload_flag=-r
lt_cv_nm_interface='BSD nm'
lt_cv_objdir=.libs
lt_cv_path_LD=/usr/sbin/ld
lt_cv_path_NM='/usr/sbin/nm -B'
lt_cv_path_mainfest_tool=no
lt_cv_prog_compiler_c_o=yes
lt_cv_prog_compiler_pic='-fPIC -DPIC'
lt_cv_prog_compiler_pic_works=yes
lt_cv_prog_compiler_rtti_exceptions=no
lt_cv_prog_compiler_static_works=no
lt_cv_prog_gnu_ld=yes
lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
lt_cv_shlibpath_overrides_runpath=yes
lt_cv_sys_global_symbol_pipe='/usr/sbin/sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | /usr/sbin/sed '\''/ __gnu_lto/d'\'''
lt_cv_sys_global_symbol_to_c_name_address='/usr/sbin/sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\'''
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='/usr/sbin/sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\'''
lt_cv_sys_global_symbol_to_cdecl='/usr/sbin/sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
lt_cv_sys_global_symbol_to_import=
lt_cv_sys_max_cmd_len=1572864
lt_cv_to_host_file_cmd=func_convert_file_noop
lt_cv_to_tool_file_cmd=func_convert_file_noop
lt_cv_truncate_bin='/usr/sbin/dd bs=4096 count=1'
pkg_cv_ZMQ_CFLAGS='-DZMQ_BUILD_DRAFT_API=1 -I/usr/include/p11-kit-1 -I/usr/include/pgm-5.3'
pkg_cv_ZMQ_LIBS=-lzmq
## ----------------- ##
## Output variables. ##
## ----------------- ##
ACLOCAL='${SHELL} '\''/home/daniel/repos/emacs-conf/lisp/zmq/src/missing'\'' aclocal-1.16'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='$${TAR-tar}'
AM_BACKSLASH='\'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
AM_DEFAULT_VERBOSITY='1'
AM_V='$(V)'
AR='ar'
AS='as'
AUTOCONF='${SHELL} '\''/home/daniel/repos/emacs-conf/lisp/zmq/src/missing'\'' autoconf'
AUTOHEADER='${SHELL} '\''/home/daniel/repos/emacs-conf/lisp/zmq/src/missing'\'' autoheader'
AUTOMAKE='${SHELL} '\''/home/daniel/repos/emacs-conf/lisp/zmq/src/missing'\'' automake-1.16'
AWK='gawk'
CC='gcc'
CCDEPMODE='depmode=gcc3'
CFLAGS='-g -O2'
CPPFLAGS=''
CSCOPE='cscope'
CTAGS='ctags'
CYGPATH_W='echo'
DEFS='-DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"1.0.0\" -DPACKAGE_STRING=\"emacs-zmq\ 1.0.0\" -DPACKAGE_BUGREPORT=\"nathanielnicandro@gmail.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"1.0.0\" -DZMQ_BUILD_DRAFT_API=1 -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\"'
DEPDIR='.deps'
DLLTOOL='false'
DSYMUTIL=''
DUMPBIN=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='/usr/sbin/grep -E'
ETAGS='etags'
EXEEXT=''
FGREP='/usr/sbin/grep -F'
FILECMD='file'
GREP='/usr/sbin/grep'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
LD='/usr/sbin/ld -m elf_x86_64'
LDFLAGS=''
LIBOBJS=''
LIBS='-lzmq '
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
LIPO=''
LN_S='ln -s'
LTLIBOBJS=''
LT_SYS_LIBRARY_PATH=''
MAKEINFO='${SHELL} '\''/home/daniel/repos/emacs-conf/lisp/zmq/src/missing'\'' makeinfo'
MANIFEST_TOOL=':'
MAYBE_LIBZMQ=''
MKDIR_P='/usr/sbin/mkdir -p'
MODULE_EXT='.so'
NM='/usr/sbin/nm -B'
NMEDIT=''
OBJDUMP='objdump'
OBJEXT='o'
OTOOL64=''
OTOOL=''
PACKAGE='emacs-zmq'
PACKAGE_BUGREPORT='nathanielnicandro@gmail.com'
PACKAGE_NAME='emacs-zmq'
PACKAGE_STRING='emacs-zmq 1.0.0'
PACKAGE_TARNAME='emacs-zmq'
PACKAGE_URL=''
PACKAGE_VERSION='1.0.0'
PATH_SEPARATOR=':'
PKG_CONFIG='/usr/sbin/pkg-config'
PKG_CONFIG_LIBDIR=''
PKG_CONFIG_PATH=''
RANLIB='ranlib'
SED='/usr/sbin/sed'
SET_MAKE=''
SHELL='/bin/sh'
STRIP='strip'
VERSION='1.0.0'
WINDOWS_FALSE=''
WINDOWS_TRUE='#'
ZMQ_BUILD_LOCALLY_FALSE=''
ZMQ_BUILD_LOCALLY_TRUE='#'
ZMQ_CFLAGS='-DZMQ_BUILD_DRAFT_API=1 -I/usr/include/p11-kit-1 -I/usr/include/pgm-5.3'
ZMQ_LIBS='-lzmq'
ac_ct_AR='ar'
ac_ct_CC='gcc'
ac_ct_DUMPBIN=''
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE='#'
am__fastdepCC_FALSE='#'
am__fastdepCC_TRUE=''
am__include='include'
am__isrc=''
am__leading_dot='.'
am__nodep='_no'
am__quote=''
am__tar='$${TAR-tar} chof - "$$tardir"'
am__untar='$${TAR-tar} xf -'
bindir='${exec_prefix}/bin'
build='x86_64-pc-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='pc'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host='x86_64-pc-linux-gnu'
host_alias=''
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='pc'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /home/daniel/repos/emacs-conf/lisp/zmq/src/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p='$(MKDIR_P)'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/home/daniel/repos/emacs-conf/lisp/zmq'
program_transform_name='s,x,x,'
psdir='${docdir}'
runstatedir='${localstatedir}/run'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
subdirs=''
sysconfdir='${prefix}/etc'
target_alias=''
## ----------- ##
## confdefs.h. ##
## ----------- ##
/* confdefs.h */
#define PACKAGE_NAME "emacs-zmq"
#define PACKAGE_TARNAME "emacs-zmq"
#define PACKAGE_VERSION "1.0.0"
#define PACKAGE_STRING "emacs-zmq 1.0.0"
#define PACKAGE_BUGREPORT "nathanielnicandro@gmail.com"
#define PACKAGE_URL ""
#define PACKAGE "emacs-zmq"
#define VERSION "1.0.0"
#define ZMQ_BUILD_DRAFT_API 1
#define HAVE_STDIO_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_STRINGS_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_UNISTD_H 1
#define STDC_HEADERS 1
#define HAVE_DLFCN_H 1
#define LT_OBJDIR ".libs/"
configure: exit 0

1854
lisp/zmq/src/config.status Executable file

File diff suppressed because it is too large Load Diff

1884
lisp/zmq/src/config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

15928
lisp/zmq/src/configure vendored Executable file

File diff suppressed because it is too large Load Diff

85
lisp/zmq/src/configure.ac Normal file
View File

@@ -0,0 +1,85 @@
AC_PREREQ([2.69])
AC_INIT([emacs-zmq], [1.0.0], [nathanielnicandro@gmail.com])
AC_CONFIG_SRCDIR([core.c])
AC_CONFIG_MACRO_DIRS([m4])
AM_INIT_AUTOMAKE([-Wall -Wno-override foreign])
AC_PROG_CC
AM_PROG_AR
AC_CANONICAL_HOST
PKG_CHECK_MODULES([ZMQ], [libzmq], [
AC_SEARCH_LIBS([zmq_poller_new], [zmq], [
dnl FIXME: This isn't necessarily true in ZMQ >= 4.3
AC_DEFINE([ZMQ_BUILD_DRAFT_API], 1)
], [
AC_MSG_NOTICE([incompatible libzmq, building one locally])
ZMQ_BUILD_LOCALLY=yes
])
], [
AC_MSG_NOTICE([libzmq not found by pkg-config, building one locally])
ZMQ_BUILD_LOCALLY=yes
])
if test "x$ZMQ_BUILD_LOCALLY" != x; then
if test "x$ZMQ_VERSION" == x; then ZMQ_VERSION="4.3.1"; fi
if test "x$ZMQ_GIT_REPO" == x; then ZMQ_GIT_REPO="https://github.com/zeromq/libzmq"; fi
if test ! -d libzmq/.git; then git clone $ZMQ_GIT_REPO libzmq; fi
AC_CONFIG_SUBDIRS([libzmq])
# Ensure the libzmq/configure script is generated
cd libzmq
if test "`git describe --candidates=0 2>/dev/null || echo x`" != "v${ZMQ_VERSION}"; then
git checkout --quiet master
git pull --quiet origin
git checkout "v$ZMQ_VERSION"
rm -f configure
fi
if test ! -e configure; then
echo "Generating libzmq configure script"
./autogen.sh
fi
cd ..
case "${host_os}" in
*darwin*)
;;
*mingw*|*msys*|*cygwin*)
export CXXFLAGS="-static-libgcc -static-libstdc++ $CXXFLAGS"
# Its necessary to pass these to the linker directly since libtool
# won't build emacs-zmq as a dynamic module otherwise on Windows.
export LDFLAGS="-Wl,-l:libstdc++.a -Wl,-l:libgcc.a -Wl,-lws2_32 -Wl,-liphlpapi $LDFLAGS"
ON_WINDOWS=yes
;;
*)
# Assume GCC compatible compiler
# TODO: Actually check for this
# Prevent dynamic linkage of libzmq dependencies
#
# PIC is needed since we are most likely building libzmq
# statically, but would like to link it to the dynamic emacs-zmq
# library. GCC needs to have this explicitly specified.
#
# The -fPIC for CFLAGS is needed even though emacs-zmq is already a
# dynamic library since libzmq comes packaged with tweetnacl which
# is a C library and it builds that by default.
export CXXFLAGS="-fPIC -static-libgcc -static-libstdc++ $CXXFLAGS"
export CFLAGS="-fPIC $CFLAGS"
export LDFLAGS="-Wl,-l:libstdc++.a -Wl,-l:libgcc.a $LDFLAGS"
;;
esac
fi
AM_CONDITIONAL(WINDOWS, [test "x$ON_WINDOWS" != x])
AM_CONDITIONAL(ZMQ_BUILD_LOCALLY, [test "x$ZMQ_BUILD_LOCALLY" != x])
if test "x$ZMQ_BUILD_LOCALLY" != x; then
MAYBE_LIBZMQ=libzmq
else
MAYBE_LIBZMQ=
fi
AC_SUBST([MAYBE_LIBZMQ])
MODULE_EXT="`emacs -Q -batch --eval '(princ module-file-suffix)'`"
AC_SUBST([MODULE_EXT])
LT_INIT([win32-dll shared disable-static])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

207
lisp/zmq/src/constants.c Normal file
View File

@@ -0,0 +1,207 @@
#include "core.h"
#define EZMQ_DEFCONST(sym, val) \
args[1] = INTERN(sym); args[2] = INT(val); \
list = FUNCALL(Qlist, 3, args); \
FUNCALL(Qeval, 1, &list);
// Automatically generated
void
ezmq_expose_constants()
{
emacs_value args[3];
emacs_value list;
emacs_value Qeval = INTERN("eval");
args[0] = INTERN("defconst");
EZMQ_DEFCONST("zmq-AFFINITY", ZMQ_AFFINITY);
EZMQ_DEFCONST("zmq-BACKLOG", ZMQ_BACKLOG);
EZMQ_DEFCONST("zmq-BINDTODEVICE", ZMQ_BINDTODEVICE);
EZMQ_DEFCONST("zmq-BLOCKY", ZMQ_BLOCKY);
/* EZMQ_DEFCONST("zmq-BUILD-DRAFT-API", ZMQ_BUILD_DRAFT_API); */
EZMQ_DEFCONST("zmq-CLIENT", ZMQ_CLIENT);
EZMQ_DEFCONST("zmq-CONFLATE", ZMQ_CONFLATE);
EZMQ_DEFCONST("zmq-CONNECT-RID", ZMQ_CONNECT_RID);
EZMQ_DEFCONST("zmq-CONNECT-ROUTING-ID", ZMQ_CONNECT_ROUTING_ID);
EZMQ_DEFCONST("zmq-CONNECT-TIMEOUT", ZMQ_CONNECT_TIMEOUT);
EZMQ_DEFCONST("zmq-CURVE", ZMQ_CURVE);
EZMQ_DEFCONST("zmq-CURVE-PUBLICKEY", ZMQ_CURVE_PUBLICKEY);
EZMQ_DEFCONST("zmq-CURVE-SECRETKEY", ZMQ_CURVE_SECRETKEY);
EZMQ_DEFCONST("zmq-CURVE-SERVER", ZMQ_CURVE_SERVER);
EZMQ_DEFCONST("zmq-CURVE-SERVERKEY", ZMQ_CURVE_SERVERKEY);
EZMQ_DEFCONST("zmq-DEALER", ZMQ_DEALER);
EZMQ_DEFCONST("zmq-DEFINED-STDINT", ZMQ_DEFINED_STDINT);
EZMQ_DEFCONST("zmq-DELAY-ATTACH-ON-CONNECT", ZMQ_DELAY_ATTACH_ON_CONNECT);
EZMQ_DEFCONST("zmq-DGRAM", ZMQ_DGRAM);
EZMQ_DEFCONST("zmq-DISH", ZMQ_DISH);
EZMQ_DEFCONST("zmq-DONTWAIT", ZMQ_DONTWAIT);
EZMQ_DEFCONST("zmq-EVENTS", ZMQ_EVENTS);
EZMQ_DEFCONST("zmq-EVENT-ACCEPTED", ZMQ_EVENT_ACCEPTED);
EZMQ_DEFCONST("zmq-EVENT-ACCEPT-FAILED", ZMQ_EVENT_ACCEPT_FAILED);
EZMQ_DEFCONST("zmq-EVENT-ALL", ZMQ_EVENT_ALL);
EZMQ_DEFCONST("zmq-EVENT-BIND-FAILED", ZMQ_EVENT_BIND_FAILED);
EZMQ_DEFCONST("zmq-EVENT-CLOSED", ZMQ_EVENT_CLOSED);
EZMQ_DEFCONST("zmq-EVENT-CLOSE-FAILED", ZMQ_EVENT_CLOSE_FAILED);
EZMQ_DEFCONST("zmq-EVENT-CONNECTED", ZMQ_EVENT_CONNECTED);
EZMQ_DEFCONST("zmq-EVENT-CONNECT-DELAYED", ZMQ_EVENT_CONNECT_DELAYED);
EZMQ_DEFCONST("zmq-EVENT-CONNECT-RETRIED", ZMQ_EVENT_CONNECT_RETRIED);
EZMQ_DEFCONST("zmq-EVENT-DISCONNECTED", ZMQ_EVENT_DISCONNECTED);
EZMQ_DEFCONST("zmq-EVENT-HANDSHAKE-FAILED-AUTH", ZMQ_EVENT_HANDSHAKE_FAILED_AUTH);
EZMQ_DEFCONST("zmq-EVENT-HANDSHAKE-FAILED-NO-DETAIL", ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL);
EZMQ_DEFCONST("zmq-EVENT-HANDSHAKE-FAILED-PROTOCOL", ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL);
EZMQ_DEFCONST("zmq-EVENT-HANDSHAKE-SUCCEEDED", ZMQ_EVENT_HANDSHAKE_SUCCEEDED);
EZMQ_DEFCONST("zmq-EVENT-LISTENING", ZMQ_EVENT_LISTENING);
EZMQ_DEFCONST("zmq-EVENT-MONITOR-STOPPED", ZMQ_EVENT_MONITOR_STOPPED);
EZMQ_DEFCONST("zmq-FAIL-UNROUTABLE", ZMQ_FAIL_UNROUTABLE);
EZMQ_DEFCONST("zmq-FD", ZMQ_FD);
EZMQ_DEFCONST("zmq-FORWARDER", ZMQ_FORWARDER);
EZMQ_DEFCONST("zmq-GATHER", ZMQ_GATHER);
EZMQ_DEFCONST("zmq-GROUP-MAX-LENGTH", ZMQ_GROUP_MAX_LENGTH);
EZMQ_DEFCONST("zmq-GSSAPI", ZMQ_GSSAPI);
EZMQ_DEFCONST("zmq-GSSAPI-NT-HOSTBASED", ZMQ_GSSAPI_NT_HOSTBASED);
EZMQ_DEFCONST("zmq-GSSAPI-NT-KRB5-PRINCIPAL", ZMQ_GSSAPI_NT_KRB5_PRINCIPAL);
EZMQ_DEFCONST("zmq-GSSAPI-NT-USER-NAME", ZMQ_GSSAPI_NT_USER_NAME);
EZMQ_DEFCONST("zmq-GSSAPI-PLAINTEXT", ZMQ_GSSAPI_PLAINTEXT);
EZMQ_DEFCONST("zmq-GSSAPI-PRINCIPAL", ZMQ_GSSAPI_PRINCIPAL);
EZMQ_DEFCONST("zmq-GSSAPI-PRINCIPAL-NAMETYPE", ZMQ_GSSAPI_PRINCIPAL_NAMETYPE);
EZMQ_DEFCONST("zmq-GSSAPI-SERVER", ZMQ_GSSAPI_SERVER);
EZMQ_DEFCONST("zmq-GSSAPI-SERVICE-PRINCIPAL", ZMQ_GSSAPI_SERVICE_PRINCIPAL);
EZMQ_DEFCONST("zmq-GSSAPI-SERVICE-PRINCIPAL-NAMETYPE", ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE);
EZMQ_DEFCONST("zmq-HANDSHAKE-IVL", ZMQ_HANDSHAKE_IVL);
EZMQ_DEFCONST("zmq-HAS-CAPABILITIES", ZMQ_HAS_CAPABILITIES);
EZMQ_DEFCONST("zmq-HAUSNUMERO", ZMQ_HAUSNUMERO);
// Use `zmq-has'
/* EZMQ_DEFCONST("zmq-HAVE-POLLER", ZMQ_HAVE_POLLER); */
/* EZMQ_DEFCONST("zmq-HAVE-TIMERS", ZMQ_HAVE_TIMERS); */
EZMQ_DEFCONST("zmq-HEARTBEAT-IVL", ZMQ_HEARTBEAT_IVL);
EZMQ_DEFCONST("zmq-HEARTBEAT-TIMEOUT", ZMQ_HEARTBEAT_TIMEOUT);
EZMQ_DEFCONST("zmq-HEARTBEAT-TTL", ZMQ_HEARTBEAT_TTL);
EZMQ_DEFCONST("zmq-IDENTITY", ZMQ_IDENTITY);
EZMQ_DEFCONST("zmq-IMMEDIATE", ZMQ_IMMEDIATE);
EZMQ_DEFCONST("zmq-INVERT-MATCHING", ZMQ_INVERT_MATCHING);
EZMQ_DEFCONST("zmq-IO-THREADS", ZMQ_IO_THREADS);
EZMQ_DEFCONST("zmq-IO-THREADS-DFLT", ZMQ_IO_THREADS_DFLT);
EZMQ_DEFCONST("zmq-IPC-FILTER-GID", ZMQ_IPC_FILTER_GID);
EZMQ_DEFCONST("zmq-IPC-FILTER-PID", ZMQ_IPC_FILTER_PID);
EZMQ_DEFCONST("zmq-IPC-FILTER-UID", ZMQ_IPC_FILTER_UID);
EZMQ_DEFCONST("zmq-IPV4ONLY", ZMQ_IPV4ONLY);
EZMQ_DEFCONST("zmq-IPV6", ZMQ_IPV6);
EZMQ_DEFCONST("zmq-LAST-ENDPOINT", ZMQ_LAST_ENDPOINT);
EZMQ_DEFCONST("zmq-LINGER", ZMQ_LINGER);
EZMQ_DEFCONST("zmq-MAXMSGSIZE", ZMQ_MAXMSGSIZE);
EZMQ_DEFCONST("zmq-MAX-MSGSZ", ZMQ_MAX_MSGSZ);
EZMQ_DEFCONST("zmq-MAX-SOCKETS", ZMQ_MAX_SOCKETS);
EZMQ_DEFCONST("zmq-MAX-SOCKETS-DFLT", ZMQ_MAX_SOCKETS_DFLT);
EZMQ_DEFCONST("zmq-MECHANISM", ZMQ_MECHANISM);
EZMQ_DEFCONST("zmq-MORE", ZMQ_MORE);
// See `zmq-message-property' in Emacs
/* EZMQ_DEFCONST("zmq-MSG-PROPERTY-PEER-ADDRESS", ZMQ_MSG_PROPERTY_PEER_ADDRESS); */
/* EZMQ_DEFCONST("zmq-MSG-PROPERTY-ROUTING-ID", ZMQ_MSG_PROPERTY_ROUTING_ID); */
/* EZMQ_DEFCONST("zmq-MSG-PROPERTY-SOCKET-TYPE", ZMQ_MSG_PROPERTY_SOCKET_TYPE); */
/* EZMQ_DEFCONST("zmq-MSG-PROPERTY-USER-ID", ZMQ_MSG_PROPERTY_USER_ID); */
EZMQ_DEFCONST("zmq-MSG-T-SIZE", ZMQ_MSG_T_SIZE);
EZMQ_DEFCONST("zmq-MULTICAST-HOPS", ZMQ_MULTICAST_HOPS);
EZMQ_DEFCONST("zmq-MULTICAST-MAXTPDU", ZMQ_MULTICAST_MAXTPDU);
EZMQ_DEFCONST("zmq-NOBLOCK", ZMQ_NOBLOCK);
EZMQ_DEFCONST("zmq-NULL", ZMQ_NULL);
EZMQ_DEFCONST("zmq-PAIR", ZMQ_PAIR);
EZMQ_DEFCONST("zmq-PLAIN", ZMQ_PLAIN);
EZMQ_DEFCONST("zmq-PLAIN-PASSWORD", ZMQ_PLAIN_PASSWORD);
EZMQ_DEFCONST("zmq-PLAIN-SERVER", ZMQ_PLAIN_SERVER);
EZMQ_DEFCONST("zmq-PLAIN-USERNAME", ZMQ_PLAIN_USERNAME);
EZMQ_DEFCONST("zmq-POLLERR", ZMQ_POLLERR);
EZMQ_DEFCONST("zmq-POLLIN", ZMQ_POLLIN);
EZMQ_DEFCONST("zmq-POLLITEMS-DFLT", ZMQ_POLLITEMS_DFLT);
EZMQ_DEFCONST("zmq-POLLOUT", ZMQ_POLLOUT);
EZMQ_DEFCONST("zmq-POLLPRI", ZMQ_POLLPRI);
EZMQ_DEFCONST("zmq-PROBE-ROUTER", ZMQ_PROBE_ROUTER);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZAP-BAD-REQUEST-ID", ZMQ_PROTOCOL_ERROR_ZAP_BAD_REQUEST_ID);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZAP-INVALID-METADATA", ZMQ_PROTOCOL_ERROR_ZAP_INVALID_METADATA);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZAP-INVALID-STATUS-CODE", ZMQ_PROTOCOL_ERROR_ZAP_INVALID_STATUS_CODE);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZAP-MALFORMED-REPLY", ZMQ_PROTOCOL_ERROR_ZAP_MALFORMED_REPLY);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZAP-UNSPECIFIED", ZMQ_PROTOCOL_ERROR_ZAP_UNSPECIFIED);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-CRYPTOGRAPHIC", ZMQ_PROTOCOL_ERROR_ZMTP_CRYPTOGRAPHIC);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-INVALID-METADATA", ZMQ_PROTOCOL_ERROR_ZMTP_INVALID_METADATA);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-INVALID-SEQUENCE", ZMQ_PROTOCOL_ERROR_ZMTP_INVALID_SEQUENCE);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-KEY-EXCHANGE", ZMQ_PROTOCOL_ERROR_ZMTP_KEY_EXCHANGE);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-MALFORMED-COMMAND-ERROR", ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_ERROR);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-MALFORMED-COMMAND-HELLO", ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_HELLO);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-MALFORMED-COMMAND-INITIATE", ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_INITIATE);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-MALFORMED-COMMAND-MESSAGE", ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_MESSAGE);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-MALFORMED-COMMAND-READY", ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_READY);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-MALFORMED-COMMAND-UNSPECIFIED", ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_UNSPECIFIED);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-MALFORMED-COMMAND-WELCOME", ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_WELCOME);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-MECHANISM-MISMATCH", ZMQ_PROTOCOL_ERROR_ZMTP_MECHANISM_MISMATCH);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-UNEXPECTED-COMMAND", ZMQ_PROTOCOL_ERROR_ZMTP_UNEXPECTED_COMMAND);
EZMQ_DEFCONST("zmq-PROTOCOL-ERROR-ZMTP-UNSPECIFIED", ZMQ_PROTOCOL_ERROR_ZMTP_UNSPECIFIED);
EZMQ_DEFCONST("zmq-PUB", ZMQ_PUB);
EZMQ_DEFCONST("zmq-PULL", ZMQ_PULL);
EZMQ_DEFCONST("zmq-PUSH", ZMQ_PUSH);
EZMQ_DEFCONST("zmq-QUEUE", ZMQ_QUEUE);
EZMQ_DEFCONST("zmq-RADIO", ZMQ_RADIO);
EZMQ_DEFCONST("zmq-RATE", ZMQ_RATE);
EZMQ_DEFCONST("zmq-RCVBUF", ZMQ_RCVBUF);
EZMQ_DEFCONST("zmq-RCVHWM", ZMQ_RCVHWM);
EZMQ_DEFCONST("zmq-RCVMORE", ZMQ_RCVMORE);
EZMQ_DEFCONST("zmq-RCVTIMEO", ZMQ_RCVTIMEO);
EZMQ_DEFCONST("zmq-RECONNECT-IVL", ZMQ_RECONNECT_IVL);
EZMQ_DEFCONST("zmq-RECONNECT-IVL-MAX", ZMQ_RECONNECT_IVL_MAX);
EZMQ_DEFCONST("zmq-RECOVERY-IVL", ZMQ_RECOVERY_IVL);
EZMQ_DEFCONST("zmq-REP", ZMQ_REP);
EZMQ_DEFCONST("zmq-REQ", ZMQ_REQ);
EZMQ_DEFCONST("zmq-REQ-CORRELATE", ZMQ_REQ_CORRELATE);
EZMQ_DEFCONST("zmq-REQ-RELAXED", ZMQ_REQ_RELAXED);
EZMQ_DEFCONST("zmq-ROUTER", ZMQ_ROUTER);
EZMQ_DEFCONST("zmq-ROUTER-BEHAVIOR", ZMQ_ROUTER_BEHAVIOR);
EZMQ_DEFCONST("zmq-ROUTER-HANDOVER", ZMQ_ROUTER_HANDOVER);
EZMQ_DEFCONST("zmq-ROUTER-MANDATORY", ZMQ_ROUTER_MANDATORY);
EZMQ_DEFCONST("zmq-ROUTER-RAW", ZMQ_ROUTER_RAW);
EZMQ_DEFCONST("zmq-ROUTING-ID", ZMQ_ROUTING_ID);
EZMQ_DEFCONST("zmq-SCATTER", ZMQ_SCATTER);
EZMQ_DEFCONST("zmq-SERVER", ZMQ_SERVER);
EZMQ_DEFCONST("zmq-SHARED", ZMQ_SHARED);
EZMQ_DEFCONST("zmq-SNDBUF", ZMQ_SNDBUF);
EZMQ_DEFCONST("zmq-SNDHWM", ZMQ_SNDHWM);
EZMQ_DEFCONST("zmq-SNDMORE", ZMQ_SNDMORE);
EZMQ_DEFCONST("zmq-SNDTIMEO", ZMQ_SNDTIMEO);
EZMQ_DEFCONST("zmq-SOCKET-LIMIT", ZMQ_SOCKET_LIMIT);
EZMQ_DEFCONST("zmq-SOCKS-PROXY", ZMQ_SOCKS_PROXY);
EZMQ_DEFCONST("zmq-SRCFD", ZMQ_SRCFD);
EZMQ_DEFCONST("zmq-STREAM", ZMQ_STREAM);
EZMQ_DEFCONST("zmq-STREAMER", ZMQ_STREAMER);
EZMQ_DEFCONST("zmq-STREAM-NOTIFY", ZMQ_STREAM_NOTIFY);
EZMQ_DEFCONST("zmq-SUB", ZMQ_SUB);
EZMQ_DEFCONST("zmq-SUBSCRIBE", ZMQ_SUBSCRIBE);
EZMQ_DEFCONST("zmq-TCP-ACCEPT-FILTER", ZMQ_TCP_ACCEPT_FILTER);
EZMQ_DEFCONST("zmq-TCP-KEEPALIVE", ZMQ_TCP_KEEPALIVE);
EZMQ_DEFCONST("zmq-TCP-KEEPALIVE-CNT", ZMQ_TCP_KEEPALIVE_CNT);
EZMQ_DEFCONST("zmq-TCP-KEEPALIVE-IDLE", ZMQ_TCP_KEEPALIVE_IDLE);
EZMQ_DEFCONST("zmq-TCP-KEEPALIVE-INTVL", ZMQ_TCP_KEEPALIVE_INTVL);
EZMQ_DEFCONST("zmq-TCP-MAXRT", ZMQ_TCP_MAXRT);
EZMQ_DEFCONST("zmq-THREAD-AFFINITY-CPU-ADD", ZMQ_THREAD_AFFINITY_CPU_ADD);
EZMQ_DEFCONST("zmq-THREAD-AFFINITY-CPU-REMOVE", ZMQ_THREAD_AFFINITY_CPU_REMOVE);
EZMQ_DEFCONST("zmq-THREAD-NAME-PREFIX", ZMQ_THREAD_NAME_PREFIX);
EZMQ_DEFCONST("zmq-THREAD-PRIORITY", ZMQ_THREAD_PRIORITY);
EZMQ_DEFCONST("zmq-THREAD-PRIORITY-DFLT", ZMQ_THREAD_PRIORITY_DFLT);
EZMQ_DEFCONST("zmq-THREAD-SAFE", ZMQ_THREAD_SAFE);
EZMQ_DEFCONST("zmq-THREAD-SCHED-POLICY", ZMQ_THREAD_SCHED_POLICY);
EZMQ_DEFCONST("zmq-THREAD-SCHED-POLICY-DFLT", ZMQ_THREAD_SCHED_POLICY_DFLT);
EZMQ_DEFCONST("zmq-TOS", ZMQ_TOS);
EZMQ_DEFCONST("zmq-TYPE", ZMQ_TYPE);
EZMQ_DEFCONST("zmq-UNSUBSCRIBE", ZMQ_UNSUBSCRIBE);
EZMQ_DEFCONST("zmq-USE-FD", ZMQ_USE_FD);
EZMQ_DEFCONST("zmq-VMCI-BUFFER-MAX-SIZE", ZMQ_VMCI_BUFFER_MAX_SIZE);
EZMQ_DEFCONST("zmq-VMCI-BUFFER-MIN-SIZE", ZMQ_VMCI_BUFFER_MIN_SIZE);
EZMQ_DEFCONST("zmq-VMCI-BUFFER-SIZE", ZMQ_VMCI_BUFFER_SIZE);
EZMQ_DEFCONST("zmq-VMCI-CONNECT-TIMEOUT", ZMQ_VMCI_CONNECT_TIMEOUT);
EZMQ_DEFCONST("zmq-XPUB", ZMQ_XPUB);
EZMQ_DEFCONST("zmq-XPUB-MANUAL", ZMQ_XPUB_MANUAL);
EZMQ_DEFCONST("zmq-XPUB-NODROP", ZMQ_XPUB_NODROP);
EZMQ_DEFCONST("zmq-XPUB-VERBOSE", ZMQ_XPUB_VERBOSE);
EZMQ_DEFCONST("zmq-XPUB-VERBOSER", ZMQ_XPUB_VERBOSER);
EZMQ_DEFCONST("zmq-XPUB-WELCOME-MSG", ZMQ_XPUB_WELCOME_MSG);
EZMQ_DEFCONST("zmq-XREP", ZMQ_XREP);
EZMQ_DEFCONST("zmq-XREQ", ZMQ_XREQ);
EZMQ_DEFCONST("zmq-XSUB", ZMQ_XSUB);
EZMQ_DEFCONST("zmq-ZAP-DOMAIN", ZMQ_ZAP_DOMAIN);
EZMQ_DEFCONST("zmq-ZAP-ENFORCE-DOMAIN", ZMQ_ZAP_ENFORCE_DOMAIN);
}

63
lisp/zmq/src/context.c Normal file
View File

@@ -0,0 +1,63 @@
#include "context.h"
EZMQ_DOC(ezmq_context, "", "Create a new context.");
emacs_value
ezmq_context(void)
{
void *ctx = zmq_ctx_new();
EZMQ_CHECK_NULL_ERROR(ctx);
ezmq_debug("ezmq_context()\n");
return ezmq_new_obj_ptr(ezmq_new_obj(EZMQ_CONTEXT, ctx));
}
EZMQ_DOC(ezmq_ctx_set, "CONTEXT OPTION VALUE", "Set a CONTEXT OPTION to VALUE.");
emacs_value
ezmq_ctx_set(emacs_value econtext, emacs_value eoption, emacs_value evalue)
{
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_EXTRACT_INT(option, eoption);
if(option == ZMQ_BLOCKY || option == ZMQ_IPV6)
EZMQ_CHECK_ERROR(zmq_ctx_set(context->obj, option, (int)!NILP(evalue)));
else {
EZMQ_EXTRACT_INT(value, evalue);
EZMQ_CHECK_ERROR(zmq_ctx_set(context->obj, option, value));
}
return Qnil;
}
EZMQ_DOC(ezmq_ctx_get, "CONTEXT OPTION", "Get a CONTEXT OPTION.");
emacs_value
ezmq_ctx_get(emacs_value econtext, emacs_value eoption)
{
emacs_value retval = Qnil;
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_EXTRACT_INT(option, eoption);
int val = zmq_ctx_get(context->obj, option);
EZMQ_CHECK_ERROR(val);
if(option == ZMQ_BLOCKY || option == ZMQ_IPV6) {
if(val) retval = Qt;
}
else
retval = INT(val);
return retval;
}
EZMQ_DOC(ezmq_ctx_shutdown, "CONTEXT", "Shutdown CONTEXT.");
emacs_value
ezmq_ctx_shutdown(emacs_value econtext)
{
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_CHECK_ERROR(zmq_ctx_shutdown(context->obj));
return Qnil;
}
EZMQ_DOC(ezmq_ctx_term, "CONTEXT", "Terminate CONTEXT.");
emacs_value
ezmq_ctx_term(emacs_value econtext)
{
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_CHECK_ERROR(zmq_ctx_term(context->obj));
return Qnil;
}

13
lisp/zmq/src/context.h Normal file
View File

@@ -0,0 +1,13 @@
#ifndef __CONTEXT_H__
#define __CONTEXT_H__
#include "core.h"
EZMQ_FUN(ezmq_context, void);
EZMQ_FUN(ezmq_ctx_set, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_ctx_get, emacs_value, emacs_value);
EZMQ_FUN(ezmq_ctx_shutdown, emacs_value);
EZMQ_FUN(ezmq_ctx_term, emacs_value);
#endif /* __CONTEXT_H__ */

309
lisp/zmq/src/core.c Normal file
View File

@@ -0,0 +1,309 @@
#include "core.h"
#include <assert.h>
/**
Linked list of global references to be freed eventually.
*/
typedef struct ezmq_globref_t {
struct ezmq_globref_t *next;
emacs_value val;
} ezmq_globref_t;
static ezmq_globref_t *globrefs = NULL;
#define ERR_CASE(err) \
case err: { \
const char *msg = zmq_strerror(err); \
ptrdiff_t len = (ptrdiff_t)strlen(msg); \
ezmq_signal(INTERN("zmq-"#err), 1, STRING(msg, len)); \
} \
break;
void
ezmq_signal_error()
{
int en = zmq_errno();
switch(en) {
ERR_CASE(EINVAL);
ERR_CASE(EPROTONOSUPPORT);
ERR_CASE(ENOCOMPATPROTO);
ERR_CASE(EADDRINUSE);
ERR_CASE(EADDRNOTAVAIL);
ERR_CASE(ENODEV);
ERR_CASE(ETERM);
ERR_CASE(ENOTSOCK);
ERR_CASE(EMTHREAD);
ERR_CASE(EFAULT);
ERR_CASE(EINTR);
ERR_CASE(ENOTSUP);
ERR_CASE(ENOENT);
ERR_CASE(ENOMEM);
ERR_CASE(EAGAIN);
ERR_CASE(EFSM);
ERR_CASE(EHOSTUNREACH);
ERR_CASE(EMFILE);
default: {
const char *msg = zmq_strerror(zmq_errno());
ptrdiff_t len = (ptrdiff_t)strlen(msg);
ezmq_signal(Qzmq_error, 1, STRING(msg, len));
}
}
}
#undef ERR_CASE
void *
ezmq_malloc(size_t nbytes)
{
void *buf = NULL;
if(!NONLOCAL_EXIT()) {
buf = (void *)malloc(nbytes);
if(!buf) ezmq_signal_error();
}
return buf;
}
static char const *
ezmq_type_string(enum ezmq_obj_t type)
{
switch(type) {
case EZMQ_CONTEXT:
return "zmq-context";
case EZMQ_SOCKET:
return "zmq-socket";
case EZMQ_MESSAGE:
return "zmq-message";
case EZMQ_POLLER:
return "zmq-poller";
default:
return NULL;
}
}
static emacs_value
ezmq_type_symbol(enum ezmq_obj_t type)
{
char const *str = ezmq_type_string(type);
return str ? INTERN(str) : Qnil;
}
void
ezmq_signal(emacs_value err, int nargs, ...)
{
va_list args;
emacs_value data[nargs];
va_start(args, nargs);
int i;
for(i = 0; i < nargs; i++) {
data[i] = va_arg(args, emacs_value);
}
SIGNAL(err, FUNCALL(Qlist, nargs, data));
va_end(args);
}
static void
ezmq_wrong_object_type(ezmq_obj_t *obj, enum ezmq_obj_t expected)
{
ezmq_wrong_type_argument(ezmq_type_symbol(obj->type),
1, ezmq_type_symbol(expected));
}
void
ezmq_wrong_type_argument(emacs_value val, int nvalid, ...)
{
va_list args;
va_start(args, nvalid);
if(nvalid == 1) {
SIGNAL(Qwrong_type_argument, LIST(2, val, va_arg(args, emacs_value)));
} else if(nvalid > 1) {
emacs_value options[nvalid + 1];
options[0] = INTERN("or");
int i;
for(i = 1; i < nvalid + 1; i++) {
options[i] = va_arg(args, emacs_value);
}
emacs_value options_list = FUNCALL(Qlist, nvalid + 1, options);
SIGNAL(Qwrong_type_argument, LIST(2, val, options_list));
} else {
SIGNAL(Qwrong_type_argument, LIST(1, val));
}
va_end(args);
}
void
ezmq_args_out_of_range(emacs_value val, emacs_value range)
{
SIGNAL(Qargs_out_of_range, LIST(2, val, range));
}
int
ezmq_obj_of_type(emacs_value val, enum ezmq_obj_t type)
{
ezmq_obj_t *obj = USER_PTR(val);
if(!NONLOCAL_EXIT() &&
USER_FINALIZER(val) == &ezmq_obj_finalizer &&
obj->type == type) {
return 1;
} else {
CLEAR_NONLOCAL_EXIT();
return 0;
}
}
ezmq_obj_t *
ezmq_extract_obj(enum ezmq_obj_t type, emacs_value val)
{
ezmq_obj_t *obj = USER_PTR(val);
if(!NONLOCAL_EXIT()) {
if(USER_FINALIZER(val) == &ezmq_obj_finalizer) {
if(obj->type != type) {
ezmq_wrong_object_type(obj, type);
} else if(type == EZMQ_SOCKET && obj->obj == NULL) {
const char *msg = "Socket closed";
ezmq_signal(INTERN("zmq-ENOTSOCK"), 1, STRING(msg, strlen(msg)));
}
} else {
ezmq_wrong_type_argument(val, 1, ezmq_type_symbol(type));
}
}
return obj;
}
ezmq_obj_t *
ezmq_new_obj(enum ezmq_obj_t type, void *obj)
{
ezmq_obj_t *eobj = ezmq_malloc(sizeof(*eobj));
if(!NONLOCAL_EXIT()) {
switch(type) {
case EZMQ_MESSAGE:
if(!obj) {
obj = ezmq_malloc(sizeof(zmq_msg_t));
if(!obj) {
free(eobj);
return NULL;
}
}
break;
default: break;
}
eobj->obj = obj;
eobj->type = type;
eobj->val = NULL;
}
return eobj;
}
// TODO: Handle the case of multiple context objects, we
// will need to join multiple threads at the end.
void
ezmq_obj_finalizer(void *ptr)
{
ezmq_obj_t *obj = (ezmq_obj_t *)ptr;
switch(obj->type) {
case EZMQ_MESSAGE:
zmq_msg_close(obj->obj);
break;
case EZMQ_SOCKET: {
// If obj == NULL, zmq_close has already been called. See ezmq_close.
if(obj->obj) {
// http://zguide.zeromq.org/page:all#Making-a-Clean-Exit
int opt = 0;
zmq_setsockopt(obj->obj, ZMQ_LINGER, &opt, sizeof(opt));
zmq_close(obj->obj);
}
break;
}
case EZMQ_CONTEXT: {
int max_tries = 3;
int i = 0;
// Since a socket holds a reference to the context that was used to
// create it (see ezmq_socket), by the time a context is finalized, all
// sockets of the context have already been closed and their LINGER
// periods set to 0 so this context termination call should not fail
// due to open sockets. The loop is here as a sanity check.
while((zmq_ctx_term(obj->obj) == -1) && (zmq_errno() == EINTR) && i < max_tries)
i += 1;
break;
}
case EZMQ_POLLER:
zmq_poller_destroy(&(obj->obj));
break;
}
ezmq_free_obj(obj);
}
emacs_value
ezmq_new_obj_ptr(ezmq_obj_t *obj)
{
return env->make_user_ptr(env, &ezmq_obj_finalizer, obj);
}
void
ezmq_free_obj(ezmq_obj_t *obj)
{
if(obj) {
ezmq_debug("ezmq_free_obj(%s)\n", ezmq_type_string(obj->type));
if(obj->type == EZMQ_MESSAGE) {
free(obj->obj);
}
ezmq_push_globref(obj);
free(obj);
}
}
void
ezmq_obj_set_val(ezmq_obj_t *obj, emacs_value val)
{
if(!NONLOCAL_EXIT()) {
ezmq_push_globref(obj);
obj->val = val ? GLOBREF(val) : NULL;
}
}
emacs_value
ezmq_obj_get_val(ezmq_obj_t *obj)
{
return obj->val ? obj->val : Qnil;
}
void
ezmq_push_globref(ezmq_obj_t *obj)
{
if(obj->val) {
ezmq_debug("push globref\n");
ezmq_globref_t *el = malloc(sizeof(*el));
assert(el != NULL);
el->next = globrefs;
el->val = obj->val;
globrefs = el;
}
}
emacs_value
ezmq_pop_globref()
{
if(globrefs) {
ezmq_debug("pop globref\n");
ezmq_globref_t *el = globrefs;
emacs_value val = globrefs->val;
globrefs = globrefs->next;
free(el);
return val;
} else
return NULL;
}
char *
ezmq_copy_string(emacs_value str, ptrdiff_t *size)
{
*size = 0;
ptrdiff_t sz = 1;
if(!env->copy_string_contents(env, str, NULL, &sz)) return NULL;
char *buf = ezmq_malloc(sz);
env->copy_string_contents(env, str, buf, &sz);
// The size returned by copy_string_contents contains the terminanting NULL
// byte.
if(size != NULL) *size = sz - 1;
return buf;
}

297
lisp/zmq/src/core.h Normal file
View File

@@ -0,0 +1,297 @@
#ifndef __CORE_H__
#define __CORE_H__
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <zmq.h>
#include <stdbool.h>
#include "emacs-module.h"
/**
About what environment functions do when a non-local exit is pending, from
http://phst.github.io/emacs-modules.html#when-a-nonlocal-exit-is-pending-module-functions-silently-do-nothing:
environment functions exhibit saturating behavior: once a nonlocal exit
is pending for an environment, all environment functions called for that
environment silently ignore all their arguments (except the environment
pointer itself) and return an unspecified value.
*/
#ifndef EZMQ_DEBUG
#define EZMQ_DEBUG 0
#endif
#define ezmq_debug(str, ...) if(EZMQ_DEBUG) fprintf(stderr, str, ##__VA_ARGS__)
/**
Helper macros to aid in interacting with the Emacs environment. They all
expect an implicit emacs_env variable named env to be defined in the calling
environment of the macro.
*/
#define INTERN(val) env->intern(env, (val))
#define FUNCALL(fun, nargs, args) env->funcall(env, (fun), (nargs), (args))
#define CAR(list) FUNCALL(Qcar, 1, &(list))
#define CDR(list) FUNCALL(Qcdr, 1, &(list))
#define INT(i) env->make_integer(env, (i))
// Should only be used when i is guaranteed to be an integer, otherwise use
// EZMQ_EXTRACT_INT
#define EXTRACT_INT(i) env->extract_integer(env, (i))
#define STRING(str, len) env->make_string(env, (str), (len))
#define LIST(count, ...) FUNCALL(Qlist, (count), ((emacs_value []){ __VA_ARGS__ }))
#define CONS(car, cdr) FUNCALL(Qcons, 2, ((emacs_value []){ (car), (cdr) }))
#define TYPE(val) env->type_of(env, (val))
#define USER_PTR(val) env->get_user_ptr(env, (val))
#define USER_FINALIZER(val) env->get_user_finalizer(env, (val))
#define EQ(a, b) env->eq(env, (a), (b))
#define NILP(a) !env->is_not_nil(env, (a))
#define EQUAL(a, b) EQ(FUNCALL(Qequal, 2, ((emacs_value []){ (a), (b) })), Qt)
#define LENGTH(list) env->extract_integer(env, FUNCALL(Qlength, 1, &(list)))
#define AREF(vec, i) env->vec_get(env, (vec), (i))
#define VEC_LENGTH(vec) env->vec_size(env, (vec))
#define GLOBREF(val) env->make_global_ref(env, (val))
#define FREE_GLOBREF(val) env->free_global_ref(env, (val))
#define NONLOCAL_EXIT() (env->non_local_exit_check(env) != emacs_funcall_exit_return)
#define CLEAR_NONLOCAL_EXIT() env->non_local_exit_clear(env)
#define SIGNAL(err, data) env->non_local_exit_signal(env, (err), (data))
/**
EZMQ_EXTRACT_* macros transform the Lisp object representations to their
corresponding C representations. If during the extraction an error is
signaled, they immediately exit the function where the macro was expanded by
returning NULL.
*/
#define EZMQ_EXTRACT_INT(name, val) \
intmax_t name = env->extract_integer(env, (val)); \
do { \
if(NONLOCAL_EXIT()) { \
return NULL; \
} \
} while(0)
#define EZMQ_EXTRACT_OPTIONAL_INT(name, val) \
intmax_t name = EQ((val), Qnil) ? 0 : \
env->extract_integer(env, (val)); \
do { \
if(NONLOCAL_EXIT()) { \
return NULL; \
} \
} while(0)
#define EZMQ_EXTRACT_OBJ(name, type, val) \
ezmq_obj_t *name = ezmq_extract_obj(type, (val)); \
if(NONLOCAL_EXIT()) return NULL \
#define EZMQ_EXTRACT_OPTIONAL_OBJ(name, type, val) \
ezmq_obj_t *name = EQ((val), Qnil) ? NULL : \
ezmq_extract_obj(type, (val)); \
if(NONLOCAL_EXIT()) return NULL \
#define EZMQ_EXTRACT_STRING(name, len, val) \
ptrdiff_t len = 0; \
char *name = ezmq_copy_string((val), &len); \
do { \
if(NONLOCAL_EXIT()) { \
return NULL; \
} \
} while(0)
/**
The EZMQ_CHECK_* macros check that that expression passed as their argument
evaluates to something other than -1 (EZMQ_CHECK_ERROR) or NULL
(EZMQ_CHECK_NULL_ERROR). If they do evaluate to -1 or NULL, they signal an
error. Note, the expressions passed as arguments will not be evaluated if a
non-local exit is pending already.
*/
#define EZMQ_CHECK_ERROR(expr) \
do { \
if(NONLOCAL_EXIT()) break; \
int __retcode = (expr); \
if(__retcode == -1) { \
ezmq_signal_error(); \
} \
} while(0)
#define EZMQ_CHECK_NULL_ERROR(expr) \
do { \
if(NONLOCAL_EXIT()) break; \
if((void *)(expr) == NULL) { \
ezmq_signal_error(); \
} \
} while(0)
#define EZMQ_DOC(name, args, doc) \
const char *__zmq_doc_##name = doc "\n\n(fn " args ")"
#define EZMQ_FUN(name, ...) \
extern const char *__zmq_doc_##name; \
extern emacs_value name(__VA_ARGS__)
enum ezmq_obj_t {
EZMQ_CONTEXT = 0xe178c286,
EZMQ_MESSAGE = 0xe178c286 + 2,
EZMQ_SOCKET = 0xe178c286 + 4,
EZMQ_POLLER = 0xe178c286 + 8
};
typedef struct {
enum ezmq_obj_t type;
void *obj;
// Extra object that can be stored, use ezmq_obj_get_val() and
// ezmq_obj_set_val() to access it.
emacs_value val;
} ezmq_obj_t;
// Set to the current Emacs environment, see ezmq_dispatch
extern emacs_env *env;
extern emacs_value Qzmq_error, Qt, Qnil, Qnth, Qlist,
Qwrong_type_argument, Qargs_out_of_range,
Qcons, Qstring, Qvector, Qcar, Qcdr, Qlength, Qinteger, Qequal,
Qzmq_POLLIN, Qzmq_POLLPRI, Qzmq_POLLERR, Qzmq_POLLOUT,
Izmq_POLLIN, Izmq_POLLPRI, Izmq_POLLERR, Izmq_POLLOUT;
/**
Signal an Emacs error.
ERR is the error symbol, the remaining arguments are used as the error data.
*/
extern void
ezmq_signal(emacs_value err, int nargs, ...);
/**
Signal an Emacs `wrong-type-argument` error.
VAL is the object with a wrong type, the remaining arguments should be the
types that VAL should take.
*/
extern void
ezmq_wrong_type_argument(emacs_value val, int nvalid, ...);
/**
Signal an Emacs `args-out-of-range` error.
VAL is the object whose range is out of bounds. RANGE is an object
describing the bounds that are valid.
*/
extern void
ezmq_args_out_of_range(emacs_value val, emacs_value range);
/**
Signal an error created from the current value of zmq_errno().
*/
extern void
ezmq_signal_error();
/**
Create a new ezmq_obj with type and obj and returns a user-ptr to it. As a
special case if type is EZMQ_MESSAGE and obj is NULL, allocate the required
zmq_msg_t object. This is the normal way to create new ZMQ message objects.
The environment is passed for the case when nno memory can be allocated, an
error is signaled and this function will return NULL.
*/
extern emacs_value
ezmq_new_obj_ptr(ezmq_obj_t *obj);
/**
Allocate and return an ezmq_obj_t with TYPE and OBJ. Signal a non-local exit
if anything goes wrong.
*/
extern ezmq_obj_t *
ezmq_new_obj(enum ezmq_obj_t type, void *obj);
/**
Free the memory used to wrap a ZMQ object. Note this only free's the memoery
used by a ezmq_obj_t not the underlying object it points to. See
ezmq_obj_finalizer for freeing up the resources used by the ZMQ objects.
*/
extern void
ezmq_free_obj(ezmq_obj_t *obj);
/**
Set the VAL field of OBJ.
Un-reference any current value stored in OBJ, make a global reference to VAL
and store in OBJ->val.
*/
extern void
ezmq_obj_set_val(ezmq_obj_t *obj, emacs_value val);
/**
Return the VAL field of OBJ.
If OBJ's VAL field is empty, return Qnil.
*/
emacs_value
ezmq_obj_get_val(ezmq_obj_t *obj);
/**
Add OBJ->val to a stack of values to call FREE_GLOBREF() on next dispatch.
Do this only if OBJ->val is not NULL. The global references are also cleaned
up after every garbage collection in Emacs.
*/
extern void
ezmq_push_globref(ezmq_obj_t *obj);
/**
Remove a value from the stack of values pushed to by ezmq_push_globref()
*/
extern emacs_value
ezmq_pop_globref();
/**
Return 1 if Emacs VAL is a ZMQ object with TYPE, 0 otherwise.
*/
extern int
ezmq_obj_of_type(emacs_value val, enum ezmq_obj_t type);
/**
Extract an ezmq_obj_t from the Lisp object in OBJ. Signal a non-local exit
if the extracted object doesn't match TYPE.
*/
extern ezmq_obj_t *
ezmq_extract_obj(enum ezmq_obj_t type, emacs_value obj);
/**
Cleanup resources of a ezmq_obj_t. Meant to be added as the object finalizer
when wrapping ezmq_obj_t objects as a user_ptr.
*/
extern void
ezmq_obj_finalizer(void *);
/**
Similar to malloc, but signal an error if no memory could be allocated and
do not attempt to allocate if a non-local exit is pending. In both cases,
return NULL.
*/
extern void *
ezmq_malloc(size_t nbytes);
/**
Copy and return a pointer to an Emacs string. The caller is responsible for
freeing the memory returned.
*/
extern char *
ezmq_copy_string(emacs_value str, ptrdiff_t *size);
#endif /* __CORE_H__ */

791
lisp/zmq/src/depcomp Executable file
View File

@@ -0,0 +1,791 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by 'PROGRAMS ARGS'.
object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
# Get the directory component of the given path, and save it in the
# global variables '$dir'. Note that this directory component will
# be either empty or ending with a '/' character. This is deliberate.
set_dir_from ()
{
case $1 in
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
*) dir=;;
esac
}
# Get the suffix-stripped basename of the given path, and save it the
# global variable '$base'.
set_base_from ()
{
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
}
# If no dependency file was actually created by the compiler invocation,
# we still have to create a dummy depfile, to avoid errors with the
# Makefile "include basename.Plo" scheme.
make_dummy_depfile ()
{
echo "#dummy" > "$depfile"
}
# Factor out some common post-processing of the generated depfile.
# Requires the auxiliary global variable '$tmpdepfile' to be set.
aix_post_process_depfile ()
{
# If the compiler actually managed to produce a dependency file,
# post-process it.
if test -f "$tmpdepfile"; then
# Each line is of the form 'foo.o: dependency.h'.
# Do two passes, one to just change these to
# $object: dependency.h
# and one to simply output
# dependency.h:
# which is needed to avoid the deleted-header problem.
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
} > "$depfile"
rm -f "$tmpdepfile"
else
make_dummy_depfile
fi
}
# A tabulation character.
tab=' '
# A newline character.
nl='
'
# Character ranges might be problematic outside the C locale.
# These definitions help.
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
lower=abcdefghijklmnopqrstuvwxyz
digits=0123456789
alpha=${upper}${lower}
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Avoid interferences from the environment.
gccflag= dashmflag=
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
# This is just like msvc7 but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvc7
fi
if test "$depmode" = xlc; then
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
gccflag=-qmakedep=gcc,-MF
depmode=gcc
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say). Also, it might not be
## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The second -e expression handles DOS-style file names with drive
# letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
| tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
make_dummy_depfile
fi
rm -f "$tmpdepfile"
;;
xlc)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
aix_post_process_depfile
;;
tcc)
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
# FIXME: That version still under development at the moment of writing.
# Make that this statement remains true also for stable, released
# versions.
# It will wrap lines (doesn't matter whether long or short) with a
# trailing '\', as in:
#
# foo.o : \
# foo.c \
# foo.h \
#
# It will put a trailing '\' even on the last line, and will use leading
# spaces rather than leading tabs (at least since its commit 0394caf7
# "Emit spaces for -MD").
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
# We have to change lines of the first kind to '$object: \'.
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
# And for each line of the second kind, we have to emit a 'dep.h:'
# dummy dependency, to avoid the deleted-header problem.
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
## The order of this option in the case statement is important, since the
## shell code in configure will try each of these formats in the order
## listed in this file. A plain '-MD' option would be understood by many
## compilers, so we must ensure this comes after the gcc and icc options.
pgcc)
# Portland's C compiler understands '-MD'.
# Will always output deps to 'file.d' where file is the root name of the
# source file under compilation, even if file resides in a subdirectory.
# The object file name does not affect the name of the '.d' file.
# pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
set_dir_from "$object"
# Use the source, not the object, to determine the base name, since
# that's sadly what pgcc will do too.
set_base_from "$source"
tmpdepfile=$base.d
# For projects that build the same source file twice into different object
# files, the pgcc approach of using the *source* file root name can cause
# problems in parallel builds. Use a locking strategy to avoid stomping on
# the same $tmpdepfile.
lockdir=$base.d-lock
trap "
echo '$0: caught signal, cleaning up...' >&2
rmdir '$lockdir'
exit 1
" 1 2 13 15
numtries=100
i=$numtries
while test $i -gt 0; do
# mkdir is a portable test-and-set.
if mkdir "$lockdir" 2>/dev/null; then
# This process acquired the lock.
"$@" -MD
stat=$?
# Release the lock.
rmdir "$lockdir"
break
else
# If the lock is being held by a different process, wait
# until the winning process is done or we timeout.
while test -d "$lockdir" && test $i -gt 0; do
sleep 1
i=`expr $i - 1`
done
fi
i=`expr $i - 1`
done
trap - 1 2 13 15
if test $i -le 0; then
echo "$0: failed to acquire lock after $numtries attempts" >&2
echo "$0: check lockdir '$lockdir'" >&2
exit 1
fi
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
# Add 'dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}' "$tmpdepfile" >> "$depfile"
else
make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in 'foo.d' instead, so we check for that too.
# Subdirectories are respected.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
# Libtool generates 2 separate objects for the 2 libraries. These
# two compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir$base.o.d # libtool 1.5
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
# Same post-processing that is required for AIX mode.
aix_post_process_depfile
;;
msvc7)
if test "$libtool" = yes; then
showIncludes=-Wc,-showIncludes
else
showIncludes=-showIncludes
fi
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The first sed program below extracts the file names and escapes
# backslashes for cygpath. The second sed program outputs the file
# name when reading, but also accumulates all include files in the
# hold buffer in order to output them again at the end. This only
# works with sed implementations that can handle large buffers.
sed < "$tmpdepfile" -n '
/^Note: including file: *\(.*\)/ {
s//\1/
s/\\/\\\\/g
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
s/\(.*\)/'"$tab"'\1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
s/.*/'"$tab"'/
G
p
}' >> "$depfile"
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
msvc7msys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove '-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this sed invocation
# correctly. Breaking it into two sed invocations is a workaround.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process the last invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed '1,2d' "$tmpdepfile" \
| tr ' ' "$nl" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove '-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E \
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
| sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
IFS=" "
for arg
do
case "$arg" in
-o)
shift
;;
$object)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

204
lisp/zmq/src/emacs-module.h Normal file
View File

@@ -0,0 +1,204 @@
/* emacs-module.h - GNU Emacs module API.
Copyright (C) 2015-2017 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifndef EMACS_MODULE_H
#define EMACS_MODULE_H
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#if defined __cplusplus && __cplusplus >= 201103L
# define EMACS_NOEXCEPT noexcept
#else
# define EMACS_NOEXCEPT
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Current environment. */
typedef struct emacs_env_25 emacs_env;
/* Opaque pointer representing an Emacs Lisp value.
BEWARE: Do not assume NULL is a valid value! */
typedef struct emacs_value_tag *emacs_value;
enum emacs_arity { emacs_variadic_function = -2 };
/* Struct passed to a module init function (emacs_module_init). */
struct emacs_runtime
{
/* Structure size (for version checking). */
ptrdiff_t size;
/* Private data; users should not touch this. */
struct emacs_runtime_private *private_members;
/* Return an environment pointer. */
emacs_env *(*get_environment) (struct emacs_runtime *ert);
};
/* Function prototype for the module init function. */
typedef int (*emacs_init_function) (struct emacs_runtime *ert);
/* Function prototype for the module Lisp functions. */
typedef emacs_value (*emacs_subr) (emacs_env *env, ptrdiff_t nargs,
emacs_value args[], void *data);
/* Possible Emacs function call outcomes. */
enum emacs_funcall_exit
{
/* Function has returned normally. */
emacs_funcall_exit_return = 0,
/* Function has signaled an error using `signal'. */
emacs_funcall_exit_signal = 1,
/* Function has exit using `throw'. */
emacs_funcall_exit_throw = 2,
};
struct emacs_env_25
{
/* Structure size (for version checking). */
ptrdiff_t size;
/* Private data; users should not touch this. */
struct emacs_env_private *private_members;
/* Memory management. */
emacs_value (*make_global_ref) (emacs_env *env,
emacs_value any_reference);
void (*free_global_ref) (emacs_env *env,
emacs_value global_reference);
/* Non-local exit handling. */
enum emacs_funcall_exit (*non_local_exit_check) (emacs_env *env);
void (*non_local_exit_clear) (emacs_env *env);
enum emacs_funcall_exit (*non_local_exit_get)
(emacs_env *env,
emacs_value *non_local_exit_symbol_out,
emacs_value *non_local_exit_data_out);
void (*non_local_exit_signal) (emacs_env *env,
emacs_value non_local_exit_symbol,
emacs_value non_local_exit_data);
void (*non_local_exit_throw) (emacs_env *env,
emacs_value tag,
emacs_value value);
/* Function registration. */
emacs_value (*make_function) (emacs_env *env,
ptrdiff_t min_arity,
ptrdiff_t max_arity,
emacs_value (*function) (emacs_env *env,
ptrdiff_t nargs,
emacs_value args[],
void *)
EMACS_NOEXCEPT,
const char *documentation,
void *data);
emacs_value (*funcall) (emacs_env *env,
emacs_value function,
ptrdiff_t nargs,
emacs_value args[]);
emacs_value (*intern) (emacs_env *env,
const char *symbol_name);
/* Type conversion. */
emacs_value (*type_of) (emacs_env *env,
emacs_value value);
bool (*is_not_nil) (emacs_env *env, emacs_value value);
bool (*eq) (emacs_env *env, emacs_value a, emacs_value b);
intmax_t (*extract_integer) (emacs_env *env, emacs_value value);
emacs_value (*make_integer) (emacs_env *env, intmax_t value);
double (*extract_float) (emacs_env *env, emacs_value value);
emacs_value (*make_float) (emacs_env *env, double value);
/* Copy the content of the Lisp string VALUE to BUFFER as an utf8
null-terminated string.
SIZE must point to the total size of the buffer. If BUFFER is
NULL or if SIZE is not big enough, write the required buffer size
to SIZE and return false.
Note that SIZE must include the last null byte (e.g. "abc" needs
a buffer of size 4).
Return true if the string was successfully copied. */
bool (*copy_string_contents) (emacs_env *env,
emacs_value value,
char *buffer,
ptrdiff_t *size_inout);
/* Create a Lisp string from a utf8 encoded string. */
emacs_value (*make_string) (emacs_env *env,
const char *contents, ptrdiff_t length);
/* Embedded pointer type. */
emacs_value (*make_user_ptr) (emacs_env *env,
void (*fin) (void *) EMACS_NOEXCEPT,
void *ptr);
void *(*get_user_ptr) (emacs_env *env, emacs_value uptr);
void (*set_user_ptr) (emacs_env *env, emacs_value uptr, void *ptr);
void (*(*get_user_finalizer) (emacs_env *env, emacs_value uptr))
(void *) EMACS_NOEXCEPT;
void (*set_user_finalizer) (emacs_env *env,
emacs_value uptr,
void (*fin) (void *) EMACS_NOEXCEPT);
/* Vector functions. */
emacs_value (*vec_get) (emacs_env *env, emacs_value vec, ptrdiff_t i);
void (*vec_set) (emacs_env *env, emacs_value vec, ptrdiff_t i,
emacs_value val);
ptrdiff_t (*vec_size) (emacs_env *env, emacs_value vec);
};
/* Every module should define a function as follows. */
extern int emacs_module_init (struct emacs_runtime *ert);
#ifdef __cplusplus
}
#endif
#endif /* EMACS_MODULE_H */

322
lisp/zmq/src/emacs-zmq.c Normal file
View File

@@ -0,0 +1,322 @@
#include "emacs-zmq.h"
#include <assert.h>
#include <signal.h>
int plugin_is_GPL_compatible;
typedef struct {
char *name;
void *fun;
char const * doc;
ptrdiff_t minarity;
ptrdiff_t maxarity;
} ezmq_fun_t;
emacs_env *env = NULL;
emacs_value Qzmq_error, Qt, Qnil, Qnth, Qlist,
Qwrong_type_argument, Qargs_out_of_range,
Qcons, Qstring, Qvector, Qcar, Qcdr, Qlength, Qinteger, Qequal,
Qzmq_POLLIN, Qzmq_POLLPRI, Qzmq_POLLERR, Qzmq_POLLOUT,
Izmq_POLLIN, Izmq_POLLPRI, Izmq_POLLERR, Izmq_POLLOUT;
EZMQ_DOC(ezmq_cleanup_globrefs, "",
"Free global references flagged for release.\n"
"Internally, ZMQ keeps references to Emacs objects that are still in use.\n"
"Most notably, a `zmq-poller' object keeps track of all the sockets added to it\n"
"so that they do not get cleaned up by garbage collection if they go out of scope\n"
"while a poller is still using them.");
static emacs_value
ezmq_cleanup_globrefs()
{
emacs_value val;
while((val = ezmq_pop_globref())) {
FREE_GLOBREF(val);
}
return Qnil;
}
#define EZMQ_MAXARGS 5
static emacs_value _fargs[EZMQ_MAXARGS];
/**
Dispatch to the intended C function from a call to a ZMQ function in Emacs.
CURRENT_ENV is the current Emacs environment for the dispatch call. NARGS is
the number of arguments for this call whose values are contained in ARGS.
INFO is the ezmq_fun_t* which holds the function to dispatch to.
*/
static emacs_value
ezmq_dispatch(emacs_env *current_env, ptrdiff_t nargs, emacs_value args[], void *info)
{
// Set the global environment for this dispatch call.
env = current_env;
// Ensure the number of arguments are within range
emacs_value ret = Qnil;
if(nargs > EZMQ_MAXARGS) {
// Better error
ezmq_signal(Qargs_out_of_range, 2, INT(nargs), INT(EZMQ_MAXARGS));
return ret;
}
// Extract the function information
void *fun = ((ezmq_fun_t *)info)->fun;
ptrdiff_t maxargs = ((ezmq_fun_t *)info)->maxarity;
if(nargs < maxargs) {
// Fill in nil values for optional arguments
int i;
for(i = (maxargs - 1); i >= nargs; i--) {
_fargs[i] = Qnil;
}
for(i = 0; i < nargs; i++) {
_fargs[i] = args[i];
}
args = _fargs;
nargs = maxargs;
}
// Dispatch based on number of arguments
switch(nargs) {
case 0:
ret = ((emacs_value(*)(void))fun)();
break;
case 1:
ret = ((emacs_value(*)(emacs_value))fun)(args[0]);
break;
case 2:
ret = ((emacs_value(*)(emacs_value, emacs_value))fun)(args[0], args[1]);
break;
case 3:
ret = ((emacs_value(*)(emacs_value, emacs_value,
emacs_value))fun)(args[0], args[1],
args[2]);
break;
// Currently unused
case 4:
ret = ((emacs_value(*)(emacs_value, emacs_value,
emacs_value, emacs_value))fun)(args[0], args[1],
args[2], args[3]);
break;
case EZMQ_MAXARGS:
ret = ((emacs_value(*)(emacs_value, emacs_value,
emacs_value, emacs_value,
emacs_value))fun)(args[0], args[1],
args[2], args[3],
args[4]);
break;
}
// Cleanup global references flagged for deletion
ezmq_cleanup_globrefs();
return ret;
}
static void
ezmq_bind_function(ezmq_fun_t *fun)
{
// Make a copy of the function information. Used by ezmq_dispatch.
ezmq_fun_t *info = ezmq_malloc(sizeof(ezmq_fun_t));
if(NONLOCAL_EXIT()) return;
memcpy(info, fun, sizeof(ezmq_fun_t));
emacs_value Sfun = env->make_function(env,
fun->minarity, fun->maxarity,
&ezmq_dispatch,
fun->doc,
info);
// Use defalias here so that at least we get a link to zmq.el when examining
// the documentation for a zmq function.
FUNCALL(INTERN("defalias"), 2, ((emacs_value []){INTERN(fun->name), Sfun}));
}
static void
ezmq_provide(const char *feature)
{
FUNCALL(INTERN("provide"), 1, ((emacs_value []){ INTERN(feature) }));
}
#define EZMQ_DEFERR(err) \
args[0] = INTERN("zmq-"#err); \
args[1] = STRING(#err, sizeof(#err) - 1); \
FUNCALL(Qdefine_error, 3, args) \
/**
Make error symbols for common C errors used by ZMQ. Each error symbol is the
C error with a zmq- prefix. So EAGAIN becomes zmq-EAGAIN in Emacs.
*/
static void
ezmq_make_error_symbols()
{
emacs_value Qdefine_error = INTERN("define-error");
const char *msg = "An error occured in ZMQ";
emacs_value args[3];
// Define the root error symbol for ZMQ errors
args[0] = Qzmq_error;
args[1] = STRING(msg, strlen(msg));
args[2] = INTERN("error");
FUNCALL(Qdefine_error, 3, args);
// Set zmq-ERROR as the root error for all errors defined below
args[2] = Qzmq_error;
// Define common errors as symbols
// Also see zmq_signal_error
EZMQ_DEFERR(EINVAL);
EZMQ_DEFERR(EPROTONOSUPPORT);
EZMQ_DEFERR(ENOCOMPATPROTO);
EZMQ_DEFERR(EADDRINUSE);
EZMQ_DEFERR(EADDRNOTAVAIL);
EZMQ_DEFERR(ENODEV);
EZMQ_DEFERR(ETERM);
EZMQ_DEFERR(ENOTSOCK);
EZMQ_DEFERR(EMTHREAD);
EZMQ_DEFERR(EFAULT);
EZMQ_DEFERR(EINTR);
EZMQ_DEFERR(ENOTSUP);
EZMQ_DEFERR(ENOENT);
EZMQ_DEFERR(ENOMEM);
EZMQ_DEFERR(EAGAIN);
EZMQ_DEFERR(EFSM);
EZMQ_DEFERR(EHOSTUNREACH);
EZMQ_DEFERR(EMFILE);
}
#define EZMQ_DEFUN(ename, cfun, argmin, argmax) \
do { \
_info.name = ename; \
_info.fun = cfun; \
_info.minarity = argmin; \
_info.maxarity = argmax; \
_info.doc = __zmq_doc_##cfun; \
ezmq_bind_function(&_info); \
} while (0)
static void
ezmq_define_functions()
{
ezmq_fun_t _info;
// Define garbage collection functions for freeing global references
EZMQ_DEFUN("zmq--cleanup-globrefs", ezmq_cleanup_globrefs, 0, 0);
EZMQ_DEFUN("zmq-socket", ezmq_socket, 2, 2);
EZMQ_DEFUN("zmq-send", ezmq_send, 2, 3);
EZMQ_DEFUN("zmq-recv", ezmq_recv, 1, 3);
EZMQ_DEFUN("zmq-bind", ezmq_bind, 2, 2);
EZMQ_DEFUN("zmq-connect", ezmq_connect, 2, 2);
EZMQ_DEFUN("zmq-join", ezmq_join, 2, 2);
EZMQ_DEFUN("zmq-unbind", ezmq_unbind, 2, 2);
EZMQ_DEFUN("zmq-disconnect", ezmq_disconnect, 2, 2);
EZMQ_DEFUN("zmq-leave", ezmq_leave, 2, 2);
EZMQ_DEFUN("zmq-close", ezmq_close, 1, 1);
EZMQ_DEFUN("zmq-proxy", ezmq_proxy, 2, 3);
EZMQ_DEFUN("zmq-proxy-steerable", ezmq_proxy_steerable, 2, 4);
EZMQ_DEFUN("zmq-socket-monitor", ezmq_socket_monitor, 3, 3);
EZMQ_DEFUN("zmq-socket-set", ezmq_setsockopt, 3, 3);
EZMQ_DEFUN("zmq-socket-get", ezmq_getsockopt, 2, 2);
EZMQ_DEFUN("zmq-context", ezmq_context, 0, 0);
EZMQ_DEFUN("zmq-context-terminate", ezmq_ctx_term, 1, 1);
EZMQ_DEFUN("zmq-context-shutdown", ezmq_ctx_shutdown, 1, 1);
EZMQ_DEFUN("zmq-context-get", ezmq_ctx_get, 2, 2);
EZMQ_DEFUN("zmq-context-set", ezmq_ctx_set, 3, 3);
EZMQ_DEFUN("zmq-message", ezmq_message, 0, 1);
EZMQ_DEFUN("zmq-message-size", ezmq_message_size, 1, 1);
EZMQ_DEFUN("zmq-message-data", ezmq_message_data, 1, 1);
EZMQ_DEFUN("zmq-message-more-p", ezmq_message_more, 1, 1);
EZMQ_DEFUN("zmq-message-copy", ezmq_message_copy, 1, 1);
EZMQ_DEFUN("zmq-message-move", ezmq_message_move, 2, 2);
EZMQ_DEFUN("zmq-message-close", ezmq_message_close, 1, 1);
EZMQ_DEFUN("zmq-message-set", ezmq_message_set, 3, 3);
EZMQ_DEFUN("zmq-message-get", ezmq_message_get, 2, 2);
EZMQ_DEFUN("zmq-message-recv", ezmq_message_recv, 2, 3);
EZMQ_DEFUN("zmq-message-send", ezmq_message_send, 2, 3);
EZMQ_DEFUN("zmq-message-gets", ezmq_message_gets, 2, 2);
EZMQ_DEFUN("zmq-message-routing-id", ezmq_message_routing_id, 1, 1);
EZMQ_DEFUN("zmq-message-set-routing-id", ezmq_message_set_routing_id, 2, 2);
EZMQ_DEFUN("zmq-message-group", ezmq_message_group, 1, 1);
EZMQ_DEFUN("zmq-message-set-group", ezmq_message_set_group, 2, 2);
EZMQ_DEFUN("zmq-poll", ezmq_poll, 2, 2);
EZMQ_DEFUN("zmq-poller", ezmq_poller_new, 0, 0);
EZMQ_DEFUN("zmq-poller-add", ezmq_poller_add, 3, 3);
EZMQ_DEFUN("zmq-poller-modify", ezmq_poller_modify, 3, 3);
EZMQ_DEFUN("zmq-poller-remove", ezmq_poller_remove, 2, 2);
EZMQ_DEFUN("zmq-poller-destroy", ezmq_poller_destroy, 1, 1);
EZMQ_DEFUN("zmq-poller-wait", ezmq_poller_wait, 2, 2);
EZMQ_DEFUN("zmq-poller-wait-all", ezmq_poller_wait_all, 3, 3);
EZMQ_DEFUN("zmq-version", ezmq_version, 0, 0);
EZMQ_DEFUN("zmq-has", ezmq_has, 1, 1);
EZMQ_DEFUN("zmq-z85-decode", ezmq_z85_decode, 1, 1);
EZMQ_DEFUN("zmq-z85-encode", ezmq_z85_encode, 1, 1);
EZMQ_DEFUN("zmq-curve-keypair", ezmq_curve_keypair, 0, 0);
EZMQ_DEFUN("zmq-curve-public", ezmq_curve_public, 1, 1);
EZMQ_DEFUN("zmq-equal", ezmq_equal, 2, 2);
EZMQ_DEFUN("zmq-message-p", ezmq_message_p, 1, 1);
EZMQ_DEFUN("zmq-socket-p", ezmq_socket_p, 1, 1);
EZMQ_DEFUN("zmq-context-p", ezmq_context_p, 1, 1);
EZMQ_DEFUN("zmq-poller-p", ezmq_poller_p, 1, 1);
}
static bool initialized = false;
int
emacs_module_init(struct emacs_runtime *ert)
{
if(initialized)
return 0;
// From https://phst.eu/emacs-modules
/* Fail if Emacs is too old. */
assert (ert->size > 0);
if ((size_t) ert->size < sizeof *ert)
return 1;
// Retrieve the current emacs environment
env = ert->get_environment(ert);
// From https://phst.eu/emacs-modules
if ((size_t) env->size < sizeof *env)
return 2;
/* Prevent Emacss dangerous stack overflow recovery. */
if (signal (SIGSEGV, SIG_DFL) == SIG_ERR)
return 3;
Qt = GLOBREF(INTERN("t"));
Qnil = GLOBREF(INTERN("nil"));
Qnth = GLOBREF(INTERN("nth"));
Qwrong_type_argument = GLOBREF(INTERN("wrong-type-argument"));
Qargs_out_of_range = GLOBREF(INTERN("args-out-of-range"));
Qlist = GLOBREF(INTERN("list"));
Qstring = GLOBREF(INTERN("string"));
Qvector = GLOBREF(INTERN("vector"));
Qcons = GLOBREF(INTERN("cons"));
Qcar = GLOBREF(INTERN("car"));
Qcdr = GLOBREF(INTERN("cdr"));
Qequal = GLOBREF(INTERN("equal"));
Qinteger = GLOBREF(INTERN("integer"));
Qlength = GLOBREF(INTERN("length"));
Qzmq_error = GLOBREF(INTERN("zmq-ERROR"));
ezmq_make_error_symbols();
ezmq_expose_constants();
Qzmq_POLLIN = GLOBREF(INTERN("zmq-POLLIN"));
Qzmq_POLLPRI = GLOBREF(INTERN("zmq-POLLPRI"));
Qzmq_POLLOUT = GLOBREF(INTERN("zmq-POLLOUT"));
Qzmq_POLLERR = GLOBREF(INTERN("zmq-POLLERR"));
emacs_value Qsval = INTERN("symbol-value");
Izmq_POLLIN = GLOBREF(FUNCALL(Qsval, 1, &Qzmq_POLLIN));
Izmq_POLLPRI = GLOBREF(FUNCALL(Qsval, 1, &Qzmq_POLLPRI));
Izmq_POLLOUT = GLOBREF(FUNCALL(Qsval, 1, &Qzmq_POLLOUT));
Izmq_POLLERR = GLOBREF(FUNCALL(Qsval, 1, &Qzmq_POLLERR));
ezmq_define_functions();
ezmq_provide("zmq-core");
if(!NONLOCAL_EXIT()) initialized = true;
return 0;
}

34
lisp/zmq/src/emacs-zmq.h Normal file
View File

@@ -0,0 +1,34 @@
#ifndef __EMACS_ZMQ_H__
#define __EMACS_ZMQ_H__
#include "core.h"
#include "util.h"
#include "msg.h"
#include "socket.h"
#include "context.h"
#include "poll.h"
// https://gcc.gnu.org/wiki/Visibility
#if defined _WIN32 || defined __CYGWIN__
#ifdef __GNUC__
#define ZMQ_EXPORT __attribute__ ((dllexport))
#else
#define ZMQ_EXPORT __declspec(dllexport)
#endif
#else
#if __GNUC__ >= 4
#define ZMQ_EXPORT __attribute__ ((visibility ("default")))
#else
#define ZMQ_EXPORT
#endif
#endif
ZMQ_EXPORT int plugin_is_GPL_compatible;
// Defined in constants.c
extern void
ezmq_expose_constants();
ZMQ_EXPORT int
emacs_module_init(struct emacs_runtime *ert);
#endif /* __EMACS_ZMQ_H__ */

41
lisp/zmq/src/emacs-zmq.la Normal file
View File

@@ -0,0 +1,41 @@
# emacs-zmq.la - a libtool library file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='emacs-zmq.so'
# Names of this library.
library_names='emacs-zmq.so emacs-zmq.so emacs-zmq.so'
# The name of the static archive.
old_library=''
# Linker flags that cannot go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lzmq'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for emacs-zmq.
current=0
age=0
revision=0
# Is this an already installed library?
installed=no
# Should we warn about portability when linking against -modules?
shouldnotlink=yes
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/home/daniel/repos/emacs-conf/lisp/zmq/lib'

View File

@@ -0,0 +1,12 @@
# emacs_zmq_la-constants.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/emacs_zmq_la-constants.o'
# Name of the non-PIC object
non_pic_object=none

View File

@@ -0,0 +1,12 @@
# emacs_zmq_la-context.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/emacs_zmq_la-context.o'
# Name of the non-PIC object
non_pic_object=none

View File

@@ -0,0 +1,12 @@
# emacs_zmq_la-core.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/emacs_zmq_la-core.o'
# Name of the non-PIC object
non_pic_object=none

View File

@@ -0,0 +1,12 @@
# emacs_zmq_la-emacs-zmq.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/emacs_zmq_la-emacs-zmq.o'
# Name of the non-PIC object
non_pic_object=none

View File

@@ -0,0 +1,12 @@
# emacs_zmq_la-msg.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/emacs_zmq_la-msg.o'
# Name of the non-PIC object
non_pic_object=none

View File

@@ -0,0 +1,12 @@
# emacs_zmq_la-poll.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/emacs_zmq_la-poll.o'
# Name of the non-PIC object
non_pic_object=none

View File

@@ -0,0 +1,12 @@
# emacs_zmq_la-socket.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/emacs_zmq_la-socket.o'
# Name of the non-PIC object
non_pic_object=none

View File

@@ -0,0 +1,12 @@
# emacs_zmq_la-util.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/emacs_zmq_la-util.o'
# Name of the non-PIC object
non_pic_object=none

541
lisp/zmq/src/install-sh Executable file
View File

@@ -0,0 +1,541 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2020-11-14.01; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
tab=' '
nl='
'
IFS=" $tab$nl"
# Set DOITPROG to "echo" to test this script.
doit=${DOITPROG-}
doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_mkdir=
# Desired mode of installed file.
mode=0755
# Create dirs (including intermediate dirs) using mode 755.
# This is like GNU 'install' as of coreutils 8.32 (2020).
mkdir_umask=22
backupsuffix=
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-p pass -p to $cpprog.
-s $stripprog installed files.
-S SUFFIX attempt to back up existing files, with suffix SUFFIX.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
By default, rm is invoked with -f; when overridden with RMPROG,
it's up to you to specify -f if you want it.
If -S is not specified, no backups are attempted.
Email bug reports to bug-automake@gnu.org.
Automake home page: https://www.gnu.org/software/automake/
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-p) cpprog="$cpprog -p";;
-s) stripcmd=$stripprog;;
-S) backupsuffix="$2"
shift;;
-t)
is_target_a_directory=always
dst_arg=$2
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
# We allow the use of options -d and -T together, by making -d
# take the precedence; this is for compatibility with GNU install.
if test -n "$dir_arg"; then
if test -n "$dst_arg"; then
echo "$0: target directory not allowed when installing a directory." >&2
exit 1
fi
fi
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
if test $# -gt 1 || test "$is_target_a_directory" = always; then
if test ! -d "$dst_arg"; then
echo "$0: $dst_arg: Is not a directory." >&2
exit 1
fi
fi
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
# Don't chown directories that already exist.
if test $dstdir_status = 0; then
chowncmd=""
fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dstbase=`basename "$src"`
case $dst in
*/) dst=$dst$dstbase;;
*) dst=$dst/$dstbase;;
esac
dstdir_status=0
else
dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
fi
case $dstdir in
*/) dstdirslash=$dstdir;;
*) dstdirslash=$dstdir/;;
esac
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
# The $RANDOM variable is not portable (e.g., dash). Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap '
ret=$?
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
exit $ret
' 0
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p'.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
oIFS=$IFS
IFS=/
set -f
set fnord $dstdir
shift
set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=${dstdirslash}_inst.$$_
rmtmp=${dstdirslash}_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask &&
{ test -z "$stripcmd" || {
# Create $dsttmp read-write so that cp doesn't create it read-only,
# which would cause strip to fail.
if test -z "$doit"; then
: >"$dsttmp" # No need to fork-exec 'touch'.
else
$doit touch "$dsttmp"
fi
}
} &&
$doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# If $backupsuffix is set, and the file being installed
# already exists, attempt a backup. Don't worry if it fails,
# e.g., if mv doesn't support -f.
if test -n "$backupsuffix" && test -f "$dst"; then
$doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
fi
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

11943
lisp/zmq/src/libtool Executable file

File diff suppressed because it is too large Load Diff

11437
lisp/zmq/src/ltmain.sh Normal file

File diff suppressed because it is too large Load Diff

8399
lisp/zmq/src/m4/libtool.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

437
lisp/zmq/src/m4/ltoptions.m4 vendored Normal file
View File

@@ -0,0 +1,437 @@
# Helper functions for option handling. -*- Autoconf -*-
#
# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free
# Software Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# This file 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.
# serial 8 ltoptions.m4
# This is to help aclocal find these macros, as it can't see m4_define.
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
# ------------------------------------------
m4_define([_LT_MANGLE_OPTION],
[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
# ---------------------------------------
# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
# matching handler defined, dispatch to it. Other OPTION-NAMEs are
# saved as a flag.
m4_define([_LT_SET_OPTION],
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
_LT_MANGLE_DEFUN([$1], [$2]),
[m4_warning([Unknown $1 option '$2'])])[]dnl
])
# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
# ------------------------------------------------------------
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
m4_define([_LT_IF_OPTION],
[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
# -------------------------------------------------------
# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
# are set.
m4_define([_LT_UNLESS_OPTIONS],
[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
[m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
[m4_define([$0_found])])])[]dnl
m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
])[]dnl
])
# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
# ----------------------------------------
# OPTION-LIST is a space-separated list of Libtool options associated
# with MACRO-NAME. If any OPTION has a matching handler declared with
# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
# the unknown option and exit.
m4_defun([_LT_SET_OPTIONS],
[# Set options
m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
[_LT_SET_OPTION([$1], _LT_Option)])
m4_if([$1],[LT_INIT],[
dnl
dnl Simply set some default values (i.e off) if boolean options were not
dnl specified:
_LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
])
_LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
])
dnl
dnl If no reference was made to various pairs of opposing options, then
dnl we run the default mode handler for the pair. For example, if neither
dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
dnl archives by default:
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
[_LT_ENABLE_FAST_INSTALL])
_LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
[_LT_WITH_AIX_SONAME([aix])])
])
])# _LT_SET_OPTIONS
## --------------------------------- ##
## Macros to handle LT_INIT options. ##
## --------------------------------- ##
# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
# -----------------------------------------
m4_define([_LT_MANGLE_DEFUN],
[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
# -----------------------------------------------
m4_define([LT_OPTION_DEFINE],
[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
])# LT_OPTION_DEFINE
# dlopen
# ------
LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
])
AU_DEFUN([AC_LIBTOOL_DLOPEN],
[_LT_SET_OPTION([LT_INIT], [dlopen])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
put the 'dlopen' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
# win32-dll
# ---------
# Declare package support for building win32 dll's.
LT_OPTION_DEFINE([LT_INIT], [win32-dll],
[enable_win32_dll=yes
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
AC_CHECK_TOOL(AS, as, false)
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
AC_CHECK_TOOL(OBJDUMP, objdump, false)
;;
esac
test -z "$AS" && AS=as
_LT_DECL([], [AS], [1], [Assembler program])dnl
test -z "$DLLTOOL" && DLLTOOL=dlltool
_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
test -z "$OBJDUMP" && OBJDUMP=objdump
_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
])# win32-dll
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
_LT_SET_OPTION([LT_INIT], [win32-dll])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
put the 'win32-dll' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
# _LT_ENABLE_SHARED([DEFAULT])
# ----------------------------
# implement the --enable-shared flag, and supports the 'shared' and
# 'disable-shared' LT_INIT options.
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_SHARED],
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([shared],
[AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
[p=${PACKAGE-default}
case $enableval in
yes) enable_shared=yes ;;
no) enable_shared=no ;;
*)
enable_shared=no
# Look at the argument we got. We use all the common list separators.
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_shared=yes
fi
done
IFS=$lt_save_ifs
;;
esac],
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
_LT_DECL([build_libtool_libs], [enable_shared], [0],
[Whether or not to build shared libraries])
])# _LT_ENABLE_SHARED
LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
# Old names:
AC_DEFUN([AC_ENABLE_SHARED],
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
])
AC_DEFUN([AC_DISABLE_SHARED],
[_LT_SET_OPTION([LT_INIT], [disable-shared])
])
AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AM_ENABLE_SHARED], [])
dnl AC_DEFUN([AM_DISABLE_SHARED], [])
# _LT_ENABLE_STATIC([DEFAULT])
# ----------------------------
# implement the --enable-static flag, and support the 'static' and
# 'disable-static' LT_INIT options.
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_STATIC],
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([static],
[AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
[p=${PACKAGE-default}
case $enableval in
yes) enable_static=yes ;;
no) enable_static=no ;;
*)
enable_static=no
# Look at the argument we got. We use all the common list separators.
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_static=yes
fi
done
IFS=$lt_save_ifs
;;
esac],
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
_LT_DECL([build_old_libs], [enable_static], [0],
[Whether or not to build static libraries])
])# _LT_ENABLE_STATIC
LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
# Old names:
AC_DEFUN([AC_ENABLE_STATIC],
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
])
AC_DEFUN([AC_DISABLE_STATIC],
[_LT_SET_OPTION([LT_INIT], [disable-static])
])
AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AM_ENABLE_STATIC], [])
dnl AC_DEFUN([AM_DISABLE_STATIC], [])
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
# ----------------------------------
# implement the --enable-fast-install flag, and support the 'fast-install'
# and 'disable-fast-install' LT_INIT options.
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_FAST_INSTALL],
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([fast-install],
[AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
[optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
[p=${PACKAGE-default}
case $enableval in
yes) enable_fast_install=yes ;;
no) enable_fast_install=no ;;
*)
enable_fast_install=no
# Look at the argument we got. We use all the common list separators.
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_fast_install=yes
fi
done
IFS=$lt_save_ifs
;;
esac],
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
_LT_DECL([fast_install], [enable_fast_install], [0],
[Whether or not to optimize for fast installation])dnl
])# _LT_ENABLE_FAST_INSTALL
LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
# Old names:
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
the 'fast-install' option into LT_INIT's first parameter.])
])
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
the 'disable-fast-install' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
# _LT_WITH_AIX_SONAME([DEFAULT])
# ----------------------------------
# implement the --with-aix-soname flag, and support the `aix-soname=aix'
# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'.
m4_define([_LT_WITH_AIX_SONAME],
[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
shared_archive_member_spec=
case $host,$enable_shared in
power*-*-aix[[5-9]]*,yes)
AC_MSG_CHECKING([which variant of shared library versioning to provide])
AC_ARG_WITH([aix-soname],
[AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
[shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
[case $withval in
aix|svr4|both)
;;
*)
AC_MSG_ERROR([Unknown argument to --with-aix-soname])
;;
esac
lt_cv_with_aix_soname=$with_aix_soname],
[AC_CACHE_VAL([lt_cv_with_aix_soname],
[lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
with_aix_soname=$lt_cv_with_aix_soname])
AC_MSG_RESULT([$with_aix_soname])
if test aix != "$with_aix_soname"; then
# For the AIX way of multilib, we name the shared archive member
# based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
# and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
# Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
# the AIX toolchain works better with OBJECT_MODE set (default 32).
if test 64 = "${OBJECT_MODE-32}"; then
shared_archive_member_spec=shr_64
else
shared_archive_member_spec=shr
fi
fi
;;
*)
with_aix_soname=aix
;;
esac
_LT_DECL([], [shared_archive_member_spec], [0],
[Shared archive member basename, for filename based shared library versioning on AIX])dnl
])# _LT_WITH_AIX_SONAME
LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
# _LT_WITH_PIC([MODE])
# --------------------
# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
# LT_INIT options.
# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
m4_define([_LT_WITH_PIC],
[AC_ARG_WITH([pic],
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
[lt_p=${PACKAGE-default}
case $withval in
yes|no) pic_mode=$withval ;;
*)
pic_mode=default
# Look at the argument we got. We use all the common list separators.
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for lt_pkg in $withval; do
IFS=$lt_save_ifs
if test "X$lt_pkg" = "X$lt_p"; then
pic_mode=yes
fi
done
IFS=$lt_save_ifs
;;
esac],
[pic_mode=m4_default([$1], [default])])
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
])# _LT_WITH_PIC
LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
# Old name:
AU_DEFUN([AC_LIBTOOL_PICMODE],
[_LT_SET_OPTION([LT_INIT], [pic-only])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
put the 'pic-only' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
## ----------------- ##
## LTDL_INIT Options ##
## ----------------- ##
m4_define([_LTDL_MODE], [])
LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
[m4_define([_LTDL_MODE], [nonrecursive])])
LT_OPTION_DEFINE([LTDL_INIT], [recursive],
[m4_define([_LTDL_MODE], [recursive])])
LT_OPTION_DEFINE([LTDL_INIT], [subproject],
[m4_define([_LTDL_MODE], [subproject])])
m4_define([_LTDL_TYPE], [])
LT_OPTION_DEFINE([LTDL_INIT], [installable],
[m4_define([_LTDL_TYPE], [installable])])
LT_OPTION_DEFINE([LTDL_INIT], [convenience],
[m4_define([_LTDL_TYPE], [convenience])])

124
lisp/zmq/src/m4/ltsugar.m4 vendored Normal file
View File

@@ -0,0 +1,124 @@
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
#
# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software
# Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# This file 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.
# serial 6 ltsugar.m4
# This is to help aclocal find these macros, as it can't see m4_define.
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
# lt_join(SEP, ARG1, [ARG2...])
# -----------------------------
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
# associated separator.
# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
# versions in m4sugar had bugs.
m4_define([lt_join],
[m4_if([$#], [1], [],
[$#], [2], [[$2]],
[m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
m4_define([_lt_join],
[m4_if([$#$2], [2], [],
[m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
# lt_car(LIST)
# lt_cdr(LIST)
# ------------
# Manipulate m4 lists.
# These macros are necessary as long as will still need to support
# Autoconf-2.59, which quotes differently.
m4_define([lt_car], [[$1]])
m4_define([lt_cdr],
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
[$#], 1, [],
[m4_dquote(m4_shift($@))])])
m4_define([lt_unquote], $1)
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
# ------------------------------------------
# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
# Note that neither SEPARATOR nor STRING are expanded; they are appended
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
# than defined and empty).
#
# This macro is needed until we can rely on Autoconf 2.62, since earlier
# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
m4_define([lt_append],
[m4_define([$1],
m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
# ----------------------------------------------------------
# Produce a SEP delimited list of all paired combinations of elements of
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
# has the form PREFIXmINFIXSUFFIXn.
# Needed until we can rely on m4_combine added in Autoconf 2.62.
m4_define([lt_combine],
[m4_if(m4_eval([$# > 3]), [1],
[m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
[[m4_foreach([_Lt_prefix], [$2],
[m4_foreach([_Lt_suffix],
]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
# -----------------------------------------------------------------------
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
m4_define([lt_if_append_uniq],
[m4_ifdef([$1],
[m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
[lt_append([$1], [$2], [$3])$4],
[$5])],
[lt_append([$1], [$2], [$3])$4])])
# lt_dict_add(DICT, KEY, VALUE)
# -----------------------------
m4_define([lt_dict_add],
[m4_define([$1($2)], [$3])])
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
# --------------------------------------------
m4_define([lt_dict_add_subkey],
[m4_define([$1($2:$3)], [$4])])
# lt_dict_fetch(DICT, KEY, [SUBKEY])
# ----------------------------------
m4_define([lt_dict_fetch],
[m4_ifval([$3],
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
# -----------------------------------------------------------------
m4_define([lt_if_dict_fetch],
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
[$5],
[$6])])
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
# --------------------------------------------------------------
m4_define([lt_dict_filter],
[m4_if([$5], [], [],
[lt_join(m4_quote(m4_default([$4], [[, ]])),
lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
[lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
])

24
lisp/zmq/src/m4/ltversion.m4 vendored Normal file
View File

@@ -0,0 +1,24 @@
# ltversion.m4 -- version numbers -*- Autoconf -*-
#
# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation,
# Inc.
# Written by Scott James Remnant, 2004
#
# This file 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.
# @configure_input@
# serial 4249 ltversion.m4
# This file is part of GNU Libtool
m4_define([LT_PACKAGE_VERSION], [2.4.7.4-1ec8f-dirty])
m4_define([LT_PACKAGE_REVISION], [2.4.7.4])
AC_DEFUN([LTVERSION_VERSION],
[macro_version='2.4.7.4-1ec8f-dirty'
macro_revision='2.4.7.4'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])

99
lisp/zmq/src/m4/lt~obsolete.m4 vendored Normal file
View File

@@ -0,0 +1,99 @@
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
#
# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free
# Software Foundation, Inc.
# Written by Scott James Remnant, 2004.
#
# This file 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.
# serial 5 lt~obsolete.m4
# These exist entirely to fool aclocal when bootstrapping libtool.
#
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
# which have later been changed to m4_define as they aren't part of the
# exported API, or moved to Autoconf or Automake where they belong.
#
# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
# using a macro with the same name in our local m4/libtool.m4 it'll
# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
# and doesn't know about Autoconf macros at all.)
#
# So we provide this file, which has a silly filename so it's always
# included after everything else. This provides aclocal with the
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
# because those macros already exist, or will be overwritten later.
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
#
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
# Yes, that means every name once taken will need to remain here until
# we give up compatibility with versions before 1.7, at which point
# we need to keep only those names which we still refer to.
# This is to help aclocal find these macros, as it can't see m4_define.
AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])

215
lisp/zmq/src/missing Executable file
View File

@@ -0,0 +1,215 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
case $1 in
--is-lightweight)
# Used by our autoconf macros to check whether the available missing
# script is modern enough.
exit 0
;;
--run)
# Back-compat with the calling convention used by older automake.
shift
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
Supported PROGRAM values:
aclocal autoconf autoheader autom4te automake makeinfo
bison yacc flex lex help2man
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: unknown '$1' option"
echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
# Run the given program, remember its exit status.
"$@"; st=$?
# If it succeeded, we are done.
test $st -eq 0 && exit 0
# Also exit now if we it failed (or wasn't found), and '--version' was
# passed; such an option is passed most likely to detect whether the
# program is present and works.
case $2 in --version|--help) exit $st;; esac
# Exit code 63 means version mismatch. This often happens when the user
# tries to use an ancient version of a tool on a file that requires a
# minimum version.
if test $st -eq 63; then
msg="probably too old"
elif test $st -eq 127; then
# Program was missing.
msg="missing on your system"
else
# Program was found and executed, but failed. Give up.
exit $st
fi
perl_URL=https://www.perl.org/
flex_URL=https://github.com/westes/flex
gnu_software_URL=https://www.gnu.org/software
program_details ()
{
case $1 in
aclocal|automake)
echo "The '$1' program is part of the GNU Automake package:"
echo "<$gnu_software_URL/automake>"
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/autoconf>"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
autoconf|autom4te|autoheader)
echo "The '$1' program is part of the GNU Autoconf package:"
echo "<$gnu_software_URL/autoconf/>"
echo "It also requires GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
esac
}
give_advice ()
{
# Normalize program name to check for.
normalized_program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
printf '%s\n' "'$1' is $msg."
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
case $normalized_program in
autoconf*)
echo "You should only need it if you modified 'configure.ac',"
echo "or m4 files included by it."
program_details 'autoconf'
;;
autoheader*)
echo "You should only need it if you modified 'acconfig.h' or"
echo "$configure_deps."
program_details 'autoheader'
;;
automake*)
echo "You should only need it if you modified 'Makefile.am' or"
echo "$configure_deps."
program_details 'automake'
;;
aclocal*)
echo "You should only need it if you modified 'acinclude.m4' or"
echo "$configure_deps."
program_details 'aclocal'
;;
autom4te*)
echo "You might have modified some maintainer files that require"
echo "the 'autom4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
echo "You should only need it if you modified a '.y' file."
echo "You may want to install the GNU Bison package:"
echo "<$gnu_software_URL/bison/>"
;;
lex*|flex*)
echo "You should only need it if you modified a '.l' file."
echo "You may want to install the Fast Lexical Analyzer package:"
echo "<$flex_URL>"
;;
help2man*)
echo "You should only need it if you modified a dependency" \
"of a man page."
echo "You may want to install the GNU Help2man package:"
echo "<$gnu_software_URL/help2man/>"
;;
makeinfo*)
echo "You should only need it if you modified a '.texi' file, or"
echo "any other file indirectly affecting the aspect of the manual."
echo "You might want to install the Texinfo package:"
echo "<$gnu_software_URL/texinfo/>"
echo "The spurious makeinfo call might also be the consequence of"
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
echo "want to install GNU make:"
echo "<$gnu_software_URL/make/>"
;;
*)
echo "You might have modified some files without having the proper"
echo "tools for further handling them. Check the 'README' file, it"
echo "often tells you about the needed prerequisites for installing"
echo "this package. You may also peek at any GNU archive site, in"
echo "case some other package contains this missing '$1' program."
;;
esac
}
give_advice "$1" | sed -e '1s/^/WARNING: /' \
-e '2,$s/^/ /' >&2
# Propagate the correct exit status (expected to be 127 for a program
# not found, 63 for a program that failed due to version mismatch).
exit $st
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

249
lisp/zmq/src/msg.c Normal file
View File

@@ -0,0 +1,249 @@
#include "msg.h"
static void
ezmq_free_message(void *data, void *hint)
{
free(data);
}
/**
Return a copy of the data contained in VAL. VAL is either a string or vector
of bytes. SIZE will be updated with the number of bytes contained in VAL. In
the case that VAL is a vector, an `args-out-ouf-range` error is raised if
the integers are not within range of a byte.
*/
static char *
_ezmq_extract_message_data(emacs_value val, ptrdiff_t *size)
{
emacs_value type = TYPE(val);
*size = 0;
if(EQ(type, Qstring)) {
EZMQ_EXTRACT_STRING(content, clen, val);
*size = clen;
return content;
} else if(EQ(type, Qvector)) {
ptrdiff_t clen = VEC_LENGTH(val);
char *content = ezmq_malloc(clen);
ptrdiff_t i;
for(i = 0; !NONLOCAL_EXIT() && i < clen; i++) {
EZMQ_EXTRACT_INT(byte, AREF(val, i));
if(0 <= byte && byte <= 255) {
content[i] = (char)byte;
} else {
ezmq_args_out_of_range(INT(byte), CONS(INT(0), INT(255)));
}
}
*size = clen;
return content;
} else
ezmq_wrong_type_argument(val, 2, Qstring, Qvector);
return NULL;
}
EZMQ_DOC(ezmq_message,
"&optional DATA",
"Initialize a ZMQ message.\n"
"If DATA is non-nil, initialize the message using DATA.\n"
"DATA can be either a string or a vector of byte integers.\n"
"If DATA is nil, initialize an empty message.");
emacs_value
ezmq_message(emacs_value edata)
{
ezmq_obj_t *msg = ezmq_new_obj(EZMQ_MESSAGE, NULL);
if(!NILP(edata)) {
ptrdiff_t size = 0;
char *data = _ezmq_extract_message_data(edata, &size);
EZMQ_CHECK_ERROR(zmq_msg_init_data(msg->obj,
data,
size,
&ezmq_free_message,
NULL));
if(NONLOCAL_EXIT()) free(data);
} else {
EZMQ_CHECK_ERROR(zmq_msg_init(msg->obj));
}
if(NONLOCAL_EXIT()) ezmq_free_obj(msg);
return ezmq_new_obj_ptr(msg);
}
EZMQ_DOC(ezmq_message_size, "MESSAGE", "Get the size of MESSAGE.");
emacs_value
ezmq_message_size(emacs_value emessage)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
return INT(zmq_msg_size(msg->obj));
}
EZMQ_DOC(ezmq_message_data, "MESSAGE", "Get the data of MESSAGE.");
emacs_value
ezmq_message_data(emacs_value emessage)
{
emacs_value retval = Qnil;
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
const char *content = zmq_msg_data(msg->obj);
if(content) {
size_t size = zmq_msg_size(msg->obj);
retval = STRING(content, size);
}
return retval;
}
EZMQ_DOC(ezmq_message_more, "MESSAGE", "Does MESSAGE have more parts?");
emacs_value
ezmq_message_more(emacs_value emessage)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
int retval = zmq_msg_more(msg->obj);
EZMQ_CHECK_ERROR(retval);
return retval ? Qt : Qnil;
}
EZMQ_DOC(ezmq_message_copy, "MESSAGE", "Copy MESSAGE.");
emacs_value
ezmq_message_copy(emacs_value emessage)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
ezmq_obj_t *dest = ezmq_new_obj(EZMQ_MESSAGE, NULL);
zmq_msg_init(dest->obj);
EZMQ_CHECK_ERROR(zmq_msg_copy(dest->obj, msg->obj));
return ezmq_new_obj_ptr(dest);
}
EZMQ_DOC(ezmq_message_move, "SRC DEST", "Move a message from SRC to DEST.");
emacs_value
ezmq_message_move(emacs_value esrc, emacs_value edest)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, esrc);
EZMQ_EXTRACT_OBJ(dest, EZMQ_MESSAGE, edest);
EZMQ_CHECK_ERROR(zmq_msg_move(dest->obj, msg->obj));
return Qnil;
}
EZMQ_DOC(ezmq_message_close, "MESSAGE", "Close a message");
emacs_value
ezmq_message_close(emacs_value emessage)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
EZMQ_CHECK_ERROR(zmq_msg_close(msg->obj));
return Qnil;
}
EZMQ_DOC(ezmq_message_set, "MESSAGE PROPERTY VALUE", "Set a MESSAGE's PROPERTY to VALUE.");
emacs_value
ezmq_message_set(emacs_value emessage, emacs_value eproperty, emacs_value evalue)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
EZMQ_EXTRACT_INT(property, eproperty);
switch(property) {
case ZMQ_MORE:
EZMQ_CHECK_ERROR(zmq_msg_set(msg->obj,
property,
!NILP(evalue)));
break;
default: {
EZMQ_EXTRACT_INT(value, evalue);
EZMQ_CHECK_ERROR(zmq_msg_set(msg->obj, property, value));
}
}
return Qnil;
}
EZMQ_DOC(ezmq_message_get, "MESSAGE PROPERTY", "Get a MESSAGE PROPERTY.");
emacs_value
ezmq_message_get(emacs_value emessage, emacs_value eproperty)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
EZMQ_EXTRACT_INT(property, eproperty);
int retval = zmq_msg_get(msg->obj, property);
EZMQ_CHECK_ERROR(retval);
if(property == ZMQ_MORE)
return retval ? Qt : Qnil;
else
return INT(retval);
}
EZMQ_DOC(ezmq_message_recv, "MESSAGE SOCK &optional FLAGS",
"Receive a MESSAGE from SOCK with additional FLAGS.\n"
"MESSAGE should be an initialized message.");
emacs_value
ezmq_message_recv(emacs_value emessage, emacs_value esock, emacs_value eflags)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_OPTIONAL_INT(flags, eflags);
EZMQ_CHECK_ERROR(zmq_msg_recv(msg->obj, sock->obj, flags));
return emessage;
}
EZMQ_DOC(ezmq_message_send, "MESSAGE SOCK &optional FLAGS",
"Send a MESSAGE on SOCK with additional FLAGS.");
emacs_value
ezmq_message_send(emacs_value emessage, emacs_value esock, emacs_value eflags)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_OPTIONAL_INT(flags, eflags);
EZMQ_CHECK_ERROR(zmq_msg_send(msg->obj, sock->obj, flags));
return Qnil;
}
EZMQ_DOC(ezmq_message_gets, "MESSAGE PROPERTY",
"Get a MESSAGE's metadata PROPERTY.\n"
"PROPERTY is a keyword and can only be one of those in\n"
"`zmq-message-properties'.");
emacs_value
ezmq_message_gets(emacs_value emessage, emacs_value eproperty)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
EZMQ_EXTRACT_STRING(property, plen, eproperty);
const char *retval = zmq_msg_gets(msg->obj, property);
free(property);
EZMQ_CHECK_NULL_ERROR(retval);
return STRING(retval, strlen(retval));
}
EZMQ_DOC(ezmq_message_routing_id, "MESSAGE", "Get the routing ID of MESSAGE.");
emacs_value
ezmq_message_routing_id(emacs_value emessage)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
return INT(zmq_msg_routing_id(msg->obj));
}
EZMQ_DOC(ezmq_message_set_routing_id, "MESSAGE ID", "Set MESSAGE's routing ID.");
emacs_value
ezmq_message_set_routing_id(emacs_value emessage, emacs_value eid)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
EZMQ_EXTRACT_INT(id, eid);
EZMQ_CHECK_ERROR(zmq_msg_set_routing_id(msg->obj, id));
return Qnil;
}
EZMQ_DOC(ezmq_message_group, "MESSAGE", "Get MESSAGE's GROUP.");
emacs_value
ezmq_message_group(emacs_value emessage)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
const char *group = zmq_msg_group(msg->obj);
EZMQ_CHECK_NULL_ERROR(group);
return NONLOCAL_EXIT() ? Qnil : STRING(group, strlen(group));
}
EZMQ_DOC(ezmq_message_set_group, "MESSAGE GROUP", "Set MESSAGE's GROUP.");
emacs_value
ezmq_message_set_group(emacs_value emessage, emacs_value egroup)
{
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emessage);
EZMQ_EXTRACT_STRING(group, elen, egroup);
EZMQ_CHECK_ERROR(zmq_msg_set_group(msg->obj, group));
return Qnil;
}

23
lisp/zmq/src/msg.h Normal file
View File

@@ -0,0 +1,23 @@
#ifndef __MSG_H__
#define __MSG_H__
#include "core.h"
EZMQ_FUN(ezmq_message, emacs_value);
EZMQ_FUN(ezmq_message_size, emacs_value);
EZMQ_FUN(ezmq_message_data, emacs_value);
EZMQ_FUN(ezmq_message_more, emacs_value);
EZMQ_FUN(ezmq_message_copy, emacs_value);
EZMQ_FUN(ezmq_message_move, emacs_value, emacs_value);
EZMQ_FUN(ezmq_message_close, emacs_value);
EZMQ_FUN(ezmq_message_set, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_message_get, emacs_value, emacs_value);
EZMQ_FUN(ezmq_message_recv, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_message_send, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_message_gets, emacs_value, emacs_value);
EZMQ_FUN(ezmq_message_routing_id, emacs_value);
EZMQ_FUN(ezmq_message_set_routing_id, emacs_value, emacs_value);
EZMQ_FUN(ezmq_message_group, emacs_value);
EZMQ_FUN(ezmq_message_set_group, emacs_value, emacs_value);
#endif /* __MSG_H__ */

392
lisp/zmq/src/poll.c Normal file
View File

@@ -0,0 +1,392 @@
#include "poll.h"
static void
ezmq_invalid_poll_event(intmax_t event)
{
ezmq_args_out_of_range(INT(event),
LIST(5,
INTERN("or"),
INTERN("zmq-POLLIN"),
INTERN("zmq-POLLPRI"),
INTERN("zmq-POLLOUT"),
INTERN("zmq-POLLERR")));
}
/**
Extract a single poll event (ZMQ_POLLIN, ZMQ_POLLPRI, ZMQ_POLLOUT, ZMQ_POLLERR) from a
Lisp integer.
Signal an args-out-of-bounds error if the integer is not valid.
*/
static intmax_t
ezmq_extract_poll_event(emacs_value val)
{
intmax_t event = EXTRACT_INT(val);
if(NONLOCAL_EXIT()) return -1;
if(event != ZMQ_POLLIN && event != ZMQ_POLLPRI &&
event != ZMQ_POLLOUT && event != ZMQ_POLLERR) {
ezmq_invalid_poll_event(event);
return -1;
}
return event;
}
/**
Merge a list of poll events, i.e. take the bitwise or of a list of poll
event integers.
If the Lisp object passed to this function is not a list, signal a
wrong-type-argument error.
*/
static intmax_t
ezmq_merge_poll_events(emacs_value list)
{
intmax_t events = 0;
if(EQ(TYPE(list), Qcons)) {
while(!NILP(list)) {
intmax_t event = ezmq_extract_poll_event(CAR(list));
if(NONLOCAL_EXIT()) break;
events |= event;
list = CDR(list);
}
} else
ezmq_wrong_type_argument(list, 1, Qlist);
return events;
}
/**
Split the bitwise or of poll events into a list of poll events. This is so
that in Emacs, you can simply call `member` on the resulting list to find
out if an event occurred rather than using `logand`.
*/
static emacs_value
ezmq_split_poll_events(int events)
{
emacs_value args[4];
int i = -1;
if(events & ZMQ_POLLIN)
args[++i] = Izmq_POLLIN;
if(events & ZMQ_POLLPRI)
args[++i] = Izmq_POLLPRI;
if(events & ZMQ_POLLOUT)
args[++i] = Izmq_POLLOUT;
if(events & ZMQ_POLLERR)
args[++i] = Izmq_POLLERR;
if(i == -1) ezmq_invalid_poll_event(events);
return FUNCALL(Qlist, i + 1, args);
}
/**
Given a SOCK-OR-FD and a list of poll EVENTS, construct a zmq_pollitem_t.
Store it in ITEM. A non-local exit is pending if a poll item could not be
constructed.
*/
static void *
ezmq_extract_pollitem(emacs_value sock_or_fd, emacs_value events, zmq_pollitem_t *item)
{
if(EQ(TYPE(sock_or_fd), Qinteger)) {
EZMQ_EXTRACT_INT(fd, sock_or_fd);
item->fd = fd;
item->socket = NULL;
} else {
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, sock_or_fd);
item->socket = sock->obj;
}
item->events = (short)ezmq_merge_poll_events(events);
return NULL;
}
/**
Return (SOCK-OR-FD . SEVENTS) where SEVENTS is a list socket events.
See ezmq_split_poll_events() for how SEVENTS is constructed from EVENTS.
*/
static emacs_value
ezmq_make_pollitem(emacs_value sock_or_fd, int events)
{
emacs_value sevents = ezmq_split_poll_events(events);
emacs_value item = CONS(sock_or_fd, sevents);
return item;
}
/**
Return an array of zmq_pollitem_t objects constructed from LIST.
LIST is a list of (SOCK-OR-FD . EVENTS) pairs from which to construct
zmq_pollitem_t objects from. EVENTS can either be an integer or a list
containing any of zmq-POLLIN, zmq-POLLOUT, or zmq-POLLERR.
The returned array must be released by the called.
*/
static zmq_pollitem_t *
ezmq_extract_pollitem_list(emacs_value list)
{
intmax_t len = LENGTH(list);
zmq_pollitem_t *items = (zmq_pollitem_t *)ezmq_malloc(sizeof(zmq_pollitem_t)*len);
intmax_t i;
for(i = 0; i < len; i++) {
emacs_value head = CAR(list);
list = CDR(list);
if(NONLOCAL_EXIT()) break;
if(EQ(TYPE(head), Qcons) && EQ(TYPE(CDR(head)), Qcons))
ezmq_extract_pollitem(CAR(head), CDR(head), &items[i]);
else
// TODO: The right error convention for wrong-type-argument
ezmq_wrong_type_argument(head, 1, INTERN("consp"));
}
if(NONLOCAL_EXIT()) free(items);
return items;
}
/**
Return a list of (SOCK-OR-FD . EVENTS) pairs constructed from ITEMS.
EITEMS is the original list of pairs that was given to ezmq_poll().
NRECEIVED are the number of received events returned by zmq_poll(). NITEMS
are the number of items in EITEMS.
*/
static emacs_value
ezmq_make_pollitem_list(intmax_t nreceived, zmq_pollitem_t *items, emacs_value eitems, intmax_t nitems)
{
emacs_value ritems = Qnil;
while(nreceived > 0) {
nitems -= 1;
short events = items[nitems].revents;
if(events != 0) {
nreceived -= 1;
emacs_value eitem = FUNCALL(Qnth, 2, ((emacs_value []){INT(nitems), eitems}));
ritems = CONS(ezmq_make_pollitem(CAR(eitem), events), ritems);
}
}
return ritems;
}
EZMQ_DOC(ezmq_poll, "ITEMS TIMEOUT",
"Poll ITEMS until TIMEOUT.\n"
"ITEMS is a list of cons cells of the form (SOCK-OR-FD . EVENTS)\n"
"where EVENTS is a list of valid poll events. TIMEOUT is measured in\n"
"milliseconds.");
emacs_value
ezmq_poll(emacs_value eitems, emacs_value etimeout)
{
EZMQ_EXTRACT_INT(timeout, etimeout);
emacs_value retval = Qnil;
if(EQ(TYPE(eitems), Qcons)) {
intmax_t nitems = LENGTH(eitems);
zmq_pollitem_t *items = ezmq_extract_pollitem_list(eitems);
if(!NONLOCAL_EXIT()) {
intmax_t nreceived = zmq_poll(items, nitems, timeout);
EZMQ_CHECK_ERROR(nreceived);
if(!NONLOCAL_EXIT())
retval = ezmq_make_pollitem_list(nreceived, items, eitems, nitems);
free(items);
}
} else
ezmq_wrong_type_argument(eitems, 1, INTERN("consp"));
return retval;
}
EZMQ_DOC(ezmq_poller_new,
"",
"Create a new `zmq-poller' object.");
emacs_value
ezmq_poller_new(void)
{
void *poller = zmq_poller_new();
EZMQ_CHECK_NULL_ERROR(poller);
ezmq_debug("ezmq_poller_new()\n");
return ezmq_new_obj_ptr(ezmq_new_obj(EZMQ_POLLER, poller));
}
EZMQ_DOC(ezmq_poller_add,
"POLLER SOCK-OR-FD EVENTS",
"Listen for EVENTS on SOCK using POLLER.\n"
"SOCK-OR-FD can either be a `zmq-socket' or a file descriptor.\n"
"EVENTS can either be a list of events (one of `zmq-POLLIN',\n"
"`zmq-POLLOUT', `zmq-POLLERR') or a bitwise-or of events.");
emacs_value
ezmq_poller_add(emacs_value epoller, emacs_value esock, emacs_value eevents)
{
EZMQ_EXTRACT_OBJ(poller, EZMQ_POLLER, epoller);
short events;
if(EQ(TYPE(eevents), Qcons))
events = ezmq_merge_poll_events(eevents);
else if(EQ(TYPE(eevents), Qinteger))
events = EXTRACT_INT(eevents);
else
ezmq_wrong_type_argument(eevents, 1, INTERN("consp"));
if(EQ(TYPE(esock), Qinteger)) {
EZMQ_EXTRACT_INT(fd, esock);
EZMQ_CHECK_ERROR(zmq_poller_add_fd(poller->obj, fd, NULL, events));
} else {
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_CHECK_ERROR(zmq_poller_add(poller->obj, sock->obj, sock, events));
// Keep track of sockets added to ensure they do not get garbage
// collected
ezmq_obj_set_val(poller, CONS(esock, ezmq_obj_get_val(poller)));
}
return Qnil;
}
EZMQ_DOC(ezmq_poller_modify,
"POLLER SOCK-OR-FD EVENTS",
"Modify the EVENTS of SOCK-OR-FD that POLLER listens for.");
emacs_value
ezmq_poller_modify(emacs_value epoller, emacs_value esock, emacs_value eevents)
{
EZMQ_EXTRACT_OBJ(poller, EZMQ_POLLER, epoller);
short events;
if(EQ(TYPE(eevents), Qcons))
events = ezmq_merge_poll_events(eevents);
else if(EQ(TYPE(eevents), Qinteger))
events = EXTRACT_INT(eevents);
else
ezmq_wrong_type_argument(eevents, 1, INTERN("consp"));
if(EQ(TYPE(esock), Qinteger)) {
EZMQ_EXTRACT_INT(fd, esock);
EZMQ_CHECK_ERROR(zmq_poller_modify_fd(poller->obj, fd, events));
} else {
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_CHECK_ERROR(zmq_poller_modify(poller->obj, sock->obj, events));
}
return Qnil;
}
EZMQ_DOC(ezmq_poller_remove,
"POLLER SOCK-OR-FD",
"Remove SOCK-OR-FD from POLLER.");
emacs_value
ezmq_poller_remove(emacs_value epoller, emacs_value esock)
{
EZMQ_EXTRACT_OBJ(poller, EZMQ_POLLER, epoller);
if(EQ(TYPE(esock), Qinteger)) {
EZMQ_EXTRACT_INT(fd, esock);
EZMQ_CHECK_ERROR(zmq_poller_remove_fd(poller->obj, fd));
} else {
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_CHECK_ERROR(zmq_poller_remove(poller->obj, sock->obj));
emacs_value new_val = FUNCALL(INTERN("delq"), 2,
((emacs_value []){esock, ezmq_obj_get_val(poller)}));
ezmq_obj_set_val(poller, new_val);
}
return Qnil;
}
EZMQ_DOC(ezmq_poller_destroy,
"POLLER",
"Destroy POLLER");
emacs_value
ezmq_poller_destroy(emacs_value epoller)
{
EZMQ_EXTRACT_OBJ(poller, EZMQ_POLLER, epoller);
EZMQ_CHECK_ERROR(zmq_poller_destroy(&poller->obj));
ezmq_obj_set_val(poller, NULL);
return Qnil;
}
/**
Return the socket or file descriptor contained in EVENT as an Emacs value.
If EVENT has a socket, the socket from EVENT is matched to one of the
sockets in POLLER's list of sockets and returned. Otherwise, the file
descriptor is returned.
*/
static emacs_value
ezmq_get_poll_trigger(ezmq_obj_t *poller, zmq_poller_event_t event)
{
emacs_value trigger = Qnil;
if(NONLOCAL_EXIT()) return NULL;
if(event.socket) {
emacs_value socks = ezmq_obj_get_val(poller);
while(!NILP(socks)) {
emacs_value esock = CAR(socks);
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
if(sock->obj == event.socket) {
trigger = esock;
break;
}
socks = CDR(socks);
}
} else
trigger = INT(event.fd);
if(EQ(trigger, Qnil)) {
// This is mostly a sanity check.
char *msg = "Socket not found in poller!";
FUNCALL(INTERN("error"), 1, (emacs_value []){STRING(msg, strlen(msg))});
}
return trigger;
}
EZMQ_DOC(ezmq_poller_wait,
"POLLER TIMEOUT",
"Poll for an event with POLLER until TIMEOUT ms.\n"
"If an event occures before TIMEOUT ms, return a cons\n"
"cell (SOCK-OR-FD . EVENTS) where EVENTS is a list of events which\n"
"occured before TIMEOUT. Otherwise return nil. If TIMEOUT is -1,\n"
"wait forever until an event arrives.");
emacs_value
ezmq_poller_wait(emacs_value epoller, emacs_value etimeout)
{
EZMQ_EXTRACT_OBJ(poller, EZMQ_POLLER, epoller);
EZMQ_EXTRACT_INT(timeout, etimeout);
zmq_poller_event_t event;
EZMQ_CHECK_ERROR(zmq_poller_wait(poller->obj, &event, timeout));
emacs_value sevents = ezmq_split_poll_events(event.events);
emacs_value trigger = ezmq_get_poll_trigger(poller, event);
return CONS(trigger, sevents);
}
EZMQ_DOC(ezmq_poller_wait_all,
"POLLER NEVENTS TIMEOUT",
"Wait until TIMEOUT for NEVENTS on POLLER.\n"
"If between 1 and NEVENTS events occured within TIMEOUT (measured\n"
"in milliseconds) return a list of cons cells, each element having\n"
"the form (SOCK-OR-FD . EVENTS). EVENTS is a list of events which\n"
"occured on SOCK-OR-FD during the polling period. Note that the\n"
"length of the returned list may be less than NEVENTS if less than\n"
"NEVENTS events occurred within TIMEOUT. If TIMEOUT is -1, wait\n"
"forever.");
emacs_value
ezmq_poller_wait_all(emacs_value epoller, emacs_value enevents, emacs_value etimeout)
{
EZMQ_EXTRACT_OBJ(poller, EZMQ_POLLER, epoller);
EZMQ_EXTRACT_INT(nevents, enevents);
EZMQ_EXTRACT_INT(timeout, etimeout);
emacs_value retval = Qnil;
zmq_poller_event_t revents[nevents];
int ntriggered = zmq_poller_wait_all(poller->obj, revents, nevents, timeout);
EZMQ_CHECK_ERROR(ntriggered);
int i;
for(i = 0; !NONLOCAL_EXIT() && i < ntriggered; i++) {
zmq_poller_event_t event = revents[i];
emacs_value sevents = ezmq_split_poll_events(event.events);
emacs_value trigger = ezmq_get_poll_trigger(poller, event);
retval = CONS(CONS(trigger, sevents), retval);
}
return retval;
}

15
lisp/zmq/src/poll.h Normal file
View File

@@ -0,0 +1,15 @@
#ifndef __POLL_H__
#define __POLL_H__
#include "core.h"
EZMQ_FUN(ezmq_poll, emacs_value, emacs_value);
EZMQ_FUN(ezmq_poller_new, void);
EZMQ_FUN(ezmq_poller_add, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_poller_modify, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_poller_remove, emacs_value, emacs_value);
EZMQ_FUN(ezmq_poller_wait, emacs_value, emacs_value);
EZMQ_FUN(ezmq_poller_wait_all, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_poller_destroy, emacs_value);
#endif /* __POLL_H__ */

468
lisp/zmq/src/socket.c Normal file
View File

@@ -0,0 +1,468 @@
#include "socket.h"
#include <assert.h>
// TODO: Use the actual documentation of the ZMQ API for all functions.
EZMQ_DOC(ezmq_socket, "CONTEXT TYPE",
"Return a new socket of TYPE in CONTEXT.");
emacs_value
ezmq_socket(emacs_value econtext, emacs_value etype)
{
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_EXTRACT_INT(type, etype);
void *sock = zmq_socket(context->obj, type);
EZMQ_CHECK_NULL_ERROR(sock);
ezmq_obj_t *obj = ezmq_new_obj(EZMQ_SOCKET, sock);
// Ensure the context does not get garbage collected while the socket is in
// use
ezmq_obj_set_val(obj, econtext);
ezmq_debug("ezmq_socket()\n");
return ezmq_new_obj_ptr(obj);
}
EZMQ_DOC(ezmq_send,
"SOCK MESSAGE &optional FLAGS",
"Send a single message on SOCK.\n"
"MESSAGE can either be a `zmq-message' or a string containing only\n"
"unibyte characters. FLAGS is a bitmask of flag options. See the\n"
"documentation of zmq_send in the C API for the values FLAGS can take.");
emacs_value
ezmq_send(emacs_value esock, emacs_value emsg, emacs_value eflags)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_OPTIONAL_INT(flags, eflags);
if(EQ(TYPE(emsg), Qstring)) {
EZMQ_EXTRACT_STRING(msg, size, emsg);
EZMQ_CHECK_ERROR(zmq_send(sock->obj, msg, size, flags));
free(msg);
} else {
EZMQ_EXTRACT_OBJ(msg, EZMQ_MESSAGE, emsg);
EZMQ_CHECK_ERROR(zmq_msg_send(msg->obj, sock->obj, flags));
}
return Qnil;
}
EZMQ_DOC(ezmq_recv,
"SOCK &optional FLAGS NOCOPY",
"Receive a message on SOCK.\n"
"If NOCOPY is nil, return a copy of the message data received,\n"
"otherwise when NOCOPY is non-nil, return the `zmq-message' object\n"
"storing the message data. FLAGS is a bitmask of flag options. See\n"
"the documentation of zmq_recv in the C API for the values FLAGS can take.");
emacs_value
ezmq_recv(emacs_value esock, emacs_value eflags, emacs_value enocopy)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_OPTIONAL_INT(flags, eflags);
zmq_msg_t *msg = ezmq_malloc(sizeof(*msg));
EZMQ_CHECK_ERROR(zmq_msg_init(msg));
EZMQ_CHECK_ERROR(zmq_msg_recv(msg, sock->obj, flags));
emacs_value retval = Qnil;
if(!NONLOCAL_EXIT()) {
if(NILP(enocopy)) {
// After examining emacs/src/alloc.c it looks like the null
// termination of STRING, i.e. env->make_string, is already taken
// care of when allocating in allocate_string_data so there is no
// need to do a double copy just to insert a null terminator. It
// looks like this has been the case since Emacs 25 when modules
// were introduced.
retval = STRING(zmq_msg_data(msg), zmq_msg_size(msg));
zmq_msg_close(msg);
free(msg);
} else {
retval = ezmq_new_obj_ptr(ezmq_new_obj(EZMQ_MESSAGE, msg));
}
} else {
free(msg);
}
return retval;
}
EZMQ_DOC(ezmq_bind, "SOCK ENDPOINT", "Bind SOCK to ENDPOINT.");
emacs_value
ezmq_bind(emacs_value esock, emacs_value eendpoint)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_STRING(endpoint, elen, eendpoint);
EZMQ_CHECK_ERROR(zmq_bind(sock->obj, endpoint));
free(endpoint);
return Qnil;
}
EZMQ_DOC(ezmq_connect, "SOCK ENDPOINT", "Connect SOCK to ENDPOINT.");
emacs_value
ezmq_connect(emacs_value esock, emacs_value eendpoint)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_STRING(endpoint, elen, eendpoint);
EZMQ_CHECK_ERROR(zmq_connect(sock->obj, endpoint));
free(endpoint);
return Qnil;
}
EZMQ_DOC(ezmq_unbind, "SOCK ENDPOINT", "Unbind SOCK from ENDPOINT.");
emacs_value
ezmq_unbind(emacs_value esock, emacs_value eendpoint)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_STRING(endpoint, elen, eendpoint);
EZMQ_CHECK_ERROR(zmq_unbind(sock->obj, endpoint));
free(endpoint);
return Qnil;
}
EZMQ_DOC(ezmq_disconnect, "SOCK ENDPOINT", "Disconnect SOCK from ENDPOINT.");
emacs_value
ezmq_disconnect(emacs_value esock, emacs_value eendpoint)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_STRING(endpoint, elen, eendpoint);
EZMQ_CHECK_ERROR(zmq_disconnect(sock->obj, endpoint));
free(endpoint);
return Qnil;
}
EZMQ_DOC(ezmq_join, "SOCK GROUP", "On SOCK, join GROUP.");
emacs_value
ezmq_join(emacs_value esock, emacs_value egroup)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_STRING(group, elen, egroup);
EZMQ_CHECK_ERROR(zmq_join(sock->obj, group));
free(group);
return Qnil;
}
EZMQ_DOC(ezmq_leave, "SOCK GROUP", "On SOCK, leave GROUP.");
emacs_value
ezmq_leave(emacs_value esock, emacs_value egroup)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_STRING(group, elen, egroup);
EZMQ_CHECK_ERROR(zmq_leave(sock->obj, group));
free(group);
return Qnil;
}
EZMQ_DOC(ezmq_close, "SOCK", "Close SOCK.");
emacs_value
ezmq_close(emacs_value esock)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_CHECK_ERROR(zmq_close(sock->obj));
// From the zmq API a socket should only be closed once. This indicates to
// the finalizer function that the socket has already been closed.
if(!NONLOCAL_EXIT()) sock->obj = NULL;
return Qnil;
}
EZMQ_DOC(ezmq_proxy,
"FRONTEND BACKEND &optional CAPTURE",
"Start the builtin ZMQ proxy.\n"
"Connect the FRONTEND socket to the BACKEND socket. Depending on\n"
"the socket types, replies may flow in the opposite direction. The\n"
"direction is conceptual only; the proxy is fully symmetric and there\n"
"is no technical difference between frontend and backend.\n\n"
"If the CAPTURE socket is non-nil, the proxy shall send all\n"
"messages, received on both FRONTEND and BACKEND, to the CAPTURE\n"
"socket. The CAPTURE socket should be a `zmq-PUB', `zmq-DEALER',\n"
"`zmq-PUSH', or `zmq-PAIR' socket.");
emacs_value
ezmq_proxy(emacs_value efrontend, emacs_value ebackend, emacs_value ecapture)
{
EZMQ_EXTRACT_OBJ(frontend, EZMQ_SOCKET, efrontend);
EZMQ_EXTRACT_OBJ(backend, EZMQ_SOCKET, ebackend);
EZMQ_EXTRACT_OPTIONAL_OBJ(capture, EZMQ_SOCKET, ecapture);
EZMQ_CHECK_ERROR(zmq_proxy(frontend->obj,
backend->obj,
capture ? capture->obj : NULL));
return Qnil;
}
EZMQ_DOC(ezmq_proxy_steerable,
"FRONTEND BACKEND &optional CAPTURE CONTROL",
"Start the builtin ZMQ proxy with control flow.\n"
"Starts the builtin ZMQ proxy with additional control flow\n"
"(see `zmq-proxy') provided by the CONTROL socket if it is non-nil.\n"
"If PAUSE is received on this socket, the proxy suspends its\n"
"activities. If RESUME is received, it goes on. If TERMINATE is\n"
"received, it terminates smoothly. At start, the proxy runs\n"
"normally as if `zmq-proxy' was used.");
emacs_value
ezmq_proxy_steerable(emacs_value efrontend, emacs_value ebackend, emacs_value ecapture, emacs_value econtrol)
{
EZMQ_EXTRACT_OBJ(frontend, EZMQ_SOCKET, efrontend);
EZMQ_EXTRACT_OBJ(backend, EZMQ_SOCKET, ebackend);
EZMQ_EXTRACT_OPTIONAL_OBJ(capture, EZMQ_SOCKET, ecapture);
EZMQ_EXTRACT_OPTIONAL_OBJ(control, EZMQ_SOCKET, econtrol);
EZMQ_CHECK_ERROR(zmq_proxy_steerable(frontend->obj,
backend->obj,
capture ? capture->obj : NULL,
control ? control->obj : NULL));
return Qnil;
}
EZMQ_DOC(ezmq_socket_monitor,
"SOCK ENDPOINT EVENTS",
"The `zmq-socket-monitor' method lets an application thread track\n"
"socket events (like connects) on a ZeroMQ SOCK. Each call to\n"
"this method creates a `zmq-PAIR' socket and binds that to the\n"
"specified inproc:// ENDPOINT. To collect the socket events, you\n"
"must create your own `zmq-PAIR' socket, and connect that to the\n"
"ENDPOINT.\n\n"
"The EVENTS argument is a list of the socket events you wish to\n"
"monitor, see the C API for the events. To monitor all events, use\n"
"the event value `zmq-EVENT-ALL'. NOTE: as new events are added, the\n"
"catch-all value will start returning them. An application that\n"
"relies on a strict and fixed sequence of events must not use\n"
"`zmq-EVENT-ALL' in order to guarantee compatibility with future\n"
"versions.\n\n"
"Each event is sent as two frames. The first frame contains an\n"
"event number (16 bits), and an event value (32 bits) that\n"
"provides additional data according to the event number. The\n"
"second frame contains a string that specifies the affected TCP or\n"
"IPC endpoint.");
emacs_value
ezmq_socket_monitor(emacs_value esock, emacs_value eendpoint, emacs_value eevents)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_STRING(endpoint, elen, eendpoint);
intmax_t events = 0;
emacs_value list = eevents;
if(EQ(TYPE(list), Qcons)) {
while(!NILP(list)) {
// TODO: Verify event, raise an error if invalid
EZMQ_EXTRACT_INT(event, CAR(list));
events |= event;
list = CDR(list);
}
} else
ezmq_wrong_type_argument(list, 1, Qlist);
EZMQ_CHECK_ERROR(zmq_socket_monitor(sock, endpoint, events));
return Qnil;
}
EZMQ_DOC(ezmq_setsockopt, "SOCK OPTION VALUE", "Set SOCK OPTION to VALUE.");
emacs_value
ezmq_setsockopt(emacs_value esock, emacs_value eoption, emacs_value evalue)
{
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_INT(option, eoption);
switch(option) {
// INT
case ZMQ_BACKLOG: case ZMQ_RATE: case ZMQ_RECOVERY_IVL: case ZMQ_SNDHWM:
case ZMQ_SNDBUF: case ZMQ_SNDTIMEO: case ZMQ_RCVHWM: case ZMQ_RCVBUF:
case ZMQ_RCVTIMEO: case ZMQ_LINGER: case ZMQ_RECONNECT_IVL:
case ZMQ_RECONNECT_IVL_MAX: case ZMQ_MULTICAST_HOPS:
case ZMQ_MULTICAST_MAXTPDU: case ZMQ_CONNECT_TIMEOUT:
case ZMQ_HANDSHAKE_IVL: case ZMQ_HEARTBEAT_IVL:
case ZMQ_HEARTBEAT_TIMEOUT: case ZMQ_HEARTBEAT_TTL:
case ZMQ_USE_FD: case ZMQ_TCP_KEEPALIVE:
case ZMQ_TCP_KEEPALIVE_CNT: case ZMQ_TCP_KEEPALIVE_IDLE:
case ZMQ_TCP_KEEPALIVE_INTVL: case ZMQ_TCP_MAXRT: case ZMQ_TOS:
case ZMQ_VMCI_CONNECT_TIMEOUT: {
EZMQ_EXTRACT_INT(value, evalue);
zmq_setsockopt(sock->obj, option, &value, sizeof(int));
break;
}
// UINT64
// TODO: Figure out the best way to handle U?INT64 since Emacs integers
// are all signed and only 30 bits wide. This won't
// be the case with bignum support in future Emacsen.
case ZMQ_AFFINITY: case ZMQ_VMCI_BUFFER_SIZE:
case ZMQ_VMCI_BUFFER_MAX_SIZE: case ZMQ_VMCI_BUFFER_MIN_SIZE:
// INT64
case ZMQ_MAXMSGSIZE: {
EZMQ_EXTRACT_INT(_value, evalue);
int64_t value = (int64_t)_value;
zmq_setsockopt(sock->obj, option, &value, sizeof(int64_t));
break;
}
// INT with BOOL values
case ZMQ_CONFLATE: case ZMQ_CURVE_SERVER: case ZMQ_GSSAPI_PLAINTEXT:
case ZMQ_GSSAPI_SERVER: case ZMQ_IMMEDIATE: case ZMQ_INVERT_MATCHING:
case ZMQ_IPV6: case ZMQ_PLAIN_SERVER: case ZMQ_PROBE_ROUTER:
case ZMQ_REQ_CORRELATE: case ZMQ_REQ_RELAXED: case ZMQ_ROUTER_HANDOVER:
case ZMQ_ROUTER_MANDATORY: case ZMQ_ROUTER_RAW: case ZMQ_STREAM_NOTIFY:
case ZMQ_XPUB_VERBOSE: case ZMQ_XPUB_VERBOSER: case ZMQ_XPUB_MANUAL:
case ZMQ_XPUB_NODROP: {
int value = !NILP(evalue);
zmq_setsockopt(sock->obj, option, &value, sizeof(int));
break;
}
// STRING
case ZMQ_GSSAPI_PRINCIPAL: case ZMQ_GSSAPI_SERVICE_PRINCIPAL:
case ZMQ_PLAIN_PASSWORD: case ZMQ_PLAIN_USERNAME:
case ZMQ_SOCKS_PROXY: case ZMQ_ZAP_DOMAIN: {
EZMQ_EXTRACT_STRING(str, len, evalue);
// From http://api.zeromq.org/master:zmq-setsockopt
//
// For options taking a value of type "character string", the provided
// byte data should either contain no zero bytes, or end in a single
// zero byte
int i;
for(i = 0; i < len; i++)
if(!str[i]) break;
if(i != len) {
char const *msg = "Value cannot contain NUL characters";
ezmq_signal(Qzmq_error, 1, STRING(msg, strlen(msg)));
} else
zmq_setsockopt(sock->obj, option, str, len);
free(str);
break;
}
// BINARY
case ZMQ_CONNECT_ROUTING_ID:
case ZMQ_ROUTING_ID: case ZMQ_SUBSCRIBE: case ZMQ_UNSUBSCRIBE:
case ZMQ_XPUB_WELCOME_MSG: {
EZMQ_EXTRACT_STRING(bin, size, evalue);
zmq_setsockopt(sock->obj, option, bin, size);
free(bin);
break;
}
// CURVE
case ZMQ_CURVE_PUBLICKEY: case ZMQ_CURVE_SECRETKEY:
case ZMQ_CURVE_SERVERKEY: {
EZMQ_EXTRACT_STRING(str, len, evalue);
// len includes the terminating NULL
// binary representation is 32 bytes
// string representation is 40 bytes
if(len == 32 || len == 40) {
if(len == 40) len += 1;
zmq_setsockopt(sock->obj, option, str, len);
} else {
const char *msg = "CURVE key not of valid length.";
ezmq_signal(Qzmq_error, 1, STRING(msg, strlen(msg)));
}
free(str);
break;
}
default: {
const char *msg = "Socket option not handled yet.";
ezmq_signal(Qzmq_error, 1, STRING(msg, strlen(msg)));
}
break;
}
return Qnil;
}
// This assertion is required since Emacs does not support 64 bit wide
// integers, but this will change with bignum support.
void
ezmq_assert_eint(uint64_t val)
{
assert((int64_t)val >= INTMAX_MIN && val <= INTMAX_MAX);
}
EZMQ_DOC(ezmq_getsockopt, "SOCK OPTION", "Get SOCK OPTION.");
emacs_value
ezmq_getsockopt(emacs_value esock, emacs_value eoption)
{
char buf[256];
size_t size;
EZMQ_EXTRACT_OBJ(sock, EZMQ_SOCKET, esock);
EZMQ_EXTRACT_INT(option, eoption);
switch(option) {
// INT
case ZMQ_MECHANISM: case ZMQ_BACKLOG: case ZMQ_RATE: case ZMQ_RECOVERY_IVL:
case ZMQ_SNDHWM: case ZMQ_SNDBUF: case ZMQ_SNDTIMEO: case ZMQ_RCVHWM:
case ZMQ_RCVBUF: case ZMQ_RCVTIMEO: case ZMQ_LINGER: case ZMQ_RECONNECT_IVL:
case ZMQ_RECONNECT_IVL_MAX: case ZMQ_MULTICAST_HOPS:
case ZMQ_MULTICAST_MAXTPDU: case ZMQ_CONNECT_TIMEOUT:
case ZMQ_HANDSHAKE_IVL: case ZMQ_HEARTBEAT_IVL:
case ZMQ_HEARTBEAT_TIMEOUT: case ZMQ_HEARTBEAT_TTL: case ZMQ_USE_FD:
case ZMQ_EVENTS: case ZMQ_TCP_KEEPALIVE: case ZMQ_TCP_KEEPALIVE_CNT:
case ZMQ_TCP_KEEPALIVE_IDLE: case ZMQ_TCP_KEEPALIVE_INTVL:
case ZMQ_TCP_MAXRT: case ZMQ_TOS: case ZMQ_VMCI_CONNECT_TIMEOUT: {
int val;
size = sizeof(int);
EZMQ_CHECK_ERROR(zmq_getsockopt(sock->obj, option, buf, &size));
if(!NONLOCAL_EXIT()) {
memcpy(&val, buf, size);
return INT(val);
}
break;
}
// UINT64
case ZMQ_AFFINITY: case ZMQ_VMCI_BUFFER_SIZE:
case ZMQ_VMCI_BUFFER_MAX_SIZE: case ZMQ_VMCI_BUFFER_MIN_SIZE:
// INT64
case ZMQ_MAXMSGSIZE: {
uint64_t val;
size = sizeof(uint64_t);
EZMQ_CHECK_ERROR(zmq_getsockopt(sock->obj, option, buf, &size));
if(!NONLOCAL_EXIT()) {
memcpy(&val, buf, size);
ezmq_assert_eint(val);
return INT((intmax_t)val);
}
break;
}
// INT with BOOL valus
case ZMQ_IMMEDIATE: case ZMQ_INVERT_MATCHING: case ZMQ_CONFLATE:
case ZMQ_IPV6: case ZMQ_PLAIN_SERVER: case ZMQ_GSSAPI_PLAINTEXT:
case ZMQ_GSSAPI_SERVER: case ZMQ_RCVMORE: {
int val;
size = sizeof(int);
EZMQ_CHECK_ERROR(zmq_getsockopt(sock->obj, option, buf, &size));
if(!NONLOCAL_EXIT()) {
memcpy(&val, buf, size);
return val ? Qt : Qnil;
}
break;
}
// BOOL
case ZMQ_THREAD_SAFE: {
bool val;
size = sizeof(bool);
EZMQ_CHECK_ERROR(zmq_getsockopt(sock->obj, option, buf, &size));
if(!NONLOCAL_EXIT()) {
memcpy(&val, buf, size);
return val ? Qt : Qnil;
}
break;
}
// STRING
case ZMQ_GSSAPI_PRINCIPAL: case ZMQ_GSSAPI_SERVICE_PRINCIPAL:
case ZMQ_LAST_ENDPOINT: case ZMQ_PLAIN_PASSWORD: case ZMQ_PLAIN_USERNAME:
case ZMQ_SOCKS_PROXY: case ZMQ_ZAP_DOMAIN:
size = 256;
EZMQ_CHECK_ERROR(zmq_getsockopt(sock->obj, option, buf, &size));
if(!NONLOCAL_EXIT())
return STRING(buf, size - 1);
break;
// BINARY
case ZMQ_ROUTING_ID:
size = 256;
EZMQ_CHECK_ERROR(zmq_getsockopt(sock->obj, option, buf, &size));
if(!NONLOCAL_EXIT()) {
buf[size] = 0;
return STRING(buf, size);
}
break;
// CURVE
// NOTE: These always returns the string representation
case ZMQ_CURVE_PUBLICKEY: case ZMQ_CURVE_SECRETKEY: case ZMQ_CURVE_SERVERKEY:
size = 41;
EZMQ_CHECK_ERROR(zmq_getsockopt(sock->obj, option, buf, &size));
if(!NONLOCAL_EXIT())
return STRING(buf, size - 1);
break;
default: {
const char *msg = "Socket option not handled yet.";
ezmq_signal(Qzmq_error, 1, STRING(msg, strlen(msg)));
}
break;
}
return NULL;
}

23
lisp/zmq/src/socket.h Normal file
View File

@@ -0,0 +1,23 @@
#ifndef __SOCKET_H__
#define __SOCKET_H__
#include "core.h"
EZMQ_FUN(ezmq_socket, emacs_value, emacs_value);
EZMQ_FUN(ezmq_send, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_recv, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_bind, emacs_value, emacs_value);
EZMQ_FUN(ezmq_connect, emacs_value, emacs_value);
EZMQ_FUN(ezmq_join, emacs_value, emacs_value);
EZMQ_FUN(ezmq_unbind, emacs_value, emacs_value);
EZMQ_FUN(ezmq_disconnect, emacs_value, emacs_value);
EZMQ_FUN(ezmq_leave, emacs_value, emacs_value);
EZMQ_FUN(ezmq_close, emacs_value);
EZMQ_FUN(ezmq_proxy, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_proxy_steerable, emacs_value, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_socket_monitor, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_setsockopt, emacs_value, emacs_value, emacs_value);
EZMQ_FUN(ezmq_getsockopt, emacs_value, emacs_value);
#endif /* __SOCKET_H__ */

178
lisp/zmq/src/util.c Normal file
View File

@@ -0,0 +1,178 @@
#include "util.h"
EZMQ_DOC(ezmq_has, "CAPABILITY", "Return non-nil if ZMQ has CAPABILITY.");
emacs_value ezmq_has(emacs_value ecapability)
{
EZMQ_EXTRACT_STRING(capability, clen, ecapability);
emacs_value retval = zmq_has(capability) ? Qt : Qnil;
free(capability);
return retval;
}
EZMQ_DOC(ezmq_version, "", "Return the currently installed version of ZMQ.");
emacs_value ezmq_version()
{
int major, minor, patch;
char buf[16];
zmq_version(&major, &minor, &patch);
sprintf(buf, "%d.%d.%d", major, minor, patch);
return STRING(buf, strlen(buf));
}
EZMQ_DOC(ezmq_z85_decode, "KEY", "Decode a z85 encoded KEY.");
emacs_value ezmq_z85_decode(emacs_value ekey)
{
emacs_value retval = Qnil;
EZMQ_EXTRACT_STRING(key, klen, ekey);
if(klen % 5 == 0) {
ptrdiff_t dlen = (ptrdiff_t)(0.8*klen);
char *decoded = ezmq_malloc(dlen + 1);
if(!NONLOCAL_EXIT()) {
decoded[dlen] = 0;
if(zmq_z85_decode((uint8_t *)decoded, key))
retval = STRING(decoded, dlen);
}
free(decoded);
} else {
char *msg = "Length not a multiple of 5";
ezmq_signal(Qargs_out_of_range, 2, INT(klen), STRING(msg, strlen(msg)));
}
free(key);
return retval;
}
EZMQ_DOC(ezmq_z85_encode, "DATA", "Encode DATA using the z85 encoding.");
emacs_value
ezmq_z85_encode(emacs_value econtent)
{
emacs_value retval = Qnil;
EZMQ_EXTRACT_STRING(content, clen, econtent);
if(clen % 4 == 0) {
ptrdiff_t elen = (ptrdiff_t)(1.25*(float)clen);
char *encoded = ezmq_malloc(elen + 1);
if(!NONLOCAL_EXIT()) {
if(zmq_z85_encode(encoded, (uint8_t *)content, clen))
retval = STRING(encoded, elen);
}
free(encoded);
} else {
const char *msg = "Length not a multiple of 4";
ezmq_signal(Qargs_out_of_range, 2, INT(clen), STRING(msg, strlen(msg)));
}
free(content);
return retval;
}
EZMQ_DOC(ezmq_curve_keypair, "", "Return a (PUBLIC-KEY . SECRET-KEY) pair.");
emacs_value
ezmq_curve_keypair(void)
{
emacs_value retval = Qnil;
if(zmq_has("curve")) {
char *public = ezmq_malloc(41);
char *private = ezmq_malloc(41);
if(!NONLOCAL_EXIT()) {
EZMQ_CHECK_ERROR(zmq_curve_keypair(public, private));
if(!NONLOCAL_EXIT())
retval = CONS(STRING(public, 40), STRING(private, 40));
}
free(public);
free(private);
} else {
const char *msg = "ZMQ not built with CURVE security";
ezmq_signal(Qzmq_error, 1, STRING(msg, strlen(msg)));
}
return retval;
}
EZMQ_DOC(ezmq_curve_public, "SECRET-KEY", "Return the corresponding public key of SECRET-KEY.");
emacs_value
ezmq_curve_public(emacs_value eprivate)
{
emacs_value retval = Qnil;
if(zmq_has("curve")) {
EZMQ_EXTRACT_STRING(private, plen, eprivate);
char *public = ezmq_malloc(41);
if(!NONLOCAL_EXIT()) {
EZMQ_CHECK_ERROR(zmq_curve_public(public, private));
if(!NONLOCAL_EXIT())
retval = STRING(public, 40);
}
free(public);
free(private);
} else {
const char *msg = "ZMQ not built with CURVE security";
ezmq_signal(Qzmq_error, 1, STRING(msg, strlen(msg)));
}
return retval;
}
EZMQ_DOC(ezmq_equal, "O1 O2", "Same as `equal' but properly handles ZMQ objects.");
emacs_value
ezmq_equal(emacs_value ea, emacs_value eb)
{
if(!EQUAL(ea, eb)) {
ezmq_obj_t *a = USER_PTR(ea);
ezmq_obj_t *b = USER_PTR(eb);
if(!NONLOCAL_EXIT() &&
// If both objects are user-ptrs, ensure the objects indeed point to
// ZMQ objects
USER_FINALIZER(ea) == &ezmq_obj_finalizer &&
USER_FINALIZER(eb) == &ezmq_obj_finalizer &&
a == b) {
return Qt;
} else {
CLEAR_NONLOCAL_EXIT();
return Qnil;
}
} else
return Qt;
}
EZMQ_DOC(ezmq_message_p, "OBJ", "Is OBJ a `zmq-message'?");
emacs_value
ezmq_message_p(emacs_value obj)
{
return ezmq_obj_of_type(obj, EZMQ_MESSAGE) ? Qt : Qnil;
}
EZMQ_DOC(ezmq_socket_p, "OBJ", "Is OBJ a `zmq-socket'?");
emacs_value
ezmq_socket_p(emacs_value obj)
{
return ezmq_obj_of_type(obj, EZMQ_SOCKET) ? Qt : Qnil;
}
EZMQ_DOC(ezmq_context_p, "OBJ", "Is OBJ a `zmq-context'?");
emacs_value
ezmq_context_p(emacs_value obj)
{
return ezmq_obj_of_type(obj, EZMQ_CONTEXT) ? Qt : Qnil;
}
EZMQ_DOC(ezmq_poller_p, "OBJ", "Is OBJ a `zmq-poller'?");
emacs_value
ezmq_poller_p(emacs_value obj)
{
return ezmq_obj_of_type(obj, EZMQ_POLLER) ? Qt : Qnil;
}

18
lisp/zmq/src/util.h Normal file
View File

@@ -0,0 +1,18 @@
#ifndef __UTIL_H__
#define __UTIL_H__
#include "core.h"
EZMQ_FUN(ezmq_has, emacs_value);
EZMQ_FUN(ezmq_version, void);
EZMQ_FUN(ezmq_z85_decode, emacs_value);
EZMQ_FUN(ezmq_z85_encode, emacs_value);
EZMQ_FUN(ezmq_curve_keypair, void);
EZMQ_FUN(ezmq_curve_public, emacs_value);
EZMQ_FUN(ezmq_equal, emacs_value, emacs_value);
EZMQ_FUN(ezmq_message_p, emacs_value);
EZMQ_FUN(ezmq_socket_p, emacs_value);
EZMQ_FUN(ezmq_context_p, emacs_value);
EZMQ_FUN(ezmq_poller_p, emacs_value);
#endif /* __UTIL_H__ */

15
lisp/zmq/zmq-pkg.el Normal file
View File

@@ -0,0 +1,15 @@
(define-package "zmq" "20230608.1856" "ZMQ bindings in elisp"
'((cl-lib "0.5")
(emacs "26"))
:commit "9d5679c54f361f518a426586b51686674fd3b0fa" :authors
'(("Nathaniel Nicandro" . "nathanielnicandro@gmail.com"))
:maintainers
'(("Nathaniel Nicandro" . "nathanielnicandro@gmail.com"))
:maintainer
'("Nathaniel Nicandro" . "nathanielnicandro@gmail.com")
:keywords
'("comm")
:url "https://github.com/nnicandro/emacs-zmq")
;; Local Variables:
;; no-byte-compile: t
;; End:

663
lisp/zmq/zmq.el Normal file
View File

@@ -0,0 +1,663 @@
;;; zmq.el --- ZMQ bindings in elisp -*- lexical-binding: t -*-
;; Copyright (C) 2018 Nathaniel Nicandro
;; Author: Nathaniel Nicandro <nathanielnicandro@gmail.com>
;; Created: 05 Jan 2018
;; URL: https://github.com/nnicandro/emacs-zmq
;; Keywords: comm
;; Version: 1.0.0
;; Package-Requires: ((cl-lib "0.5") (emacs "26"))
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2, or (at
;; your option) any later version.
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
;;; Commentary:
;; Bindings to the ZMQ distributed messaging library in
;; Emacs.
;;; Code:
(require 'cl-lib)
(defgroup zmq nil
"ZMQ bindings for Emacs"
:group 'communication)
(defconst zmq-emacs-version "v1.0.0")
(defvar zmq-current-context nil
"The context set by the function `zmq-current-context'.")
(cl-deftype zmq-socket () '(satisfies zmq-socket-p))
(defun zmq-current-context ()
"Return the value of the variable `zmq-current-context' if non-nil.
Otherwise, create a new `zmq-context', bind it to the
variable `zmq-current-context', and return the newly created
context."
(or zmq-current-context
(setq zmq-current-context (zmq-context))))
(defun zmq-assoc (item list)
"Find the first match whose car is equal to ITEM in LIST.
`zmq-equal' is used for comparison."
(cl-assoc item list :test #'zmq-equal))
;;; Tunneling
;; TODO: Add password handling
(defun zmq-make-tunnel (lport rport server &optional remoteip)
"Forward traffic from LPORT on the localhost to REMOTEIP:RPORT on SERVER.
If REMOTEIP is nil, forward LPORT to RPORT on SERVER.
Forwarding is done with ssh."
(or remoteip (setq remoteip "127.0.0.1"))
(start-process
"zmq-tunnel" nil
"ssh"
;; Run in background
"-f"
;; Wait until the tunnel is open
"-o ExitOnForwardFailure=yes"
;; Local forward
"-L" (format "127.0.0.1:%d:%s:%d" lport remoteip rport)
server
;; Close the tunnel if no other connections are made within 60
;; seconds
"sleep 60"))
;;; Socket functions
(defun zmq-bind-to-random-port (sock addr &optional min-port max-port max-tries)
"Bind SOCK to ADDR on a random port.
ADDR must be an address string without the port.
Randomly bind SOCK to ADDR on a port in the range
[MIN-PORT,MAX-PORT)
If the port assigned is in use on ADDR, try a different port. If
SOCK could not be bound after MAX-TRIES return nil, otherwise
return the port SOCK was bound to. MIN-PORT defaults to 49152,
MAX-PORT defaults to 65536, and MAX-TRIES defaults to 100."
(setq min-port (or min-port 49152)
max-port (or max-port 65536)
max-tries (or max-tries 100))
(let (port)
(while (not (or port (zerop max-tries)))
(setq port (+ (cl-random (- max-port min-port)) min-port))
(condition-case nil
(zmq-bind sock (format "%s:%d" addr port))
((zmq-EACCES zmq-EADDRINUSE)
(setq port nil
max-tries (1- max-tries)))))
port))
;;; Sending/receiving multipart messages
(defun zmq-send-multipart (sock parts &optional flags)
"Send a multipart message on SOCK.
PARTS is a list of message parts to send on SOCK. FLAGS has the
same meaning as `zmq-send'."
(or flags (setq flags 0))
(while parts
(let ((part (zmq-message (car parts))))
(zmq-message-send
part sock (if (not (null (cdr parts)))
(logior flags zmq-SNDMORE)
flags))
(setq parts (cdr parts)))))
(defun zmq-recv-multipart (sock &optional flags)
"Receive a multipart message from SOCK.
FLAGS has the same meaning as in `zmq-recv'."
(let (res)
(catch 'recvd
(while t
(let ((part (zmq-message)))
(zmq-message-recv part sock flags)
(setq res (cons (zmq-message-data part) res))
(unless (zmq-message-more-p part)
(throw 'recvd (nreverse res))))))))
;;; Setting/getting options from contexts, sockets, messages
(defun zmq--set-get-option (set object option &optional value)
"Helper function for `zmq-get-option' and `zmq-set-option'.
If SET is non-nil, set OBJECT's OPTION to VALUE. Otherwise get
OPTION's value, ignoring any VALUE argument."
(let ((fun (cond
((zmq-socket-p object)
(if set #'zmq-socket-set #'zmq-socket-get))
((zmq-context-p object)
(if set #'zmq-context-set #'zmq-context-get))
((zmq-message-p object)
(if set #'zmq-message-set #'zmq-message-get))
(t (signal 'wrong-type-argument
(list
'(zmq-socket-p zmq-context-p zmq-message-p)
object))))))
(if set (funcall fun object option value)
(funcall fun object option))))
(defun zmq-set-option (object option value)
"For OBJECT, set OPTION to VALUE.
OBJECT can be a `zmq-socket', `zmq-context', or a `zmq-message'.
The OPTION set should correspond to one of the options available
for that particular object."
(zmq--set-get-option 'set object option value))
(defun zmq-get-option (object option)
"For OBJECT, get OPTION's value.
OBJECT can be a `zmq-socket', `zmq-context', or a `zmq-message'.
The OPTION to get should correspond to one of the options
available for that particular object."
(zmq--set-get-option nil object option))
(defconst zmq-message-properties '((:socket-type . "Socket-Type")
(:identity . "Identity")
(:resource . "Resource")
(:peer-address . "Peer-Address")
(:user-id . "User-Id"))
"Alist mapping keywords to their corresponding message property.
A message's metadata property can be accessed through
`zmq-message-property'.")
(defun zmq-message-property (message property)
"Get a MESSAGE's metadata PROPERTY.
PROPERTY is a keyword and can only be one of those in
`zmq-message-properties'."
(let ((prop (cdr (assoc property zmq-message-properties))))
(unless prop
(signal 'args-out-of-range
(list (mapcar #'car zmq-message-properties) prop)))
(decode-coding-string (zmq-message-gets message prop) 'utf-8)))
;;; Subprocesses
(define-error 'zmq-subprocess-error "Error in ZMQ subprocess")
(defun zmq-flush (stream)
"Flush STREAM.
STREAM can be one of `stdout', `stdin', or `stderr'."
(set-binary-mode stream t)
(set-binary-mode stream nil))
(defun zmq-prin1 (sexp)
"Print SEXP using `prin1' and flush `stdout' afterwards."
(prin1 sexp)
(zmq-flush 'stdout))
(defvar zmq--subprocess-debug nil
"If non-nil, capture backtraces in subprocesses.
Send backtraces as subprocess errors to the parent Emacs process.
In addition, log any stderr messages produced by the subprocess
as messages in the parent Emacs process.")
(defvar zmq-backtrace nil
"The backtrace stored when debugging the subprocess.")
(defun zmq--init-subprocess (&optional backtrace)
"Initialize the ZMQ subprocess.
Call `zmq-subprocess-read' and assuming the read s-expression is
a function, call the function. If the function accepts a single
argument, pass the `zmq-context' created by a call to the
function `zmq-current-context' as the argument.
If BACKTRACE is non-nil and an error occurs when evaluating, send
the backtrace to the parent process. This should only be used for
debugging purposes."
(if (not noninteractive) (error "Not a subprocess")
(let* ((debug-on-event nil)
(coding-system-for-write 'utf-8-emacs)
(signal-hook-function
(when backtrace
(lambda (&rest _)
(setq zmq-backtrace
(with-temp-buffer
(let ((standard-output (current-buffer)))
(backtrace))
(buffer-string)))))))
(condition-case err
(let* ((sexp (eval (zmq-subprocess-read)))
(wrap-context (= (length (cadr sexp)) 1)))
(if wrap-context
(funcall sexp (zmq-current-context))
(funcall sexp)))
(error
(zmq-prin1 (cons 'error (list (car err)
(or zmq-backtrace
(cdr err))))))))))
(defvar-local zmq--subprocess-parse-state nil
"The parse state of the output read from a subprocess.")
(defsubst zmq--subprocess-skip-delete-to-sexp ()
"Skip to the start of a list.
Delete the region between `point' and the start of the next list.
Only skip and delete if `zmq--subprocess-parse-state' is nil."
(unless zmq--subprocess-parse-state
(delete-region
(point) (+ (point) (skip-syntax-forward "^(")))))
(defun zmq--subprocess-read-output (output)
"Return a list of s-expressions read from OUTPUT.
OUTPUT is inserted into the `current-buffer' and `read' until the
first incomplete s-expression or until all s-expressions of
OUTPUT have been processed. After reading, the contents of the
`current-buffer' from `point-min' up to the last valid
s-expression is removed and a list of all the valid s-expressions
in OUTPUT is returned.
Any other text in OUTPUT that is not an s-expression is ignored.
Also note, for this function to work properly the same buffer
should be current for subsequent calls."
(let (accum)
(save-excursion (insert output))
(zmq--subprocess-skip-delete-to-sexp)
(while (/= (point) (point-max))
(setq zmq--subprocess-parse-state
(parse-partial-sexp
(point) (point-max) 0
nil zmq--subprocess-parse-state))
(when (= (nth 0 zmq--subprocess-parse-state) 0)
;; When a complete top-level s-expression has been
;; parsed, collect into the accumulated list of
;; complete s-expressions.
(let ((beg (nth 2 zmq--subprocess-parse-state))
(end (point)))
(goto-char beg)
(unwind-protect
(push (read (current-buffer)) accum)
(setq zmq--subprocess-parse-state nil)
(goto-char end)
(delete-region beg end))))
(zmq--subprocess-skip-delete-to-sexp))
(nreverse accum)))
(defun zmq--subprocess-handle-stderr (process)
"Print PROCESS' stderr as messages.
Do this only if the PROCESS has a non-nil :debug property."
(when (process-get process :debug)
(let ((stderr (process-get process :stderr)))
(unless (zerop (buffer-size (process-buffer stderr)))
(with-current-buffer (process-buffer stderr)
(let ((prefix (concat "STDERR[" (process-name process) "]: ")))
(goto-char (point-min))
(while (/= (point) (point-max))
(message "%s%s" prefix (buffer-substring
(line-beginning-position)
(line-end-position)))
(forward-line))
(erase-buffer)))))))
(defun zmq--subprocess-filter (process output)
"Create a stream of s-expressions based on PROCESS' OUTPUT.
If PROCESS has a non-nil `:filter' property then it should be a
function with the same meaning as the EVENT-FILTER argument in
`zmq-start-process', OUTPUT will be converted into a list of
s-expressions and the `:filter' function called for every valid
s-expression in OUTPUT.
As a special case, if the `car' of an s-expression is the symbol
error, a `zmq-subprocess-error' is signaled using the `cdr' of
the list for the error data."
(zmq--subprocess-handle-stderr process)
(with-current-buffer (process-buffer process)
(goto-char (process-mark process))
(let ((filter (process-get process :filter)))
(when filter
(let ((stream (let ((inhibit-read-only t))
(zmq--subprocess-read-output output))))
(cl-loop
for event in stream
if (and (listp event) (eq (car event) 'error)) do
;; TODO: Better way to handle this
(signal 'zmq-subprocess-error (cdr event))
else do (with-demoted-errors "Error in ZMQ subprocess filter: %S"
(funcall filter event))))))
(set-marker (process-mark process) (point-max))))
(defun zmq--subprocess-sentinel (process event)
"Sentinel function for ZMQ subprocesses.
If a PROCESS has a `:sentinel' property that is a function, the
function is called with identical arguments as this function.
When EVENT represents any of the events that notify when a
subprocess has exited, kill the process buffer only when the
`:owns-buffer' property of the PROCESS is non-nil. Otherwise the
process buffer is left alive and assumed to be a buffer that was
initially passed to `zmq-start-process'."
(let ((sentinel (process-get process :sentinel)))
(unwind-protect
(when (functionp sentinel)
(funcall sentinel process event))
(when (memq (process-status process) '(exit signal))
(delete-process process)
(when (process-get process :owns-buffer)
(kill-buffer (process-buffer process)))
(let ((stderr (process-get process :stderr)))
(when (process-live-p stderr)
(delete-process stderr))
(when (buffer-live-p (process-buffer stderr))
(kill-buffer (process-buffer stderr))))))))
(defvar zmq--subprocess-send-buffer nil)
;; Adapted from `async--insert-sexp' in the `async' package :)
(defun zmq-subprocess-send (process sexp)
"Send an s-expression to PROCESS' STDIN.
PROCESS should be an Emacs subprocess that decodes messages sent
on its STDIN using `zmq-subprocess-read'.
The SEXP is first encoded with the `utf-8-emacs' coding system and
then encoded using Base 64 encoding before being sent to the
subprocess."
(declare (indent 1))
(let ((print-circle t)
(print-escape-nonascii t)
print-level print-length)
(with-current-buffer
(if (buffer-live-p zmq--subprocess-send-buffer)
zmq--subprocess-send-buffer
(setq zmq--subprocess-send-buffer
(get-buffer-create " *zmq-subprocess-send*")))
(erase-buffer)
(prin1 sexp (current-buffer))
(encode-coding-region (point-min) (point-max) 'utf-8-emacs)
(base64-encode-region (point-min) (point-max) t)
(goto-char (point-min)) (insert ?\")
(goto-char (point-max)) (insert ?\" ?\n)
(process-send-region process (point-min) (point-max)))))
(defun zmq-subprocess-read ()
"Read a single s-expression from STDIN.
This does the decoding of the encoding described in
`zmq-subprocess-send' and returns the s-expression. This is only
meant to be called from an Emacs subprocess."
(if (not noninteractive) (error "Not in a subprocess")
(read (decode-coding-string
(base64-decode-string (read-minibuffer ""))
'utf-8-emacs))))
(defun zmq-set-subprocess-filter (process event-filter)
"Set the event filter function for PROCESS.
EVENT-FILTER has the same meaning as in `zmq-start-process'."
(process-put process :filter event-filter))
(defun zmq-set-subprocess-sentinel (process sentinel)
"Set the sentinel function for PROCESS.
SENTINEL has the same meaning as in `zmq-start-process'."
(process-put process :sentinel sentinel))
(defun zmq-set-subprocess-buffer (process buffer)
"Set PROCESS' buffer to BUFFER.
Delete PROCESS' current buffer if it was automatically created
when `zmq-start-process' was called. It is the responsibility of
the caller to cleanup BUFFER when PROCESS exits after a call to
this function."
(let ((marker (process-mark process)))
;; Copy over any pending results
(with-current-buffer (process-buffer process)
(copy-to-buffer buffer (point-min) (point-max)))
(set-process-buffer process buffer)
(set-marker marker (marker-position marker) buffer)
(when (process-get process :owns-buffer)
(kill-buffer (process-buffer process))
(setf (process-get process :owns-buffer) nil))))
(cl-defun zmq-start-process (sexp &key filter sentinel buffer debug)
"Start an Emacs subprocess initializing it with SEXP.
Return the newly created process.
SEXP is either a lambda form or a function symbol. In both cases
the function can either take 0 or 1 arguments. If SEXP takes 1
argument, then a new context object will be passed as the
argument of the function.
FILTER is a function that takes a single argument, a complete
s-expression read from the process' stdout. This means that care
should be taken when writing SEXP to ensure that it only prints
out lists. Anything other value that SEXP prints will be ignored.
SENTINEL has the same meaning as in `make-process'.
BUFFER will be set as the `process-buffer' for the returnd
process if non-nil. When BUFFER is nil, a new buffer will be
created. When a BUFFER is supplied, it should not be used for any
other purpose after a call to this function since it will be used
to store intermediate output from the subprocess. If this
function creates a new buffer, that buffer will be killed on
process exit, but it is the responsiblity of the caller to kill
the buffer if a buffer is supplied to this function.
If DEBUG is non-nil, then the subprocess returns a backtrace if
it errors out and prints its stderr as messages in the parent
Emacs process."
(or debug (setq debug zmq--subprocess-debug))
(cond
((functionp sexp)
(unless (listp sexp)
(setq sexp (symbol-function sexp))))
(t (error "Can only send functions to processes")))
(cl-destructuring-bind (min . max) (func-arity sexp)
(unless (and (<= min 1) (or (not (numberp max)) (<= max 1)))
(error "Invalid function to send to process, can only have 0 or 1 arguments")))
(let* ((zmq-path (locate-library "zmq.el"))
(cmd (format "(zmq--init-subprocess %s)" (when debug t)))
;; stderr is split from stdout since the former is used by
;; Emacs to print messages that we don't want intermixed
;; with what the subprocess returns.
(stderr (make-pipe-process
:name "zmq stderr"
:buffer (generate-new-buffer " *zmq*")
:noquery t
:stop (not debug)))
(process (make-process
:name "zmq"
:buffer (or buffer (generate-new-buffer " *zmq*"))
:noquery t
:connection-type 'pipe
:coding 'no-conversion
:filter #'zmq--subprocess-filter
:sentinel #'zmq--subprocess-sentinel
:stderr stderr
:command (list
(file-truename
(expand-file-name invocation-name
invocation-directory))
"-Q" "-batch"
"-L" (file-name-directory zmq-path)
"-l" zmq-path "--eval" cmd))))
(process-put process :debug debug)
(process-put process :stderr stderr)
(process-put process :filter filter)
(process-put process :sentinel sentinel)
(process-put process :owns-buffer (null buffer))
(with-current-buffer (process-buffer process)
(let ((inhibit-read-only t))
(erase-buffer))
(special-mode))
(zmq-subprocess-send process (macroexpand-all sexp))
process))
;;; Download releases
(defun zmq--system-configuration-list (string)
(save-match-data
(string-match "\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)\\(?:-\\(.+\\)\\)?" string)
(let ((arch (match-string 1 string))
(vendor (match-string 2 string))
(sys (match-string 3 string))
(abi (match-string 4 string)))
(list arch vendor sys abi))))
(defun zmq--system-configuration ()
(cl-destructuring-bind (arch vendor sys abi)
(zmq--system-configuration-list system-configuration)
;; Attempt to handle common systems
(cond
((string-prefix-p "darwin" sys)
;; On OSX the sys part of the host is like
;; darwin17.1.0, but the binaries are compatible across
;; multiple versions. TODO: Figure out the actual ABI
;; compatibility.
(concat arch "-" vendor "-darwin"))
((and (member vendor '("pc" "unknown" "none"))
(equal sys "linux"))
(concat arch "-" sys "-" abi))
(t
system-configuration))))
(defun zmq--insert-url-contents (url)
;; Attempt to download URL using various methods
(cond
((and (executable-find "curl")
;; -s = silent, -L = follow redirects
(let ((default-process-coding-system '(binary . binary)))
(zerop (call-process "curl" nil (current-buffer) nil
"-s" "-L" url)))))
((and (executable-find "wget")
;; -q = quiet, -O - = output to stdout
(let ((default-process-coding-system '(binary . binary)))
(zerop (call-process "wget" nil (current-buffer) nil
"-q" "-O" "-" url)))))
(t
(require 'url-handlers)
(let ((buf (url-retrieve-synchronously url)))
(url-insert buf)))))
(defmacro zmq--download-url (url &rest body)
(declare (indent 1))
`(with-temp-buffer
(set-buffer-multibyte nil)
(zmq--insert-url-contents ,url)
(goto-char (point-min))
,@body))
(defun zmq--download-and-extract-file (url tgz-file)
(message "Downloading %s/%s" url tgz-file)
(let ((sig (zmq--download-url (concat url "/" tgz-file ".sha256")
(forward-sexp)
(let ((end (point)))
(buffer-substring
(progn (backward-sexp) (point))
end)))))
(message "Verifying sha256 signature of %s" tgz-file)
(zmq--download-url (concat url "/" tgz-file)
(if (not (equal sig (secure-hash 'sha256 (buffer-string))))
(error "Signature did not match content")
;; We write the tar.gz file so that Emacs properly uncompresses
;; it through `jka-compr' otherwise `tar-untar-buffer' will
;; fail with a weird error.
(set-buffer-multibyte nil)
(write-region nil nil tgz-file)))
(let ((buffer (find-file-noselect tgz-file)))
(unwind-protect
(with-current-buffer buffer
(require 'tar-mode)
(tar-untar-buffer))
(kill-buffer buffer)
(delete-file tgz-file)))))
(defvar json-object-type)
(defun zmq--download-module (tag)
(let ((msg "Check%s for compatible module binary to download%s"))
(when (or noninteractive (y-or-n-p (format msg "" "? ")))
(when noninteractive
(message msg "ing" ""))
(catch 'failure
(let* ((api-url "https://api.github.com/repos/nnicandro/emacs-zmq/")
(repo-url "https://github.com/nnicandro/emacs-zmq/")
(release-url (concat api-url "releases/"))
(info (zmq--download-url (concat release-url tag)
(require 'json)
(let ((json-object-type 'plist))
(ignore-errors (json-read)))))
(tag-name (or (plist-get info :tag_name)
(throw 'failure nil)))
(ezmq-sys (concat "emacs-zmq-" (zmq--system-configuration)))
(assets (cl-remove-if-not
(lambda (x) (string-prefix-p ezmq-sys x))
(mapcar (lambda (x) (plist-get x :name))
(append (plist-get info :assets) nil)))))
(when assets
;; We have a signature file and a tar.gz file for each binary so the
;; minimum number of files is two.
(if (> (length assets) 2)
(error "TODO More than one file found")
(let* ((tgz-file (cl-find-if (lambda (x) (string-suffix-p ".tar.gz" x))
assets))
(tgz-dir (expand-file-name
(substring tgz-file 0
(- (length tgz-file)
(length ".tar.gz"))))))
(zmq--download-and-extract-file
(concat repo-url "releases/download/" tag-name) tgz-file)
(let* ((pat "emacs-zmq\\.\\(dll\\|so\\|dylib\\)$")
(lib (car (directory-files tgz-dir t pat))))
(copy-file lib (expand-file-name (file-name-nondirectory lib))))
t))))))))
;;; Load emacs-zmq
(defun zmq-load ()
"Load the ZMQ dynamic module."
;; Assume the module is already loaded when one of its functions is defined.
(unless (functionp #'zmq--cleanup-globrefs)
(if module-file-suffix
(let ((default-directory (file-name-directory (locate-library "zmq.el"))))
(if (load (expand-file-name "emacs-zmq") t)
(add-hook 'post-gc-hook #'zmq--cleanup-globrefs)
;; Can also be "latest"
(if (zmq--download-module (concat "tags/" zmq-emacs-version))
(zmq-load)
(let ((msg "ZMQ module not found. Build%s it%s"))
(when (or noninteractive (y-or-n-p (format msg "" "? ")))
(when noninteractive
(message msg "ing" ""))
(let ((emacs
(when (and invocation-directory invocation-name)
(file-truename
(expand-file-name invocation-name
invocation-directory)))))
(cl-labels
((load-zmq
(_buf status)
(if (string= status "finished\n")
(zmq-load)
(warn "Something went wrong when compiling the ZMQ module!"))
(remove-hook 'compilation-finish-functions #'load-zmq)
(exit-recursive-edit)))
(add-hook 'compilation-finish-functions #'load-zmq)
(compile (concat "make" (when emacs (concat " EMACS=" emacs))))
(recursive-edit))))))))
(user-error "Modules are not supported"))))
(zmq-load)
(provide 'zmq)
;; Local Variables:
;; byte-compile-warnings: (not free-vars unresolved)
;; End:
;;; zmq.el ends here