1 # ===========================================================================
2 # OpenWrt configuration targets
3 # These targets are used from top-level makefile
5 # ===========================================================================
6 # Shared Makefile for the various kconfig executables:
7 # conf: Used for defconfig, oldconfig and related targets
8 # mconf: Used for the mconfig target.
9 # Utilizes the lxdialog package
10 # qconf: Used for the xconfig target
11 # Based on Qt which needs to be installed to compile it
12 # object files used by all kconfig flavours
15 # Platform specific fixes
19 check_lxdialog
= $(shell $(SHELL
) $(CURDIR
)/lxdialog
/check-lxdialog.sh
-$(1))
20 export CFLAGS
+= -DKBUILD_NO_NLS
-I.
$(call check_lxdialog
,ccflags
)
21 export CXXFLAGS
+= -DKBUILD_NO_NLS
23 DISTRO-PKG-CONFIG
:= $(shell which
-a pkg-config | grep
-E
'\/usr' | head
-n
1)
25 conf-objs
:= conf.o zconf.tab.o
26 mconf-objs
:= mconf.o zconf.tab.o
27 qconf-cxxobjs
:= qconf.o
28 qconf-objs
:= zconf.tab.o
31 lxdialog
/checklist.o lxdialog
/util.o lxdialog
/inputbox.o \
32 lxdialog
/textbox.o lxdialog
/yesno.o lxdialog
/menubox.o
34 clean-files
:= zconf.tab.c
lex.zconf.c zconf.hash.c
35 # Remove qconf junk files
36 clean-files
+= $(qconf-cxxobjs
) qconf.moc .tmp_qtcheck
41 mconf
: $(mconf-objs
) $(lxdialog-objs
)
42 $(CC
) -o
$@
$^
$(call check_lxdialog
,ldflags $(CC
))
43 qconf
: $(qconf-cxxobjs
) $(qconf-objs
)
44 ifneq ($(DISTRO-PKG-CONFIG
),)
45 $(CXX
) $(HOSTLOADLIBES_qconf
) -o
$@
$^
47 echo
"You don't have 'pkg-config' installed. Cannot continue"
48 echo
"For now, you may use 'make menuconfig' instead of 'make xconfig'"
52 rm -f
*.o lxdialog
/*.o
$(clean-files
) conf mconf
54 zconf.tab.o
: zconf.
lex.c zconf.hash.c confdata.c
56 kconfig_load.o
: lkc_defs.h
60 zconf.hash.c
: zconf.gperf
63 cp
$@_shipped
$@ || bison
-l
-b
$* -p
$(notdir $*) $<
66 cp
$@_shipped
$@ || flex
-L
-P
$(notdir $*) -o
$@
$<
69 cp
$@_shipped
$@ || gperf
< $< > $@
71 ifeq ($(MAKECMDGOALS
),qconf
)
73 .tmp_qtcheck
: Makefile
76 # Qt needs some extra effort...
78 @set
-e
; echo
" CHECK qt"; \
79 if
$(DISTRO-PKG-CONFIG
) --exists Qt5Core
; then \
80 cflags="-std=c++11 -fPIC `$(DISTRO-PKG-CONFIG) --cflags Qt5Core Qt5Gui Qt5Widgets`"; \
81 libs
=`$(DISTRO-PKG-CONFIG) --libs Qt5Core Qt5Gui Qt5Widgets`; \
82 moc
=`$(DISTRO-PKG-CONFIG) --variable=host_bins Qt5Core`/moc
; \
83 elif
$(DISTRO-PKG-CONFIG
) --exists QtCore
; then \
84 cflags=`$(DISTRO-PKG-CONFIG) --cflags QtCore QtGui`; \
85 libs
=`$(DISTRO-PKG-CONFIG) --libs QtCore QtGui`; \
86 moc
=`$(DISTRO-PKG-CONFIG) --variable=moc_location QtCore`; \
89 echo
>&2 "* Could not find Qt via $(DISTRO-PKG-CONFIG)."; \
90 echo
>&2 "* Please install either Qt 4.8 or 5.x. and make sure it's in PKG_CONFIG_PATH"; \
94 echo
"KC_QT_CFLAGS=$$cflags" > $@
; \
95 echo
"KC_QT_LIBS=$$libs" >> $@
; \
96 echo
"KC_QT_MOC=$$moc" >> $@
99 #Define compiler flags to build qconf
100 HOSTLOADLIBES_qconf
= $(KC_QT_LIBS
)
101 HOSTCXXFLAGS_qconf.o
= $(KC_QT_CFLAGS
)
104 qconf.o
: CXXFLAGS
+=$(HOSTCXXFLAGS_qconf.o
)
106 moc
= $(KC_QT_MOC
) -i
$< -o
$@
108 %.moc
: %.h .tmp_qtcheck