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-06-06 00:33:04 +00:00
THIRD_PARTY_SQLITE3 \
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 \
2021-06-06 00:33:04 +00:00
o/$( MODE) /tool/net/lsqlite3.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 \
2021-05-17 02:05:35 +00:00
tool/net/demo/.lua/mymodule.lua \
Tune SQLite build for redbean (#97)
redbean lua handlers that perform sql queries can do 400k qps.
We now use a separate compile-time options for SQLite, when building the
SQLite shell versus building the production web serving code. It doesn't
seem appropriate for something like redbean to include backups, progress
callbacks, query completion, profiling, EXPLAIN, ALTER, ANALYZE, VACUUM,
etc. since those tasks are better left to the sqlite3.com shell program.
Lua SQLite pointer APIs have been removed since we're not using threads.
The Lua APIs for installing update / commit / rollback hooks are removed
due to a general sense of disagreement and an overall lack of comfort.
Full-Text Search and R*Tree are as large as the rest of SQLite combined.
Turning those off keeps redbean under 1mb when built for MODE=tiny which
is nice for marketing purposes.
If you need something that was removed, file an issue, and we'll add it.
2021-06-10 15:00:08 +00:00
tool/net/demo/sql.lua \
2021-04-25 00:09:01 +00:00
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-17 02:05:35 +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
@$( COMPILE) -ARM -T$@ rm -rf o/$( MODE) /tool/net/.lua
@$( COMPILE) -ACP -T$@ cp -R tool/net/demo/.lua o/$( MODE) /tool/net/
@( cd o/$( MODE) /tool/net && zip -qr redbean-demo.com .lua)
Tune SQLite build for redbean (#97)
redbean lua handlers that perform sql queries can do 400k qps.
We now use a separate compile-time options for SQLite, when building the
SQLite shell versus building the production web serving code. It doesn't
seem appropriate for something like redbean to include backups, progress
callbacks, query completion, profiling, EXPLAIN, ALTER, ANALYZE, VACUUM,
etc. since those tasks are better left to the sqlite3.com shell program.
Lua SQLite pointer APIs have been removed since we're not using threads.
The Lua APIs for installing update / commit / rollback hooks are removed
due to a general sense of disagreement and an overall lack of comfort.
Full-Text Search and R*Tree are as large as the rest of SQLite combined.
Turning those off keeps redbean under 1mb when built for MODE=tiny which
is nice for marketing purposes.
If you need something that was removed, file an issue, and we'll add it.
2021-06-10 15:00:08 +00:00
@$( COMPILE) -AZIP -T$@ zip -qj $@ tool/net/demo/hello.lua tool/net/demo/sql.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)