123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- #
- # Copyright (C) 2011-2018 Intel Corporation. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions
- # are met:
- #
- # * Redistributions of source code must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- # * Redistributions in binary form must reproduce the above copyright
- # notice, this list of conditions and the following disclaimer in
- # the documentation and/or other materials provided with the
- # distribution.
- # * Neither the name of Intel Corporation nor the names of its
- # contributors may be used to endorse or promote products derived
- # from this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #
- #
- # This Makefile will compile SDK to generate various components
- # including:
- # - Trusted libraries
- # - tstdc: libsgx_tstdc.a
- # - tstdcxx: libsgx_tstdcxx.a
- # - tcxx: libsgx_tcxx.a
- # - tservice: libsgx_tservice.a
- # - trts: libsgx_trts.a
- # - tcrypto: libsgx_tcrypto.a
- # - tkey_exchange: libsgx_tkey_exchange.a
- # - tprotected_fs: libsgx_tprotected_fs.a
- # - tcmalloc: libsgx_tcmalloc.a
- # - sgx_pcl: libsgx_pcl.a
- # - Untrtusted libraries
- # - ukey_exchange: libsgx_ukey_exchange.a
- # - uprotected_fs: libsgx_uprotected_fs.a
- # - sample_crypto: libsample_crypto.so (for sample code use)
- # - ptrace: libsgx_ptrace.so, gdb-sgx-plugin
- # - Standalone, untrusted libraries
- # - libcapable: libsgx_capable.a libsgx_capable.so
- # - Tools
- # - signtool: sgx_sign
- # - edger8r: sgx_edger8r
- # - sgx_encrypt: sgx_encrypt
- # - Simulation libraries and tools
- # - simulation: libsgx_trts_sim.a, libsgx_tservice_sim.a, libsgx_urts_sim.so, libsgx_uae_service_sim.so, sgx_config_cpusvn
- #
- include ../buildenv.mk
- LIBTLIBC := $(BUILD_DIR)/libsgx_tstdc.a
- LIBTLIBCXX := $(BUILD_DIR)/libsgx_tstdcxx.a
- LIBTCXX := $(BUILD_DIR)/libsgx_tcxx.a
- LIBTSE := $(BUILD_DIR)/libsgx_tservice.a
- .PHONY: components
- components: tstdc tstdcxx tcxx tservice trts tcrypto tkey_exchange ukey_exchange tprotected_fs uprotected_fs ptrace sample_crypto libcapable simulation signtool edger8r tcmalloc sgx_pcl sgx_encrypt
- # ---------------------------------------------------
- # tstdc
- # includes: tlibc, tlibthread, compiler-rt, tsafecrt
- # libimf, libirc, libsvml, etc.
- # ---------------------------------------------------
- .PHONY: tstdc
- tstdc: $(LIBTLIBC)
- ifeq ($(ARCH), x86_64)
- LIBM_PATH := $(LINUX_EXTERNAL_DIR)/libm/Libm_ct_Linux
- LIBIRC_PATH := $(LINUX_EXTERNAL_DIR)/libirc/efi2
- SVML_PATH := $(LINUX_EXTERNAL_DIR)/libm/SVML_Intel64_Linux
- else
- LIBM_PATH := $(LINUX_EXTERNAL_DIR)/libm/Libm_Linux
- LIBIRC_PATH := $(LINUX_EXTERNAL_DIR)/libirc/ia32
- SVML_PATH := $(LINUX_EXTERNAL_DIR)/libm/SVML_IA32_Linux
- endif
- LIBIRC_NAME := libirc.a
- $(LIBTLIBC): #tlibthread compiler-rt tsafecrt tsetjmp $(LIBM_PATH)/libimf.a $(LIBIRC_PATH)/$(LIBIRC_NAME) $(SVML_PATH)/libsvml.a
- $(MAKE) -C tlibc/ -j4 2> /dev/null
- $(MKDIR) $(BUILD_DIR)/.tlibc #$(BUILD_DIR)/.libimf $(BUILD_DIR)/.libirc $(BUILD_DIR)/.compiler-rt $(BUILD_DIR)/.tlibc \
- # $(BUILD_DIR)/.tlibthread $(BUILD_DIR)/.tsafecrt $(BUILD_DIR)/.tsetjmp
- # $(RM) -f $(BUILD_DIR)/.libimf/* && cd $(BUILD_DIR)/.libimf && $(AR) x $(LIBM_PATH)/libimf.a
- # $(RM) -f $(BUILD_DIR)/.libirc/* && cd $(BUILD_DIR)/.libirc && $(AR) x $(LIBIRC_PATH)/$(LIBIRC_NAME)
- # $(RM) -f $(BUILD_DIR)/.compiler-rt/* && cd $(BUILD_DIR)/.compiler-rt && $(AR) x $(LINUX_SDK_DIR)/compiler-rt/libcompiler-rt.a
- $(RM) -f $(BUILD_DIR)/.tlibc/* && cd $(BUILD_DIR)/.tlibc && $(AR) x $(LINUX_SDK_DIR)/tlibc/libtlibc.a
- # $(RM) -f $(BUILD_DIR)/.tlibthread/* && cd $(BUILD_DIR)/.tlibthread && $(AR) x $(LINUX_SDK_DIR)/tlibthread/libtlibthread.a
- # $(RM) -f $(BUILD_DIR)/.tsafecrt/* && cd $(BUILD_DIR)/.tsafecrt && $(AR) x $(LINUX_SDK_DIR)/tsafecrt/libsgx_tsafecrt.a
- # $(RM) -f $(BUILD_DIR)/.tsetjmp/* && cd $(BUILD_DIR)/.tsetjmp && $(AR) x $(LINUX_SDK_DIR)/tsetjmp/libsgx_tsetjmp.a
- # $(CP) $(SVML_PATH)/libsvml.a $@
- # $(AR) qD $@ $(BUILD_DIR)/.libimf/*.o
- # $(AR) qD $@ $(BUILD_DIR)/.libirc/*.o
- # $(AR) qD $@ $(BUILD_DIR)/.compiler-rt/*.o
- $(AR) qD $@ $(BUILD_DIR)/.tlibc/*.o
- # $(AR) qD $@ $(BUILD_DIR)/.tlibthread/*.o
- # $(AR) qD $@ $(BUILD_DIR)/.tsafecrt/*.o
- # $(AR) qD $@ $(BUILD_DIR)/.tsetjmp/*.o
- # @$(RM) -rf $(BUILD_DIR)/.libimf $(BUILD_DIR)/.libirc $(BUILD_DIR)/.compiler-rt $(BUILD_DIR)/.tlibc
- # @$(RM) -rf $(BUILD_DIR)/.tlibthread $(BUILD_DIR)/.tsafecrt $(BUILD_DIR)/.tsetjmp
- .PHONY: tlibthread
- tlibthread:
- $(MAKE) -C tlibthread/
- .PHONY: tsafecrt
- tsafecrt:
- $(MAKE) -C tsafecrt/
- .PHONY: compiler-rt
- compiler-rt:
- $(MAKE) -C compiler-rt/ 2> /dev/null
- .PHONY: tsetjmp
- tsetjmp:
- $(MAKE) -C tsetjmp/
- # ---------------------------------------------------
- # tstdcxx
- # includes: cpprt, tlibstdcxx
- # ---------------------------------------------------
- .PHONY: tstdcxx
- tstdcxx: $(LIBTLIBCXX)
- $(LIBTLIBCXX): cpprt tlibstdcxx
- @$(MKDIR) $(BUILD_DIR)/.tlibstdcxx
- @$(RM) -f $(BUILD_DIR)/.tlibstdcxx/*
- @cd $(BUILD_DIR)/.tlibstdcxx && $(AR) x $(LINUX_SDK_DIR)/tlibstdcxx/libtlibstdcxx.a
- $(CP) $(LINUX_SDK_DIR)/cpprt/libcpprt.a $@
- $(AR) qD $@ $(BUILD_DIR)/.tlibstdcxx/*.o
- @$(RM) -rf $(BUILD_DIR)/.tlibstdcxx
- .PHONY: cpprt
- cpprt:
- $(MAKE) -C cpprt
- .PHONY: tlibstdcxx
- tlibstdcxx: $(BUILD_DIR)
- $(MAKE) -C tlibstdcxx/ 2> /dev/null
- $(CP) tlibstdcxx/README.sgx $(BUILD_DIR)/STLport_Changes_SGX.txt
- # ---------------------------------------------------
- # tcxx
- # includes: cpprt, tlibcxx
- # ---------------------------------------------------
- .PHONY: tcxx
- tcxx: $(LIBTCXX)
- $(LIBTCXX): cpprt tlibcxx
- @$(MKDIR) $(BUILD_DIR)/.tlibcxx
- @$(RM) -f $(BUILD_DIR)/.tlibcxx/*
- @cd $(BUILD_DIR)/.tlibcxx && $(AR) x $(LINUX_SDK_DIR)/tlibcxx/libcxx.a
- $(CP) $(LINUX_SDK_DIR)/cpprt/libcpprt.a $@
- $(AR) qD $@ $(BUILD_DIR)/.tlibcxx/*.o
- @$(RM) -rf $(BUILD_DIR)/.tlibcxx
- .PHONY: tlibcxx
- tlibcxx: $(BUILD_DIR)
- $(MAKE) -C tlibcxx/ 2> /dev/null
- $(CP) tlibcxx/README.sgx $(BUILD_DIR)/libc++_Changes_SGX.txt
- # ---------------------------------------------------
- # tservice
- # includes: selib, tseal, tae_service, ec_dh_lib
- # ---------------------------------------------------
- .PHONY: tservice
- tservice: $(LIBTSE)
- $(LIBTSE): selib tseal tae_service
- @$(MKDIR) $(BUILD_DIR)/.tservice
- @$(RM) -f $(BUILD_DIR)/.tservice/*
- cd $(BUILD_DIR)/.tservice && $(AR) x $(LINUX_SDK_DIR)/tseal/linux/libtSeal.a
- cd $(BUILD_DIR)/.tservice && $(AR) x $(LINUX_SDK_DIR)/tae_service/libtae_service.a
- $(CP) $(LINUX_SDK_DIR)/selib/linux/libselib.a $@
- $(AR) rsD $@ $(BUILD_DIR)/.tservice/*.o
- @$(RM) -rf $(BUILD_DIR)/.tservice
- .PHONY: selib
- selib:
- $(MAKE) -C selib/linux/
- .PHONY: tseal
- tseal:
- $(MAKE) -C tseal/linux/
- .PHONY: tae_service
- tae_service: edger8r
- $(MAKE) -C tae_service MODE=$(MODE)
- # ---------------------------------------------------
- # Other trusted libraries
- # ---------------------------------------------------
- .PHONY: trts
- trts:
- $(MAKE) -C trts/
- .PHONY: tcrypto
- tcrypto:
- $(MAKE) -C tlibcrypto/
- .PHONY: tkey_exchange
- tkey_exchange: edger8r
- $(MAKE) -C tkey_exchange
-
- .PHONY: tcmalloc
- tcmalloc:
- $(MAKE) -C gperftools/
- .PHONY: tprotected_fs
- tprotected_fs: edger8r
- $(MAKE) -C protected_fs/sgx_tprotected_fs
-
- .PHONY: sgx_pcl
- sgx_pcl:
- $(MAKE) -C protected_code_loader
- # ---------------------------------------------------
- # Untrusted libraries
- # ---------------------------------------------------
- .PHONY: ukey_exchange
- ukey_exchange:
- $(MAKE) -C ukey_exchange
- .PHONY: uprotected_fs
- uprotected_fs: edger8r
- $(MAKE) -C protected_fs/sgx_uprotected_fs
- .PHONY: ptrace
- ptrace:
- $(MAKE) -C debugger_interface/linux/
- .PHONY: sample_crypto
- sample_crypto:
- $(MAKE) -C sample_libcrypto
- # ---------------------------------------------------
- # standalone, untrusted libraries
- # ---------------------------------------------------
- .PHONY: libcapable
- libcapable:
- $(MAKE) -C libcapable/linux/
- # ---------------------------------------------------
- # simualtion libraries and tools
- # ---------------------------------------------------
- .PHONY: simulation
- simulation: edger8r
- $(MAKE) -C simulation/
- # ---------------------------------------------------
- # tools
- # ---------------------------------------------------
- .PHONY: signtool
- signtool:
- $(MAKE) -C sign_tool/SignTool/
- .PHONY: edger8r
- edger8r:
- $(MAKE) -C edger8r/linux/
- .PHONY: sgx_encrypt
- sgx_encrypt: tservice
- $(MAKE) -C encrypt_enclave
- $(BUILD_DIR):
- $(MKDIR) $@
- .PHONY: clean
- clean:
- $(MAKE) -C tlibc/ clean
- $(MAKE) -C tlibthread/ clean
- $(MAKE) -C compiler-rt/ clean
- $(MAKE) -C cpprt clean
- $(MAKE) -C tlibstdcxx/ clean
- $(MAKE) -C tlibcxx/ clean
- $(MAKE) -C tseal/linux/ clean
- $(MAKE) -C selib/linux/ clean
- $(MAKE) -C tae_service/ clean
- $(MAKE) -C trts/ clean
- $(MAKE) -C tsetjmp/ clean
- $(MAKE) -C tsafecrt/ clean
- $(MAKE) -C gperftools/ clean
- $(MAKE) -C tlibcrypto/ clean
- $(MAKE) -C tkey_exchange/ clean
- $(MAKE) -C ukey_exchange/ clean
- $(MAKE) -C protected_fs/sgx_tprotected_fs/ clean
- $(MAKE) -C protected_fs/sgx_uprotected_fs/ clean
- $(MAKE) -C debugger_interface/linux/ clean
- $(MAKE) -C sample_libcrypto/ clean
- $(MAKE) -C libcapable/linux/ clean
- $(MAKE) -C simulation/ clean
- $(MAKE) -C sign_tool/SignTool clean
- $(MAKE) -C edger8r/linux clean
- $(MAKE) -C protected_code_loader clean
- $(MAKE) -C encrypt_enclave clean
- @$(RM) $(LIBTLIBC) $(LIBTLIBCXX) $(LIBTSE)
- @$(RM) $(BUILD_DIR)/STLport_Changes_SGX.txt
- @$(RM) $(BUILD_DIR)/libc++_Changes_SGX.txt
|