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