mirror of
https://github.com/jorisvink/kore
synced 2025-03-09 12:39:01 -04:00
Before kore needed to be built with NOTLS=1 to be able to do non TLS connections. This has been like this for years. It is time to allow non TLS listeners without having to rebuild Kore. This commit changes your configuration format and will break existing applications their config. Configurations now get listener {} contexts: listen default { bind 127.0.0.1 8888 } The above will create a listener on 127.0.0.1, port 8888 that will serve TLS (still the default). If you want to turn off TLS on that listener, specify "tls no" in that context. Domains now need to be attached to a listener: Eg: domain * { attach default } For the Python API this kills kore.bind(), and kore.bind_unix(). They are replaced with: kore.listen("name", ip=None, port=None, path=None, tls=True).
208 lines
5.0 KiB
Makefile
208 lines
5.0 KiB
Makefile
# Kore Makefile
|
|
|
|
CC?=cc
|
|
PREFIX?=/usr/local
|
|
OBJDIR?=obj
|
|
KORE=kore
|
|
KODEV=kodev/kodev
|
|
KORE_CRYPTO?=crypto
|
|
INSTALL_DIR=$(PREFIX)/bin
|
|
MAN_DIR?=$(PREFIX)/share/man
|
|
SHARE_DIR=$(PREFIX)/share/kore
|
|
INCLUDE_DIR=$(PREFIX)/include/kore
|
|
|
|
VERSION=src/version.c
|
|
PLATFORM=src/platform.h
|
|
|
|
S_SRC= src/kore.c src/buf.c src/config.c src/connection.c \
|
|
src/domain.c src/filemap.c src/fileref.c src/mem.c src/msg.c \
|
|
src/module.c src/net.c src/pool.c src/runtime.c src/timer.c \
|
|
src/utils.c src/worker.c src/keymgr.c $(VERSION)
|
|
|
|
FEATURES=
|
|
FEATURES_INC=
|
|
|
|
CFLAGS+=-Wall -Werror -Wstrict-prototypes -Wmissing-prototypes
|
|
CFLAGS+=-Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual
|
|
CFLAGS+=-Wsign-compare -Iinclude/kore -std=c99 -pedantic
|
|
CFLAGS+=-DPREFIX='"$(PREFIX)"' -fstack-protector-all
|
|
|
|
ifneq ("$(OPENSSL_PATH)", "")
|
|
CFLAGS+=-I$(OPENSSL_PATH)/include
|
|
LDFLAGS=-rdynamic -L$(OPENSSL_PATH) -lssl -l$(KORE_CRYPTO)
|
|
else
|
|
LDFLAGS=-rdynamic -lssl -l$(KORE_CRYPTO)
|
|
endif
|
|
|
|
ifneq ("$(KORE_SINGLE_BINARY)", "")
|
|
CFLAGS+=-DKORE_SINGLE_BINARY
|
|
FEATURES+=-DKORE_SINGLE_BINARY
|
|
endif
|
|
|
|
ifneq ("$(DEBUG)", "")
|
|
CFLAGS+=-DKORE_DEBUG -g
|
|
FEATURES+=-DKORE_DEBUG
|
|
NOOPT=1
|
|
endif
|
|
|
|
ifneq ("$(NOOPT)", "")
|
|
CFLAGS+=-O0
|
|
else
|
|
CFLAGS+=-O2
|
|
endif
|
|
|
|
ifneq ("$(NOSENDFILE)", "")
|
|
CFLAGS+=-DKORE_NO_SENDFILE
|
|
endif
|
|
|
|
ifneq ("$(NOHTTP)", "")
|
|
CFLAGS+=-DKORE_NO_HTTP
|
|
FEATURES+=-DKORE_NO_HTTP
|
|
else
|
|
S_SRC+= src/auth.c src/accesslog.c src/http.c \
|
|
src/validator.c src/websocket.c
|
|
endif
|
|
|
|
ifneq ("$(PGSQL)", "")
|
|
S_SRC+=src/pgsql.c
|
|
LDFLAGS+=-L$(shell pg_config --libdir) -lpq
|
|
CFLAGS+=-I$(shell pg_config --includedir) -DKORE_USE_PGSQL \
|
|
-DPGSQL_INCLUDE_PATH="\"$(shell pg_config --includedir)\""
|
|
FEATURES+=-DKORE_USE_PGSQL
|
|
FEATURES_INC+=-I$(shell pg_config --includedir)
|
|
endif
|
|
|
|
ifneq ("$(TASKS)", "")
|
|
S_SRC+=src/tasks.c
|
|
LDFLAGS+=-lpthread
|
|
CFLAGS+=-DKORE_USE_TASKS
|
|
FEATURES+=-DKORE_USE_TASKS
|
|
endif
|
|
|
|
ifneq ("$(JSONRPC)", "")
|
|
S_SRC+=src/jsonrpc.c
|
|
LDFLAGS+=-lyajl
|
|
CFLAGS+=-DKORE_USE_JSONRPC
|
|
FEATURES+=-DKORE_USE_JSONRPC
|
|
endif
|
|
|
|
ifneq ("$(PYTHON)", "")
|
|
S_SRC+=src/python.c
|
|
KORE_PYTHON_LIB?=$(shell python3-config --ldflags)
|
|
KORE_PYTHON_INC?=$(shell python3-config --includes)
|
|
LDFLAGS+=$(KORE_PYTHON_LIB)
|
|
CFLAGS+=$(KORE_PYTHON_INC) -DKORE_USE_PYTHON
|
|
FEATURES+=-DKORE_USE_PYTHON
|
|
FEATURES_INC+=$(KORE_PYTHON_INC)
|
|
endif
|
|
|
|
OSNAME=$(shell uname -s | sed -e 's/[-_].*//g' | tr A-Z a-z)
|
|
ifeq ("$(OSNAME)", "freebsd")
|
|
KORE_CURL_LIB=-L/usr/local/lib -lcurl
|
|
KORE_CURL_INC=-I/usr/local/include
|
|
endif
|
|
|
|
ifneq ("$(CURL)", "")
|
|
S_SRC+=src/curl.c
|
|
KORE_CURL_LIB?=$(shell pkg-config --libs libcurl)
|
|
KORE_CURL_INC?=$(shell pkg-config --cflags libcurl)
|
|
LDFLAGS+=$(KORE_CURL_LIB)
|
|
CFLAGS+=$(KORE_CURL_INC) -DKORE_USE_CURL
|
|
FEATURES+=-DKORE_USE_CURL
|
|
FEATURES_INC+=$(KORE_CURL_INC)
|
|
endif
|
|
|
|
ifneq ("$(SANITIZE)", "")
|
|
CFLAGS+=-fsanitize=$(SANITIZE)
|
|
LDFLAGS+=-fsanitize=$(SANITIZE)
|
|
endif
|
|
|
|
ifeq ("$(OSNAME)", "darwin")
|
|
CFLAGS+=-I/opt/local/include/ -I/usr/local/opt/openssl/include
|
|
LDFLAGS+=-L/opt/local/lib -L/usr/local/opt/openssl/lib
|
|
S_SRC+=src/bsd.c
|
|
else ifeq ("$(OSNAME)", "linux")
|
|
CFLAGS+=-D_GNU_SOURCE=1 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
|
|
LDFLAGS+=-ldl
|
|
S_SRC+=src/linux.c src/seccomp.c
|
|
else
|
|
S_SRC+=src/bsd.c
|
|
ifneq ("$(JSONRPC)", "")
|
|
CFLAGS+=-I/usr/local/include
|
|
LDFLAGS+=-L/usr/local/lib
|
|
endif
|
|
endif
|
|
|
|
S_OBJS= $(S_SRC:src/%.c=$(OBJDIR)/%.o)
|
|
|
|
all: $(PLATFORM) $(VERSION) $(KORE) $(KODEV)
|
|
|
|
$(PLATFORM): force
|
|
@if [ -f misc/$(OSNAME)-platform.sh ]; then \
|
|
misc/$(OSNAME)-platform.sh > $(PLATFORM) ; \
|
|
fi
|
|
|
|
$(VERSION): force
|
|
@if [ -d .git ]; then \
|
|
GIT_REVISION=`git rev-parse --short=8 HEAD`; \
|
|
GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`; \
|
|
rm -f $(VERSION); \
|
|
printf "const char *kore_version = \"%s-%s\";\n" \
|
|
$$GIT_BRANCH $$GIT_REVISION > $(VERSION); \
|
|
elif [ -f RELEASE ]; then \
|
|
printf "const char *kore_version = \"%s\";\n" \
|
|
`cat RELEASE` > $(VERSION); \
|
|
else \
|
|
echo "No version information found (no .git or RELEASE)"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
$(KODEV):
|
|
$(MAKE) -C kodev
|
|
|
|
$(KORE): $(OBJDIR) $(S_OBJS)
|
|
$(CC) $(S_OBJS) $(LDFLAGS) -o $(KORE)
|
|
@echo $(FEATURES) $(FEATURES_INC) > kore.features
|
|
|
|
objects: $(OBJDIR) $(S_OBJS)
|
|
@echo $(LDFLAGS) > $(OBJDIR)/ldflags
|
|
@echo "$(FEATURES) $(FEATURES_INC)" > $(OBJDIR)/features
|
|
|
|
$(OBJDIR):
|
|
@mkdir -p $(OBJDIR)
|
|
|
|
install:
|
|
mkdir -p $(SHARE_DIR)
|
|
mkdir -p $(INCLUDE_DIR)
|
|
mkdir -p $(INSTALL_DIR)
|
|
mkdir -p $(MAN_DIR)/man1
|
|
install -m 644 share/man/kodev.1 $(MAN_DIR)/man1/kodev.1
|
|
install -m 555 $(KORE) $(INSTALL_DIR)/$(KORE)
|
|
install -m 644 kore.features $(SHARE_DIR)/features
|
|
install -m 644 include/kore/*.h $(INCLUDE_DIR)
|
|
$(MAKE) -C kodev install
|
|
|
|
uninstall:
|
|
rm -f $(INSTALL_DIR)/$(KORE)
|
|
rm -rf $(INCLUDE_DIR)
|
|
rm -rf $(SHARE_DIR)
|
|
$(MAKE) -C kodev uninstall
|
|
|
|
$(OBJDIR)/%.o: src/%.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
rm -f $(VERSION)
|
|
find . -type f -name \*.o -exec rm {} \;
|
|
rm -rf $(KORE) $(OBJDIR) kore.features
|
|
$(MAKE) -C kodev clean
|
|
|
|
releng-build-examples:
|
|
rm -rf /tmp/kore_releng
|
|
$(MAKE) clean
|
|
$(MAKE) PYTHON=1 PGSQL=1 TASKS=1 PREFIX=/tmp/kore_releng
|
|
$(MAKE) install PREFIX=/tmp/kore_releng
|
|
$(MAKE) -C examples
|
|
|
|
.PHONY: all clean force
|