summaryrefslogtreecommitdiff
path: root/scripts/kconfig/Makefile
Unidiff
Diffstat (limited to 'scripts/kconfig/Makefile') (more/less context) (ignore whitespace changes)
-rw-r--r--scripts/kconfig/Makefile110
1 files changed, 42 insertions, 68 deletions
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 7e257be..5a0d7e5 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -1,65 +1,49 @@
1VERSION=1.2 1VERSION=1.3
2CC=gcc 2CC=gcc
3CXX=g++ 3CXX=g++
4CFLAGS=-O2 -Wall -g -fPIC 4CFLAGS=-O0 -Wall -g -fPIC
5CXXFLAGS=$(CFLAGS) -I$(HOSTQTDIR)/include 5CXXFLAGS=$(CFLAGS) -I$(HOSTQTDIR)/include
6LDFLAGS= 6LDFLAGS=
7LXXFLAGS=$(LDFLAGS) -L$(HOSTQTDIR)/lib -Wl,-rpath,$(HOSTQTDIR)/lib 7LXXFLAGS=$(LDFLAGS) -L$(HOSTQTDIR)/lib -Wl,-rpath,$(HOSTQTDIR)/lib
8LEX=flex 8LEX=flex
9LFLAGS=-L
9YACC=bison 10YACC=bison
10YFLAGS=-d -t #-v 11YFLAGS=-l
12#YFLAGS=-d -t -v -l
11ifndef HOSTQTDIR 13ifndef HOSTQTDIR
12ifeq ($(shell if [ -e /usr/share/qt ]; then echo foundit; fi),foundit)
13HOSTQTDIR=/usr/share/qt 14HOSTQTDIR=/usr/share/qt
14else
15ifeq ($(shell if [ -e /usr/lib/qt ]; then echo foundit; fi),foundit)
16HOSTQTDIR=/usr/lib/qt
17endif
18endif
19endif
20
21ifndef QTLIB
22ifeq ($(shell if [ -e $(HOSTQTDIR)/lib/libqt-mt.so ]; then echo foundit; fi),foundit)
23QTLIB=-lqt-mt
24else
25ifneq ($(shell if [ -e $(HOSTQTDIR)/lib/libqt.so ]; then echo foundit; fi),foundit)
26$(warning Unable to locate libqt.so!)
27endif 15endif
28QTLIB=-lqt
29endif
30endif
31
32MOC=$(wildcard $(HOSTQTDIR)/bin/moc) 16MOC=$(wildcard $(HOSTQTDIR)/bin/moc)
33 17
34parse_SRC=zconf.y 18parse_SRC=zconf.y
35conf_SRC=conf.c $(parse_SRC) 19conf_SRC=conf.c $(parse_SRC)
36mconf_SRC=mconf.c $(parse_SRC) 20mconf_SRC=mconf.c $(parse_SRC)
37qconf_SRC=qconf.cc 21qconf_SRC=qconf.cc
38lkcc_SRC=cml1.y cml1.l help.l cml1.h expr1.c
39HDR=expr.h lkc.h lkc_proto.h qconf.h 22HDR=expr.h lkc.h lkc_proto.h qconf.h
40OTHER=README lkc_spec lkc_overview Makefile.kernel convert-all prepare-all.diff fixup-all.diff \ 23OTHER=README lkc-language.txt Makefile.kernel \
41 kconfig.i extconf.rb example 24 kconfig.i extconf.rb example
42INST=zconf.y zconf.l confdata.c expr.c symbol.c menu.c conf.c mconf.c qconf.cc kconfig_load.c images.c $(parse_SRC) $(HDR) 25INST=zconf.y zconf.l confdata.c expr.c symbol.c menu.c \
43INSTGEN=lex.zconf.c zconf.tab.c zconf.tab.h 26 conf.c mconf.c qconf.cc kconfig_load.c images.c $(HDR)
27INSTGEN=lex.zconf.c zconf.tab.c
44 28
45#DEBUG=1 29#DEBUG=1
46ifdef DEBUG 30ifdef DEBUG
47CFLAGS+=-DLKC_DIRECT_LINK 31CFLAGS+=-DLKC_DIRECT_LINK
48qconf_SRC+=$(parse_SRC) 32qconf_SRC+=$(parse_SRC)
49else 33else
50qconf_SRC+=kconfig_load.c 34qconf_SRC+=kconfig_load.c
51endif 35endif
52 36
53SRC=$(conf_SRC) $(mconf_SRC) $(qconf_SRC) $(lkcc_SRC) 37SRC=$(conf_SRC) $(mconf_SRC) $(qconf_SRC)
54CSRC=$(filter %.c, $(SRC)) 38CSRC=$(filter %.c, $(SRC))
55YSRC=$(filter %.y, $(SRC)) 39YSRC=$(filter %.y, $(SRC))
56LSRC=$(filter %.l, $(SRC)) 40LSRC=$(filter %.l, $(SRC))
57 41
58parse_OBJ=$(filter %.o, \ 42parse_OBJ=$(filter %.o, \
59 $(patsubst %.c,%.o, \ 43 $(patsubst %.c,%.o, \
60 $(patsubst %.y,%.tab.o, \ 44 $(patsubst %.y,%.tab.o, \
61 $(patsubst %.l,lex.%.o, \ 45 $(patsubst %.l,lex.%.o, \
62 $(parse_SRC))))) 46 $(parse_SRC)))))
63conf_OBJ=$(filter %.o, \ 47conf_OBJ=$(filter %.o, \
64 $(patsubst %.c,%.o, \ 48 $(patsubst %.c,%.o, \
65 $(patsubst %.y,%.tab.o, \ 49 $(patsubst %.y,%.tab.o, \
@@ -67,46 +51,32 @@ conf_OBJ=$(filter %.o, \
67 $(conf_SRC))))) 51 $(conf_SRC)))))
68mconf_OBJ=$(filter %.o, \ 52mconf_OBJ=$(filter %.o, \
69 $(patsubst %.c,%.o, \ 53 $(patsubst %.c,%.o, \
70 $(patsubst %.y,%.tab.o, \ 54 $(patsubst %.y,%.tab.o, \
71 $(patsubst %.l,lex.%.o, \ 55 $(patsubst %.l,lex.%.o, \
72 $(mconf_SRC))))) 56 $(mconf_SRC)))))
73qconf_OBJ=$(filter %.o, \ 57qconf_OBJ=$(filter %.o, \
74 $(patsubst %.c,%.o, \ 58 $(patsubst %.c,%.o, \
75 $(patsubst %.cc,%.o, \ 59 $(patsubst %.cc,%.o, \
76 $(patsubst %.y,%.tab.o, \ 60 $(patsubst %.y,%.tab.o, \
77 $(patsubst %.l,lex.%.o, \ 61 $(patsubst %.l,lex.%.o, \
78 $(qconf_SRC)))))) 62 $(qconf_SRC))))))
79lkcc_OBJ=$(filter %.o, \ 63OBJ=$(conf_OBJ) $(mconf_OBJ) $(qconf_OBJ)
80 $(patsubst %.c,%.o, \
81 $(patsubst %.y,%.tab.o, \
82 $(patsubst %.l,lex.%.o, \
83 $(lkcc_SRC)))))
84OBJ=$(conf_OBJ) $(mconf_OBJ) $(qconf_OBJ) $(lkcc_OBJ)
85 64
86ifeq ($(MOC),) 65ifeq ($(MOC),)
87all: lkcc conf mconf 66all: conf mconf
88else 67else
89all: lkcc conf mconf qconf libkconfig.so 68all: conf mconf qconf libkconfig.so
90endif 69endif
91 70
92lex.help.c: help.l
93lex.help.o: lex.help.c cml1.h expr.h
94lex.cml1.c: cml1.l
95lex.cml1.o: lex.cml1.c cml1.tab.h cml1.h expr.h
96cml1.tab.c: cml1.y
97cml1.tab.h: cml1.y
98cml1.tab.o: cml1.tab.c cml1.h expr.h
99expr1.o: expr1.c expr.h
100
101lkc_deps := lkc.h lkc_proto.h lkc_defs.h expr.h 71lkc_deps := lkc.h lkc_proto.h lkc_defs.h expr.h
102 72
103zconf.tab.c: zconf.y 73zconf.tab.c: zconf.y
104zconf.tab.h: zconf.y 74zconf.tab.h: zconf.y
105lex.zconf.c: zconf.l 75lex.zconf.c: zconf.l
106zconf.tab.o: zconf.tab.c lex.zconf.c confdata.c expr.c symbol.c menu.c $(lkc_deps) 76zconf.tab.o: zconf.tab.c lex.zconf.c confdata.c expr.c symbol.c menu.c $(lkc_deps)
107#lex.zconf.o: lex.zconf.c zconf.tab.h $(lkc_deps) 77#lex.zconf.o: lex.zconf.c zconf.tab.h $(lkc_deps)
108#confdata.o: confdata.c $(lkc_deps) 78#confdata.o: confdata.c $(lkc_deps)
109#expr.o: expr.c $(lkc_deps) 79#expr.o: expr.c $(lkc_deps)
110#symbol.o: symbol.c $(lkc_deps) 80#symbol.o: symbol.c $(lkc_deps)
111#menu.o: menu.c $(lkc_deps) 81#menu.o: menu.c $(lkc_deps)
112kconfig_load.o: kconfig_load.c $(lkc_deps) 82kconfig_load.o: kconfig_load.c $(lkc_deps)
@@ -119,89 +89,93 @@ mconf: $(mconf_OBJ)
119 $(CC) $(LDFLAGS) $^ -o $@ 89 $(CC) $(LDFLAGS) $^ -o $@
120 90
121conf: $(conf_OBJ) 91conf: $(conf_OBJ)
122 $(CC) $(LDFLAGS) $^ -o $@ 92 $(CC) $(LDFLAGS) $^ -o $@
123 93
124ifeq ($(MOC),) 94ifeq ($(MOC),)
125qconf: 95qconf:
126 @echo Unable to find the QT installation. Please make sure that the 96 @echo Unable to find the QT installation. Please make sure that the
127 @echo QT development package is correctly installed and the HOSTQTDIR 97 @echo QT development package is correctly installed and the HOSTQTDIR
128 @echo environment variable is set to the correct location. 98 @echo environment variable is set to the correct location.
129 @false 99 @false
130else 100else
131qconf: $(qconf_OBJ) libkconfig.so 101qconf: $(qconf_OBJ)
132 $(CXX) $(LXXFLAGS) $^ $(QTLIB) -o $@ 102 $(CXX) $(LXXFLAGS) $^ -lqt -o $@
133endif 103endif
134 104
135lkcc: $(lkcc_OBJ)
136 $(CC) $(LDFLAGS) $^ -o $@
137
138libkconfig.so: $(parse_OBJ) 105libkconfig.so: $(parse_OBJ)
139 $(CC) -shared $^ -o $@ 106 $(CC) -shared $^ -o $@
140 107
141lkc_defs.h: lkc_proto.h 108lkc_defs.h: lkc_proto.h
142 sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/' 109 sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
143 110
144clean: 111clean:
145 rm -f $(OBJ) lkcc conf qconf mconf *.moc lex.* *.tab.? *.output 112 rm -f $(OBJ) conf qconf mconf *.moc lex.* *.tab.? *.output
113 rm -rf .ruby .python
146 114
147tgz: 115tgz:
148 mkdir tmp 116 mkdir tmp
149 mkdir tmp/lkc-$(VERSION) 117 mkdir tmp/lkc-$(VERSION)
150 cp -ra Makefile $(sort $(SRC) $(HDR) $(OTHER) $(INST)) tmp/lkc-$(VERSION) 118 cp -ra Makefile $(sort $(SRC) $(HDR) $(OTHER) $(INST)) tmp/lkc-$(VERSION)
151 tar -cpvz -C tmp -f lkc-$(VERSION).tar.gz lkc-$(VERSION) 119 tar -cpvz -C tmp --exclude CVS -f lkc-$(VERSION).tar.gz lkc-$(VERSION)
152 rm -rf tmp 120 rm -rf tmp
153 121
154%.tab.c %.tab.h: %.y 122%.tab.c %.tab.h: %.y
155 $(YACC) $(YFLAGS) -b $* -p $* $< 123 $(YACC) $(YFLAGS) -b $* -p $* $<
156 124
157lex.%.c: %.l 125lex.%.c: %.l
158 $(LEX) $(LFLAGS) -P$* $< 126 $(LEX) $(LFLAGS) -P$* $<
159 127
160%.moc: %.h 128%.moc: %.h
161 $(HOSTQTDIR)/bin/moc -i $< -o $@ 129 $(HOSTQTDIR)/bin/moc -i $< -o $@
162 130
163%.o: %.c 131%.o: %.c
164 $(CC) $(CFLAGS) -c $< -o $@ 132 $(CC) $(CFLAGS) -c $< -o $@
165 133
166%.o: %.cc 134%.o: %.cc
167 $(CXX) $(CXXFLAGS) -c $< -o $@ 135 $(CXX) $(CXXFLAGS) -c $< -o $@
168 136
169ifdef KERNELSRC 137ifdef KERNELSRC
170install: lkcc $(INSTGEN) 138install: $(INSTGEN)
171 set -x; mkdir $(KERNELSRC)/scripts/kconfig; \ 139 set -x; cp $(sort $(INST)) $(KERNELSRC)/scripts/kconfig; \
172 cp $(sort $(INST)) $(KERNELSRC)/scripts/kconfig; \
173 for f in $(INSTGEN); do cp $$f $(KERNELSRC)/scripts/kconfig/$${f}_shipped; done; \ 140 for f in $(INSTGEN); do cp $$f $(KERNELSRC)/scripts/kconfig/$${f}_shipped; done; \
174 cp Makefile.kernel $(KERNELSRC)/scripts/kconfig/Makefile; \ 141 cp Makefile.kernel $(KERNELSRC)/scripts/kconfig/Makefile
175 LKCSRC=$$PWD; export LKCSRC; \ 142
176 cd $(KERNELSRC); \ 143diff: $(INSTGEN)
177 patch -p0 -N < $$LKCSRC/prepare-all.diff; \ 144 for f in $(sort $(INST)); do diff -u $(KERNELSRC)/scripts/kconfig/$$f $$f; done; \
178 sh $$LKCSRC/convert-all; \ 145 for f in $(INSTGEN); do diff -u $(KERNELSRC)/scripts/kconfig/$${f}_shipped $$f; done; \
179 patch -p0 -N < $$LKCSRC/fixup-all.diff 146 diff -u $(KERNELSRC)/scripts/kconfig/Makefile Makefile.kernel
180
181 #cp Makefile $(KERNELSRC)/scripts/kconfig/Makefile; \
182
183uninstall:
184 patch -p0 -N -R -d $(KERNELSRC) < prepare-all.diff; \
185 cd $(KERNELSRC); \
186 find -name "Kconfig*" | xargs rm; \
187 rm -rf scripts/kconfig log.*
188else 147else
189install: 148install:
190 @echo "Please use KERNELSRC=<path/to/linux-kernel> to install" 149 @echo "Please use KERNELSRC=<path/to/linux-kernel> to install"
191endif 150endif
192 151
193ruby: .ruby libkconfig.so .ruby/kconfig.so 152ruby: .ruby libkconfig.so .ruby/kconfig.so
194 153
195.ruby: 154.ruby:
196 mkdir .ruby 155 mkdir .ruby
197 156
198.ruby/kconfig_wrap.c: kconfig.i kconfig_load.c expr.h lkc_proto.h 157.ruby/kconfig_wrap.c: kconfig.i kconfig_load.c expr.h lkc_proto.h
199 swig -ruby -o $@ $< 158 swig -ruby -o $@ $<
200 159
201.ruby/Makefile: extconf.rb 160.ruby/Makefile: extconf.rb
202 cd .ruby; ruby ../extconf.rb 161 cd .ruby; ruby ../extconf.rb
203 162
204.ruby/kconfig.so: .ruby/kconfig_wrap.c .ruby/Makefile 163.ruby/kconfig.so: .ruby/kconfig_wrap.c .ruby/Makefile
205 make -C .ruby 164 make -C .ruby
206 165
207.PHONY: all tgz clean ruby 166
167PYTHON_INCLUDE=$(shell python -c "import sys; print '-I'+sys.prefix+'/include/python'+sys.version[:3]")
168
169python: .python .python/kconfig.py .python/_kconfig.so
170
171.python:
172 mkdir .python
173
174.python/kconfig_wrap.c .python/kconfig.py: kconfig.i kconfig_load.c expr.h lkc_proto.h
175 swig -python -o .python/kconfig_wrap.c kconfig.i
176
177.python/_kconfig.so: .python/kconfig_wrap.c
178 cd .python; $(CC) $(CFLAGS) -shared kconfig_wrap.c -o _kconfig.so -I.. $(PYTHON_INCLUDE)
179
180
181.PHONY: all tgz clean ruby python