mirror of https://lore.kernel.org/lkml/
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome