Sfoglia il codice sorgente

[{shim,Pal}] Refactor Makefiles to utilize Makefile.rules

Isaku Yamahata 5 anni fa
parent
commit
4789a3a188

+ 15 - 21
LibOS/shim/src/Makefile

@@ -23,11 +23,9 @@ CFLAGS += -fno-omit-frame-pointer -DOMIT_FRAME_POINTER=0
 endif
 ASFLAGS	= -Wa,--noexecstack -x assembler-with-cpp -I../include
 
-LDFLAGS	= -shared -nostdlib --version-script shim.map -T shim.lds \
-	  -z combreloc -z relro -z now -z defs \
+LDFLAGS	= -shared -nostdlib -z combreloc -z relro -z now -z defs \
 	  -dynamic-link=libpal.so \
 	  -rpath-link=$(abspath $(RUNTIME_DIR))
-LDFLAGS-debug = $(patsubst shim.map,shim-debug.map,$(LDFLAGS))
 ARFLAGS	=
 
 ifeq ($(WERROR),1)
@@ -38,6 +36,8 @@ files_to_build = libsysdb.a libsysdb.so libsysdb_debug.so
 files_to_install = $(addprefix $(RUNTIME_DIR)/,$(files_to_build))
 
 defs	= -DIN_SHIM
+CFLAGS += $(defs)
+ASFLAGS += $(defs)
 fs	= chroot str pipe socket proc dev
 ipcns	= pid sysv
 objs	= $(addprefix bookkeep/shim_,handle vma thread signal) \
@@ -71,16 +71,16 @@ $(files_to_install): $(RUNTIME_DIR)/%: %
 	$(call cmd,ln_sf)
 
 ifeq ($(findstring x86_64,$(SYS))$(findstring linux,$(SYS)),x86_64linux)
-libsysdb.so: $(addsuffix .o,$(objs)) $(filter %.map %.lds,$(LDFLAGS)) \
+LDFLAGS-libsysdb.so += --version-script shim.map -T shim.lds
+libsysdb.so: $(addsuffix .o,$(objs)) $(filter %.map %.lds,$(LDFLAGS-$@)) \
 	     $(graphene_lib) $(pal_lib)
-	@echo [ $@ ]
-	$(LD) $(LDFLAGS) -o $@ $(filter-out %.map %.lds,$^) -soname $@
+	$(call cmd,ld_so_o)
 
+LDFLAGS-libsysdb_debug.so += --version-script shim-debug.map -T shim.lds
 libsysdb_debug.so: $(addsuffix .o,$(filter-out syscallas,$(objs))) \
-		   $(filter %.map %.lds,$($LDFLAGS-debug)) \
+		   $(filter %.map %.lds,$(LDFLAGS-$@)) \
 		   $(graphene_lib) $(pal_lib)
-	@echo [ $@ ]
-	$(LD) $(LDFLAGS-debug) -o $@ $(filter-out %.map %.lds,$^) -soname $@
+	$(call cmd,ld_so_o)
 
 .lib/host_endian.h: ../../../Pal/src/host/$(PAL_HOST)/host_endian.h
 	@mkdir -p .lib
@@ -91,8 +91,7 @@ $(graphene_lib): .lib/host_endian.h
 	$(MAKE) -C ../../../Pal/lib target=$(abspath .lib)/
 
 libsysdb.a: $(addsuffix .o,$(objs))
-	@echo [ $@ ]
-	$(AR) $(ARFLAGS) $@ $^
+	$(call cmd,ar_a_o)
 else
 .IGNORE: $(shim_target)
 $(shim_target):
@@ -109,24 +108,19 @@ elf/shim_rtld.o: $(wildcard elf/*.h)
 
 
 %.o: %.c $(headers)
-	@echo [ $@ ]
-	@$(CC) $(CFLAGS) $(defs) -c $< -o $@
+	$(call cmd,cc_o_c)
 
 %.e %.i: %.c $(headers)
-	@echo [ $@ ]
-	@$(CC) $(CFLAGS) $(defs) -E $< -o $@
+	$(call cmd,cpp_i_c)
 
 %.s: %.c $(headers)
-	@echo [ $@ ]
-	@$(CC) $(CFLAGS) $(defs) -S $< -o $@
+	$(call cmd,cc_s_c)
 
 %.o: %.S $(headers)
-	@echo [ $@ ]
-	@$(AS) $(ASFLAGS) $(defs) -c $< -o $@
+	$(call cmd,as_o_S)
 
 %.e %.s: %.S $(headers)
-	@echo [ $@ ]
-	@$(AS) $(ASFLAGS) $(defs) -E $< -o $@
+	$(call cmd,cpp_s_S)
 
 syscallas.S shim_checkpoint.c: asm-offsets.h
 

+ 3 - 4
Pal/lib/Makefile

@@ -1,4 +1,5 @@
 include ../../Makefile.configs
+include ../../Makefile.rules
 include ../src/Makefile.Host
 
 CFLAGS	= -Wall -fPIC -O2 -std=gnu99 -fgnu89-inline -U_FORTIFY_SOURCE \
@@ -64,14 +65,12 @@ CFLAGS += -DDEBUG
 endif
 
 $(target)graphene-lib.a: $(addprefix $(target),$(objs))
-	@echo [ $(notdir $@) ]
 	@mkdir -p $(dir $@)
-	@$(AR) $(ARFLAGS) $@ $^
+	$(call cmd,ar_a_o)
 
 $(target)%.o: %.c $(headers)
-	@echo [ $(notdir $@) ]
 	@mkdir -p $(dir $@)
-	@$(CC) $(CFLAGS) -c $< -o $@
+	$(call cmd,cc_o_c)
 
 .PHONY: clean
 clean:

+ 10 - 14
Pal/src/Makefile

@@ -38,6 +38,7 @@ files_to_build = $(pal_lib) $(pal_lib_post) $(pal_static) \
 
 defs	= -DIN_PAL -DHOST_TYPE="$(PAL_HOST)" -D$(PAL_HOST_MACRO) -DPAL_DIR=$(PAL_DIR) \
 	  -DRUNTIME_DIR=$(RUNTIME_DIR)
+CFLAGS += $(defs)
 objs	= $(addprefix db_,streams memory threading mutex events process \
 	    object main misc ipc exception rtld) slab printf
 
@@ -105,8 +106,7 @@ $(runtime_loader): $(pal_loader)
 ifneq ($(pal_lib),)
 $(pal_lib): $(addprefix $(OBJ_DIR)/,$(addsuffix .o,$(objs))) \
 	    $(host_lib) $(graphene_lib) $(pal_lib_deps)
-	@echo [ $@ ]
-	$(LD) $(LDFLAGS) -o $@ $(filter-out %.map %.lds,$^) $(LDFLAGS-suffix)
+	$(call cmd,ld_so_o)
 
 $(runtime_lib): $(pal_lib)
 	$(call cmd,ln_sf)
@@ -132,8 +132,7 @@ endif
 
 $(pal_static): $(addprefix $(OBJ_DIR)/,$(addsuffix .o,$(objs))) \
 	       $(host_lib) $(graphene_lib)
-	@echo [ $@ ]
-	@$(AR) $(ARFLAGS) $@ $^ $(ARFLAGS-suffix)
+	$(call cmd,ar_a_o)
 
 $(OBJ_DIR)/%.asm: %.c $(headers)
 	@mkdir -p $(OBJ_DIR)
@@ -142,28 +141,25 @@ $(OBJ_DIR)/%.asm: %.c $(headers)
 	@objdump -S $<.o > $@
 	@rm $<.o
 
+user_start.o: ASFLAGS =
 user_start.o: user_start.S
-	@echo [ $@ ]
-	@$(CC) -c $< -o $@
+	$(call cmd,as_o_S)
 
+user_shared_start.o: ASFLAGS = -DSHARED -fPIC
 user_shared_start.o: user_start.S
-	@echo [ $@ ]
-	@$(CC) -DSHARED -fPIC -c $< -o $@
+	$(call cmd,as_o_S)
 
 $(OBJ_DIR)/%.o: %.c $(headers)
 	@mkdir -p $(OBJ_DIR)
-	@echo [ $@ ]
-	@$(CC) $(CFLAGS) $(defs) -c $< -o $@ $(CFLAGS-suffix)
+	$(call cmd,cc_o_c)
 
 $(OBJ_DIR)/%.e $(OBJ_DIR)/%.i: %.c $(headers)
 	@mkdir -p $(OBJ_DIR)
-	@echo [ $@ ]
-	@$(CC) $(CFLAGS) $(defs) -E $< -o $@ $(CFLAGS-suffix)
+	$(call cmd,cpp_i_c)
 
 $(OBJ_DIR)/%.s: %.c $(headers)
 	@mkdir -p $(OBJ_DIR)
-	@echo [ $@ ]
-	@$(CC) $(CFLAGS) $(defs) -S $< -o $@ $(CFLAGS-suffix)
+	$(call cmd,cc_s_c)
 
 .PHONY: clean
 clean:

+ 11 - 12
Pal/src/host/FreeBSD/Makefile

@@ -8,6 +8,8 @@ ASFLAGS += -I. -Iinclude -I../.. -I../../../include
 host_target = libpal-FreeBSD.a ../../pal-gdb
 
 defs	= -DIN_PAL -DPAL_DIR="$(PAL_DIR)"
+CFLAGS += $(defs)
+ASFLAGS += $(defs)
 objs	= $(addprefix db_,files devices pipes sockets streams memory threading \
 	    mutex events process object main rtld misc ipc \
 	    exception2) rfork_thread
@@ -28,8 +30,7 @@ pal-gdb: pal-gdb.template
 	chmod 755 $@
 
 libpal-FreeBSD.a: $(addsuffix .o,$(objs)) $(graphene_lib)
-	@echo [ host/FreeBSD/$@ ]
-	@$(AR) $(ARFLAGS) $@ $^
+	$(call cmd,ar_a_o)
 
 %.asm: %.c $(headers)
 	$(CC) $(CFLAGS) $(defs) -c $< -o $<.o
@@ -37,24 +38,22 @@ libpal-FreeBSD.a: $(addsuffix .o,$(objs)) $(graphene_lib)
 	@rm $<.o
 
 %.o: %.c $(headers)
-	@echo [ host/FreeBSD/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -c $< -o $@
+	$(call cmd,cc_o_c)
 
 %.e %.i: %.c $(headers)
-	@echo [ host/FreeBSD/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -E $< -o $@
+	$(call cmd,cpp_i_c)
 
 %.s: %.c $(headers)
-	@echo [ host/FreeBSD/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -S $< -o $@
+	$(call cmd,cc_s_c)
 
 %.o: %.S $(headers)
-	@echo [ host/FreeBSD/$@ ]
-	@$(AS) $(ASFLAGS) $(defs) -c $< -o $@
+	$(call cmd,as_o_S)
 
 %.e %.s: %.S $(headers)
-	@echo [ host/FreeBSD/$@ ]
-	@$(AS) $(ASFLAGS) $(defs) -E $< -o $@
+	$(call cmd,cpp_s_S)
+
+
+include ../../../../Makefile.rules
 
 CLEAN_FILES += $(notdir $(pal_static) $(pal_lib) $(pal_sec) $(pal_loader))
 

+ 21 - 26
Pal/src/host/Linux-SGX/Makefile

@@ -7,6 +7,8 @@ ASFLAGS += -I. -I../.. -I../../../include
 host_files = libpal-Linux-SGX.a pal-sgx debugger/sgx_gdb.so generated_offsets.py
 
 defs	= -DIN_PAL -DPAL_DIR=$(PAL_DIR) -DRUNTIME_DIR=$(RUNTIME_DIR)
+CFLAGS += $(defs)
+ASFLAGS += $(defs)
 enclave-objs = $(addprefix db_,files devices pipes sockets streams memory \
 		 threading mutex events process object main rtld \
 		 exception misc ipc spinlock) \
@@ -32,56 +34,49 @@ endif
 	$(MAKE) -C ../../ $<
 
 libpal-Linux-SGX.a: $(addsuffix .o,$(enclave-objs) $(enclave-asm-objs))
-	@echo [ host/Linux-SGX/$@ ]
-	$(AR) $(ARFLAGS) $@ $^
+	$(call cmd,ar_a_o)
 
+$(addsuffix .o,$(enclave-objs)): CFLAGS += -DIN_ENCLAVE
 $(addsuffix .o,$(enclave-objs)): %.o: %.c $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -DIN_ENCLAVE -c $< -o $@
+	$(call cmd,cc_o_c)
 
+$(addsuffix .e,$(enclave-objs)): CFLAGS += -DIN_ENCLAVE
 $(addsuffix .e,$(enclave-objs)): %.e: %.c $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -DIN_ENCLAVE -E $< -o $@
+	$(call cmd,cpp_i_c)
 
+$(addsuffix .i,$(enclave-objs)): CFLAGS += -DIN_ENCLAVE
 $(addsuffix .i,$(enclave-objs)): %.i: %.c $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -DIN_ENCLAVE -E $< -o $@
+	$(call cmd,cpp_i_c)
 
+$(addsuffix .s,$(enclave-objs)): CFLAGS += -DIN_ENCLAVE
 $(addsuffix .s,$(enclave-objs)): %.s: %.c $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -DIN_ENCLAVE -S $< -o $@
+	$(call cmd,cc_s_c)
 
+$(addsuffix .o,$(enclave-asm-objs)): ASFLAGS += -DIN_ENCLAVE
 $(addsuffix .o,$(enclave-asm-objs)): %.o: %.S $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(AS) $(ASFLAGS) $(defs) -DIN_ENCLAVE -c $< -o $@
+	$(call cmd,as_o_S)
 
+$(addsuffix .s,$(enclave-asm-objs)): ASFLAGS += -DIN_ENCLAVE
 $(addsuffix .s,$(enclave-asm-objs)): %.s: %.S $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(AS) $(ASFLAGS) $(defs) -DIN_ENCLAVE -E $< -o $@
+	$(call cmd,cpp_s_S)
 
 $(addsuffix .o,$(urts-objs)): %.o: %.c $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(CC) $(filter-out -DIN_ENCLAVE,$(CFLAGS)) $(defs) -c $< -o $@
+	$(call cmd,cc_o_c)
 
 $(addsuffix .e,$(urts-objs)): %.e: %.c $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(CC) $(filter-out -DIN_ENCLAVE,$(CFLAGS)) $(defs) -E $< -o $@
+	$(call cmd,cpp_i_c)
 
 $(addsuffix .i,$(urts-objs)): %.i: %.c $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(CC) $(filter-out -DIN_ENCLAVE,$(CFLAGS)) $(defs) -E $< -o $@
+	$(call cmd,cpp_i_c)
 
 $(addsuffix .s,$(urts-objs)): %.s: %.c $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(CC) $(filter-out -DIN_ENCLAVE,$(CFLAGS)) $(defs) -S $< -o $@
+	$(call cmd,cc_s_c)
 
 $(addsuffix .s,$(urts-asm-objs)): %.s: %.S $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(AS) $(filter-out -DIN_ENCLAVE,$(ASFLAGS)) $(defs) -E $< -o $@
+	$(call cmd,cpp_s_S)
 
 $(addsuffix .o,$(urts-asm-objs)): %.o: %.S $(headers)
-	@echo [ host/Linux-SGX/$@ ]
-	@$(AS) $(filter-out -DIN_ENCLAVE,$(ASFLAGS)) $(defs) -c $< -o $@
+	$(call cmd,as_o_S)
 
 pal-sgx: $(addsuffix .o,$(urts-objs) $(urts-asm-objs)) $(graphene_lib)
 	@echo [ host/Linux-SGX/$@ ]

+ 2 - 2
Pal/src/host/Linux-SGX/Makefile.am

@@ -3,14 +3,14 @@ HOST_DIR = host/$(PAL_HOST)
 
 CFLAGS	= -Wall -fPIC -O2 -maes -std=c11 -U_FORTIFY_SOURCE \
 	  -fno-omit-frame-pointer \
-	  -fno-stack-protector -fno-builtin -DIN_ENCLAVE
+	  -fno-stack-protector -fno-builtin
 
 EXTRAFLAGS = -Wextra $(call cc-option,-Wnull-dereference)
 
 CFLAGS += $(EXTRAFLAGS)
 
 ASFLAGS = -DPIC -DSHARED -fPIC -DASSEMBLER -Wa,--noexecstack \
-	  -x assembler-with-cpp -DIN_ENCLAVE
+	  -x assembler-with-cpp
 LDFLAGS	= -shared -nostdlib -z combreloc -z defs \
 	  --version-script $(HOST_DIR)/pal.map -T $(HOST_DIR)/enclave.lds \
 	  --hash-style=gnu -z relro -z now

+ 10 - 12
Pal/src/host/Linux/Makefile

@@ -13,6 +13,8 @@ endif
 host_files = libpal-Linux.a
 
 defs	= -DIN_PAL -DPAL_DIR=$(PAL_DIR) -DRUNTIME_DIR=$(RUNTIME_DIR)
+CFLAGS += $(defs)
+ASFLAGS += $(defs)
 objs	= $(addprefix db_,files devices pipes sockets streams memory threading \
 	    mutex events process object main rtld misc ipc \
 	    exception) manifest clone-x86_64 gettimeofday-x86_64
@@ -29,8 +31,7 @@ export DEBUG
 endif
 
 libpal-Linux.a: $(addsuffix .o,$(objs)) $(graphene_lib)
-	@echo [ host/Linux/$@ ]
-	@$(AR) $(ARFLAGS) $@ $^
+	$(call cmd,ar_a_o)
 
 %.asm: %.c $(headers)
 	$(CC) $(CFLAGS) $(defs) -c $< -o $<.o
@@ -38,24 +39,21 @@ libpal-Linux.a: $(addsuffix .o,$(objs)) $(graphene_lib)
 	@rm $<.o
 
 %.o: %.c $(headers)
-	@echo [ host/Linux/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -c $< -o $@
+	$(call cmd,cc_o_c)
 
 %.e %.i: %.c $(headers)
-	@echo [ host/Linux/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -E $< -o $@
+	$(call cmd,cpp_i_c)
 
 %.s: %.c $(headers)
-	@echo [ host/Linux/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -S $< -o $@
+	$(call cmd,cc_s_c)
 
 %.o: %.S $(headers)
-	@echo [ host/Linux/$@ ]
-	@$(AS) $(ASFLAGS) $(defs) -c $< -o $@
+	$(call cmd,as_o_S)
 
 %.e %.s: %.S $(headers)
-	@echo [ host/Linux/$@ ]
-	@$(AS) $(ASFLAGS) $(defs) -E $< -o $@
+	$(call cmd,cpp_s_S)
+
+include ../../../../Makefile.rules
 
 CLEAN_FILES += $(notdir $(pal_static) $(pal_lib) $(pal_sec) $(pal_loader))
 

+ 7 - 6
Pal/src/host/Skeleton/Makefile

@@ -7,6 +7,8 @@ ASFLAGS += -I. -I../.. -I../../../include
 host_target = libpal-Skeleton.a
 
 defs	= -DIN_PAL
+CFLAGS += $(defs)
+ASFLAGS += $(defs)
 objs	= $(addprefix db_,files devices pipes sockets streams memory threading \
 	    semaphore events process object main rtld misc ipc exception)
 graphene_lib = ../../../lib/graphene-lib.a
@@ -25,8 +27,7 @@ endif
 	$(MAKE) -C ../../ $<
 
 libpal-Skeleton.a: $(addsuffix .o,$(objs)) $(graphene_lib)
-	@echo [ host/$(PAL_HOST)/$@ ]
-	@$(AR) $(ARFLAGS) $@ $^
+	$(call cmd,ar_a_o)
 
 %.asm: %.c $(headers)
 	$(CC) $(CFLAGS) $(defs) -c $< -o $<.o
@@ -34,12 +35,12 @@ libpal-Skeleton.a: $(addsuffix .o,$(objs)) $(graphene_lib)
 	@rm $<.o
 
 %.o: %.c $(headers)
-	@echo [ host/$(PAL_HOST)/$@ ]
-	@$(CC) $(CFLAGS) $(defs) -c $< -o $@
+	$(call cmd,cc_o_c)
 
 %.o: %.S $(headers)
-	@echo [ host/$(PAL_HOST)/$@ ]
-	@$(AS) $(ASFLAGS) $(defs) -c $< -o $@
+	$(call cmd,as_o_S)
+
+include ../../../../Makefile.rules
 
 .PHONY: clean
 clean:

+ 6 - 8
Pal/src/security/Linux/Makefile

@@ -18,21 +18,19 @@ CC += -g
 CFLAGS += -DDEBUG
 endif
 
+include ../../../../Makefile.rules
+
 libpal_sec.so: $(addsuffix .o,$(objs)) $(graphene_lib)
-	@echo [ security/Linux/$@ ]
-	@$(LD) $(LDFLAGS) -o $@ $^ -soname=libpal_sec.so
+	$(call cmd,ld_so_o)
 
 %.o: %.c
-	@echo [ security/Linux/$@ ]
-	@$(CC) $(CFLAGS) -c $< -o $@
+	$(call cmd,cc_o_c)
 
 %.e %.i: %.c
-	@echo [ security/Linux/$@ ]
-	@$(CC) $(CFLAGS) -E $< -o $@
+	$(call cmd,cpp_i_o)
 
 %.s: %.c
-	@echo [ security/Linux/$@ ]
-	@$(CC) $(CFLAGS) -S $< -o $@
+	$(call cmd,cc_s_c)
 
 .PHONY: clean
 clean: