All of lore.kernel.org
 help / color / mirror / Atom feed
From: Romain Lievin <rlievin@free.fr>
To: Roman Zippel <zippel@linux-m68k.org>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>
Subject: kconfig (gkc): help about Makefile
Date: Thu, 28 Nov 2002 20:17:34 +0100	[thread overview]
Message-ID: <20021128191734.GA476@free.fr> (raw)

Hi Roman,

I'm currently working on the kernel Makefile ($SRC & $SRC/scripts/kconfig)
for adding gkc support but I'm encountering some difficulties...
I have written a standalone Makefile for the gkc package which I'm integrating
into the kernel's Makefile.

I does not understand why it does not run the GTK detection (l75 in the
Makefile). I hope that I am not bothering you but I'm not a guru in this
kind of Makefile: it's too elaborated for me.

==========================[ kernel Makefile ]========================
#################
#
# Shared Makefile for the various lkc 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
# gconf:  Used for the gconfig target
#	  Based on GTK which needs to be installed to compile it
#

TEST1=`pkg-config gtk+-2.0 --exists`
TEST2=`pkg-config gmodule-2.0 --exists`
TEST3=`pkg-config libglade-2.0 --exists`

# object files used by all lkc flavours
libkconfig-objs := zconf.tab.o

host-progs	:= conf mconf qconf gconf
conf-objs	:= conf.o  libkconfig.so
mconf-objs	:= mconf.o libkconfig.so

qconf-objs	:= kconfig_load.o
qconf-cxxobjs	:= qconf.o

gconf-objs	:= kconfig_load.o
gconf-cobjs	:= gconf.o

clean-files	:= libkconfig.so lkc_defs.h qconf.moc .tmp_qtcheck \
		   zconf.tab.c zconf.tab.h lex.zconf.c .tmp_gtkcheck \

include $(TOPDIR)/Rules.make

# generated files seem to need this to find local include files

HOSTCFLAGS_lex.zconf.o	:= -I$(src)
HOSTCFLAGS_zconf.tab.o	:= -I$(src)

HOSTLOADLIBES_qconf	= -L$(QTDIR)/lib -Wl,-rpath,$(QTDIR)/lib -l$(QTLIB) -ldl
HOSTCXXFLAGS_qconf.o	= -I$(QTDIR)/include 

HOSTLOADLIBES_gconf	= -L$(GTK_LIBS)
HOSTCXXFLAGS_gconf.o	= -I$(GTK_FLAGS)

$(obj)/conf.o $(obj)/mconf.o $(obj)/qconf.o $(obj)/gconf.o: $(obj)/zconf.tab.h

$(obj)/qconf.o: $(obj)/.tmp_qtcheck

ifeq ($(MAKECMDGOALS),$(obj)/qconf)
-include $(obj)/.tmp_qtcheck

# QT needs some extra effort...
$(obj)/.tmp_qtcheck:
	echo "Checking QT install...";
	@set -e; for d in $$QTDIR /usr/share/qt /usr/lib/qt3; do \
	  if [ -x $$d/bin/moc ]; then DIR=$$d; break; fi; \
	done; \
	if [ -z "$$DIR" ]; then \
	  echo "*"; \
	  echo "* Unable to find the QT installation. Please make sure that the"; \
	  echo "* QT development package is correctly installed and the QTDIR"; \
	  echo "* environment variable is set to the correct location."; \
	  echo "*"; \
	  false; \
	fi; \
	LIB=qt; \
	if [ -f $$DIR/lib/libqt-mt.so ]; then LIB=qt-mt; fi; \
	echo "QTDIR=$$DIR" > $@; echo "QTLIB=$$LIB" >> $@
endif

$(obj)/gconf.o: $(obj)/.tmp_gtkcheck

ifeq ($(MAKECMDGOALS),$(obj)/gconf)
-include $(obj)/.tmp_gtkcheck

# GTK needs some extra effort, too...
$(obj)/.tmp_qtcheck:
	echo "Checking GTK install...";
	@if [ $(TEST1) -a $(TEST2) -a $(TEST3) ] ;					\
	then										\
		echo "*"; 								\
		echo "* Unable to find the GTK+ installation. Please make"; 		\
		echo "* sure that the GTK+ 2.0 development package is"; 		\
		echo "* correctly installed."; 						\
		echo "* You need gtk+-2.0, gmodule-2.0 and libglade-2.0..."; 		\
		echo "*"; 								\
	else										\
		GTK_FLAGS=`pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --cflags` ;	\
		GTK_LIBS=`pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --libs`	;	\
		echo $$GTK_FLAGS $$GTK_LIBS > .tmp_gtkcheck ;				\
	fi
endif

$(obj)/zconf.tab.o: $(obj)/lex.zconf.c

$(obj)/kconfig_load.o: $(obj)/lkc_defs.h

$(obj)/qconf.o: $(obj)/qconf.moc $(obj)/lkc_defs.h

$(obj)/gconf.o: $(obj)/lkc_defs.h

$(obj)/%.moc: $(src)/%.h
	$(QTDIR)/bin/moc -i $< -o $@

$(obj)/lkc_defs.h: $(src)/lkc_proto.h
	sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'


###
# The following requires flex/bison
# By default we use the _shipped versions, uncomment the following line if
# you are modifying the flex/bison src.
# LKC_GENPARSER := 1

ifdef LKC_GENPARSER

$(obj)/zconf.tab.c: $(obj)/zconf.y 
$(obj)/zconf.tab.h: $(obj)/zconf.tab.c

%.tab.c: %.y
	bison -t -d -v -b $* -p $(notdir $*) $<

lex.%.c: %.l
	flex -P$(notdir $*) -o$@ $<

endif
==========================[ own Makefile ]========================
#
# Simple makefile
#

VERSION = 0.96b

CC      = gcc
KERNEL  = /usr/src/linux
INSTALL = cp
RM      = rm -f

TEST1=`pkg-config gtk+-2.0 --exists`
TEST2=`pkg-config gmodule-2.0 --exists`
TEST3=`pkg-config libglade-2.0 --exists`

gkc: .tmp_gtkcheck gconf.o

gconf.o: gconf.c
	$(CC) `cat .tmp_gtkcheck` \
	-I$(KERNEL)/scripts/kconfig -L$(KERNEL)/scripts/kconfig -lkconfig \
	gconf.c -o gkc

install: patch gkc gkc.glade
	@if [ "${USER}" = "root" ]; then \
		ldconfig                $(KERNEL)/scripts/kconfig ;	\
	fi
	$(INSTALL) gkc       $(KERNEL)/scripts/kconfig
	$(INSTALL) gkc.glade $(KERNEL)/scripts/kconfig

uninstall:
	$(RM) $(KERNEL)/scripts/kconfig/gkc
	$(RM) $(KERNEL)/scripts/kconfig/gkc.glade

patch:
	@grep gconfig $(KERNEL)/Makefile > /tmp/scan;		\
	if [ ! -s /tmp/scan ] ; 				\
	then							\
		echo "Applying patch...";			\
		LKCSRC=$$PWD; export LKCSRC; 			\
		cd $(KERNEL);					\
		patch -p0 -N < $$LKCSRC/prepare.diff;		\
		echo "Done.";					\
	fi

clean: 
	rm -f *.o gkc null .tmp_gtkcheck

check: .tmp_gtkcheck
.tmp_gtkcheck:
	@if [ $(TEST1) -a $(TEST2) -a $(TEST3) ] ;					\
	then										\
		echo "*"; 								\
		echo "* Unable to find the GTK+ installation. Please make"; 		\
		echo "* sure that the GTK+ 2.0 development package is"; 		\
		echo "* correctly installed."; 						\
		echo "* You need gtk+-2.0, gmodule-2.0 and libglade-2.0..."; 		\
		echo "*"; 								\
	else										\
		GTK_FLAGS=`pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --cflags` ;	\
		GTK_LIBS=`pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --libs`	;	\
		echo $$GTK_FLAGS $$GTK_LIBS > .tmp_gtkcheck ;				\
	fi

dist: clean
	mkdir /tmp/gkc-$(VERSION) ; cp -rL * /tmp/gkc-$(VERSION)
	cd /tmp ; tar cvf - gkc-$(VERSION) | \
	gzip > gkc-$(VERSION).tar.gz
==========================[ end ]========================


Thanks, Romain.
-- 
Romain Lievin, aka 'roms'  	<roms@lpg.ticalc.org>
Web site 			<http://lpg.ticalc.org/prj_tilp>
"Linux, y'a moins bien mais c'est plus cher !"















             reply	other threads:[~2002-11-28 19:09 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-28 19:17 Romain Lievin [this message]
2002-11-28 19:57 ` kconfig (gkc): help about Makefile Sam Ravnborg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20021128191734.GA476@free.fr \
    --to=rlievin@free.fr \
    --cc=linux-kernel@vger.kernel.org \
    --cc=zippel@linux-m68k.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.