Ok... this is a bit painful. Both dnsmasq1 (1.18) and dnsmasq (2.6) share

a make target (the dnsmasq binary in root).  So I made 2.6 the "default".
It is _not_ enough to do "make dnsmasq1"... You must actually add dnsmasq1
to TARGETS if you want the older version.  Better approaches welcome.

Also, the config patch for 2.6 fixes the outdated/broken handling of uClibc
by the dnsmasq config.h file.
This commit is contained in:
Manuel Novoa III 2004-04-04 02:33:03 +00:00
parent 9f8739658f
commit 1169162ab7
2 changed files with 99 additions and 0 deletions

50
make/dnsmasq.mk Normal file
View File

@ -0,0 +1,50 @@
#############################################################
#
# dnsmasq
#
#############################################################
DNSMASQ_SITE=http://thekelleys.org.uk/dnsmasq
ifeq ($(filter $(TARGETS),dnsmasq1),)
DNSMASQ_SOURCE=dnsmasq-2.6.tar.gz
DNSMASQ_DIR=$(BUILD_DIR)/dnsmasq-2.6
DNSMASQ_VER=dnsmasq2
else
DNSMASQ_SOURCE=dnsmasq-1.18.tar.gz
DNSMASQ_DIR=$(BUILD_DIR)/dnsmasq-1.18
DNSMASQ_VER=dnsmasq1
endif
DNSMASQ_BINARY=dnsmasq
DNSMASQ_TARGET_BINARY=usr/sbin/dnsmasq
$(DL_DIR)/$(DNSMASQ_SOURCE):
$(WGET) -P $(DL_DIR) $(DNSMASQ_SITE)/$(DNSMASQ_SOURCE)
$(DNSMASQ_DIR)/.source: $(DL_DIR)/$(DNSMASQ_SOURCE)
zcat $(DL_DIR)/$(DNSMASQ_SOURCE) | tar -C $(BUILD_DIR) -xvf -
$(SOURCE_DIR)/patch-kernel.sh $(DNSMASQ_DIR) $(SOURCE_DIR) \
$(DNSMASQ_VER)-*.patch
touch $(DNSMASQ_DIR)/.source
$(DNSMASQ_DIR)/$(DNSMASQ_BINARY): $(DNSMASQ_DIR)/.source
$(MAKE) CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)" \
BINDIR=/usr/sbin MANDIR=/usr/man -C $(DNSMASQ_DIR)
$(TARGET_DIR)/$(DNSMASQ_TARGET_BINARY): $(DNSMASQ_DIR)/$(DNSMASQ_BINARY)
$(MAKE) BINDIR=/usr/sbin MANDIR=/usr/man \
DESTDIR=$(TARGET_DIR) -C $(DNSMASQ_DIR) install
$(STRIP) $(TARGET_DIR)/$(DNSMASQ_TARGET_BINARY)
rm -rf $(TARGET_DIR)/usr/man
dnsmasq: uclibc $(TARGET_DIR)/$(DNSMASQ_TARGET_BINARY)
dnsmasq1: uclibc $(TARGET_DIR)/$(DNSMASQ_TARGET_BINARY)
dnsmasq-source: $(DL_DIR)/$(DNSMASQ_SOURCE)
dnsmasq-clean:
#$(MAKE) prefix=$(TARGET_DIR)/usr -C $(DNSMASQ_DIR) uninstall
-$(MAKE) -C $(DNSMASQ_DIR) clean
dnsmasq-dirclean:
rm -rf $(DNSMASQ_DIR)

View File

@ -0,0 +1,49 @@
diff -urN dnsmasq-2.6/src/config.h dnsmasq-2.6-new/src/config.h
--- dnsmasq-2.6/src/config.h 2004-04-03 14:03:39.000000000 -0600
+++ dnsmasq-2.6-new/src/config.h 2004-04-03 19:56:01.000000000 -0600
@@ -74,6 +74,11 @@
/* We assume that systems which don't have IPv6
headers don't have ntop and pton either */
+#if defined(__UCLIBC__) && !defined(__UCLIBC_HAS_IPV6__)
+# undef NO_IPV6
+# define NO_IPV6
+#endif
+
#if defined(INET6_ADDRSTRLEN) && !defined(NO_IPV6)
# define HAVE_IPV6
# define ADDRSTRLEN INET6_ADDRSTRLEN
@@ -191,7 +196,7 @@
/* platform dependent options. */
/* Must preceed __linux__ since uClinux defines __linux__ too. */
-#if defined(__uClinux__) || defined(__UCLIBC__)
+#if defined(__uClinux__)
#undef HAVE_LINUX_IPV6_PROC
#define HAVE_GETOPT_LONG
#undef HAVE_ARC4RANDOM
@@ -205,6 +210,24 @@
# define NO_FORK
#endif
+#elif defined(__linux__) && defined(__UCLIBC__)
+# define HAVE_LINUX_IPV6_PROC
+# if defined(__UCLIBC_HAS_GNU_GETOPT__) || \
+ ((__UCLIBC_MAJOR__==0) && (__UCLIBC_MINOR__==9) && (__UCLIBC_SUBLEVEL__<21))
+# define HAVE_GETOPT_LONG
+# else
+# undef HAVE_GETOPT_LONG
+# endif
+#undef HAVE_ARC4RANDOM
+#define HAVE_RANDOM
+#define HAVE_DEV_URANDOM
+#define HAVE_DEV_RANDOM
+#undef HAVE_SOCKADDR_SA_LEN
+#undef HAVE_PSELECT
+#if !defined(__ARCH_HAS_MMU__)
+# define NO_FORK
+#endif
+
/* libc5 - must precede __linux__ too */
/* Note to build a libc5 binary on a modern Debian system:
install the packages altgcc libc5 and libc5-altdev