All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: linux-kernel@vger.kernel.org
Subject: [PATCH 01/11] kconfig: factor out ncurses check in a shell script
Date: Mon, 9 Jan 2006 22:38:04 +0100	[thread overview]
Message-ID: <11368426843316@foobar.com> (raw)
In-Reply-To: <20060109211157.GA14477@mars.ravnborg.org>


Cleaning up the lxdialog Makefile by factoring out the
ncurses compatibility checks.
This made the checks much more obvious and easier to extend.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 scripts/kconfig/lxdialog/Makefile          |   48 +++++---------------
 scripts/kconfig/lxdialog/check-lxdialog.sh |   67 ++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+), 36 deletions(-)
 create mode 100644 scripts/kconfig/lxdialog/check-lxdialog.sh

ae215b14bdbd459afe5f371175765fae817062a8
diff --git a/scripts/kconfig/lxdialog/Makefile b/scripts/kconfig/lxdialog/Makefile
index a45a13f..8f41d9a 100644
--- a/scripts/kconfig/lxdialog/Makefile
+++ b/scripts/kconfig/lxdialog/Makefile
@@ -1,42 +1,18 @@
-HOST_EXTRACFLAGS := -DLOCALE 
-ifeq ($(shell uname),SunOS)
-HOST_LOADLIBES   := -lcurses
-else
-HOST_LOADLIBES   := -lncurses
-endif
+# Makefile to build lxdialog package
+#
 
-ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h))
-        HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
-else
-ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
-        HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
-else
-ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h))
-        HOST_EXTRACFLAGS += -DCURSES_LOC="<ncurses.h>"
-else
-	HOST_EXTRACFLAGS += -DCURSES_LOC="<curses.h>"
-endif
-endif
-endif
+check-lxdialog   := $(srctree)/$(src)/check-lxdialog.sh
+HOST_EXTRACFLAGS := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
+HOST_LOADLIBES   := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags)
+ 
+HOST_EXTRACFLAGS += -DLOCALE 
+
+.PHONY: dochecklxdialog
+$(obj)/dochecklxdialog:
+	$(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_LOADLIBES)
 
 hostprogs-y	:= lxdialog
-always		:= ncurses $(hostprogs-y)
+always		:= $(hostprogs-y) dochecklxdialog
 
 lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \
 		 util.o lxdialog.o msgbox.o
-
-.PHONY: $(obj)/ncurses
-$(obj)/ncurses:
-	@echo "main() {}" > lxtemp.c
-	@if $(HOSTCC) lxtemp.c  $(HOST_LOADLIBES); then \
-		rm -f lxtemp.c a.out; \
-	else \
-		rm -f lxtemp.c; \
-		echo -e "\007" ;\
-		echo ">> Unable to find the Ncurses libraries." ;\
-		echo ">>" ;\
-		echo ">> You must install ncurses-devel in order" ;\
-		echo ">> to use 'make menuconfig'" ;\
-		echo ;\
-		exit 1 ;\
-	fi
diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh
new file mode 100644
index 0000000..a3c141b
--- /dev/null
+++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Check ncurses compatibility
+
+# What library to link
+ldflags()
+{
+	if [ `uname` == SunOS ]; then
+		echo '-lcurses'
+	else
+		echo '-lncurses'
+	fi
+}
+
+# Where is ncurses.h?
+ccflags()
+{
+	if [ -f /usr/include/ncurses/ncurses.h ]; then
+		echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"'
+	elif [ -f /usr/include/ncurses/curses.h ]; then
+		echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"'
+	elif [ -f /usr/include/ncurses.h ]; then
+		echo '-DCURSES_LOC="<ncurses.h>"'
+	else
+		echo '-DCURSES_LOC="<curses.h>"'
+	fi
+}
+
+compiler=""
+# Check if we can link to ncurses
+check() {
+	echo "main() {}" | $compiler -xc -
+	if [ $? != 0 ]; then
+		echo " *** Unable to find the ncurses libraries."          1>&2
+		echo " *** make menuconfig require the ncurses libraries"  1>&2
+		echo " *** "                                               1>&2
+		echo " *** Install ncurses (ncurses-devel) and try again"  1>&2
+		echo " *** "                                               1>&2
+		exit 1
+	fi
+}
+
+usage() {
+	printf "Usage: $0 [-check compiler options|-header|-library]\n"
+}
+
+if [ $# == 0 ]; then
+	usage
+	exit 1
+fi
+
+case "$1" in
+	"-check")
+		shift
+		compiler="$@"
+		check
+		;;
+	"-ccflags")
+		ccflags
+		;;
+	"-ldflags")
+		ldflags
+		;;
+	"*")
+		usage
+		exit 1
+		;;
+esac
-- 
1.0.GIT


  reply	other threads:[~2006-01-09 21:38 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
2006-01-09 21:38 ` Sam Ravnborg [this message]
2006-01-10 20:27   ` [PATCH 01/11] kconfig: factor out ncurses check in a shell script Jan Engelhardt
2006-01-10 21:01     ` Sam Ravnborg
2006-01-10 21:28       ` Jan Engelhardt
2006-01-11 16:55     ` Sam Ravnborg
2006-01-11 18:11       ` Jan Engelhardt
2006-01-09 21:38 ` [PATCH 02/11] kbuild: clean up asm-offsets.h creation Sam Ravnborg
2006-01-09 21:38 ` [PATCH 03/11] modpost/file2alias: Fix typo Sam Ravnborg
2006-01-09 21:38 ` [PATCH 04/11] kbuild: In setlocalversion change -git_dirty to just -dirty Sam Ravnborg
2006-01-09 21:38 ` [PATCH 05/11] kbuild: ensure mrproper removes .old_version Sam Ravnborg
2006-01-09 21:38 ` [PATCH 06/11] kbuild: reference_discarded addition Sam Ravnborg
2006-01-09 21:38 ` [PATCH 07/11] kbuild: remove GCC_VERSION Sam Ravnborg
2006-01-09 21:38 ` [PATCH 08/11] frv: Use KERNELRELEASE Sam Ravnborg
2006-01-09 21:38 ` [PATCH 09/11] kbuild: drop vmlinux dependency from "make install" Sam Ravnborg
2006-01-12 16:21   ` Cal Peake
2006-01-12 21:25     ` Sam Ravnborg
2006-01-31 20:11   ` Dave Hansen
2006-01-31 21:04     ` [PATCH 09/11] kbuild: drop vmlinux dependency from 'make install' Sam Ravnborg
2006-02-01 23:27       ` Keith Owens
2006-01-09 21:38 ` [PATCH 10/11] kbuild/xfs: introduce fs/xfs/Kbuild Sam Ravnborg
2006-01-09 21:38 ` [PATCH 11/11] kbuild: KERNELRELEASE is only re-defined when buiding the kernel Sam Ravnborg
2006-01-09 21:50 ` [PATCH 12/11] kbuild: re-export VERSION, PATCHLEVEL, SUBLEVEL Sam Ravnborg
2006-01-10 16:27 ` [GIT PATCHES] kbuild updates Linus Torvalds
2006-01-12 23:18   ` [2.6 patch] i386: remove gcc version check for CONFIG_REGPARM Adrian Bunk

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=11368426843316@foobar.com \
    --to=sam@ravnborg.org \
    --cc=linux-kernel@vger.kernel.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.