Files
intel-linux-sgx/sdk/Makefile.source
T
John Mechalas 6f0e20cfd9 Implements most of libsgx_capable for Linux (previously only available in the Windows SDK) (#107)
* Adds libsgx_capable, which is currently only available in the Windows
version of the Intel SGX SDK. The Linux implementation of this library
adds the following functions:

  sgx_status_t sgx_is_capable (int *sgx_capable);
  sgx_status_t sgx_cap_get_status (sgx_device_status_t *sgx_device_status);
  sgx_status_t sgx_cap_enable_device (sgx_device_status_t *sgx_device_status);

And adds the following error code (also from the Windows version of the
Intel SGX SDK):

  SGX_ERROR_NO_PRIVILEGE

Generates both a static and dynamic build of libsgx_capable. This is
incorporated into the SDK package, not the PSW package, since software
installers need to check for Intel SGX capability on systems where the PSW
may not already be installed. This means that installers will either have
to statically link, or distribute the .so with their installation package.

----------------------

Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Signed-off-by: John P Mechalas <john.p.mechalas@intel.com>
2017-08-11 10:00:34 +08:00

281 lines
9.4 KiB
Makefile

#
# Copyright (C) 2011-2017 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
# - tsetjmp: libsgx_tsetjmp.a
# - tcmalloc: libsgx_tcmalloc.a
# - Untrtusted libraries
# - ukey_exchange: libsgx_ukey_exchange.a
# - uprotected_fs: libsgx_uprotected_fs.a
# - ptrace: libsgx_ptrace.so, gdb-sgx-plugin
# - sample_crypto: libsample_crypto.so (for sample code use)
# - Standalone, untrusted libraries
# - libcapable: libsgx_capable.a libsgx_capable.so
# - Tools
# - signtool: sgx_sign
# - edger8r: sgx_edger8r
# - Simulation libraries and tools
# - simulation: libsgx_trts_sim.a, libsgx_tservice_sim.a, libsgx_urts_sim.a, libsgx_uae_service_sim.a, 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: all
all: tstdc tstdcxx tcxx tservice trts tcrypto tkey_exchange ukey_exchange tprotected_fs uprotected_fs ptrace sample_crypto libcapable simulation signtool edger8r tsetjmp tcmalloc
# ---------------------------------------------------
# tstdc
# includes: tlibc, libm, tlibthread, compiler-rt
# ---------------------------------------------------
.PHONY: tstdc
tstdc: $(LIBTLIBC)
$(LIBTLIBC): tlibthread compiler-rt sgx_libm
$(MAKE) -C tlibc/ -j4 2> /dev/null
@$(MKDIR) $(BUILD_DIR)/.libm $(BUILD_DIR)/.tlibc $(BUILD_DIR)/.tlibthread
@$(RM) -f $(BUILD_DIR)/.libm/* $(BUILD_DIR)/.tlibc/* $(BUILD_DIR)/.tlibthread/*
@cd $(BUILD_DIR)/.libm && $(AR) x $(LINUX_EXTERNAL_DIR)/sgx_libm/libm.a
@cd $(BUILD_DIR)/.tlibc && $(AR) x $(LINUX_SDK_DIR)/tlibc/libtlibc.a
@cd $(BUILD_DIR)/.tlibthread && $(AR) x $(LINUX_SDK_DIR)/tlibthread/libtlibthread.a
$(CP) compiler-rt/libcompiler-rt.a $@
$(AR) rsD $@ $(BUILD_DIR)/.libm/*.o $(BUILD_DIR)/.tlibc/*.o $(BUILD_DIR)/.tlibthread/*.o
@$(RM) -rf $(BUILD_DIR)/.libm $(BUILD_DIR)/.tlibc $(BUILD_DIR)/.tlibthread
.PHONY: tlibthread
tlibthread:
$(MAKE) -C tlibthread/
.PHONY: compiler-rt
compiler-rt:
$(MAKE) -C compiler-rt/ 2> /dev/null
LIBM_PATH = $(LINUX_EXTERNAL_DIR)/sgx_libm/
M_ARCH = intel64
ifneq ($(ARCH), x86_64)
M_ARCH := ia32
endif
.PHONY: sgx_libm
sgx_libm:
$(MAKE) -C $(LIBM_PATH) ARCH=$(M_ARCH) 2> /dev/null
# ---------------------------------------------------
# tstdcxx
# includes: cpprt, tlibstdcxx
# ---------------------------------------------------
.PHONY: tstdcxx
tstdcxx: $(LIBTLIBCXX)
$(LIBTLIBCXX): cpprt tlibstdcxx
@$(MKDIR) $(BUILD_DIR)/.cpprt $(BUILD_DIR)/.tlibstdcxx
@$(RM) -f $(BUILD_DIR)/.cpprt/* $(BUILD_DIR)/.tlibstdcxx/*
@cd $(BUILD_DIR)/.cpprt && $(AR) x $(LINUX_SDK_DIR)/cpprt/libcpprt.a
@cd $(BUILD_DIR)/.tlibstdcxx && $(AR) x $(LINUX_SDK_DIR)/tlibstdcxx/libtlibstdcxx.a
$(AR) rcsD $@ $(BUILD_DIR)/.cpprt/*.o $(BUILD_DIR)/.tlibstdcxx/*.o
@$(RM) -rf $(BUILD_DIR)/.cpprt $(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)/._cpprt $(BUILD_DIR)/.tlibcxx
@$(RM) -f $(BUILD_DIR)/._cpprt/* $(BUILD_DIR)/.tlibcxx/*
@cd $(BUILD_DIR)/._cpprt && $(AR) x $(LINUX_SDK_DIR)/cpprt/libcpprt.a
@cd $(BUILD_DIR)/.tlibcxx && $(AR) x $(LINUX_SDK_DIR)/tlibcxx/libcxx.a
$(AR) rcsD $@ $(BUILD_DIR)/._cpprt/*.o $(BUILD_DIR)/.tlibcxx/*.o
@$(RM) -rf $(BUILD_DIR)/._cpprt $(BUILD_DIR)/.tlibcxx
.PHONY: tlibcxx
tlibcxx: $(BUILD_DIR)
$(MAKE) -C tlibcxx/ 2> /dev/null
$(CP) tlibcxx/README.sgx $(BUILD_DIR)/libc++_Changes_SGX.txt
# ---------------------------------------------------
# tse
# 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
# ---------------------------------------------------
# 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: tsetjmp
tsetjmp:
$(MAKE) -C tsetjmp/
.PHONY: tcmalloc
tcmalloc:
$(MAKE) -C gperftools/
.PHONY: tprotected_fs
tprotected_fs: edger8r
$(MAKE) -C protected_fs/sgx_tprotected_fs
# ---------------------------------------------------
# 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/
$(BUILD_DIR):
$(MKDIR) $@
.PHONY: clean
clean:
$(MAKE) -C $(LIBM_PATH) ARCH=$(M_ARCH) 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 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
@$(RM) $(LIBTLIBC) $(LIBTLIBCXX) $(LIBTSE)
@$(RM) $(BUILD_DIR)/STLport_Changes_SGX.txt
@$(RM) $(BUILD_DIR)/libc++_Changes_SGX.txt