Use new build directory arch

This commit is contained in:
Hui, Chunyang 2020-07-21 03:54:35 +00:00 committed by zongmin.gzm
parent 5e8f997d4d
commit 259c485427
9 changed files with 73 additions and 50 deletions

1
.gitignore vendored

@ -3,5 +3,4 @@
*.so *.so
*.orig *.orig
build/ build/
build_sim/
.DS_Store .DS_Store

@ -2,7 +2,7 @@ include ../sgxenv.mk
EXEC_PROTO := occlum_exec.proto EXEC_PROTO := occlum_exec.proto
SRC_FILES := $(shell find . -type f -name '*.rs') Cargo.toml $(EXEC_PROTO) SRC_FILES := $(shell find . -type f -name '*.rs') Cargo.toml $(EXEC_PROTO)
RUST_TARGET_DIR := $(BUILD_DIR)/src/exec/cargo-target RUST_TARGET_DIR := $(OBJ_DIR)/exec/cargo-target
RUST_OUT_DIR := $(BUILD_DIR)/bin RUST_OUT_DIR := $(BUILD_DIR)/bin
EXEC_TARGET := $(RUST_OUT_DIR)/*occlum_exec* EXEC_TARGET := $(RUST_OUT_DIR)/*occlum_exec*

@ -46,26 +46,35 @@ LIBOS_LOG ?= error
LIBOS_SONAME := libocclum-libos.so.$(MAJOR_VER_NUM) LIBOS_SONAME := libocclum-libos.so.$(MAJOR_VER_NUM)
ifneq ($(SGX_MODE), HW) ifneq ($(SGX_MODE), HW)
LIBOS_CORE_LIB_NAME := occlum-libos-core_sim
LIBOS_SO_REAL := $(BUILD_DIR)/lib/libocclum-libos_sim.so.$(VERSION_NUM) LIBOS_SO_REAL := $(BUILD_DIR)/lib/libocclum-libos_sim.so.$(VERSION_NUM)
else else
LIBOS_CORE_LIB_NAME := occlum-libos-core
LIBOS_SO_REAL := $(BUILD_DIR)/lib/libocclum-libos.so.$(VERSION_NUM) LIBOS_SO_REAL := $(BUILD_DIR)/lib/libocclum-libos.so.$(VERSION_NUM)
endif endif
LIBOS_CORE_A := $(BUILD_DIR)/lib/libocclum-libos-core.a LIBOS_CORE_A := $(OBJ_DIR)/libos/lib/lib$(LIBOS_CORE_LIB_NAME).a
LIBOS_CORE_RS_A := $(BUILD_DIR)/lib/libocclum_libos_core_rs.a LIBOS_CORE_RS_A := $(OBJ_DIR)/libos/lib/libocclum_libos_core_rs.a
# All source code # All source code
RUST_SRCS := $(wildcard src/*.rs src/*/*.rs src/*/*/*.rs src/*/*/*/*.rs src/*/*/*/*/*.rs) RUST_SRCS := $(wildcard src/*.rs src/*/*.rs src/*/*/*.rs src/*/*/*/*.rs src/*/*/*/*/*.rs)
RUST_TARGET_DIR := $(BUILD_DIR)/src/libos/cargo-target RUST_TARGET_DIR := $(OBJ_DIR)/libos/cargo-target
RUST_OUT_DIR := $(BUILD_DIR)/lib RUST_OUT_DIR := $(OBJ_DIR)/libos/lib
EDL_C_SRCS := $(addprefix $(BUILD_DIR)/src/libos/,src/Enclave_t.c src/Enclave_t.h) EDL_C_SRCS := $(addprefix $(OBJ_DIR)/libos/,$(SRC_OBJ)/Enclave_t.c $(SRC_OBJ)/Enclave_t.h)
EDL_C_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,src/Enclave_t.o) EDL_C_OBJS := $(addprefix $(OBJ_DIR)/libos/,$(SRC_OBJ)/Enclave_t.o)
C_SRCS := $(sort $(wildcard src/*.c src/*/*.c src/*/*/*.c)) C_SRCS := $(sort $(wildcard src/*.c src/*/*.c src/*/*/*.c))
C_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(C_SRCS:.c=.o))
CXX_SRCS := $(sort $(wildcard src/*.cpp src/*/*.cpp)) CXX_SRCS := $(sort $(wildcard src/*.cpp src/*/*.cpp))
CXX_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(CXX_SRCS:.cpp=.o))
S_SRCS := $(sort $(wildcard src/*.S src/*/*.S src/*/*/*.S)) S_SRCS := $(sort $(wildcard src/*.S src/*/*.S src/*/*/*.S))
S_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(S_SRCS:.S=.o)) C_OBJS := $(addprefix $(OBJ_DIR)/libos/,$(C_SRCS:.c=.o))
CXX_OBJS := $(addprefix $(OBJ_DIR)/libos/,$(CXX_SRCS:.cpp=.o))
S_OBJS := $(addprefix $(OBJ_DIR)/libos/,$(S_SRCS:.S=.o))
# Object files for simulation mode are stored in libos/src_sim
ifneq ($(SGX_MODE), HW)
C_OBJS := $(subst libos/src,libos/src_sim,$(C_OBJS))
CXX_OBJS := $(subst libos/src,libos/src_sim,$(CXX_OBJS))
S_OBJS := $(subst libos/src,libos/src_sim,$(S_OBJS))
endif
ALL_BUILD_SUBDIRS := $(sort $(patsubst %/,%,$(dir $(LIBOS_SO_REAL) $(EDL_C_OBJS) $(C_OBJS) $(CXX_OBJS) $(S_OBJS)) $(RUST_TARGET_DIR) $(RUST_OUT_DIR))) ALL_BUILD_SUBDIRS := $(sort $(patsubst %/,%,$(dir $(LIBOS_SO_REAL) $(EDL_C_OBJS) $(C_OBJS) $(CXX_OBJS) $(S_OBJS)) $(RUST_TARGET_DIR) $(RUST_OUT_DIR)))
@ -75,8 +84,8 @@ C_COMMON_FLAGS += -g
C_FLAGS := $(SGX_CFLAGS_T) $(C_COMMON_FLAGS) C_FLAGS := $(SGX_CFLAGS_T) $(C_COMMON_FLAGS)
CXX_FLAGS := $(SGX_CXXFLAGS_T) $(C_COMMON_FLAGS) CXX_FLAGS := $(SGX_CXXFLAGS_T) $(C_COMMON_FLAGS)
_Other_Link_Flags := -L$(RUST_SGX_SDK_DIR)/compiler-rt/ -L$(BUILD_DIR)/lib _Other_Link_Flags := -L$(RUST_SGX_SDK_DIR)/compiler-rt/ -L$(BUILD_DIR)/lib -L$(RUST_OUT_DIR)
_Other_Enclave_Libs := -locclum-libos-core -lsgx_tprotected_fs _Other_Enclave_Libs := -l$(LIBOS_CORE_LIB_NAME) -lsgx_tprotected_fs
LINK_FLAGS := $(SGX_LFLAGS_T) LINK_FLAGS := $(SGX_LFLAGS_T)
.PHONY: all clean .PHONY: all clean
@ -107,27 +116,26 @@ $(LIBOS_CORE_RS_A): $(RUST_SRCS)
@echo "CARGO (debug) => $@" @echo "CARGO (debug) => $@"
endif endif
$(BUILD_DIR)/src/libos/src/Enclave_t.o: $(BUILD_DIR)/src/libos/src/Enclave_t.c $(OBJ_DIR)/libos/$(SRC_OBJ)/Enclave_t.o: $(OBJ_DIR)/libos/$(SRC_OBJ)/Enclave_t.c
@$(CC) $(C_FLAGS) -Iinclude/edl -c $< -o $@ @$(CC) $(C_FLAGS) -Iinclude/edl -c $< -o $@
@echo "CC <= $@" @echo "CC <= $@"
$(BUILD_DIR)/src/libos/src/Enclave_t.c: $(SGX_EDGER8R) ../Enclave.edl $(OBJ_DIR)/libos/$(SRC_OBJ)/Enclave_t.c: $(SGX_EDGER8R) ../Enclave.edl
@cd $(BUILD_DIR)/src/libos/src && $(SGX_EDGER8R) --trusted $(CUR_DIR)/../Enclave.edl --search-path $(SGX_SDK)/include --search-path $(RUST_SGX_SDK_DIR)/edl @cd $(OBJ_DIR)/libos/$(SRC_OBJ) && $(SGX_EDGER8R) --trusted $(CUR_DIR)/../Enclave.edl --search-path $(SGX_SDK)/include --search-path $(RUST_SGX_SDK_DIR)/edl
@echo "GEN <= $@" @echo "GEN <= $@"
$(BUILD_DIR)/src/libos/%.o: %.c $(C_OBJS):$(OBJ_DIR)/libos/$(SRC_OBJ)/%.o: src/%.c
@$(CC) $(C_FLAGS) -c $< -o $@ @$(CC) $(C_FLAGS) -c $< -o $@
@echo "CC <= $@" @echo "CC <= $@"
$(BUILD_DIR)/src/libos/%.o: %.cpp $(CXX_OBJS): $(OBJ_DIR)/libos/$(SRC_OBJ)/%.o: src/%.cpp
@$(CXX) $(CXX_FLAGS) -c $< -o $@ @$(CXX) $(CXX_FLAGS) -c $< -o $@
@echo "CXX <= $@" @echo "CXX <= $@"
$(BUILD_DIR)/src/libos/%.o: %.S $(S_OBJS):$(OBJ_DIR)/libos/$(SRC_OBJ)/%.o: src/%.S
@$(CC) $(C_FLAGS) -c $< -o $@ @$(CC) $(C_FLAGS) -c $< -o $@
@echo "AS <= $@" @echo "AS <= $@"
clean: clean:
@-$(RM) -f $(LIBOS_SO_REAL) $(LIBOS_CORE_A) $(LIBOS_CORE_RS_A) \ @-$(RM) -rf $(OBJ_DIR)/libos
$(EDL_C_OBJS) $(EDL_C_SRCS) $(C_OBJS) $(CXX_OBJS) $(S_OBJS) @-$(RM) -f $(LIBOS_SO_REAL)
@-$(RM) -rf $(RUST_TARGET_DIR)

@ -12,15 +12,22 @@ endif
# A dependency on Rust SGX SDK # A dependency on Rust SGX SDK
LIBSGX_USTDC_A := $(BUILD_DIR)/lib/libsgx_ustdc.a LIBSGX_USTDC_A := $(BUILD_DIR)/lib/libsgx_ustdc.a
EDL_C_SRCS := $(addprefix $(BUILD_DIR)/src/pal/src/,Enclave_u.c Enclave_u.h) EDL_C_SRCS := $(addprefix $(OBJ_DIR)/pal/$(SRC_OBJ)/,Enclave_u.c Enclave_u.h)
EDL_C_OBJS := $(addprefix $(BUILD_DIR)/src/pal/src/,Enclave_u.o) EDL_C_OBJS := $(addprefix $(OBJ_DIR)/pal/$(SRC_OBJ)/,Enclave_u.o)
C_SRCS := $(sort $(wildcard src/*.c src/*/*.c)) C_SRCS := $(sort $(wildcard src/*.c src/*/*.c))
C_OBJS := $(addprefix $(BUILD_DIR)/src/pal/,$(C_SRCS:.c=.o))
CXX_SRCS := $(sort $(wildcard src/*.cpp src/*/*.cpp)) CXX_SRCS := $(sort $(wildcard src/*.cpp src/*/*.cpp))
CXX_OBJS := $(addprefix $(BUILD_DIR)/src/pal/,$(CXX_SRCS:.cpp=.o)) C_OBJS := $(addprefix $(OBJ_DIR)/pal/,$(C_SRCS:.c=.o))
CXX_OBJS := $(addprefix $(OBJ_DIR)/pal/,$(CXX_SRCS:.cpp=.o))
# Object files for simulation mode are stored in libos/src_sim
ifneq ($(SGX_MODE), HW)
C_OBJS := $(subst pal/src,pal/src_sim,$(C_OBJS))
CXX_OBJS := $(subst pal/src,pal/src_sim,$(CXX_OBJS))
endif
HEADER_FILES := $(sort $(wildcard include/*.h include/*/*.h)) HEADER_FILES := $(sort $(wildcard include/*.h include/*/*.h))
C_COMMON_FLAGS := -I$(BUILD_DIR)/src/pal/src -Iinclude -Iinclude/edl C_COMMON_FLAGS := -I$(OBJ_DIR)/pal/$(SRC_OBJ) -Iinclude -Iinclude/edl
C_FLAGS := $(C_COMMON_FLAGS) $(SGX_CFLAGS_U) C_FLAGS := $(C_COMMON_FLAGS) $(SGX_CFLAGS_U)
CXX_FLAGS := $(C_COMMON_FLAGS) $(SGX_CXXFLAGS_U) CXX_FLAGS := $(C_COMMON_FLAGS) $(SGX_CXXFLAGS_U)
LINK_FLAGS := $(SGX_LFLAGS_U) -shared -L$(RUST_SGX_SDK_DIR)/sgx_ustdc/ -lsgx_ustdc -lsgx_uprotected_fs -ldl LINK_FLAGS := $(SGX_LFLAGS_U) -shared -L$(RUST_SGX_SDK_DIR)/sgx_ustdc/ -lsgx_ustdc -lsgx_uprotected_fs -ldl
@ -42,22 +49,22 @@ $(LIBOCCLUM_PAL_SO_REAL): $(LIBSGX_USTDC_A) $(EDL_C_OBJS) $(C_OBJS) $(CXX_OBJS)
ln -sf $(notdir $(LIBOCCLUM_PAL_SONAME)) $(notdir $(LIBOCCLUM_PAL_SO)) ln -sf $(notdir $(LIBOCCLUM_PAL_SONAME)) $(notdir $(LIBOCCLUM_PAL_SO))
@echo "LINK => $@" @echo "LINK => $@"
$(BUILD_DIR)/src/pal/src/Enclave_u.o: $(BUILD_DIR)/src/pal/src/Enclave_u.c $(OBJ_DIR)/pal/$(SRC_OBJ)/Enclave_u.o: $(OBJ_DIR)/pal/$(SRC_OBJ)/Enclave_u.c
@$(CC) $(C_FLAGS) -c $< -o $@ @$(CC) $(C_FLAGS) -c $< -o $@
@echo "CC <= $@" @echo "CC <= $@"
$(BUILD_DIR)/src/pal/src/Enclave_u.c: $(SGX_EDGER8R) ../Enclave.edl $(OBJ_DIR)/pal/$(SRC_OBJ)/Enclave_u.c: $(SGX_EDGER8R) ../Enclave.edl
@cd $(BUILD_DIR)/src/pal/src && \ @cd $(OBJ_DIR)/pal/$(SRC_OBJ) && \
$(SGX_EDGER8R) --untrusted $(CUR_DIR)/../Enclave.edl \ $(SGX_EDGER8R) --untrusted $(CUR_DIR)/../Enclave.edl \
--search-path $(SGX_SDK)/include \ --search-path $(SGX_SDK)/include \
--search-path $(RUST_SGX_SDK_DIR)/edl/ --search-path $(RUST_SGX_SDK_DIR)/edl/
@echo "GEN <= $@" @echo "GEN <= $@"
$(BUILD_DIR)/src/pal/%.o: %.c $(OBJ_DIR)/pal/$(SRC_OBJ)/%.o: src/%.c
@$(CC) $(C_FLAGS) -c $< -o $@ @$(CC) $(C_FLAGS) -c $< -o $@
@echo "CC <= $@" @echo "CC <= $@"
$(BUILD_DIR)/src/pal/%.o: %.cpp $(OBJ_DIR)/pal/$(SRC_OBJ)/%.o: src/%.cpp
@$(CXX) $(CXX_FLAGS) -c $< -o $@ @$(CXX) $(CXX_FLAGS) -c $< -o $@
@echo "CXX <= $@" @echo "CXX <= $@"
@ -73,4 +80,5 @@ format-check: $(C_SRCS) $(CXX_SRCS) $(HEADER_FILES)
@$(C_FORMATTER) --check $^ @$(C_FORMATTER) --check $^
clean: clean:
@-$(RM) -f $(LIBOCCLUM_PAL_SO) $(LIBOCCLUM_PAL_SO_REAL) $(LIBOCCLUM_PAL_SONAME) $(LIBSGX_USTDC_A) $(C_OBJS) $(CXX_OBJS) $(EDL_C_OBJS) $(EDL_C_SRCS) @-$(RM) -f $(BUILD_DIR)/lib/$(LIBOCCLUM_PAL_SONAME) $(LIBOCCLUM_PAL_SO) $(LIBOCCLUM_PAL_SO_REAL) $(LIBSGX_USTDC_A)
@-$(RM) -rf $(OBJ_DIR)/pal

@ -3,7 +3,7 @@ include ../sgxenv.mk
BIN := $(BUILD_DIR)/bin/occlum-run BIN := $(BUILD_DIR)/bin/occlum-run
C_SRCS := $(sort $(wildcard *.c)) C_SRCS := $(sort $(wildcard *.c))
C_OBJS := $(addprefix $(BUILD_DIR)/src/run/,$(C_SRCS:.c=.o)) C_OBJS := $(addprefix $(OBJ_DIR)/run/,$(C_SRCS:.c=.o))
C_COMMON_FLAGS := -I$(PROJECT_DIR)/src/pal/include C_COMMON_FLAGS := -I$(PROJECT_DIR)/src/pal/include
C_FLAGS := $(C_COMMON_FLAGS) $(SGX_CFLAGS_U) C_FLAGS := $(C_COMMON_FLAGS) $(SGX_CFLAGS_U)
@ -22,7 +22,7 @@ $(BIN): $(C_OBJS)
@$(CC) $^ -o $@ $(LINK_FLAGS) @$(CC) $^ -o $@ $(LINK_FLAGS)
@echo "LINK => $@" @echo "LINK => $@"
$(BUILD_DIR)/src/run/%.o: %.c $(OBJ_DIR)/run/%.o: %.c
@$(CC) $(C_FLAGS) -c $< -o $@ @$(CC) $(C_FLAGS) -c $< -o $@
@echo "CC <= $@" @echo "CC <= $@"

@ -14,6 +14,14 @@ VERSION_NUM = $(MAJOR_VER_NUM).$(MINOR_VER_NUM).$(PATCH_VER_NUM)
C_FORMATTER := $(PROJECT_DIR)/tools/c_formatter C_FORMATTER := $(PROJECT_DIR)/tools/c_formatter
# Save code and object file generated during building src
OBJ_DIR := $(PROJECT_DIR)/build/internal/src
ifneq ($(SGX_MODE), HW)
SRC_OBJ := src_sim
else
SRC_OBJ := src
endif
BUILD_DIR := $(PROJECT_DIR)/build BUILD_DIR := $(PROJECT_DIR)/build
# If OCCLUM_RELEASE_BUILD equals to 1, y, or yes, then build in release mode # If OCCLUM_RELEASE_BUILD equals to 1, y, or yes, then build in release mode

@ -1,7 +1,7 @@
include ../../src/sgxenv.mk include ../../src/sgxenv.mk
SRC_FILES := $(shell find . -type f -name '*.rs') Cargo.toml SRC_FILES := $(shell find . -type f -name '*.rs') Cargo.toml
RUST_TARGET_DIR := $(BUILD_DIR)/tools/genconf/cargo-target RUST_TARGET_DIR := $(BUILD_DIR)/internal/tools/genconf/cargo-target
RUST_OUT_DIR := $(BUILD_DIR)/bin RUST_OUT_DIR := $(BUILD_DIR)/bin
TARGET_BINARY := $(RUST_OUT_DIR)/gen_enclave_conf TARGET_BINARY := $(RUST_OUT_DIR)/gen_enclave_conf

@ -53,7 +53,7 @@ EOF
get_conf_root_fs_mac() { get_conf_root_fs_mac() {
LD_LIBRARY_PATH="$SGX_SDK/sdk_libs" \ LD_LIBRARY_PATH="$SGX_SDK/sdk_libs" \
"$occlum_dir/$build_dir/bin/occlum-protect-integrity" show-mac "$context_dir/build/mount/__ROOT/metadata" "$occlum_dir/build/bin/occlum-protect-integrity" show-mac "$context_dir/build/mount/__ROOT/metadata"
} }
get_conf_default_stack_size() { get_conf_default_stack_size() {
@ -88,7 +88,7 @@ get_conf_entry_points() {
get_occlum_conf_file_mac() { get_occlum_conf_file_mac() {
LD_LIBRARY_PATH="$SGX_SDK/sdk_libs" \ LD_LIBRARY_PATH="$SGX_SDK/sdk_libs" \
"$occlum_dir/$build_dir/bin/occlum-protect-integrity" show-mac "$context_dir/build/Occlum.json.protected" "$occlum_dir/build/bin/occlum-protect-integrity" show-mac "$context_dir/build/Occlum.json.protected"
} }
parse_occlum_user_space_size() { parse_occlum_user_space_size() {
@ -148,7 +148,6 @@ cmd_init() {
cmd_build() { cmd_build() {
check_has_init check_has_init
build_dir=build
pal_lib=libocclum-pal.so pal_lib=libocclum-pal.so
libos_lib=libocclum-libos.so libos_lib=libocclum-libos.so
@ -156,7 +155,7 @@ cmd_build() {
case "$1" in case "$1" in
--sign-key) [ -n "$2" ] && ENCLAVE_SIGN_KEY=$2 ; shift 2 || exit_error "empty signing key path" ;; --sign-key) [ -n "$2" ] && ENCLAVE_SIGN_KEY=$2 ; shift 2 || exit_error "empty signing key path" ;;
--sign-tool) [ -n "$2" ] && ENCLAVE_SIGN_TOOL=$2 ; shift 2 || exit_error "empty signing tool path" ;; --sign-tool) [ -n "$2" ] && ENCLAVE_SIGN_TOOL=$2 ; shift 2 || exit_error "empty signing tool path" ;;
--sgx-mode) [[ -n "$2" && "$2" != "HW" ]] && export SGX_MODE=SW && build_dir=build_sim ; shift 2 || exit_error "empty sgx mode";; --sgx-mode) [[ -n "$2" && "$2" != "HW" ]] && export SGX_MODE=SIM; shift 2 || exit_error "empty sgx mode";;
*) exit_error "Unknown option: $1" ;; *) exit_error "Unknown option: $1" ;;
esac esac
done done
@ -181,14 +180,14 @@ cmd_build() {
rm -rf run rm -rf run
mkdir -p build/bin mkdir -p build/bin
ln -s $occlum_dir/$build_dir/bin/occlum-run $context_dir/build/bin/occlum-run ln -s $occlum_dir/build/bin/occlum-run $context_dir/build/bin/occlum-run
mkdir -p build/lib mkdir -p build/lib
cp "$occlum_dir/$build_dir/lib/$pal_lib.$occlum_version" build/lib/ cp "$occlum_dir/build/lib/$pal_lib.$occlum_version" build/lib/
cd build/lib && ln -sf "$pal_lib.$occlum_version" "libocclum-pal.so.$major_ver" && \ cd build/lib && ln -sf "$pal_lib.$occlum_version" "libocclum-pal.so.$major_ver" && \
ln -sf "libocclum-pal.so.$major_ver" libocclum-pal.so && cd - ln -sf "libocclum-pal.so.$major_ver" libocclum-pal.so && cd -
mkdir -p build/mount/ mkdir -p build/mount/
cd "$occlum_dir/$build_dir/bin/" && \ cd "$occlum_dir/build/bin/" && \
LD_LIBRARY_PATH="$SGX_SDK/sdk_libs" ./sefs-cli \ LD_LIBRARY_PATH="$SGX_SDK/sdk_libs" ./sefs-cli \
--integrity-only \ --integrity-only \
"$context_dir/build/mount/__ROOT" \ "$context_dir/build/mount/__ROOT" \
@ -203,9 +202,9 @@ cmd_build() {
export OCCLUM_CONF_ENV=`get_conf_env` export OCCLUM_CONF_ENV=`get_conf_env`
export OCCLUM_CONF_ENTRY_POINTS=`get_conf_entry_points` export OCCLUM_CONF_ENTRY_POINTS=`get_conf_entry_points`
cd "$context_dir/build" cd "$context_dir/build"
"$occlum_dir/$build_dir/bin/occlum-gen-default-occlum-json"\ "$occlum_dir/build/bin/occlum-gen-default-occlum-json"\
> "Occlum.json" > "Occlum.json"
LD_LIBRARY_PATH="$SGX_SDK/sdk_libs" "$occlum_dir/$build_dir/bin/occlum-protect-integrity" protect Occlum.json LD_LIBRARY_PATH="$SGX_SDK/sdk_libs" "$occlum_dir/build/bin/occlum-protect-integrity" protect Occlum.json
export OCCLUM_BUILTIN_CONF_FILE_MAC=`get_occlum_conf_file_mac` export OCCLUM_BUILTIN_CONF_FILE_MAC=`get_occlum_conf_file_mac`
echo "EXPORT => OCCLUM_BUILTIN_CONF_FILE_MAC = $OCCLUM_BUILTIN_CONF_FILE_MAC" echo "EXPORT => OCCLUM_BUILTIN_CONF_FILE_MAC = $OCCLUM_BUILTIN_CONF_FILE_MAC"
@ -213,12 +212,13 @@ cmd_build() {
echo "EXPORT => OCCLUM_BUILTIN_VM_USER_SPACE_SIZE = $OCCLUM_BUILTIN_VM_USER_SPACE_SIZE" echo "EXPORT => OCCLUM_BUILTIN_VM_USER_SPACE_SIZE = $OCCLUM_BUILTIN_VM_USER_SPACE_SIZE"
cd $context_dir/build/lib && \ cd $context_dir/build/lib && \
cp "$occlum_dir/$build_dir/lib/$libos_lib.$occlum_version" . && ln -sf "$libos_lib.$occlum_version" "libocclum-libos.so.$major_ver" cp "$occlum_dir/build/lib/$libos_lib.$occlum_version" . && ln -sf "$libos_lib.$occlum_version" "libocclum-libos.so.$major_ver" && \
ln -sf "libocclum-libos.so.$major_ver" libocclum-libos.so
echo -e "$OCCLUM_BUILTIN_CONF_FILE_MAC\c" > temp_mac_file && \ echo -e "$OCCLUM_BUILTIN_CONF_FILE_MAC\c" > temp_mac_file && \
objcopy --update-section .builtin_config=temp_mac_file libocclum-libos.so.$major_ver && \ objcopy --update-section .builtin_config=temp_mac_file libocclum-libos.so.$major_ver && \
rm temp_mac_file rm temp_mac_file
$occlum_dir/$build_dir/bin/gen_enclave_conf -i "$working_dir/Occlum.json" -o "$context_dir/build/Enclave.xml" $occlum_dir/build/bin/gen_enclave_conf -i "$working_dir/Occlum.json" -o "$context_dir/build/Enclave.xml"
$ENCLAVE_SIGN_TOOL sign \ $ENCLAVE_SIGN_TOOL sign \
-key $ENCLAVE_SIGN_KEY \ -key $ENCLAVE_SIGN_KEY \
@ -237,8 +237,8 @@ cmd_build() {
mkdir -p "$context_dir/run/mount/__ROOT" mkdir -p "$context_dir/run/mount/__ROOT"
ln -s $occlum_dir/$build_dir/bin/occlum_exec_client $context_dir/build/bin/occlum_exec_client ln -s $occlum_dir/build/bin/occlum_exec_client $context_dir/build/bin/occlum_exec_client
ln -s $occlum_dir/$build_dir/bin/occlum_exec_server $context_dir/build/bin/occlum_exec_server ln -s $occlum_dir/build/bin/occlum_exec_server $context_dir/build/bin/occlum_exec_server
echo "Built the Occlum image and enclave successfully" echo "Built the Occlum image and enclave successfully"
} }

@ -16,7 +16,7 @@ SGX_DEBUG ?= 1
C_FORMATTER := $(PROJECT_DIR)/tools/c_formatter C_FORMATTER := $(PROJECT_DIR)/tools/c_formatter
BUILD_DIR := $(PROJECT_DIR)/build BUILD_DIR := $(PROJECT_DIR)/build
OBJS_DIR := $(BUILD_DIR)/tools/protect-integrity OBJS_DIR := $(BUILD_DIR)/internal/tools/protect-integrity
ifeq ($(shell getconf LONG_BIT), 32) ifeq ($(shell getconf LONG_BIT), 32)
SGX_ARCH := x86 SGX_ARCH := x86