993489c9114d7426ccde1b1431e933523685363b
[comedi.git] / Makefile.modbuild
1
2 -include .buildvars
3
4
5 .EXPORT_ALL_VARIABLES:
6 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
7         else if [ -x /bin/bash ]; then echo /bin/bash; \
8         else echo sh; fi ; fi)
9 TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
10
11 HPATH           = $(TOPDIR)/include
12 FINDHPATH       = $(HPATH)
13
14 HOSTCC          =gcc
15 HOSTCFLAGS      =-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
16
17 #
18 # Include the make variables (CC, etc...)
19 #
20
21 #AS              = $(CROSS_COMPILE)as
22 #LD              = $(CROSS_COMPILE)ld
23 #CC              = $(CROSS_COMPILE)gcc
24 CPP             = $(CC) -E
25 AR              = $(CROSS_COMPILE)ar
26 NM              = $(CROSS_COMPILE)nm
27 STRIP           = $(CROSS_COMPILE)strip
28 OBJCOPY         = $(CROSS_COMPILE)objcopy
29 OBJDUMP         = $(CROSS_COMPILE)objdump
30 MAKEFILES       = $(TOPDIR)/.config
31 GENKSYMS        = /sbin/genksyms
32 MODFLAGS        = -DMODULE
33 PERL            = perl
34
35 export  VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION KERNELRELEASE ARCH \
36         CONFIG_SHELL TOPDIR HPATH HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
37         CPP AR NM STRIP OBJCOPY OBJDUMP MAKE MAKEFILES GENKSYMS MODFLAGS PERL
38
39 MODLIB := $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
40 export MODLIB
41
42 export FLAT_MODULES
43
44 CFLAGS := -I $(TOPDIR)/include $(CFLAGS) 
45
46 CFLAGS += -nostdinc -I $(shell $(CC) -print-search-dirs|grep ^install:|sed 's/^install: //')include
47
48 PROJECTRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
49
50 -include $(LINUXDIR)/.config
51
52 ifeq (.config,$(wildcard .config))
53 include .config
54 ifeq (.depend,$(wildcard .depend))
55 include .depend
56 all:    modules
57 else
58 all:    depend modules
59 endif
60 else
61 all:    config
62 endif
63
64 oldconfig:      dummy
65         env -i PATH=$(PATH) $(CONFIG_SHELL) ./configure --old
66
67 #configure is called through env -i to prevent loading of variables from stale LINUXDIR
68 config: dummy
69         env -i PATH=$(PATH) $(CONFIG_SHELL) ./configure --linuxdir $(LINUXDIR)
70
71 modules_install:        $(patsubst %, _modinst_%, $(SUBDIRS))
72 ifeq ($(INSTALL_MOD_PATH),)
73 ifeq ($(KERNELRELEASE),$(shell uname -r))
74         /sbin/depmod -ae
75 endif
76 endif
77
78 _modinst_%:
79         $(MAKE) -C $(patsubst _modinst_%, %, $@) modules_install
80
81
82 ifeq ($(CONFIG_MODVERSIONS),y)
83 MODFLAGS += -DMODVERSIONS -include $(LINUXDIR)/include/linux/modversions.h
84 endif
85
86
87 modules:        $(patsubst %, _mod_%, $(SUBDIRS))
88
89 $(patsubst %, _mod_%, $(SUBDIRS)) : dummy
90         $(MAKE) -C $(patsubst _mod_%, %, $@) CFLAGS="$(CFLAGS)" MAKING_MODULES=1 modules
91
92 include/version.h: Makefile
93         @echo \#define $(PROJECT)_RELEASE \"$(PROJECTRELEASE)\" >.ver
94         @echo \#define $(PROJECT)_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)` >> .ver
95         @echo '#define $(PROJECT)_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))' >>.ver
96         @mv -f .ver $@
97
98 depend: dep-files
99
100 dep-files: scripts/mkdep include/version.h new-genksyms
101 #       scripts/mkdep `find $(FINDHPATH) -follow -name \*.h ! -name modversions.h -print` > .hdepend
102 # let this be made through the fastdep rule in Rules.make
103         $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"
104
105
106 new-genksyms:
107
108 clean:
109         rm -f core `find . -name '*.[oas]'`
110         rm -f core `find . -name '.*.flags' -print`
111
112 distclean:      clean
113         rm -f .depend `find . -name .depend -print`
114         rm -f .hdepend
115         rm -f core `find . \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
116                 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
117                 -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -print` TAGS
118         rm -f `find comedi -name Makefile -print`
119         -rm -rf modules
120         rm -f .config .config.old
121         rm -f include/config.h include/version.h
122         rm -f scripts/mkdep
123         rm -f .buildvars
124
125 include $(TOPDIR)/Rules.make
126
127
128 dummy:
129
130 #
131 # This generates dependencies for the .h files.
132 #
133
134 scripts/mkdep: scripts/mkdep.c
135         $(HOSTCC) $(HOSTCFLAGS) -o scripts/mkdep scripts/mkdep.c
136
137 scripts/split-include: scripts/split-include.c
138         $(HOSTCC) $(HOSTCFLAGS) -o scripts/split-include scripts/split-include.c
139