############################################################################ # apps/system/libuv/Makefile # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. The # ASF licenses this file to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance with the # License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # ############################################################################ include $(APPDIR)/Make.defs LIBUV_PATCHS ?= $(sort $(wildcard 000*.patch)) LIBUV_VERSION = 1.42.0 LIBUV_UNPACK = libuv LIBUV_TARBALL = v$(LIBUV_VERSION).zip LIBUV_URL_BASE = https://github.com/libuv/libuv/archive/refs/tags LIBUV_URL = $(LIBUV_URL_BASE)/$(LIBUV_TARBALL) $(LIBUV_TARBALL): @echo "Downloading: $(LIBUV_TARBALL)" $(Q) curl -L $(LIBUV_URL) -o $(LIBUV_TARBALL) $(LIBUV_UNPACK): $(LIBUV_TARBALL) @echo "Unpacking: $(LIBUV_TARBALL) -> $(LIBUV_UNPACK)" $(call DELDIR, $(LIBUV_UNPACK)) $(Q) unzip $(LIBUV_TARBALL) $(Q) mv libuv-$(LIBUV_VERSION) $(LIBUV_UNPACK) $(Q) cat $(LIBUV_PATCHS) | patch -s -N -d $(LIBUV_UNPACK) -p1 $(LIBUV_UNPACK)/.patch: $(LIBUV_UNPACK) $(Q) touch $(LIBUV_UNPACK)/.patch # Build libuv library CFLAGS += -I$(LIBUV_UNPACK)/src CFLAGS += -I$(LIBUV_UNPACK)/src/unix CFLAGS += -I$(LIBUV_UNPACK)/test CFLAGS += -Wno-shadow CFLAGS += -DDEF_THREADPOOL_SIZE=CONFIG_LIBUV_THREADPOOL_SIZE CFLAGS += -DDEF_THREADPOOL_STACKSIZE=CONFIG_LIBUV_THREAD_STACKSIZE GCCVER = $(shell $(CC) --version | grep gcc | sed -r 's/.* ([0-9]+\.[0-9]+\.[0-9]+).*/\1/') ifeq ($(GCCVER),12.2.1) CFLAGS += -Wno-dangling-pointer endif VPATH += $(LIBUV_UNPACK)/src VPATH += $(LIBUV_UNPACK)/src/unix VPATH += $(LIBUV_UNPACK)/test DEPPATH += --dep-path $(LIBUV_UNPACK)/src DEPPATH += --dep-path $(LIBUV_UNPACK)/src/unix DEPPATH += --dep-path $(LIBUV_UNPACK)/test CSRCS += core.c CSRCS += poll.c CSRCS += loop.c CSRCS += thread.c CSRCS += posix-hrtime.c CSRCS += posix-poll.c CSRCS += uv-data-getter-setters.c CSRCS += version.c ifeq ($(CONFIG_LIBUV_UTILS_TEST),) CSRCS += idna.c CSRCS += strscpy.c endif CSRCS += no-fsevents.c CSRCS += uv-common.c CSRCS += random-devurandom.c CSRCS += random.c CSRCS += nuttx.c CSRCS += tty.c CSRCS += loop-watcher.c CSRCS += signal.c CSRCS += stream.c CSRCS += threadpool.c CSRCS += async.c CSRCS += pipe.c CSRCS += fs.c CSRCS += fs-poll.c CSRCS += timer.c ifneq ($(CONFIG_LIBC_EXECFUNCS),) CSRCS += process-spawn.c endif CSRCS += sysinfo-loadavg.c CSRCS += sysinfo-memory.c ifneq ($(CONFIG_LIBC_DLFCN),) CSRCS += dl.c endif ifneq ($(CONFIG_NET),) CSRCS += getaddrinfo.c CSRCS += getnameinfo.c CSRCS += inet.c endif ifneq ($(CONFIG_NET_TCP),) CSRCS += tcp.c endif ifneq ($(CONFIG_NET_UDP),) CSRCS += udp.c endif ifeq ($(findstring y,$(CONFIG_LIBUV_UTILS_TEST)$(CONFIG_LIBUV_UTILS_BENCHMARK)), y) PRIORITY = $(CONFIG_LIBUV_UTILS_PRIORITY) STACKSIZE = $(CONFIG_LIBUV_UTILS_STACKSIZE) endif ifneq ($(CONFIG_LIBUV_UTILS_TEST),) PROGNAME = uv_run_tests MAINSRC = run-tests.c CSRCS += runner.c CSRCS += runner-unix.c CSRCS += echo-server.c CSRCS += test-active.c CSRCS += test-async.c CSRCS += test-async-null-cb.c CSRCS += test-barrier.c CSRCS += test-callback-order.c CSRCS += test-callback-stack.c CSRCS += test-close-fd.c CSRCS += test-close-order.c CSRCS += test-condvar.c CSRCS += test-connection-fail.c CSRCS += test-connect-unspecified.c CSRCS += test-cwd-and-chdir.c CSRCS += test-default-loop-close.c CSRCS += test-delayed-accept.c CSRCS += test-dlerror.c CSRCS += test-eintr-handling.c CSRCS += test-embed.c CSRCS += test-emfile.c CSRCS += test-env-vars.c CSRCS += test-error.c CSRCS += test-fail-always.c CSRCS += test-fs.c CSRCS += test-fs-copyfile.c CSRCS += test-fs-event.c CSRCS += test-fs-fd-hash.c CSRCS += test-fs-open-flags.c CSRCS += test-fs-poll.c CSRCS += test-fs-readdir.c CSRCS += test-getaddrinfo.c CSRCS += test-get-currentexe.c CSRCS += test-gethostname.c CSRCS += test-get-loadavg.c CSRCS += test-get-memory.c CSRCS += test-getnameinfo.c CSRCS += test-get-passwd.c CSRCS += test-getsockname.c CSRCS += test-getters-setters.c CSRCS += test-gettimeofday.c CSRCS += test-handle-fileno.c CSRCS += test-homedir.c CSRCS += test-hrtime.c CSRCS += test-idle.c CSRCS += test-idna.c CSRCS += test-ip4-addr.c CSRCS += test-ip6-addr.c CSRCS += test-ipc.c CSRCS += test-ipc-heavy-traffic-deadlock-bug.c CSRCS += test-ipc-send-recv.c CSRCS += test-loop-alive.c CSRCS += test-loop-close.c CSRCS += test-loop-configure.c CSRCS += test-loop-handles.c CSRCS += test-loop-stop.c CSRCS += test-loop-time.c CSRCS += test-metrics.c CSRCS += test-multiple-listen.c CSRCS += test-mutexes.c CSRCS += test-not-readable-nor-writable-on-read-error.c CSRCS += test-not-readable-on-eof.c CSRCS += test-not-writable-after-shutdown.c CSRCS += test-osx-select.c CSRCS += test-pass-always.c CSRCS += test-ping-pong.c CSRCS += test-pipe-bind-error.c CSRCS += test-pipe-connect-error.c CSRCS += test-pipe-connect-multiple.c CSRCS += test-pipe-connect-prepare.c CSRCS += test-pipe-getsockname.c CSRCS += test-pipe-pending-instances.c CSRCS += test-pipe-sendmsg.c CSRCS += test-pipe-server-close.c CSRCS += test-pipe-set-fchmod.c CSRCS += test-pipe-set-non-blocking.c CSRCS += test-platform-output.c CSRCS += test-poll.c CSRCS += test-poll-close.c CSRCS += test-poll-close-doesnt-corrupt-stack.c CSRCS += test-poll-closesocket.c CSRCS += test-poll-multiple-handles.c CSRCS += test-poll-oob.c CSRCS += test-process-priority.c CSRCS += test-process-title.c CSRCS += test-process-title-threadsafe.c CSRCS += test-queue-foreach-delete.c CSRCS += test-random.c CSRCS += test-ref.c CSRCS += test-run-nowait.c CSRCS += test-run-once.c CSRCS += test-semaphore.c CSRCS += test-shutdown-close.c CSRCS += test-shutdown-eof.c CSRCS += test-shutdown-simultaneous.c CSRCS += test-shutdown-twice.c CSRCS += test-signal.c CSRCS += test-signal-multiple-loops.c CSRCS += test-signal-pending-on-close.c CSRCS += test-socket-buffer-size.c CSRCS += test-spawn.c CSRCS += test-stdio-over-pipes.c CSRCS += test-strscpy.c CSRCS += test-tcp-alloc-cb-fail.c CSRCS += test-tcp-bind6-error.c CSRCS += test-tcp-bind-error.c CSRCS += test-tcp-close-accept.c CSRCS += test-tcp-close.c CSRCS += test-tcp-close-reset.c CSRCS += test-tcp-close-while-connecting.c CSRCS += test-tcp-connect6-error.c CSRCS += test-tcp-connect-error-after-write.c CSRCS += test-tcp-connect-error.c CSRCS += test-tcp-connect-timeout.c CSRCS += test-tcp-create-socket-early.c CSRCS += test-tcp-flags.c CSRCS += test-tcp-oob.c CSRCS += test-tcp-open.c CSRCS += test-tcp-read-stop.c CSRCS += test-tcp-read-stop-start.c CSRCS += test-tcp-shutdown-after-write.c CSRCS += test-tcp-try-write.c CSRCS += test-tcp-try-write-error.c CSRCS += test-tcp-unexpected-read.c CSRCS += test-tcp-write-after-connect.c CSRCS += test-tcp-writealot.c CSRCS += test-tcp-write-fail.c CSRCS += test-tcp-write-queue-order.c CSRCS += test-tcp-write-to-half-open-connection.c CSRCS += test-test-macros.c CSRCS += test-thread.c CSRCS += test-thread-equal.c CSRCS += test-threadpool.c CSRCS += test-threadpool-cancel.c CSRCS += test-timer-again.c CSRCS += test-timer.c CSRCS += test-timer-from-check.c CSRCS += test-tmpdir.c CSRCS += test-tty.c CSRCS += test-tty-duplicate-key.c CSRCS += test-tty-escape-sequence-processing.c CSRCS += test-udp-alloc-cb-fail.c CSRCS += test-udp-bind.c CSRCS += test-udp-connect.c CSRCS += test-udp-create-socket-early.c CSRCS += test-udp-dgram-too-big.c CSRCS += test-udp-ipv6.c CSRCS += test-udp-mmsg.c CSRCS += test-udp-multicast-interface6.c CSRCS += test-udp-multicast-interface.c CSRCS += test-udp-multicast-join6.c CSRCS += test-udp-multicast-join.c CSRCS += test-udp-multicast-ttl.c CSRCS += test-udp-open.c CSRCS += test-udp-options.c CSRCS += test-udp-send-and-recv.c CSRCS += test-udp-send-hang-loop.c CSRCS += test-udp-send-immediate.c CSRCS += test-udp-sendmmsg-error.c CSRCS += test-udp-send-unreachable.c CSRCS += test-udp-try-send.c CSRCS += test-uname.c CSRCS += test-walk-handles.c CSRCS += test-watcher-cross-stop.c endif ifneq ($(CONFIG_LIBUV_UTILS_BENCHMARK),) PROGNAME = uv_run_benchmarks MAINSRC = run-benchmarks.c CSRCS += runner.c CSRCS += runner-unix.c CSRCS += benchmark-async-pummel.c CSRCS += benchmark-async.c CSRCS += benchmark-fs-stat.c CSRCS += benchmark-getaddrinfo.c CSRCS += benchmark-loop-count.c CSRCS += benchmark-million-async.c CSRCS += benchmark-million-timers.c CSRCS += benchmark-multi-accept.c CSRCS += benchmark-ping-pongs.c CSRCS += benchmark-ping-udp.c CSRCS += benchmark-pound.c CSRCS += benchmark-pump.c CSRCS += benchmark-sizes.c CSRCS += benchmark-spawn.c CSRCS += benchmark-tcp-write-batch.c CSRCS += benchmark-thread.c CSRCS += benchmark-udp-pummel.c CSRCS += blackhole-server.c CSRCS += echo-server.c endif # Download and unpack tarball if no git repo found ifeq ($(wildcard $(LIBUV_UNPACK)/.git),) context:: $(LIBUV_UNPACK)/.patch distclean:: $(call DELDIR, $(LIBUV_UNPACK)) $(call DELFILE, $(LIBUV_TARBALL)) endif include $(APPDIR)/Application.mk