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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
default : all
TOPDIR ?= $(shell pwd)/..
include $(TOPDIR)/Make.version
include $(TOPDIR)/Make.defaults
LIB_LIBS= pthread
BIN_LIBS= popt pthread
PKLIBS = efivar efiboot
HAVE_LIBSMBIOS=no
ifeq ($(ARCH),x86_64)
HAVE_LIBSMBIOS=yes
endif
ifeq ($(ARCH),ia32)
HAVE_LIBSMBIOS=yes
endif
CFLAGS ?= -g -O0
PJONES =
BIN_CCLDFLAGS = $(foreach lib,$(BIN_LIBS),-l$(lib)) \
$(foreach pklib,$(PKLIBS), \
$(shell pkg-config --libs-only-l --libs-only-other $(pklib))) \
$(LDFLAGS) -pie -fPIE -Wl,-z,relro,-z,now -L.
LIB_CCLDFLAGS = $(foreach lib,$(LIB_LIBS),-l$(lib)) \
$(foreach pklib,$(PKLIBS), \
$(shell pkg-config --libs-only-l --libs-only-other $(pklib))) \
$(LDFLAGS) -shared -fPIC -Wl,-z,relro,-z,now
ifeq ($(HAVE_LIBSMBIOS),yes)
PKLIBS += libsmbios_c
CFLAGS += -DFWUPDATE_HAVE_LIBSMBIOS__
endif
BUILDFLAGS := $(CFLAGS) -Wall -Wextra -Werror -Wno-error=cpp \
-Wno-unused-result -Wno-unused-function \
-Wsign-compare -Werror=sign-compare \
-fshort-wchar --std=gnu11 \
-DLOCALEDIR=\"$(localedir)\" -D_GNU_SOURCE \
-DFWUP_EFI_DIR_NAME=\"$(EFIDIR)\" \
-I$(TOPDIR)/linux/include -iquote$(TOPDIR)/include/ \
$(foreach pklib,$(PKLIBS), $(shell pkg-config --cflags $(pklib))) \
$(PJONES)
BINTARGETS=fwupdate
INCTARGETS=include/fwup-version.h include/fwup.h
LIBTARGETS=libfwup.so
PCTARGETS=fwup.pc
POTARGETS = fwupdate.po libfwup.po
TARGETS=$(BINTARGETS) $(INCTARGETS) $(foreach x,$(LIBTARGETS),$(x) $(x).1 $(x).1.$(VERSION)) $(PCTARGETS) $(POTARGETS) libfwup.so cleanup.service cleanup
.SUFFIXES:
all : $(TARGETS)
fwupdate : libfwup.so
libfwup.c : | include/fwup.h include/fwup-version.h
include/fwup.h : | include/fwup-version.h
% : %.o
$(CC) $(BUILDFLAGS) -o $@ $(patsubst lib%.so,-l%,$^) $(BIN_CCLDFLAGS)
%.so.1.$(VERSION) : %.o
$(CC) $(BUILDFLAGS) \
-Wl,-soname,$(patsubst %.o,%.so.1,$<) \
-o $@ $^ $(LIB_CCLDFLAGS)
%.so.1 : %.so.1.$(VERSION)
ln -sf $< $@
%.so : %.so.1.$(VERSION)
ln -sf $< $@
%.po : %.c
$(XGETTEXT) -a --package-name=$(patsubst %.po,%,$@) --package-version=$(VERSION) -o $@ $^
%.o : %.c
$(CC) $(BUILDFLAGS) -fPIC -c -o $@ $^
% : %.in
sed -e "s,@@VERSION@@,$(VERSION),g" \
-e "s,@@FWUP_MAJOR_VERSION@@,$(MAJOR_VERSION),g" \
-e "s,@@FWUP_MINOR_VERSION@@,$(MINOR_VERSION),g" \
-e "s,@@DATADIR@@,$(datadir),g" \
-e "s,@@EFIDIR@@,$(EFIDIR),g" \
-e "s,@@LIBDIR@@,$(libdir),g" \
-e "s,@@LIBEXECDIR@@,$(libexecdir),g" \
$< > $@
tester : tester.c
$(CC) -Wall -Werror -ggdb -L. -I./include -I/usr/include/efivar \
-lefivar -lfwup -o $@ $^
test : tester
LD_LIBRARY_PATH=$(shell pwd) ./tester
clean :
@rm -vf $(BINTARGETS) $(LIBTARGETS) $(PCTARGETS) $(POTARGETS) *.o
@rm -vf libfwup.so*
@rm -vf cleanup.service cleanup
@rm -vf include/fwup-version.h
install : check_efidir_error all
$(INSTALL) -d -m 755 $(DESTDIR)/$(libdir)
$(foreach x, $(LIBTARGETS), $(INSTALL) -m 755 $(x).1.$(VERSION) $(DESTDIR)/$(libdir);)
$(INSTALL) -d -m 755 $(DESTDIR)/$(pcdir)
$(foreach x, $(PCTARGETS), $(INSTALL) -m 644 $(x) $(DESTDIR)/$(pcdir) ;)
$(INSTALL) -d -m 755 $(DESTDIR)/$(includedir)/
$(INSTALL) -m 644 $(INCTARGETS) $(DESTDIR)/$(includedir)/
$(INSTALL) -d -m 755 $(DESTDIR)/$(localedir)/en/
$(INSTALL) -m 644 $(POTARGETS) $(DESTDIR)/$(localedir)/en/
$(INSTALL) -d -m 755 $(DESTDIR)/$(bindir)
$(foreach x, $(BINTARGETS), $(INSTALL) -m 755 $(x) $(DESTDIR)/$(bindir);)
$(foreach x, $(wildcard *.so.1.$(VERSION)), \
ln -fs $(x) $(patsubst %.so.1.$(VERSION),%.so.1,$(DESTDIR)/$(libdir)/$(x)) ;\
ln -fs $(x) $(patsubst %.so.1.$(VERSION),%.so,$(DESTDIR)/$(libdir)/$(x)) ;\
)
$(INSTALL) -d -m 755 $(DESTDIR)$(datadir)/fwupdate/
$(INSTALL) -d -m 755 $(DESTDIR)$(libexecdir)/fwupdate/
$(INSTALL) -m 755 cleanup $(DESTDIR)$(libexecdir)/fwupdate/cleanup
$(INSTALL) -d -m 755 $(DESTDIR)$(libdatadir)/systemd/system
$(INSTALL) -m 644 cleanup.service \
$(DESTDIR)$(libdatadir)/systemd/system/fwupdate-cleanup.service
$(INSTALL) -d -m 755 $(DESTDIR)/usr/share/bash-completion/completions/
$(INSTALL) -m 755 bash-completion \
$(DESTDIR)/usr/share/bash-completion/completions/fwupdate
|