Build C++ source files under libos/ and pal/
This commit is contained in:
parent
91b30c19ae
commit
5fa91becfa
@ -39,12 +39,16 @@ BUILTIN_C_SRCS := $(sort $(wildcard src/builtin/*.c))
|
|||||||
BUILTIN_C_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(BUILTIN_C_SRCS:.c=.o))
|
BUILTIN_C_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(BUILTIN_C_SRCS:.c=.o))
|
||||||
C_SRCS := $(filter-out $(BUILTIN_C_SRCS),$(sort $(wildcard src/*.c src/*/*.c)))
|
C_SRCS := $(filter-out $(BUILTIN_C_SRCS),$(sort $(wildcard src/*.c src/*/*.c)))
|
||||||
C_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(C_SRCS:.c=.o))
|
C_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(C_SRCS:.c=.o))
|
||||||
|
CXX_SRCS := $(sort $(wildcard src/*.cpp src/*/*.cpp))
|
||||||
|
CXX_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(CXX_SRCS:.cpp=.o))
|
||||||
S_SRCS := $(sort $(wildcard src/*.S src/*/*.S))
|
S_SRCS := $(sort $(wildcard src/*.S src/*/*.S))
|
||||||
S_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(S_SRCS:.S=.o))
|
S_OBJS := $(addprefix $(BUILD_DIR)/src/libos/,$(S_SRCS:.S=.o))
|
||||||
|
|
||||||
ALL_BUILD_SUBDIRS := $(sort $(patsubst %/,%,$(dir $(LIBOS_SO) $(EDL_C_OBJS) $(BUILTIN_C_OBJS) $(C_OBJS) $(S_OBJS)) $(RUST_TARGET_DIR) $(RUST_OUT_DIR)))
|
ALL_BUILD_SUBDIRS := $(sort $(patsubst %/,%,$(dir $(LIBOS_SO) $(EDL_C_OBJS) $(BUILTIN_C_OBJS) $(C_OBJS) $(CXX_OBJS) $(S_OBJS)) $(RUST_TARGET_DIR) $(RUST_OUT_DIR)))
|
||||||
|
|
||||||
C_FLAGS := $(SGX_CFLAGS_T) -fno-stack-protector -I./include/
|
C_COMMON_FLAGS := -fno-stack-protector -I./include/
|
||||||
|
C_FLAGS := $(SGX_CFLAGS_T) $(C_COMMON_FLAGS)
|
||||||
|
CXX_FLAGS := $(SGX_CXXFLAGS_T) $(C_COMMON_FLAGS)
|
||||||
|
|
||||||
# Pass builtin values by defining macros
|
# Pass builtin values by defining macros
|
||||||
#
|
#
|
||||||
@ -79,9 +83,9 @@ $(LIBOS_SO): $(BUILTIN_C_OBJS)
|
|||||||
@echo "LINK => $@"
|
@echo "LINK => $@"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(LIBOS_CORE_A): $(LIBOS_RS_A) $(C_OBJS) $(S_OBJS) $(EDL_C_OBJS)
|
$(LIBOS_CORE_A): $(LIBOS_RS_A) $(C_OBJS) $(CXX_OBJS) $(S_OBJS) $(EDL_C_OBJS)
|
||||||
@cp $(LIBOS_RS_A) $(LIBOS_CORE_A)
|
@cp $(LIBOS_RS_A) $(LIBOS_CORE_A)
|
||||||
@ar r $@ $(C_OBJS) $(S_OBJS) $(EDL_C_OBJS)
|
@ar r $@ $(C_OBJS) $(CXX_OBJS) $(S_OBJS) $(EDL_C_OBJS)
|
||||||
@echo "GEN => $@"
|
@echo "GEN => $@"
|
||||||
|
|
||||||
ifeq ($(LIBOS_RELEASE), 0)
|
ifeq ($(LIBOS_RELEASE), 0)
|
||||||
@ -106,9 +110,13 @@ $(BUILD_DIR)/src/libos/%.o: %.c
|
|||||||
@$(CC) $(C_FLAGS) -c $< -o $@
|
@$(CC) $(C_FLAGS) -c $< -o $@
|
||||||
@echo "CC <= $@"
|
@echo "CC <= $@"
|
||||||
|
|
||||||
|
$(BUILD_DIR)/src/libos/%.o: %.cpp
|
||||||
|
@$(CXX) $(CXX_FLAGS) -c $< -o $@
|
||||||
|
@echo "CXX <= $@"
|
||||||
|
|
||||||
$(BUILD_DIR)/src/libos/%.o: %.S
|
$(BUILD_DIR)/src/libos/%.o: %.S
|
||||||
@$(CC) $(C_FLAGS) -c $< -o $@
|
@$(CC) $(C_FLAGS) -c $< -o $@
|
||||||
@echo "CC <= $@"
|
@echo "AS <= $@"
|
||||||
|
|
||||||
$(LIBCOMPILER_RT_PATCH_A):
|
$(LIBCOMPILER_RT_PATCH_A):
|
||||||
@$(MAKE) --no-print-directory -C $(RUST_SGX_SDK_DIR)/compiler-rt/ > /dev/null
|
@$(MAKE) --no-print-directory -C $(RUST_SGX_SDK_DIR)/compiler-rt/ > /dev/null
|
||||||
@ -120,5 +128,5 @@ clean-builtin:
|
|||||||
|
|
||||||
clean: clean-builtin
|
clean: clean-builtin
|
||||||
@-$(RM) -f $(LIBOS_SO) $(LIBOS_CORE_A) $(LIBOS_RS_A) \
|
@-$(RM) -f $(LIBOS_SO) $(LIBOS_CORE_A) $(LIBOS_RS_A) \
|
||||||
$(LIBCOMPILER_RT_PATCH_A) $(EDL_C_OBJS) $(EDL_C_SRCS) $(C_OBJS) $(S_OBJS)
|
$(LIBCOMPILER_RT_PATCH_A) $(EDL_C_OBJS) $(EDL_C_SRCS) $(C_OBJS) $(CXX_OBJS) $(S_OBJS)
|
||||||
@-$(RM) -rf $(RUST_TARGET_DIR)
|
@-$(RM) -rf $(RUST_TARGET_DIR)
|
||||||
|
@ -7,14 +7,17 @@ LIBSGX_USTDC_A := $(BUILD_DIR)/lib/libsgx_ustdc.a
|
|||||||
|
|
||||||
EDL_C_SRCS := $(addprefix $(BUILD_DIR)/src/pal/,Enclave_u.c Enclave_u.h)
|
EDL_C_SRCS := $(addprefix $(BUILD_DIR)/src/pal/,Enclave_u.c Enclave_u.h)
|
||||||
EDL_C_OBJS := $(addprefix $(BUILD_DIR)/src/pal/,Enclave_u.o)
|
EDL_C_OBJS := $(addprefix $(BUILD_DIR)/src/pal/,Enclave_u.o)
|
||||||
C_SRCS := $(sort $(wildcard *.c))
|
C_SRCS := $(sort $(wildcard *.c */*.c))
|
||||||
C_OBJS := $(addprefix $(BUILD_DIR)/src/pal/,$(C_SRCS:.c=.o))
|
C_OBJS := $(addprefix $(BUILD_DIR)/src/pal/,$(C_SRCS:.c=.o))
|
||||||
|
CXX_SRCS := $(sort $(wildcard *.cpp */*.cpp))
|
||||||
|
CXX_OBJS := $(addprefix $(BUILD_DIR)/src/pal/,$(CXX_SRCS:.cpp=.o))
|
||||||
|
|
||||||
C_FLAGS := $(SGX_CFLAGS_U) -I$(BUILD_DIR)/src/pal -Wno-unused-result
|
C_COMMON_FLAGS := -I$(BUILD_DIR)/src/pal -Wno-unused-result
|
||||||
LINK_FLAGS := $(SGX_LFLAGS_U)
|
C_FLAGS := $(C_COMMON_FLAGS) $(SGX_CFLAGS_U)
|
||||||
LINK_FLAGS += -L$(RUST_SGX_SDK_DIR)/sgx_ustdc/ -lsgx_ustdc -lsgx_uprotected_fs
|
CXX_FLAGS := $(C_COMMON_FLAGS) $(SGX_CXXFLAGS_U)
|
||||||
|
LINK_FLAGS := $(SGX_LFLAGS_U) -L$(RUST_SGX_SDK_DIR)/sgx_ustdc/ -lsgx_ustdc -lsgx_uprotected_fs
|
||||||
|
|
||||||
ALL_BUILD_SUBDIRS := $(sort $(patsubst %/,%,$(dir $(BIN) $(EDL_C_OBJS) $(C_OBJS))))
|
ALL_BUILD_SUBDIRS := $(sort $(patsubst %/,%,$(dir $(BIN) $(EDL_C_OBJS) $(C_OBJS) $(CXX_OBJS))))
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
|
|
||||||
@ -23,8 +26,8 @@ all: $(ALL_BUILD_SUBDIRS) $(BIN)
|
|||||||
$(ALL_BUILD_SUBDIRS):
|
$(ALL_BUILD_SUBDIRS):
|
||||||
@mkdir -p $@
|
@mkdir -p $@
|
||||||
|
|
||||||
$(BIN): $(LIBSGX_USTDC_A) $(EDL_C_OBJS) $(C_OBJS)
|
$(BIN): $(LIBSGX_USTDC_A) $(EDL_C_OBJS) $(C_OBJS) $(CXX_OBJS)
|
||||||
@$(CC) $^ -o $@ $(LINK_FLAGS)
|
@$(CXX) $^ -o $@ $(LINK_FLAGS)
|
||||||
@echo "LINK => $@"
|
@echo "LINK => $@"
|
||||||
|
|
||||||
$(BUILD_DIR)/src/pal/Enclave_u.o: $(BUILD_DIR)/src/pal/Enclave_u.c
|
$(BUILD_DIR)/src/pal/Enclave_u.o: $(BUILD_DIR)/src/pal/Enclave_u.c
|
||||||
@ -39,10 +42,14 @@ $(BUILD_DIR)/src/pal/%.o: %.c
|
|||||||
@$(CC) $(C_FLAGS) -c $< -o $@
|
@$(CC) $(C_FLAGS) -c $< -o $@
|
||||||
@echo "CC <= $@"
|
@echo "CC <= $@"
|
||||||
|
|
||||||
|
$(BUILD_DIR)/src/pal/%.o: %.cpp
|
||||||
|
@$(CXX) $(CXX_FLAGS) -c $< -o $@
|
||||||
|
@echo "CXX <= $@"
|
||||||
|
|
||||||
$(LIBSGX_USTDC_A):
|
$(LIBSGX_USTDC_A):
|
||||||
@$(MAKE) --no-print-directory -C $(RUST_SGX_SDK_DIR)/sgx_ustdc/ > /dev/null
|
@$(MAKE) --no-print-directory -C $(RUST_SGX_SDK_DIR)/sgx_ustdc/ > /dev/null
|
||||||
@cp $(RUST_SGX_SDK_DIR)/sgx_ustdc/libsgx_ustdc.a $(LIBSGX_USTDC_A)
|
@cp $(RUST_SGX_SDK_DIR)/sgx_ustdc/libsgx_ustdc.a $(LIBSGX_USTDC_A)
|
||||||
@echo "GEN <= $@"
|
@echo "GEN <= $@"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@-$(RM) -f $(BIN) $(LIBSGX_USTDC_A) $(C_OBJS) $(EDL_C_OBJS) $(EDL_C_SRCS)
|
@-$(RM) -f $(BIN) $(LIBSGX_USTDC_A) $(C_OBJS) $(CXX_OBJS) $(EDL_C_OBJS) $(EDL_C_SRCS)
|
||||||
|
@ -64,11 +64,10 @@ ProtectedFs_Library_Name := sgx_tprotected_fs
|
|||||||
#
|
#
|
||||||
# Export flags used to compile or link untrusted modules
|
# Export flags used to compile or link untrusted modules
|
||||||
#
|
#
|
||||||
SGX_CFLAGS_U := $(SGX_COMMON_CFLAGS) -fPIC -Wno-attributes
|
SGX_CFLAGS_U := $(SGX_COMMON_CFLAGS) -fPIC -Wno-attributes -I$(SGX_SDK)/include
|
||||||
SGX_CFLAGS_U += -I$(SGX_SDK)/include
|
SGX_CXXFLAGS_U := $(SGX_CFLAGS_U) -std=c++11
|
||||||
|
|
||||||
SGX_LFLAGS_U := $(SGX_COMMON_CFLAGS) -lpthread
|
SGX_LFLAGS_U := $(SGX_COMMON_CFLAGS) -lpthread -L$(SGX_LIBRARY_PATH) -l$(Urts_Library_Name)
|
||||||
SGX_LFLAGS_U += -L$(SGX_LIBRARY_PATH) -l$(Urts_Library_Name)
|
|
||||||
ifneq ($(SGX_MODE), HW)
|
ifneq ($(SGX_MODE), HW)
|
||||||
SGX_LFLAGS_U += -lsgx_uae_service_sim
|
SGX_LFLAGS_U += -lsgx_uae_service_sim
|
||||||
else
|
else
|
||||||
@ -78,8 +77,9 @@ endif
|
|||||||
#
|
#
|
||||||
# Export flags used to compile or link untrusted modules
|
# Export flags used to compile or link untrusted modules
|
||||||
#
|
#
|
||||||
SGX_CFLAGS_T := $(SGX_COMMON_CFLAGS) -nostdinc -fvisibility=hidden -fpie -fstack-protector
|
SGX_CFLAGS_T := $(SGX_COMMON_CFLAGS) -nostdinc -fvisibility=hidden -fpie -fstack-protector \
|
||||||
SGX_CFLAGS_T += -I$(RUST_SGX_SDK_DIR)/common/inc/ -I$(SGX_SDK)/include -I$(SGX_SDK)/include/tlibc -I$(SGX_SDK)/include/stlport -I$(SGX_SDK)/include/epid
|
-I$(RUST_SGX_SDK_DIR)/common/inc/ -I$(SGX_SDK)/include -I$(SGX_SDK)/include/tlibc
|
||||||
|
SGX_CXXFLAGS_T := $(SGX_CFLAGS_T) -std=c++11 -nostdinc++ -I$(SGX_SDK)/include/libcxx
|
||||||
|
|
||||||
# Before use this linker flag, the user should define $(_Other_Enclave_Libs),
|
# Before use this linker flag, the user should define $(_Other_Enclave_Libs),
|
||||||
# and $(_Other_Link_Flags)
|
# and $(_Other_Link_Flags)
|
||||||
|
Loading…
Reference in New Issue
Block a user