github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/sawtooth-core-master/consensus/poet/sgx/CMakeLists.txt (about)

     1  # Copyright 2017 Intel Corporation
     2  #
     3  # Licensed under the Apache License, Version 2.0 (the "License");
     4  # you may not use this file except in compliance with the License.
     5  # You may obtain a copy of the License at
     6  #
     7  #     http://www.apache.org/licenses/LICENSE-2.0
     8  #
     9  # Unless required by applicable law or agreed to in writing, software
    10  # distributed under the License is distributed on an "AS IS" BASIS,
    11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  # See the License for the specific language governing permissions and
    13  # limitations under the License.
    14  # ------------------------------------------------------------------------------
    15  
    16  CMAKE_MINIMUM_REQUIRED(VERSION 3.2 FATAL_ERROR)
    17  PROJECT(sawtooth-poet CXX)
    18  
    19  LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
    20  
    21  SET (EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
    22  SET (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
    23  
    24  SET(DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps")
    25  
    26  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    27  # COMPILER OPTIONS
    28  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    29  
    30  
    31  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    32  # ADDITIONAL LIBRARIES
    33  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    34  
    35  # SGX -- should move to findsgx 
    36  OPTION(SGX_USE_SIMULATOR "Use the sgx simulator" FALSE)
    37  
    38  IF(MSVC)
    39      SET(SGX_EDGER "$ENV{SGXSDKInstallPath}bin/win32/Release/sgx_edger8r.exe")
    40      SET(SGX_SIGN "$ENV{SGXSDKInstallPath}bin/win32/release/sgx_sign.exe")
    41      SET(SGX_LIB_DIRS_DEBUG "$ENV{SGXSDKInstallPath}bin/x64/Debug")
    42      SET(SGX_LIB_DIRS_RELEASE "$ENV{SGXSDKInstallPath}bin/x64/Release")
    43  ELSE()
    44      SET(SGX_EDGER "$ENV{SGXSDKInstallPath}bin/x64/sgx_edger8r")
    45      SET(SGX_SIGN "$ENV{SGXSDKInstallPath}bin/x64/sgx_sign")
    46  ENDIF()
    47  
    48  SET(SGX_INCLUDE "$ENV{SGXSDKInstallPath}include")
    49  SET(SGX_ENCLAVE_INCLUDE "$ENV{SGXSDKInstallPath}include"
    50                          "$ENV{SGXSDKInstallPath}include/tlibc"
    51                          "$ENV{SGXSDKInstallPath}include/stlport")
    52  
    53  SET(SGX_LIBS_TRUSTED_NAMES sgx_tstdc sgx_tstdcxx sgx_tkey_exchange sgx_tcrypto)
    54  SET(SGX_LIBS_UNTRUSTED_NAMES sgx_ukey_exchange)
    55  
    56  IF(MSVC)
    57      SET(SGX_LIBS_UNTRUSTED_NAMES sgx_ukey_exchangemt ${SGX_LIBS_UNTRUSTED_NAMES})
    58  ELSE()
    59      SET(SGX_LIBS_UNTRUSTED_NAMES ${SGX_LIBS_UNTRUSTED_NAMES} pthread )
    60  ENDIF()
    61  
    62  IF(${SGX_USE_SIMULATOR})
    63      ADD_DEFINITIONS(-D SGX_SIMULATOR)
    64      SET(SGX_LIBS_TRUSTED_NAMES sgx_trts_sim sgx_tservice_sim ${SGX_LIBS_TRUSTED_NAMES})
    65      SET(SGX_LIBS_UNTRUSTED_NAMES sgx_urts_sim sgx_uae_service_sim ${SGX_LIBS_UNTRUSTED_NAMES})
    66  ELSE()
    67      SET(SGX_LIBS_TRUSTED_NAMES sgx_trts sgx_tservice ${SGX_LIBS_TRUSTED_NAMES})
    68      SET(SGX_LIBS_UNTRUSTED_NAMES sgx_urts sgx_uae_service ${SGX_LIBS_UNTRUSTED_NAMES})
    69  ENDIF()
    70  
    71  FOREACH(lib ${SGX_LIBS_TRUSTED_NAMES} ${SGX_LIBS_UNTRUSTED_NAMES})
    72      IF(MSVC)
    73  	    SET(${lib} optimized ${SGX_LIB_DIRS_RELEASE}/${lib}${CMAKE_STATIC_LIBRARY_SUFFIX} debug ${SGX_LIB_DIRS_DEBUG}/${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
    74      ELSE()
    75          SET(${lib} ${lib})
    76      ENDIF()
    77  ENDFOREACH(lib)
    78  
    79  FOREACH(lib ${SGX_LIBS_TRUSTED_NAMES})
    80  	SET(SGX_LIBS_TRUSTED ${SGX_LIBS_TRUSTED} ${${lib}})
    81  ENDFOREACH(lib)
    82  
    83  FOREACH(lib ${SGX_LIBS_UNTRUSTED_NAMES})
    84  	SET(SGX_LIBS_UNTRUSTED ${SGX_LIBS_UNTRUSTED} ${${lib}})
    85  ENDFOREACH(lib)
    86  
    87  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    88  FUNCTION(SGX_EDGE_TRUSTED EDL EDGE_FILES)
    89  	GET_FILENAME_COMPONENT(EDL_BASE_NAME ${EDL} NAME_WE)
    90  	INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
    91  	
    92  	SET (EDGE_FILES_LIST "${CMAKE_CURRENT_BINARY_DIR}/${EDL_BASE_NAME}_t.h" "${CMAKE_CURRENT_BINARY_DIR}/${EDL_BASE_NAME}_t.c") 
    93  	SET (${EDGE_FILES} ${EDGE_FILES_LIST} PARENT_SCOPE) 
    94  	ADD_CUSTOM_COMMAND( OUTPUT ${EDGE_FILES_LIST}
    95  		COMMAND "${SGX_EDGER}" --trusted ${EDL} --search-path ${SGX_INCLUDE}
    96  		WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    97  		DEPENDS ${PROJECT_EDL} 
    98  	)	
    99  ENDFUNCTION()
   100  
   101  FUNCTION(SGX_EDGE_UNTRUSTED EDL EDGE_FILES)
   102  	GET_FILENAME_COMPONENT(EDL_BASE_NAME ${EDL} NAME_WE)
   103  	INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
   104  	
   105  	SET (EDGE_FILES_LIST "${CMAKE_CURRENT_BINARY_DIR}/${EDL_BASE_NAME}_u.h" "${CMAKE_CURRENT_BINARY_DIR}/${EDL_BASE_NAME}_u.c") 
   106  	SET (${EDGE_FILES} ${EDGE_FILES_LIST} PARENT_SCOPE) 
   107  	ADD_CUSTOM_COMMAND( OUTPUT ${EDGE_FILES_LIST}
   108  		COMMAND "${SGX_EDGER}" --untrusted ${EDL} --search-path ${SGX_INCLUDE}
   109  		WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
   110  		DEPENDS ${PROJECT_EDL} 
   111  	)	
   112  ENDFUNCTION()
   113  
   114  FUNCTION(SGX_SIGN_ENCLAVE TARGET KEY_FILE CONFIG)
   115  	SET (ENCLAVE $<TARGET_FILE:${TARGET}>)
   116  
   117  	SET (SIGNED_ENCLAVE ${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${TARGET}.signed${CMAKE_SHARED_LIBRARY_SUFFIX})
   118  	SET (SIGNED_ENCLAVE ${SIGNED_ENCLAVE} PARENT_SCOPE)
   119  	ADD_CUSTOM_COMMAND( TARGET ${TARGET}
   120  		POST_BUILD
   121  		COMMAND "${SGX_SIGN}" sign -key "${KEY_FILE}" -enclave "${ENCLAVE}" -out "${SIGNED_ENCLAVE}" -config "${CONFIG}"
   122  	)	
   123  ENDFUNCTION()
   124  
   125  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   126  
   127  
   128  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   129  IF( WIN32 )
   130  	MACRO( SET_RUNTIME type )
   131  		if(${type} STREQUAL "DYNAMIC")
   132  			SET(RTS "/MT")
   133  			SET(RTD "/MD")
   134  		ELSEIF(${type} STREQUAL "STATIC")
   135  			SET(RTS "/MD")
   136  			SET(RTD "/MT")
   137  		ELSE()
   138  			MESSAGE(SEND_ERROR  "Unknown runtime ${type}")
   139  		ENDIF()
   140  		FOREACH(bt ${CMAKE_CONFIGURATION_TYPES})
   141  			STRING(TOUPPER "CMAKE_C_FLAGS_${bt}" variable)
   142  			STRING(REGEX REPLACE ${RTS} ${RTD} ${variable} "${${variable}}")
   143  			STRING(TOUPPER "CMAKE_CXX_FLAGS_${bt}" variable)
   144  			STRING(REGEX REPLACE ${RTS} ${RTD} ${variable} "${${variable}}")		
   145  		ENDFOREACH()		
   146  	ENDMACRO()	
   147  ELSE()
   148  	MACRO( SET_RUNTIME type )
   149  	ENDMACRO()	
   150  ENDIF()
   151  
   152  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   153  
   154  INCLUDE_DIRECTORIES(${SGX_INCLUDE})
   155  LINK_DIRECTORIES()
   156  
   157  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   158  # PROJECTS
   159  # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   160  ADD_SUBDIRECTORY (sawtooth_poet_sgx/libpoet_enclave)
   161  ADD_SUBDIRECTORY (sawtooth_poet_sgx/libpoet_bridge)