You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by ms...@apache.org on 2020/03/27 03:51:26 UTC
[incubator-teaclave] branch develop updated: [build] Optimize prep
process logic for multiple edl files (#252)
This is an automated email from the ASF dual-hosted git repository.
mssun pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave.git
The following commit(s) were added to refs/heads/develop by this push:
new b7c3c2d [build] Optimize prep process logic for multiple edl files (#252)
b7c3c2d is described below
commit b7c3c2d5d9747673dc24a86e9b1fdbd06622c652
Author: Zhaofeng Chen <zf...@apache.org>
AuthorDate: Thu Mar 26 20:51:15 2020 -0700
[build] Optimize prep process logic for multiple edl files (#252)
---
cmake/TeaclaveGenVars.cmake | 5 ++---
cmake/scripts/prep.sh | 52 ++++++++++++++++++++++++++++++++-------------
2 files changed, 39 insertions(+), 18 deletions(-)
diff --git a/cmake/TeaclaveGenVars.cmake b/cmake/TeaclaveGenVars.cmake
index 7bef064..f629cb8 100644
--- a/cmake/TeaclaveGenVars.cmake
+++ b/cmake/TeaclaveGenVars.cmake
@@ -2,6 +2,7 @@ set(TEACLAVE_PROJECT_ROOT ${PROJECT_SOURCE_DIR})
set(TEACLAVE_BUILD_ROOT ${PROJECT_BINARY_DIR})
set(TEACLAVE_OUT_DIR ${PROJECT_BINARY_DIR}/intermediate)
set(TEACLAVE_INSTALL_DIR ${PROJECT_SOURCE_DIR}/release)
+set(TEACLAVE_EDL_DIR ${PROJECT_SOURCE_DIR}/edl)
set(TEACLAVE_SERVICE_INSTALL_DIR ${TEACLAVE_INSTALL_DIR}/services)
set(TEACLAVE_EXAMPLE_INSTALL_DIR ${TEACLAVE_INSTALL_DIR}/examples)
set(TEACLAVE_BIN_INSTALL_DIR ${TEACLAVE_INSTALL_DIR}/bin)
@@ -30,8 +31,6 @@ set(MT_SCRIPT_DIR ${PROJECT_SOURCE_DIR}/cmake/scripts)
set(MT_UNIX_TOML_DIR ${PROJECT_BINARY_DIR}/cmake_tomls/unix_app)
set(MT_SGXLIB_TOML_DIR ${PROJECT_BINARY_DIR}/cmake_tomls/sgx_trusted_lib)
set(MT_SGXAPP_TOML_DIR ${PROJECT_BINARY_DIR}/cmake_tomls/sgx_untrusted_app)
-set(MT_EDL_FILE ${PROJECT_SOURCE_DIR}/edl/Enclave_common.edl ${PROJECT_SOURCE_DIR}/edl/Enclave_fa.edl)
-join_string("${MT_EDL_FILE}" " " MT_EDL_FILE)
set(SGX_EDGER8R ${SGX_SDK}/bin/x64/sgx_edger8r)
set(SGX_ENCLAVE_SIGNER ${SGX_SDK}/bin/x64/sgx_sign)
@@ -112,6 +111,7 @@ set(TEACLAVE_COMMON_ENVS
TEACLAVE_TARGET_DIR=${TEACLAVE_TARGET_DIR}
TEACLAVE_CFG_DIR=${PROJECT_SOURCE_DIR}
TEACLAVE_BUILD_CFG_DIR=${PROJECT_SOURCE_DIR}
+ TEACLAVE_EDL_DIR=${TEACLAVE_EDL_DIR}
TEACLAVE_SYMLINKS=${TEACLAVE_SYMLINKS}
SGX_SDK=${SGX_SDK}
SGX_MODE=${SGX_MODE}
@@ -130,7 +130,6 @@ set(TARGET_PREP_ENVS
CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
MESAPY_VERSION=${MESAPY_VERSION}
SGX_EDGER8R=${SGX_EDGER8R}
- MT_EDL_FILE=${MT_EDL_FILE}
CMAKE_AR=${CMAKE_AR}
DCAP=${DCAP})
diff --git a/cmake/scripts/prep.sh b/cmake/scripts/prep.sh
index 5e0ee25..47628dd 100755
--- a/cmake/scripts/prep.sh
+++ b/cmake/scripts/prep.sh
@@ -2,7 +2,7 @@
set -e
REQUIRED_ENVS=("CMAKE_SOURCE_DIR" "CMAKE_BINARY_DIR"
"TEACLAVE_OUT_DIR" "TEACLAVE_TARGET_DIR" "RUSTUP_TOOLCHAIN" "MESAPY_VERSION"
-"SGX_EDGER8R" "MT_EDL_FILE" "SGX_SDK" "RUST_SGX_SDK" "CMAKE_C_COMPILER"
+"SGX_EDGER8R" "TEACLAVE_EDL_DIR" "SGX_SDK" "RUST_SGX_SDK" "CMAKE_C_COMPILER"
"CMAKE_AR" "SGX_UNTRUSTED_CFLAGS" "SGX_TRUSTED_CFLAGS" "MT_SCRIPT_DIR"
"TEACLAVE_SERVICE_INSTALL_DIR" "TEACLAVE_EXAMPLE_INSTALL_DIR" "TEACLAVE_BIN_INSTALL_DIR"
"TEACLAVE_CLI_INSTALL_DIR" "TEACLAVE_DCAP_INSTALL_DIR" "TEACLAVE_LIB_INSTALL_DIR" "TEACLAVE_TEST_INSTALL_DIR"
@@ -49,22 +49,44 @@ if [ ! -f ${TEACLAVE_OUT_DIR}/libpypy-c.a ] || [ ! -f ${TEACLAVE_OUT_DIR}/${MESA
tar xzf ${MESAPY_VERSION}-mesapy-sgx.tar.gz;
cd -
fi
+
# build edl_libs
-if [ ! -f ${TEACLAVE_OUT_DIR}/libEnclave_common_u.a ]; then
+function build_edl() {
echo 'INFO: Start to build EDL.'
- ${SGX_EDGER8R} --untrusted ${MT_EDL_FILE} --search-path ${SGX_SDK}/include \
- --search-path ${RUST_SGX_SDK}/edl --search-path ${TEACLAVE_PROJECT_ROOT}/edl \
- --untrusted-dir ${TEACLAVE_OUT_DIR}
+
cd ${TEACLAVE_OUT_DIR}
- ${CMAKE_C_COMPILER} ${SGX_UNTRUSTED_CFLAGS} -c Enclave_common_u.c -o libEnclave_common_u.o
- ${CMAKE_AR} rcsD libEnclave_common_u.a libEnclave_common_u.o
+ for edl in ${TEACLAVE_EDL_DIR}/*.edl
+ do
+ # $FILE_NAME.edl to $FILE_NAME_t.c
+ ${SGX_EDGER8R} --trusted ${edl} --search-path ${SGX_SDK}/include \
+ --search-path ${RUST_SGX_SDK}/edl --search-path ${TEACLAVE_PROJECT_ROOT}/edl \
+ --trusted-dir ${TEACLAVE_OUT_DIR}
- ${CMAKE_C_COMPILER} ${SGX_UNTRUSTED_CFLAGS} -c Enclave_fa_u.c -o libEnclave_fa_u.o
- ${CMAKE_AR} rcsD libEnclave_fa_u.a libEnclave_fa_u.o
+ # $FILE_NAME.edl to $FILE_NAME_u.c
+ ${SGX_EDGER8R} --untrusted ${edl} --search-path ${SGX_SDK}/include \
+ --search-path ${RUST_SGX_SDK}/edl --search-path ${TEACLAVE_PROJECT_ROOT}/edl \
+ --untrusted-dir ${TEACLAVE_OUT_DIR}
- ${SGX_EDGER8R} --trusted ${MT_EDL_FILE} --search-path ${SGX_SDK}/include \
- --search-path ${RUST_SGX_SDK}/edl --search-path ${TEACLAVE_PROJECT_ROOT}/edl \
- --trusted-dir ${TEACLAVE_OUT_DIR}
- ${CMAKE_C_COMPILER} ${SGX_TRUSTED_CFLAGS} -c Enclave_common_t.c -o libEnclave_common_t.o
- ${CMAKE_C_COMPILER} ${SGX_TRUSTED_CFLAGS} -c Enclave_fa_t.c -o libEnclave_fa_t.o
-fi
+ fname=$(basename "$edl" .edl)
+
+ # $FILE_NAME_u.c -> lib$FILE_NAME_u.o -> lib$FILE_NAME_u.a
+ ${CMAKE_C_COMPILER} ${SGX_UNTRUSTED_CFLAGS} -c "${fname}_u.c" -o "lib${fname}_u.o"
+ ${CMAKE_AR} rcsD "lib${fname}_u.a" "lib${fname}_u.o"
+
+ # $FILE_NAME_t.c to $FILE_NAME_t.o
+ ${CMAKE_C_COMPILER} ${SGX_TRUSTED_CFLAGS} -c "${fname}_t.c" -o "lib${fname}_t.o"
+ done
+}
+
+# check
+for edl in ${TEACLAVE_EDL_DIR}/*.edl
+do
+ fname=$(basename "${edl}" .edl)
+ tlib="${TEACLAVE_OUT_DIR}/lib${fname}_t.o"
+ ulib="${TEACLAVE_OUT_DIR}/lib${fname}_u.a"
+
+ if [[ ! -f "${tlib}" ]] || [[ ! -f "${ulib}" ]] ; then
+ build_edl
+ break
+ fi
+done
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org