소스 검색

cleanup and fix Make.defaults

Reorder variables in Make.defaults so that they are grouped by
functions. Also fixed ifeq (x,y) to have required syntax and make it
work for ARCH amd64->x86_64 renaming on BSD. Also provides top-level
Makefile with a "mkvars" target that displays effective variables.

Signed-off-by: David Decotigny <decot@googlers.com>
Nigel Croxon 12 년 전
부모
커밋
f00a8a2783
2개의 변경된 파일83개의 추가작업 그리고 32개의 파일을 삭제
  1. 57 32
      gnu-efi-3.0/Make.defaults
  2. 26 0
      gnu-efi-3.0/Makefile

+ 57 - 32
gnu-efi-3.0/Make.defaults

@@ -1,4 +1,4 @@
-#
+# -*- makefile -*-
 # Copyright (c) 1999-2007 Hewlett-Packard Development Company, L.P.
 #	Contributed by David Mosberger <davidm@hpl.hp.com>
 #	Contributed by Stephane Eranian <eranian@hpl.hp.com>
@@ -32,60 +32,85 @@
 #    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.
-#                                                                                                                            #
+#
+
+TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
+
+#
+# Variables below overridable from command-line:
+#   make VARNAME=value ...
+#
 
 #
 # Where to install the package. GNU-EFI will create and access
 # lib and include under the root
 #
-INSTALLROOT := /
-PREFIX := /usr/local
-LIBDIR := ${PREFIX}/lib
+INSTALLROOT  := /
+PREFIX       := /usr/local
+LIBDIR 	     := $(PREFIX)/lib
+INSTALL	     := install
 
-TOPDIR    := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
+# Host/target identification
+OS	     := $(shell uname -s)
+HOSTARCH     := $(shell uname -m | sed s,i[3456789]86,ia32,)
+ARCH	     := $(shell uname -m | sed s,i[3456789]86,ia32,)
 
-HOSTARCH   = $(shell uname -m | sed s,i[3456789]86,ia32,)
-ARCH	   := $(shell uname -m | sed s,i[3456789]86,ia32,)
 # FreeBSD (and possibly others) reports amd64 instead of x86_64
-ifeq ($(ARCH), amd64)
-ARCH	   = x86_64
+ifeq ($(ARCH),amd64)
+  override ARCH := x86_64
 endif
-OS	   = $(shell uname -s)
-INCDIR	   = -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) -I$(TOPDIR)/inc/protocol 
-GCCVERSION := $(shell gcc -dumpversion | cut -f1 -d.)
-GCCMINOR := $(shell gcc -dumpversion | cut -f2 -d.)
-GCCNEWENOUGH := $(shell ([ $(GCCVERSION) -gt "4" ] || ([ $(GCCVERSION) -eq "4" ] && [ $(GCCMINOR) -ge "7" ])) && echo 1)
 
-CPPFLAGS   = -DCONFIG_$(ARCH)
+# Compilation tools
+prefix       := /usr/bin/
+CC           := $(prefix)gcc
+AS           := $(prefix)as
+LD           := $(prefix)ld
+AR           := $(prefix)ar
+RANLIB       := $(prefix)ranlib
+OBJCOPY      := $(prefix)objcopy
+
+
+#
+# Variables below derived from variables above
+#
+
+GCCVERSION   := $(shell $(CC) -dumpversion | cut -f1 -d.)
+GCCMINOR     := $(shell $(CC) -dumpversion | cut -f2 -d.)
+
+# Rely on GCC MS ABI support?
+GCCNEWENOUGH := $(shell ( [ $(GCCVERSION) -gt "4" ]           \
+                          || ( [ $(GCCVERSION) -eq "4" ]      \
+                               && [ $(GCCMINOR) -ge "7" ] ) ) \
+                        && echo 1)
 ifeq ($(GCCNEWENOUGH),1)
-CPPFLAGS   += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11
+  CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11
 endif
-CFLAGS	   = $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -ffreestanding -fno-stack-protector -fno-stack-check
-ASFLAGS    = $(ARCH3264)
-LDFLAGS	   = -nostdlib --no-undefined
-INSTALL	   = install
-prefix     = /usr/bin/
 
-CC            := $(prefix)gcc
-AS            := $(prefix)as
-LD            := $(prefix)ld
-AR            := $(prefix)ar
-RANLIB        := $(prefix)ranlib
-OBJCOPY       := $(prefix)objcopy
+# Arch-specific compilation flags
+CPPFLAGS += -DCONFIG_$(ARCH)
 
 ifeq ($(ARCH),ia64)
   CFLAGS += -mfixed-range=f32-f127
 endif
 
-ifeq ($(ARCH), ia32)
-  ifeq ($(HOSTARCH), x86_64)
+ifeq ($(ARCH),ia32)
+  ifeq ($(HOSTARCH),x86_64)
     ARCH3264 = -m32
   endif
 endif
 
-ifeq ($(ARCH), x86_64)
+ifeq ($(ARCH),x86_64)
   CFLAGS += -mno-red-zone
-  ifeq ($(HOSTARCH), ia32)
+  ifeq ($(HOSTARCH),ia32)
     ARCH3264 = -m64
   endif
 endif
+
+# Generic compilation flags
+INCDIR  += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \
+           -I$(TOPDIR)/inc/protocol
+CFLAGS  += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \
+           -fno-merge-constants -ffreestanding -fno-stack-protector       \
+           -fno-stack-check
+ASFLAGS += $(ARCH3264)
+LDFLAGS	+= -nostdlib --no-undefined

+ 26 - 0
gnu-efi-3.0/Makefile

@@ -45,6 +45,32 @@ gnuefi: lib
 
 all:	check_gcc $(SUBDIRS)
 
+mkvars:
+	@echo AR=$(AR)
+	@echo ARCH=$(ARCH)
+	@echo ARCH3264=$(ARCH3264)
+	@echo AS=$(AS)
+	@echo ASFLAGS=$(ASFLAGS)
+	@echo CC=$(CC)
+	@echo CFLAGS=$(CFLAGS)
+	@echo CPPFLAGS=$(CPPFLAGS)
+	@echo GCCMINOR=$(GCCMINOR)
+	@echo GCCNEWENOUGH=$(GCCNEWENOUGH)
+	@echo GCCVERSION=$(GCCVERSION)
+	@echo HOSTARCH=$(HOSTARCH)
+	@echo INCDIR=$(INCDIR)
+	@echo INSTALL=$(INSTALL)
+	@echo INSTALLROOT=$(INSTALLROOT)
+	@echo LD=$(LD)
+	@echo LDFLAGS=$(LDFLAGS)
+	@echo LIBDIR=$(LIBDIR)
+	@echo OBJCOPY=$(OBJCOPY)
+	@echo OS=$(OS)
+	@echo prefix=$(prefix)
+	@echo PREFIX=$(PREFIX)
+	@echo RANLIB=$(RANLIB)
+	@echo TOPDIR=$(TOPDIR)
+
 $(SUBDIRS):
 	mkdir -p $@
 	$(MAKE) -C $@ -f $(SRCDIR)/../$@/Makefile SRCDIR=$(SRCDIR)/../$@ ARCH=$(ARCH)