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 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
VPATH = @srcdir@
srcdir = @srcdir@
include ../Makefile.common
DEFSNOARCH := -I$(srcdir)/../include -D_GNU_SOURCE @DEFS@ $(EXTRA_DEFS)
DEFS := -DELF_MACHINE_H='"elf_$(ARCH).h"' -DARCH_$(ARCH) -DTAINT_URL='"$(TAINT_URL)"'
PROGS := insmod modprobe rmmod lsmod ksyms kallsyms modinfo
# COMB is the list of utilities to combine with insmod into one executable
COMB := @COMBINE_rmmod@ @COMBINE_modprobe@ @COMBINE_lsmod@ @COMBINE_ksyms@ @COMBINE_kallsyms@
COMBDEFS := $(addprefix -DCOMBINE_, $(COMB))
COMB_STATIC := $(addsuffix .static, $(COMB))
TARGETS_REAL := $(filter-out $(COMB),$(PROGS))
TARGETS := $(PROGS)
ifeq ($(insmod_static),yes)
TARGETS_REAL += insmod.static
TARGETS += insmod.static $(COMB_STATIC)
endif
INSMODOBJS := insmod.o
MODINFOOBJS := modinfo.o
ifeq (@COMBINE_kallsyms@,kallsyms)
KALLSYMSOBJS :=
else
KALLSYMSOBJS := kallsyms.o
endif
# arch specific definitions for common 32/64 code
ifeq (@COMMON_sparc@,yes)
DEFS64 := -DELF_MACHINE_H='"elf_sparc64.h"' -DARCH_sparc64
endif
ifeq (@COMMON_hppa@,yes)
DEFS64 := -DELF_MACHINE_H='"elf_hppa64.h"' -DARCH_hppa64
endif
ifeq (@COMMON_ppc@,yes)
DEFS64 := -DELF_MACHINE_H='"elf_ppc64.h"' -DARCH_ppc64
endif
ifeq (@COMMON_s390@,yes)
DEFS64 := -DELF_MACHINE_H='"elf_s390x.h"' -DARCH_s390x
endif
ifeq (@COMMON_i386@,yes)
DEFS64 := -DELF_MACHINE_H='"elf_x86_64.h"' -DARCH_x86_64
endif
# arch independent definitions for common 32/64 code
ifdef DEFS64
INSMODOBJS += insmod_64.o
ifeq (@COMBINE_kallsyms@,kallsyms)
INSMODOBJS += kallsyms_64.o
else
KALLSYMSOBJS += kallsyms_64.o
endif
MODINFOOBJS += modinfo_64.o
DEFSNOARCH += -DCOMMON_3264
DEFS += -DONLY_32
DEFS64 += -DONLY_64 $(call check_gcc,-malign-double,)
DEFS64 += -DTAINT_URL='"$(TAINT_URL)"'
endif
INSMODOBJS += $(addsuffix .o, $(COMB))
ifdef DEFS64
TARGETS+=libmodutils.a($(filter-out insmod.o insmod_64.o, $(INSMODOBJS)) combined_insmod.o combined_insmod_64.o)
else
TARGETS+=libmodutils.a($(filter-out insmod.o insmod_64.o, $(INSMODOBJS)) combined_insmod.o)
endif
combined_insmod.o: insmod.c
$(CC) $(CFLAGS) $(DEFSNOARCH) $(DEFS) $(COMBDEFS) -Dmain=combined_insmod_main -c -o $@ $<
combined_insmod_64.o: insmod.c
$(CC) $(CFLAGS) $(DEFSNOARCH) $(DEFS64) $(COMBDEFS) -Dmain=combined_insmod_main -c -o $@ $<
#=====================================================================
# Rule for building "to-be-combined" modutils object files
%.o: %.c
$(CC) $(CFLAGS) $(DEFSNOARCH) $(DEFS) $(COMBDEFS) -c -o $@ $<
# Rule for building 64 bit versions, only used when building common code
# for 32 and 64 bit systems.
%_64.o: %.c
$(CC) $(CFLAGS) $(DEFSNOARCH) $(DEFS64) $(COMBDEFS) -c -o $@ $<
# Rule for building "normal" modutils executables (non-combined)
%: %.c ../obj/libobj.a ../util/libutil.a
$(CC) $(CFLAGS) $(DEFSNOARCH) $(DEFS) -o $@ $^ $(LDFLAGS) $(LIBS) $(ZLIB_STATIC)
#=====================================================================
all: .depend $(TARGETS)
insmod: $(INSMODOBJS) ../obj/libobj.a ../util/libutil.a
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(ZLIB_STATIC)
insmod.static: $(INSMODOBJS) ../obj/libobj.a ../util/libutil.a
$(CC) -static $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(ZLIB)
$(COMB): insmod
ln -sf $< $@
$(COMB_STATIC): insmod.static
ln -sf $< $@
ifneq (@COMBINE_kallsyms@,kallsyms)
kallsyms: $(KALLSYMSOBJS) ../obj/libobj.a ../util/libutil.a
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(ZLIB_STATIC)
endif
modinfo: $(MODINFOOBJS) ../obj/libobj.a ../util/libutil.a
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(ZLIB_STATIC)
install install-bin: all
@set -ex;\
for i in $(TARGETS_REAL); do \
$(MKDIR) $(DESTDIR)$(sbindir); \
$(INSTALL) $(STRIP) $$i $(DESTDIR)$(sbindir); done;
set -e; \
for i in $(srcdir)/insmod_ksymoops_clean $(srcdir)/kernelversion; do \
$(MKDIR) $(DESTDIR)$(sbindir); \
$(INSTALL) $$i $(DESTDIR)$(sbindir); done;
set -e; \
for i in $(COMB); do \
ln -sf insmod $(DESTDIR)$(sbindir)/$$i; \
(test "$(insmod_static)" = yes && \
ln -sf insmod.static $(DESTDIR)$(sbindir)/$$i.static) || true; \
done
clean:
rm -f *.o $(PROGS) *.static libmodutils.a
realclean: clean
rm -f .depend
distclean: realclean
rm -f Makefile
dep depend .depend: $(addsuffix .c, $(PROGS))
$(CC) -M $(CFLAGS) $(DEFSNOARCH) $(DEFS) $^ > .depend
ifeq (.depend,$(wildcard .depend))
include .depend
endif
|