Don't override CFLAGS and CPPFLAGS from the environment (needed for http://wiki.debian.org/Hardening).
Also respect LDFLAGS.

--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 # The following options seem to work fine on Linux, FreeBSD, and Darwin
-OPTIMIZE=-O2 -g
-CFLAGS=-Wall -Wno-deprecated-declarations -Werror -pthread -fno-strict-aliasing
-INCPATH=-I/usr/local/include -I/opt/homebrew/include -I/usr/local/ssl/include -I/opt/homebrew/opt/openssl@3/include
+OPTIMIZE+=-O2 -g
+CFLAGS+=-Wall -Wno-deprecated-declarations -Werror -pthread -fno-strict-aliasing
+INCPATH+=-I/usr/local/include -I/opt/homebrew/include -I/usr/local/ssl/include -I/opt/homebrew/opt/openssl@3/include
 CC?=cc
 
 # M1/M2 MacOS
@@ -31,7 +31,7 @@ validns: main.o carp.o mempool.o textpar
 	ipseckey.o cbtree.o mb.o mg.o mr.o minfo.o \
 	afsdb.o x25.o isdn.o rt.o px.o kx.o \
 	dlv.o dhcid.o nsap.o caa.o
-	$(CC) $(CFLAGS) $(OPTIMIZE) -o validns \
+	$(CC) $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -o validns \
 	    main.o carp.o mempool.o textparse.o base64.o base32hex.o \
 	    rr.o soa.o a.o cname.o mx.o ns.o \
 	    rrsig.o nsec.o dnskey.o txt.o aaaa.o \
@@ -62,163 +62,163 @@ clean:
 	@echo ':-)'
 
 main.o: main.c common.h carp.h mempool.h textparse.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o main.o main.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o main.o main.c $(INCPATH)
 
 carp.o: carp.c carp.h common.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o carp.o carp.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o carp.o carp.c $(INCPATH)
 
 mempool.o: mempool.c mempool.h carp.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o mempool.o mempool.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o mempool.o mempool.c $(INCPATH)
 
 textparse.o: textparse.c common.h carp.h mempool.h textparse.h base64.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o textparse.o textparse.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o textparse.o textparse.c $(INCPATH)
 
 base64.o: base64.c base64.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o base64.o base64.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o base64.o base64.c $(INCPATH)
 
 base32hex.o: base32hex.c base32hex.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o base32hex.o base32hex.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o base32hex.o base32hex.c $(INCPATH)
 
 rr.o: rr.c common.h mempool.h carp.h textparse.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o rr.o rr.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o rr.o rr.c $(INCPATH)
 
 soa.o: soa.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o soa.o soa.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o soa.o soa.c $(INCPATH)
 
 a.o: a.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o a.o a.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o a.o a.c $(INCPATH)
 
 cname.o: cname.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o cname.o cname.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o cname.o cname.c $(INCPATH)
 
 mb.o: mb.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o mb.o mb.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o mb.o mb.c $(INCPATH)
 
 mg.o: mg.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o mg.o mg.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o mg.o mg.c $(INCPATH)
 
 minfo.o: minfo.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o minfo.o minfo.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o minfo.o minfo.c $(INCPATH)
 
 mr.o: mr.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o mr.o mr.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o mr.o mr.c $(INCPATH)
 
 mx.o: mx.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o mx.o mx.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o mx.o mx.c $(INCPATH)
 
 afsdb.o: afsdb.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o afsdb.o afsdb.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o afsdb.o afsdb.c $(INCPATH)
 
 x25.o: x25.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o x25.o x25.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o x25.o x25.c $(INCPATH)
 
 isdn.o: isdn.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o isdn.o isdn.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o isdn.o isdn.c $(INCPATH)
 
 rt.o: rt.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o rt.o rt.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o rt.o rt.c $(INCPATH)
 
 px.o: px.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o px.o px.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o px.o px.c $(INCPATH)
 
 kx.o: kx.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o kx.o kx.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o kx.o kx.c $(INCPATH)
 
 dlv.o: dlv.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o dlv.o dlv.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o dlv.o dlv.c $(INCPATH)
 
 dhcid.o: dhcid.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o dhcid.o dhcid.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o dhcid.o dhcid.c $(INCPATH)
 
 nsap.o: nsap.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o nsap.o nsap.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o nsap.o nsap.c $(INCPATH)
 
 ns.o: ns.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o ns.o ns.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o ns.o ns.c $(INCPATH)
 
 rrsig.o: rrsig.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o rrsig.o rrsig.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o rrsig.o rrsig.c $(INCPATH)
 
 nsec.o: nsec.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o nsec.o nsec.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o nsec.o nsec.c $(INCPATH)
 
 dnskey.o: dnskey.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o dnskey.o dnskey.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o dnskey.o dnskey.c $(INCPATH)
 
 txt.o: txt.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o txt.o txt.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o txt.o txt.c $(INCPATH)
 
 aaaa.o: aaaa.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o aaaa.o aaaa.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o aaaa.o aaaa.c $(INCPATH)
 
 naptr.o: naptr.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o naptr.o naptr.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o naptr.o naptr.c $(INCPATH)
 
 srv.o: srv.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o srv.o srv.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o srv.o srv.c $(INCPATH)
 
 nsec3param.o: nsec3param.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o nsec3param.o nsec3param.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o nsec3param.o nsec3param.c $(INCPATH)
 
 nsec3.o: nsec3.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o nsec3.o nsec3.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o nsec3.o nsec3.c $(INCPATH)
 
 ds.o: ds.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o ds.o ds.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o ds.o ds.c $(INCPATH)
 
 hinfo.o: hinfo.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o hinfo.o hinfo.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o hinfo.o hinfo.c $(INCPATH)
 
 loc.o: loc.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o loc.o loc.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o loc.o loc.c $(INCPATH)
 
 nsec3checks.o: nsec3checks.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o nsec3checks.o nsec3checks.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o nsec3checks.o nsec3checks.c $(INCPATH)
 
 ptr.o: ptr.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o ptr.o ptr.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o ptr.o ptr.c $(INCPATH)
 
 sshfp.o: sshfp.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o sshfp.o sshfp.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o sshfp.o sshfp.c $(INCPATH)
 
 caa.o: caa.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o caa.o caa.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o caa.o caa.c $(INCPATH)
 
 rp.o: rp.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o rp.o rp.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o rp.o rp.c $(INCPATH)
 
 spf.o: spf.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o spf.o spf.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o spf.o spf.c $(INCPATH)
 
 cert.o: cert.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o cert.o cert.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o cert.o cert.c $(INCPATH)
 
 dname.o: dname.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o dname.o dname.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o dname.o dname.c $(INCPATH)
 
 tlsa.o: tlsa.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o tlsa.o tlsa.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o tlsa.o tlsa.c $(INCPATH)
 
 nid.o: nid.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o nid.o nid.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o nid.o nid.c $(INCPATH)
 
 l32.o: l32.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o l32.o l32.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o l32.o l32.c $(INCPATH)
 
 l64.o: l64.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o l64.o l64.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o l64.o l64.c $(INCPATH)
 
 lp.o: lp.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o lp.o lp.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o lp.o lp.c $(INCPATH)
 
 ipseckey.o: ipseckey.c common.h textparse.h mempool.h carp.h rr.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o ipseckey.o ipseckey.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o ipseckey.o ipseckey.c $(INCPATH)
 
 cbtree.o: cbtree.c cbtree.h
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o cbtree.o cbtree.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o cbtree.o cbtree.c $(INCPATH)
 
 threads.o: threads.c
-	$(CC) $(CFLAGS) $(OPTIMIZE) -c -o threads.o threads.c $(INCPATH)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTIMIZE) -c -o threads.o threads.c $(INCPATH)
 
 test: validns
 	perl -MTest::Harness -e 'runtests("t/test.pl")'
@@ -227,9 +227,9 @@ test-details: validns
 	perl t/test.pl
 
 test64:
-	$(CC) -Wall -O2 -o base64-test base64.c -DTEST_PROGRAM
+	$(CC) $(LDFLAGS) $(CPPFLAGS) $(CFLAGS)  -Wall -O2 -o base64-test base64.c -DTEST_PROGRAM
 	./base64-test
 
 test32hex:
-	$(CC) -Wall -O2 -o base32hex-test base32hex.c -DTEST_PROGRAM
+	$(CC) $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) -Wall -O2 -o base32hex-test base32hex.c -DTEST_PROGRAM
 	./base32hex-test
