File: Make.common

package info (click to toggle)
refit 0.7-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 580 kB
  • ctags: 688
  • sloc: ansic: 5,556; python: 167; sh: 107; makefile: 64
file content (75 lines) | stat: -rw-r--r-- 1,828 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#
# Make.common
# Common make rules for building with gnu-efi
#

EFIINC          = /usr/include/efi
GNUEFILIB       = /usr/lib
EFILIB          = /usr/lib
EFICRT0         = /usr/lib

ARCH            = $(shell uname -m | sed s,i[3456789]86,ia32,)
CPPFLAGS        = -I$(EFIINC) -I$(EFIINC)/$(ARCH) -I$(EFIINC)/protocol -DCONFIG_$(ARCH)

OPTIMFLAGS      = -O2 -fno-strict-aliasing
DEBUGFLAGS      = -Wall
CFLAGS          = $(OPTIMFLAGS) -mcpu=i386 -fpic -fshort-wchar $(DEBUGFLAGS)
LDFLAGS         = -nostdlib -znocombreloc

prefix          = /usr/bin/
CC              = $(prefix)gcc
AS              = $(prefix)as
LD              = $(prefix)ld
AR              = $(prefix)ar
RANLIB          = $(prefix)ranlib
OBJCOPY         = $(prefix)objcopy

ifeq ($(ARCH),ia64)
  # EFI specs allows only lower floating point partition to be used
  CFLAGS       += -frename-registers -mfixed-range=f32-f127
endif


CRTOBJS         = $(EFICRT0)/crt0-efi-$(ARCH).o
LDSCRIPT        = $(EFICRT0)/elf_$(ARCH)_efi.lds

LDFLAGS        += -T $(LDSCRIPT) -shared -Bsymbolic -L$(EFILIB) -L$(GNUEFILIB) $(CRTOBJS)
LIBS            = -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name)
FORMAT          = efi-app-$(ARCH)


# general rules

%.o: %.c 
	$(CC) $(LOCAL_CPPFLAGS) $(CPPFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) -c $< -o $@

# rules for EFI applications

ifneq (,$(filter %.efi,$(TARGET)))

SHLIB_TARGET = $(subst .efi,.so,$(TARGET))

$(SHLIB_TARGET): $(OBJS)
	$(LD) $(LOCAL_LDFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(LOCAL_LIBS) $(LIBS)

$(TARGET): $(SHLIB_TARGET)
	$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
		   -j .rela -j .reloc --target=$(FORMAT) $< $@

endif

# rules for libraries

ifneq (,$(filter %.a,$(TARGET)))

$(TARGET): $(OBJS)
	$(AR) cq $@ $(OBJS)

endif

# utility rules

clean:
	rm -f $(TARGET) *~ *.so $(OBJS)

# EOF