123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- # ===========================================================================
- # OpenWrt configuration targets
- # These targets are used from top-level makefile
- # ===========================================================================
- # Shared Makefile for the various kconfig executables:
- # conf: Used for defconfig, oldconfig and related targets
- # mconf: Used for the mconfig target.
- # Utilizes the lxdialog package
- # qconf: Used for the xconfig target
- # Based on Qt which needs to be installed to compile it
- # object files used by all kconfig flavours
- # Platform specific fixes
- #
- # FreeBSD
- check_lxdialog = $(shell $(SHELL) $(CURDIR)/lxdialog/check-lxdialog.sh -$(1))
- export CFLAGS += -DKBUILD_NO_NLS -I. $(call check_lxdialog,ccflags)
- export CXXFLAGS += -DKBUILD_NO_NLS
- DISTRO-PKG-CONFIG := $(shell which -a pkg-config | grep -E '\/usr' | head -n 1)
- conf-objs := conf.o zconf.tab.o
- mconf-objs := mconf.o zconf.tab.o
- qconf-cxxobjs := qconf.o
- qconf-objs := zconf.tab.o
- lxdialog-objs := \
- lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o \
- lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o
- clean-files := zconf.tab.c lex.zconf.c zconf.hash.c
- # Remove qconf junk files
- clean-files += $(qconf-cxxobjs) qconf.moc .tmp_qtcheck qconf
- all: conf mconf
- conf: $(conf-objs)
- mconf: $(mconf-objs) $(lxdialog-objs)
- $(CC) -o $@ $^ $(call check_lxdialog,ldflags $(CC))
- qconf: $(qconf-cxxobjs) $(qconf-objs)
- ifneq ($(DISTRO-PKG-CONFIG),)
- $(CXX) $(HOSTLOADLIBES_qconf) -o $@ $^
- else
- echo "You don't have 'pkg-config' installed. Cannot continue"
- echo "For now, you may use 'make menuconfig' instead of 'make xconfig'"
- endif
- clean:
- rm -f *.o lxdialog/*.o $(clean-files) conf mconf
- zconf.tab.o: zconf.lex.c zconf.hash.c confdata.c
- kconfig_load.o: lkc_defs.h
- zconf.tab.c: zconf.y
- zconf.lex.c: zconf.l
- zconf.hash.c: zconf.gperf
- %.tab.c: %.y
- cp $@_shipped $@ || bison -l -b $* -p $(notdir $*) $<
- %.lex.c: %.l
- cp $@_shipped $@ || flex -L -P$(notdir $*) -o$@ $<
- %.hash.c: %.gperf
- cp $@_shipped $@ || gperf < $< > $@
- ifeq ($(MAKECMDGOALS),qconf)
- qconf.o: .tmp_qtcheck
- .tmp_qtcheck: Makefile
- -include .tmp_qtcheck
- # Qt needs some extra effort...
- .tmp_qtcheck:
- @set -e; echo " CHECK qt"; \
- if $(DISTRO-PKG-CONFIG) --exists Qt5Core; then \
- cflags="-std=c++11 -fPIC `$(DISTRO-PKG-CONFIG) --cflags Qt5Core Qt5Gui Qt5Widgets`"; \
- libs=`$(DISTRO-PKG-CONFIG) --libs Qt5Core Qt5Gui Qt5Widgets`; \
- moc=`$(DISTRO-PKG-CONFIG) --variable=host_bins Qt5Core`/moc; \
- elif $(DISTRO-PKG-CONFIG) --exists QtCore; then \
- cflags=`$(DISTRO-PKG-CONFIG) --cflags QtCore QtGui`; \
- libs=`$(DISTRO-PKG-CONFIG) --libs QtCore QtGui`; \
- moc=`$(DISTRO-PKG-CONFIG) --variable=moc_location QtCore`; \
- else \
- echo >&2 "*"; \
- echo >&2 "* Could not find Qt via $(DISTRO-PKG-CONFIG)."; \
- echo >&2 "* Please install either Qt 4.8 or 5.x. and make sure it's in PKG_CONFIG_PATH"; \
- echo >&2 "*"; \
- exit 1; \
- fi; \
- echo "KC_QT_CFLAGS=$$cflags" > $@; \
- echo "KC_QT_LIBS=$$libs" >> $@; \
- echo "KC_QT_MOC=$$moc" >> $@
- endif
- #Define compiler flags to build qconf
- HOSTLOADLIBES_qconf = $(KC_QT_LIBS)
- HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS)
- qconf.o: qconf.moc
- qconf.o: CXXFLAGS+=$(HOSTCXXFLAGS_qconf.o)
- moc = $(KC_QT_MOC) -i $< -o $@
- %.moc: %.h .tmp_qtcheck
- $(call moc)
|