2020-06-15 14:18:57 +00:00
#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐
#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘
PKGS += TOOL_NET
TOOL_NET_FILES := $( wildcard tool/net/*)
TOOL_NET_SRCS = $( filter %.c,$( TOOL_NET_FILES) )
TOOL_NET_HDRS = $( filter %.h,$( TOOL_NET_FILES) )
2020-10-06 06:11:49 +00:00
TOOL_NET_OBJS = \
2020-06-15 14:18:57 +00:00
$( TOOL_NET_SRCS:%.c= o/$( MODE) /%.o)
2020-10-06 06:11:49 +00:00
TOOL_NET_COMS = \
2020-08-25 11:23:25 +00:00
$( TOOL_NET_SRCS:%.c= o/$( MODE) /%.com)
2020-10-06 06:11:49 +00:00
TOOL_NET_BINS = \
$( TOOL_NET_COMS) \
2020-06-15 14:18:57 +00:00
$( TOOL_NET_COMS:%= %.dbg)
2020-10-06 06:11:49 +00:00
TOOL_NET_DIRECTDEPS = \
LIBC_ALG \
LIBC_BITS \
LIBC_CALLS \
LIBC_DNS \
LIBC_FMT \
2021-01-16 20:05:41 +00:00
LIBC_INTRIN \
2020-10-06 06:11:49 +00:00
LIBC_LOG \
LIBC_MEM \
LIBC_NEXGEN32E \
2020-12-09 23:04:54 +00:00
LIBC_RAND \
2020-10-06 06:11:49 +00:00
LIBC_RUNTIME \
LIBC_SOCK \
LIBC_STDIO \
LIBC_STR \
LIBC_STUBS \
LIBC_SYSV \
LIBC_SYSV_CALLS \
LIBC_TIME \
2021-03-29 09:39:20 +00:00
LIBC_TINYMATH \
2020-10-06 06:11:49 +00:00
LIBC_UNICODE \
LIBC_X \
NET_HTTP \
THIRD_PARTY_GETOPT \
2021-03-22 00:27:53 +00:00
THIRD_PARTY_LUA \
2021-04-21 02:14:21 +00:00
THIRD_PARTY_REGEX \
2020-10-06 06:11:49 +00:00
THIRD_PARTY_ZLIB \
2020-06-15 14:18:57 +00:00
TOOL_DECODE_LIB
2020-10-06 06:11:49 +00:00
TOOL_NET_DEPS := \
2020-06-15 14:18:57 +00:00
$( call uniq,$( foreach x,$( TOOL_NET_DIRECTDEPS) ,$( $( x) ) ) )
2020-10-06 06:11:49 +00:00
o/$(MODE)/tool/net/net.pkg : \
$( TOOL_NET_OBJS) \
2020-06-15 14:18:57 +00:00
$( foreach x,$( TOOL_NET_DIRECTDEPS) ,$( $( x) _A) .pkg)
2020-10-06 06:11:49 +00:00
o/$(MODE)/tool/net/%.com.dbg : \
$( TOOL_NET_DEPS) \
o/$( MODE) /tool/net/%.o \
o/$( MODE) /tool/net/net.pkg \
$( CRT) \
$( APE)
@$( APELINK)
o/$(MODE)/tool/net/redbean.com.dbg : \
$( TOOL_NET_DEPS) \
o/$( MODE) /tool/net/redbean.o \
2020-11-28 20:01:51 +00:00
o/$( MODE) /tool/net/net.pkg \
$( CRT) \
$( APE)
@$( APELINK)
2021-04-18 18:34:59 +00:00
o/$(MODE)/tool/net/redbean.com : \
o/$( MODE) /tool/net/redbean.com.dbg \
2021-04-23 17:45:19 +00:00
tool/net/net.mk \
2021-05-14 12:36:58 +00:00
tool/net/.help.txt \
2021-04-18 18:34:59 +00:00
tool/net/.init.lua \
2021-04-25 00:09:01 +00:00
tool/net/favicon.ico \
tool/net/redbean.png
2021-04-18 18:34:59 +00:00
@$( COMPILE) -AOBJCOPY -T$@ $( OBJCOPY) -S -O binary $< $@
@$( COMPILE) -ADD -T$@ dd if = $@ of = o/$( MODE) /tool/net/.ape bs = 64 count = 11 conv = notrunc 2>/dev/null
2021-05-14 12:36:58 +00:00
@$( COMPILE) -AZIP -T$@ zip -qj $@ o/$( MODE) /tool/net/.ape tool/net/.help.txt tool/net/.init.lua tool/net/favicon.ico tool/net/redbean.png
2021-04-18 18:34:59 +00:00
2021-04-24 20:58:34 +00:00
o/$(MODE)/tool/net/redbean-demo.com.dbg : \
o/$( MODE) /tool/net/redbean.com.dbg
@$( COMPILE) -ACP -T$@ cp $< $@
2021-04-18 18:34:59 +00:00
o/$(MODE)/tool/net/redbean-demo.com : \
2021-04-24 20:58:34 +00:00
o/$( MODE) /tool/net/redbean-demo.com.dbg \
2021-04-21 02:14:21 +00:00
tool/net/net.mk \
2021-04-23 17:45:19 +00:00
tool/net/favicon.ico \
tool/net/redbean.png \
2021-05-14 12:36:58 +00:00
tool/net/.help.txt \
2021-04-25 00:09:01 +00:00
tool/net/demo/.init.lua \
tool/net/demo/.reload.lua \
tool/net/demo/404.html \
tool/net/demo/hello.lua \
tool/net/demo/index.html \
tool/net/demo/redbean.css \
tool/net/demo/redbean.lua \
tool/net/demo/redbean-form.lua \
tool/net/demo/redbean-xhr.lua \
tool/net/demo/seekable.txt \
2021-04-25 02:49:49 +00:00
tool/net/demo/virtualbean.html \
2021-04-21 02:14:21 +00:00
tool/net/redbean.c \
net/http/parsehttprequest.c \
net/http/parseurl.c \
net/http/encodeurl.c \
test/net/http/parsehttprequest_test.c \
test/net/http/parseurl_test.c
2021-04-23 17:45:19 +00:00
@$( COMPILE) -AOBJCOPY -T$@ $( OBJCOPY) -S -O binary $< $@
2021-04-25 00:09:01 +00:00
@$( COMPILE) -AMKDIR -T$@ mkdir -p o/$( MODE) /tool/net/.redbean-demo
@$( COMPILE) -ADD -T$@ dd if = $@ of = o/$( MODE) /tool/net/.redbean-demo/.ape bs = 64 count = 11 conv = notrunc 2>/dev/null
2021-05-14 12:36:58 +00:00
@$( COMPILE) -AZIP -T$@ zip -qj $@ o/$( MODE) /tool/net/.redbean-demo/.ape tool/net/.help.txt tool/net/demo/.init.lua tool/net/demo/.reload.lua tool/net/demo/hello.lua
2021-04-25 02:49:49 +00:00
@echo "<-- check out this lua server page" | $( COMPILE) -AZIP -T$@ zip -cqj $@ tool/net/demo/redbean.lua
@$( COMPILE) -AZIP -T$@ zip -qj $@ tool/net/demo/404.html tool/net/favicon.ico tool/net/redbean.png tool/net/demo/redbean-form.lua tool/net/demo/redbean-xhr.lua
@echo Uncompressed for HTTP Range requests | $( COMPILE) -AZIP -T$@ zip -cqj0 $@ tool/net/demo/seekable.txt
@$( COMPILE) -AZIP -T$@ zip -q $@ tool/net/ tool/net/demo/ tool/net/demo/index.html tool/net/demo/redbean.css tool/net/redbean.c net/http/parsehttprequest.c net/http/parseurl.c net/http/encodeurl.c test/net/http/parsehttprequest_test.c test/net/http/parseurl_test.c
2021-05-01 12:11:35 +00:00
@printf "<p>This is a live instance of <a href=https://justine.lol/redbean/>redbean</a>: a tiny multiplatform webserver that <a href=https://news.ycombinator.com/item?id=26271117>went viral</a> on hacker news a few months ago.\r\nSince then, we've added Lua dynamic serving, which also goes as fast as 1,000,000 requests per second on a core i9 (rather than a cheap virtual machine like this). the text you're reading now is a PKZIP End Of Central Directory comment.\r\n<p>redbean aims to be production worthy across six operating systems, using a single executable file (this demo is hosted on FreeBSD 13). redbean has been enhanced to restore the APE header after startup.\r\nIt automatically generates this listing page based on your ZIP contents. If you use redbean as an application server / web development environment,\r\nthen you'll find other new and useful features like function call logging so you can get that sweet sweet microsecond scale latency." | $( COMPILE) -AZIP -T$@ zip -z $@
2021-04-25 02:49:49 +00:00
@$( COMPILE) -AMKDIR -T$@ mkdir -p o/$( MODE) /tool/net/virtualbean.justine.lol/
@$( COMPILE) -ACP -T$@ cp tool/net/redbean.png o/$( MODE) /tool/net/virtualbean.justine.lol/redbean.png
@$( COMPILE) -ACP -T$@ cp tool/net/demo/virtualbean.html o/$( MODE) /tool/net/virtualbean.justine.lol/index.html
@( cd o/$( MODE) /tool/net && zip -q redbean-demo.com virtualbean.justine.lol/)
@( cd o/$( MODE) /tool/net && echo 'Go to <a href=http://virtualbean.justine.lol>http://virtualbean.justine.lol</a>' | zip -cq redbean-demo.com virtualbean.justine.lol/index.html)
@( cd o/$( MODE) /tool/net && zip -q redbean-demo.com virtualbean.justine.lol/redbean.png)
2021-04-21 02:14:21 +00:00
o/$(MODE)/tool/net/redbean-static.com : \
o/$( MODE) /tool/net/redbean-static.com.dbg \
tool/net/favicon.ico \
tool/net/redbean.png
@$( COMPILE) -AOBJCOPY -T$@ $( OBJCOPY) -S -O binary $< $@
2021-04-25 00:09:01 +00:00
@$( COMPILE) -AMKDIR -T$@ mkdir -p o/$( MODE) /tool/net/.redbean-static
@$( COMPILE) -ADD -T$@ dd if = $@ of = o/$( MODE) /tool/net/.redbean-static/.ape bs = 64 count = 11 conv = notrunc 2>/dev/null
@$( COMPILE) -AZIP -T$@ zip -qj $@ o/$( MODE) /tool/net/.redbean-static/.ape tool/net/favicon.ico tool/net/redbean.png
2021-04-21 02:14:21 +00:00
o/$(MODE)/tool/net/redbean-static.com.dbg : \
$( TOOL_NET_DEPS) \
o/$( MODE) /tool/net/redbean-static.o \
o/$( MODE) /tool/net/net.pkg \
$( CRT) \
$( APE)
@$( APELINK)
o/$(MODE)/tool/net/redbean-static.o : tool /net /redbean .c
@$( COMPILE) -AOBJECTIFY.c $( OBJECTIFY.c) -DSTATIC $( OUTPUT_OPTION) $<
2021-04-18 18:34:59 +00:00
2020-06-15 14:18:57 +00:00
.PHONY : o /$( MODE ) /tool /net
2020-10-06 06:11:49 +00:00
o/$(MODE)/tool/net : \
$( TOOL_NET_BINS) \
2020-09-07 04:39:00 +00:00
$( TOOL_NET_CHECKS)