summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile166
1 files changed, 166 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f258701
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,166 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+prefix = /usr
+
+ifdef DESTDIR
+BASEDIR := $(DESTDIR)
+endif
+
+CFLAGS ?= -g -O2
+
+PKG_CONFIG ?= pkg-config
+PERL ?= perl
+INSTALL ?= install
+
+whois_OBJECTS := whois.o utils.o
+mkpasswd_OBJECTS := mkpasswd.o utils.o
+
+##############################################################################
+# Solaris
+#whois_LDADD += -lnsl -lsocket -liconv
+
+# FreeBSD
+#whois_LDADD += -liconv
+#LIBS += -L/usr/local/lib -lintl
+#DEFS += -I/usr/local/include
+
+# OS/2 EMX
+#whois_LDADD += -lsocket
+#LDFLAGS += -Zexe -Dstrncasecmp=strnicmp
+
+# OS X
+#whois_LDADD += -liconv
+
+ifdef CONFIG_FILE
+DEFS += -DCONFIG_FILE=\"$(CONFIG_FILE)\"
+endif
+
+ifdef LOCALEDIR
+DEFS += -DLOCALEDIR=\"$(BASEDIR)$(prefix)/share/locale\"
+endif
+
+# libidn support has been autodetected since 5.2.18
+ifdef HAVE_LIBIDN
+$(error Please fix your build system to stop defining HAVE_LIBIDN!)
+endif
+
+ifeq ($(shell $(PKG_CONFIG) --exists 'libidn2 >= 2.0.3' || echo NO),)
+whois_LDADD += $(shell $(PKG_CONFIG) --libs libidn2)
+DEFS += -DHAVE_LIBIDN2 $(shell $(PKG_CONFIG) --cflags libidn2)
+else ifeq ($(shell $(PKG_CONFIG) --exists 'libidn' || echo NO),)
+whois_LDADD += $(shell $(PKG_CONFIG) --libs libidn)
+DEFS += -DHAVE_LIBIDN $(shell $(PKG_CONFIG) --cflags libidn)
+endif
+
+ifdef HAVE_ICONV
+whois_OBJECTS += simple_recode.o
+DEFS += -DHAVE_ICONV
+endif
+
+ifeq ($(shell $(PKG_CONFIG) --exists 'libxcrypt >= 4.1' || echo NO),)
+DEFS += -DHAVE_CRYPT_H -DHAVE_LINUX_CRYPT_GENSALT $(shell $(PKG_CONFIG) --cflags libcrypt)
+mkpasswd_LDADD += $(shell $(PKG_CONFIG) --libs libcrypt)
+else ifdef HAVE_XCRYPT
+DEFS += -DHAVE_XCRYPT_H -DHAVE_LINUX_CRYPT_GENSALT
+mkpasswd_LDADD += -lxcrypt
+else ifdef HAVE_LIBOWCRYPT
+# owl and openSUSE have crypt_gensalt(3) in libowcrypt
+DEFS += -DHAVE_CRYPT_H -DHAVE_LINUX_CRYPT_GENSALT -D_OW_SOURCE
+mkpasswd_LDADD += -lcrypt -lowcrypt
+else
+mkpasswd_LDADD += -lcrypt
+endif
+
+CPPFLAGS += $(DEFS) $(INCLUDES)
+
+BASHCOMPDIR ?= $(shell $(PKG_CONFIG) --variable=completionsdir bash-completion 2>/dev/null || echo /etc/bash_completion.d)
+
+##############################################################################
+all: Makefile.depend whois mkpasswd pos
+
+##############################################################################
+%.o: %.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
+
+whois: $(whois_OBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(whois_LDADD) $(LIBS)
+
+mkpasswd: $(mkpasswd_OBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(mkpasswd_LDADD) $(LIBS)
+
+##############################################################################
+version.h: debian/changelog make_version_h.pl
+ $(PERL) make_version_h.pl $< > $@
+
+as_del.h: as_del_list make_as_del.pl
+ $(PERL) make_as_del.pl < $< > $@
+
+ip_del.h: ip_del_list make_ip_del.pl
+ $(PERL) make_ip_del.pl < $< > $@
+
+ip6_del.h: ip6_del_list make_ip6_del.pl
+ $(PERL) make_ip6_del.pl < $< > $@
+
+new_gtlds.h: new_gtlds_list make_new_gtlds.pl
+ $(PERL) make_new_gtlds.pl < $< > $@
+
+nic_handles.h: nic_handles_list make_nic_handles.pl
+ $(PERL) make_nic_handles.pl < $< > $@
+
+tld_serv.h: tld_serv_list make_tld_serv.pl
+ $(PERL) make_tld_serv.pl < $< > $@
+
+servers_charset.h: servers_charset_list make_servers_charset.pl
+ $(PERL) make_servers_charset.pl < $< > $@
+
+##############################################################################
+afl:
+ -rm -f Makefile.depend
+ DEFS=-DAFL_MODE=1 AFL_HARDEN=1 $(MAKE) whois CC=afl-gcc HAVE_ICONV=1
+
+afl-run:
+ nice afl-fuzz -i ../afl_in -o ../afl_out -- ./whois
+
+##############################################################################
+install: install-whois install-mkpasswd install-pos install-bashcomp
+
+install-whois: whois
+ $(INSTALL) -d $(BASEDIR)$(prefix)/bin/
+ $(INSTALL) -d $(BASEDIR)$(prefix)/share/man/man1/
+ $(INSTALL) -d $(BASEDIR)$(prefix)/share/man/man5/
+ $(INSTALL) -m 0755 whois $(BASEDIR)$(prefix)/bin/
+ $(INSTALL) -m 0644 whois.1 $(BASEDIR)$(prefix)/share/man/man1/
+ $(INSTALL) -m 0644 whois.conf.5 $(BASEDIR)$(prefix)/share/man/man5/
+
+install-mkpasswd: mkpasswd
+ $(INSTALL) -d $(BASEDIR)$(prefix)/bin/
+ $(INSTALL) -d $(BASEDIR)$(prefix)/share/man/man1/
+ $(INSTALL) -m 0755 mkpasswd $(BASEDIR)$(prefix)/bin/
+ $(INSTALL) -m 0644 mkpasswd.1 $(BASEDIR)$(prefix)/share/man/man1/
+
+install-pos:
+ cd po && $(MAKE) install
+
+install-bashcomp:
+ $(INSTALL) -d $(BASEDIR)$(BASHCOMPDIR)
+ $(INSTALL) -m 0644 mkpasswd.bash $(BASEDIR)$(BASHCOMPDIR)/mkpasswd
+ $(INSTALL) -m 0644 whois.bash $(BASEDIR)$(BASHCOMPDIR)/whois
+
+distclean: clean
+ rm -f version.h po/whois.pot
+
+clean:
+ rm -f Makefile.depend as_del.h ip_del.h ip6_del.h \
+ nic_handles.h new_gtlds.h tld_serv.h servers_charset.h \
+ *.o whois mkpasswd
+ rm -f po/*.mo
+
+pos:
+ cd po && $(MAKE)
+
+depend: Makefile.depend
+Makefile.depend:
+ $(CC) $(CPPFLAGS) $(CFLAGS) -MM -MG *.c > $@
+
+-include Makefile.depend
+
+.DELETE_ON_ERROR: