]> git.saurik.com Git - apple/xnu.git/blob - libkern/kmod/Makefile.kmod
xnu-1228.5.18.tar.gz
[apple/xnu.git] / libkern / kmod / Makefile.kmod
1 #
2 # Kernel Module Library code makefile
3 #
4
5 export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
6 export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
7 export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
8 export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
9
10
11 include $(MakeInc_cmd)
12 include $(MakeInc_def)
13
14 INSTALL_DIR = $(DSTROOT)/usr/lib
15 KMOD_NAME = libkmod
16 KMODCPP_NAME = libkmodc++
17 LIB_INSTALL_FLAGS = -p -m 444
18
19 CFLAGS += -Wall -Wno-four-char-constants
20 CFLAGS_PPC += -mlong-branch
21 CFLAGS_ARM += -mlong-calls
22
23 ifneq ($(MACHINE_CONFIG), DEFAULT)
24 COMPOBJROOT = $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)/$(COMPONENT)/kmod
25 INSTOBJROOT = $(OBJROOT)/$(INSTALL_TYPE)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)/$(COMPONENT)/kmod
26 else
27 COMPOBJROOT = $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)/$(COMPONENT)/kmod
28 INSTOBJROOT = $(OBJROOT)/$(INSTALL_TYPE)_$(ARCH_CONFIG)/$(COMPONENT)/kmod
29 endif
30
31
32 KMOD_CFILES = c_start.c c_stop.c
33 KMODCPP_CFILES = cplus_start.c cplus_stop.c
34
35 KMOD_OFILES = $(KMOD_CFILES:.c=.o)
36 KMODCPP_OFILES = $(KMODCPP_CFILES:.c=.o)
37
38 ALL_OFILES = $(KMOD_OFILES) $(KMODCPP_OFILES)
39
40 $(ALL_OFILES): %.o : %.c
41 ${KCC} -c ${CFLAGS} ${${join $@,_CFLAGS}} ${INCFLAGS} ${${join $@,_INCFLAGS}} -o $(COMPOBJROOT)/$(*F).o $<
42
43 $(COMPOBJROOT)/$(KMOD_NAME).a: $(KMOD_OFILES)
44 libtool -static -o $@ $^
45
46 $(COMPOBJROOT)/$(KMODCPP_NAME).a: $(KMODCPP_OFILES)
47 libtool -static -o $@ $^
48
49 do_build_all: $(COMPOBJROOT)/$(KMOD_NAME).a $(COMPOBJROOT)/$(KMODCPP_NAME).a
50
51 $(INSTALL_DIR)/%.a: $(INSTOBJROOT)/%.a
52 @allarchs=""; \
53 for onearch in $(INSTALL_ARCHS); do \
54 if [ $(MACHINE_CONFIG) = DEFAULT ] ; then \
55 archdir=$(OBJROOT)/$(KERNEL_CONFIG)_$${onearch}/$(COMPONENT); \
56 else \
57 archdir=$(OBJROOT)/$(KERNEL_CONFIG)_$${onearch}_$(MACHINE_CONFIG)/$(COMPONENT); \
58 fi; \
59 if [ -e $${archdir}/kmod/$(*F).a ]; then \
60 allarchs="$${allarchs} $${archdir}/kmod/$(*F).a"; \
61 fi; \
62 done; \
63 $(RM) $@ || true; \
64 ${MKDIR} $(INSTALL_DIR) $(SYMROOT); \
65 cmd="lipo $${allarchs} -create -output $(SYMROOT)/$(*F).a"; \
66 echo $$cmd; eval $$cmd; \
67 cmd="install $(LIB_INSTALL_FLAGS) $(SYMROOT)/$(*F).a $@"; \
68 echo $$cmd; eval $$cmd
69
70
71 do_build_install: $(INSTALL_DIR)/$(KMOD_NAME).a $(INSTALL_DIR)/$(KMODCPP_NAME).a
72
73 # include $(MakeInc_rule)
74 include $(MakeInc_dir)