mirror of
https://github.com/clearlinux/graphene.git
synced 2026-09-03 20:31:40 +00:00
Instead of 'loader.debug_type', introduce 'loader.log_level' and 'loader.log_file', along with a set of definitions for logging at a chosen level. For now, the call sites keep using the legacy macros (SGX_DBG and debug()), because converting them all will conflict with other big changes in the code base. The existing LibOS calls are assumed to be at 'info' level.
138 lines
4.5 KiB
Makefile
138 lines
4.5 KiB
Makefile
THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
|
|
|
INSTALL_DIR ?= $(THIS_DIR)install
|
|
|
|
LIGHTTPD_SRC ?= $(THIS_DIR)lighttpd-1.4.54
|
|
LIGHTTPD_HASH ?= 5151d38cb7c4c40effa13710e77ebdbef899f945b062cf32befc02d128ac424c
|
|
|
|
LIGHTTPD_MIRRORS ?= \
|
|
https://download.lighttpd.net/lighttpd/releases-1.4.x/
|
|
|
|
# Host and port on which lighttpd listens
|
|
HOST ?= 127.0.0.1
|
|
PORT ?= 8003
|
|
|
|
# Relative path to Graphene root
|
|
GRAPHENEDIR ?= $(THIS_DIR)../..
|
|
SGX_SIGNER_KEY ?= $(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/enclave-key.pem
|
|
|
|
ifeq ($(DEBUG),1)
|
|
GRAPHENE_LOG_LEVEL = debug
|
|
else
|
|
GRAPHENE_LOG_LEVEL = error
|
|
endif
|
|
|
|
CONF_FILES = lighttpd-server.conf lighttpd.conf
|
|
|
|
.PHONY: all
|
|
all: $(INSTALL_DIR)/sbin/lighttpd lighttpd.manifest $(CONF_FILES) testdata | pal_loader
|
|
ifeq ($(SGX),1)
|
|
all: lighttpd.manifest.sgx lighttpd.sig lighttpd.token
|
|
endif
|
|
|
|
include ../../Scripts/Makefile.configs
|
|
|
|
# The commands for downloading and compiling the lighttpd source code, and
|
|
# installing the binaries.
|
|
$(INSTALL_DIR)/sbin/lighttpd: $(LIGHTTPD_SRC)/configure
|
|
cd $(LIGHTTPD_SRC) && ./configure --prefix=$(abspath $(INSTALL_DIR)) \
|
|
--without-openssl --without-pcre --without-zlib --without-bzip2
|
|
cd $(LIGHTTPD_SRC) && $(MAKE)
|
|
cd $(LIGHTTPD_SRC) && $(MAKE) install
|
|
|
|
$(LIGHTTPD_SRC)/configure: $(LIGHTTPD_SRC).tar.gz
|
|
tar -xzf $<
|
|
# Refresh the timestamp, but only for this file - otherwise ./configure starts recreating too
|
|
# much.
|
|
touch $(LIGHTTPD_SRC)/configure
|
|
|
|
$(LIGHTTPD_SRC).tar.gz:
|
|
$(GRAPHENEDIR)/Scripts/download --output $@ --sha256 $(LIGHTTPD_HASH) $(foreach mirror,$(LIGHTTPD_MIRRORS),--url $(mirror)/$(LIGHTTPD_SRC).tar.gz)
|
|
|
|
# Generate manifest rules for lighttpd dependencies.
|
|
# We'll duplicate some Glibc libraries (which Graphene provides in a customized version), but
|
|
# there's no harm in this.
|
|
PROGRAMS = $(INSTALL_DIR)/sbin/lighttpd \
|
|
$(INSTALL_DIR)/lib/mod_indexfile.so \
|
|
$(INSTALL_DIR)/lib/mod_dirlisting.so \
|
|
$(INSTALL_DIR)/lib/mod_staticfile.so
|
|
.INTERMEDIATE: trusted-libs
|
|
trusted-libs: ../common_tools/get_deps.sh $(INSTALL_DIR)/sbin/lighttpd
|
|
../common_tools/get_deps.sh $(PROGRAMS) > $@
|
|
|
|
lighttpd.manifest: lighttpd.manifest.template trusted-libs
|
|
(sed -e 's|$$(GRAPHENEDIR)|'"$(GRAPHENEDIR)"'|g' \
|
|
-e 's|$$(GRAPHENE_LOG_LEVEL)|'"$(GRAPHENE_LOG_LEVEL)"'|g' \
|
|
-e 's|$$(INSTALL_DIR)|'"$(INSTALL_DIR)"'|g' \
|
|
-e 's|$$(INSTALL_DIR_ABSPATH)|'"$(abspath $(INSTALL_DIR))"'|g' \
|
|
-e 's|$$(ARCH_LIBDIR)|'"$(ARCH_LIBDIR)"'|g' \
|
|
$<; \
|
|
cat trusted-libs) > $@
|
|
|
|
# Generate the SGX-specific manifest (lighttpd.manifest.sgx), the enclave signature, and the token
|
|
# for enclave initialization.
|
|
lighttpd.manifest.sgx: lighttpd.manifest $(INSTALL_DIR)/sbin/lighttpd
|
|
$(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/pal-sgx-sign \
|
|
-libpal $(GRAPHENEDIR)/Runtime/libpal-Linux-SGX.so \
|
|
-key $(SGX_SIGNER_KEY) \
|
|
-manifest lighttpd.manifest -output $@
|
|
|
|
lighttpd.sig: lighttpd.manifest.sgx
|
|
|
|
lighttpd.token: lighttpd.sig
|
|
$(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/pal-sgx-get-token -output $@ -sig $^
|
|
|
|
pal_loader:
|
|
ln -s $(GRAPHENEDIR)/Runtime/pal_loader $@
|
|
|
|
# lighttpd configuration and test data
|
|
|
|
lighttpd-server.conf:
|
|
@$(RM) $@
|
|
@echo "server.document-root = \"$(abspath $(INSTALL_DIR))/html\"" >> $@
|
|
@echo "server.port = $(PORT)" >> $@
|
|
@echo "server.bind = \"$(HOST)\"" >> $@
|
|
|
|
lighttpd.conf:
|
|
@$(RM) $@
|
|
@echo "include \"lighttpd-server.conf\"" >> $@
|
|
@echo "include \"lighttpd-generic.conf\"" >> $@
|
|
|
|
# Generate variously-sized HTML files in $(RANDOM_DIR)
|
|
RANDOM_DIR = $(INSTALL_DIR)/html/random
|
|
RANDOM_FILES = \
|
|
$(foreach n,1 2 3 4 5 6 7 8 9 10,2K.$n.html) \
|
|
$(foreach n,1 2 3 4 5,10K.$n.html) \
|
|
$(foreach n,1 2 3 4 5,100K.$n.html) \
|
|
$(foreach n,1 2 3,1M.$n.html) \
|
|
$(foreach n,1 2 3,10M.$n.html) \
|
|
$(foreach n,1 2 3,100.$n.html)
|
|
|
|
TEST_DATA = $(addprefix $(RANDOM_DIR)/,$(RANDOM_FILES))
|
|
|
|
$(RANDOM_DIR)/%.html:
|
|
mkdir -p $(RANDOM_DIR)
|
|
dd if=/dev/urandom of=$@ count=1 bs=$(basename $(basename $(notdir $@))) status=none
|
|
|
|
.PHONY: testdata
|
|
testdata: $(TEST_DATA)
|
|
|
|
# Targets to run lighttpd
|
|
|
|
.PHONY: start-native-server
|
|
start-native-server: all
|
|
$(INSTALL_DIR)/sbin/lighttpd -D -m $(INSTALL_DIR)/lib -f lighttpd.conf
|
|
|
|
.PHONY: start-graphene-server
|
|
start-graphene-server: all
|
|
./pal_loader ./lighttpd -D -m $(INSTALL_DIR)/lib -f lighttpd.conf
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(RM) *.manifest *.manifest.sgx *.token *.sig pal_loader OUTPUT result-* $(CONF_FILES) \
|
|
pal_loader
|
|
|
|
.PHONY: distclean
|
|
distclean: clean
|
|
$(RM) -r $(LIGHTTPD_SRC).tar.gz $(LIGHTTPD_SRC) $(INSTALL_DIR) $(TEST_DATA) *.pem
|