Make nmap be rebuilt when something in a subdirectory changes. Rather than

"all" depending on libpcre/libpcre.a, it now depends on a target pcre_build,
which always runs and does the build in the subdirectory. "nmap" depends on
libpcre/libpcre.a itself. The same thing happens for other subdirectory builds.
Subdirectory builds are prerequisites of "all" and "make nmap" happens in the
body of "all" so the subdirectories are always built first.
This commit is contained in:
david 2007-11-22 07:43:59 +00:00
parent 3782d2c020
commit 70425e715d
3 changed files with 67 additions and 19 deletions

View file

@ -75,10 +75,10 @@ OBJS = main.o nmap.o targets.o tcpip.o nmap_error.o utils.o idle_scan.o osscan.o
.cc.o:
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
all: @LUA_DEPENDS@ @PCAP_DEPENDS@ @PCRE_DEPENDS@ @DNET_DEPENDS@ $(NBASEDIR)/libnbase.a $(NSOCKDIR)/src/libnsock.a $(NSESTDLIB)
$(MAKE) $(TARGET) $(BUILDZENMAP)
all: @LUA_BUILD@ @PCAP_BUILD@ @PCRE_BUILD@ @DNET_BUILD@ @NBASE_BUILD@ @NSOCK_BUILD@
$(MAKE) $(TARGET) $(NSESTDLIB) $(BUILDZENMAP)
$(TARGET): $(OBJS)
$(TARGET): @LUA_DEPENDS@ @PCAP_DEPENDS@ @PCRE_DEPENDS@ @DNET_DEPENDS@ $(NBASEDIR)/libnbase.a $(NSOCKDIR)/src/libnsock.a $(OBJS)
echo Compiling nmap
rm -f $@
$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
@ -87,28 +87,24 @@ nsestdlib: nselib/Makefile
@echo Compiling nse-standard-library; cd nselib && $(MAKE)
# This empty rule is used to force execution of certain rules where I can't conveniently specify
# all of the prerequisites (e.g. recursive makes and such)
FORCE:
$(LIBPCREDIR)/libpcre.a: $(LIBPCREDIR)/Makefile FORCE
pcre_build: $(LIBPCREDIR)/Makefile
@echo Compiling libpcre; cd $(LIBPCREDIR) && $(MAKE)
$(LIBDNETDIR)/src/.libs/libdnet.a: $(LIBDNETDIR)/Makefile FORCE
dnet_build: $(LIBDNETDIR)/Makefile
@echo Compiling libdnet; cd $(LIBDNETDIR) && $(MAKE)
$(LIBPCAPDIR)/libpcap.a: $(LIBPCAPDIR)/Makefile FORCE
pcap_build: $(LIBPCAPDIR)/Makefile
@echo Compiling libpcap; cd $(LIBPCAPDIR) && $(MAKE)
$(NBASEDIR)/libnbase.a: $(NBASEDIR)/Makefile FORCE
nbase_build: $(NBASEDIR)/Makefile
@echo Compiling libnbase;
cd $(NBASEDIR) && $(MAKE)
$(NSOCKDIR)/src/libnsock.a: $(NSOCKDIR)/src/Makefile FORCE
nsock_build: $(NSOCKDIR)/src/Makefile
@echo Compiling libnsock;
cd $(NSOCKDIR)/src && $(MAKE)
$(LIBLUADIR)/liblua.a: $(LIBLUADIR)/Makefile FORCE
lua_build: $(LIBLUADIR)/Makefile
@echo Compiling liblua; cd $(LIBLUADIR) && $(MAKE) liblua.a @LUAFLAGS@
#$(LIBPCAPDIR)/Makefile:

44
configure vendored
View file

@ -684,6 +684,7 @@ ZENMAP_CLEAN
ZENMAP_DIST_CLEAN
OPENSSL_LIBS
PCAP_DEPENDS
PCAP_BUILD
PCAP_CLEAN
PCAP_DIST_CLEAN
LIBPCAP_LIBS
@ -691,24 +692,29 @@ subdirs
LIBPCRE_LIBS
LIBPCREDIR
PCRE_DEPENDS
PCRE_BUILD
PCRE_CLEAN
PCRE_DIST_CLEAN
LIBDNET_LIBS
LIBDNETDIR
DNET_DEPENDS
DNET_BUILD
DNET_CLEAN
DNET_DIST_CLEAN
LIBLUA_LIBS
LIBLUADIR
LUA_DEPENDS
LUA_BUILD
LUA_CLEAN
LUA_DIST_CLEAN
INSTALLNSE
NSELIB_CLEAN
NSELIB_DIST_CLEAN
NBASEDIR
NBASE_BUILD
LIBNBASE_LIBS
NSOCKDIR
NSOCK_BUILD
LIBNSOCK_LIBS
PYTHON
PYTHON_VERSION
@ -6279,6 +6285,7 @@ fi
LIBPCAP_LIBS="-lpcap"
if test $have_libpcap = yes; then
PCAP_DEPENDS=""
PCAP_BUILD=""
PCAP_CLEAN=""
PCAP_DIST_CLEAN=""
cat >>confdefs.h <<\_ACEOF
@ -6294,6 +6301,7 @@ else
CXXFLAGS="$CXXFLAGS -I$libpcapdir"
fi
PCAP_DEPENDS='$(LIBPCAPDIR)/libpcap.a'
PCAP_BUILD="pcap_build"
PCAP_CLEAN="pcap_clean"
PCAP_DIST_CLEAN="pcap_dist_clean"
fi
@ -6303,6 +6311,7 @@ fi
if test $have_libpcap != yes ; then
subdirs="$subdirs libpcap"
@ -6744,11 +6753,13 @@ if test $have_pcre != yes ; then
CXXFLAGS="-I$LIBPCREDIR $CXXFLAGS"
LIBPCRE_LIBS="$LIBPCREDIR/libpcre.a"
PCRE_DEPENDS="$LIBPCREDIR/libpcre.a"
PCRE_BUILD="pcre_build"
PCRE_CLEAN="pcre_clean"
PCRE_DIST_CLEAN="pcre_dist_clean"
else
LIBPCRE_LIBS="-lpcre"
PCRE_DEPENDS=""
PCRE_BUILD=""
PCRE_CLEAN=""
PCRE_DIST_CLEAN=""
fi
@ -6759,6 +6770,7 @@ fi
have_dnet=no
requested_included_dnet=no
LIBDNETDIR=libdnet-stripped
@ -6789,11 +6801,13 @@ if test $have_dnet != yes ; then
CXXFLAGS="-I$LIBDNETDIR/include $CXXFLAGS"
LIBDNET_LIBS="$LIBDNETDIR/src/.libs/libdnet.a"
DNET_DEPENDS="$LIBDNETDIR/src/.libs/libdnet.a"
DNET_BUILD="dnet_build"
DNET_CLEAN="dnet_clean"
DNET_DIST_CLEAN="dnet_dist_clean"
else
LIBDNET_LIBS="-ldnet"
DNET_DEPENDS=""
DNET_BUILD=""
DNET_CLEAN=""
DNET_DIST_CLEAN=""
fi
@ -6804,6 +6818,7 @@ fi
LIBLUADIR=liblua
have_lua=no
@ -6821,6 +6836,7 @@ if test "${with_liblua+set}" = set; then
CXXFLAGS="-I$LIBLUADIR $CXXFLAGS"
LIBLUA_LIBS="$LIBLUADIR/liblua.a"
LUA_DEPENDS="$LIBLUADIR/liblua.a"
LUA_BUILD="lua_build"
LUA_CLEAN="lua_clean"
LUA_DIST_CLEAN="lua_dist_clean"
have_lua="yes"
@ -6844,6 +6860,7 @@ if test $no_lua == yes; then
CXXFLAGS="-DNOLUA $CXXFLAGS"
LIBLUA_LIBS=""
LUA_DEPENDS=""
LUA_BUILD=""
LUA_CLEAN=""
LUA_DIST_CLEAN=""
INSTALLNSE=""
@ -7411,6 +7428,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
LIBLUA_LIBS="-llua"
LUA_DEPENDS=""
LUA_BUILD=""
LUA_CLEAN=""
LUA_DIST_CLEAN=""
fi
@ -7422,6 +7440,7 @@ echo "${ECHO_T}no" >&6; }
CXXFLAGS="-I$LIBLUADIR $CXXFLAGS"
LIBLUA_LIBS="$LIBLUADIR/liblua.a"
LUA_DEPENDS="$LIBLUADIR/liblua.a"
LUA_BUILD="lua_build"
LUA_CLEAN="lua_clean"
LUA_DIST_CLEAN="lua_dist_clean"
else
@ -7449,6 +7468,7 @@ fi
{ echo "$as_me:$LINENO: checking if sockaddr{} has sa_len member" >&5
echo $ECHO_N "checking if sockaddr{} has sa_len member... $ECHO_C" >&6; }
if test "${ac_cv_sockaddr_has_sa_len+set}" = set; then
@ -8225,10 +8245,12 @@ if test "${with_libnbase+set}" = set; then
;;
*)
NBASEDIR="$with_libnbase"
NBASE_BUILD=""
;;
esac
else
NBASEDIR="nbase"
NBASE_BUILD="nbase_build"
NBASEDIR="nbase"
fi
@ -8240,10 +8262,12 @@ LIBNBASE_LIBS="-lnbase"
subdirs="$subdirs nbase"
NSOCKDIR="nsock"
NSOCK_BUILD="nsock_build"
# Check whether --with-libnsock was given.
if test "${with_libnsock+set}" = set; then
@ -8252,6 +8276,7 @@ if test "${with_libnsock+set}" = set; then
;;
*)
NSOCKDIR="$with_nsock"
NSOCK_BUILD=""
;;
esac
@ -8265,6 +8290,7 @@ LIBNSOCK_LIBS="-lnsock"
subdirs="$subdirs nsock/src"
@ -9092,6 +9118,7 @@ ZENMAP_CLEAN!$ZENMAP_CLEAN$ac_delim
ZENMAP_DIST_CLEAN!$ZENMAP_DIST_CLEAN$ac_delim
OPENSSL_LIBS!$OPENSSL_LIBS$ac_delim
PCAP_DEPENDS!$PCAP_DEPENDS$ac_delim
PCAP_BUILD!$PCAP_BUILD$ac_delim
PCAP_CLEAN!$PCAP_CLEAN$ac_delim
PCAP_DIST_CLEAN!$PCAP_DIST_CLEAN$ac_delim
LIBPCAP_LIBS!$LIBPCAP_LIBS$ac_delim
@ -9099,25 +9126,24 @@ subdirs!$subdirs$ac_delim
LIBPCRE_LIBS!$LIBPCRE_LIBS$ac_delim
LIBPCREDIR!$LIBPCREDIR$ac_delim
PCRE_DEPENDS!$PCRE_DEPENDS$ac_delim
PCRE_BUILD!$PCRE_BUILD$ac_delim
PCRE_CLEAN!$PCRE_CLEAN$ac_delim
PCRE_DIST_CLEAN!$PCRE_DIST_CLEAN$ac_delim
LIBDNET_LIBS!$LIBDNET_LIBS$ac_delim
LIBDNETDIR!$LIBDNETDIR$ac_delim
DNET_DEPENDS!$DNET_DEPENDS$ac_delim
DNET_BUILD!$DNET_BUILD$ac_delim
DNET_CLEAN!$DNET_CLEAN$ac_delim
DNET_DIST_CLEAN!$DNET_DIST_CLEAN$ac_delim
LIBLUA_LIBS!$LIBLUA_LIBS$ac_delim
LIBLUADIR!$LIBLUADIR$ac_delim
LUA_DEPENDS!$LUA_DEPENDS$ac_delim
LUA_BUILD!$LUA_BUILD$ac_delim
LUA_CLEAN!$LUA_CLEAN$ac_delim
LUA_DIST_CLEAN!$LUA_DIST_CLEAN$ac_delim
INSTALLNSE!$INSTALLNSE$ac_delim
NSELIB_CLEAN!$NSELIB_CLEAN$ac_delim
NSELIB_DIST_CLEAN!$NSELIB_DIST_CLEAN$ac_delim
NBASEDIR!$NBASEDIR$ac_delim
LIBNBASE_LIBS!$LIBNBASE_LIBS$ac_delim
NSOCKDIR!$NSOCKDIR$ac_delim
LIBNSOCK_LIBS!$LIBNSOCK_LIBS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@ -9159,6 +9185,12 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
NBASEDIR!$NBASEDIR$ac_delim
NBASE_BUILD!$NBASE_BUILD$ac_delim
LIBNBASE_LIBS!$LIBNBASE_LIBS$ac_delim
NSOCKDIR!$NSOCKDIR$ac_delim
NSOCK_BUILD!$NSOCK_BUILD$ac_delim
LIBNSOCK_LIBS!$LIBNSOCK_LIBS$ac_delim
PYTHON!$PYTHON$ac_delim
PYTHON_VERSION!$PYTHON_VERSION$ac_delim
PYTHON_PREFIX!$PYTHON_PREFIX$ac_delim
@ -9172,7 +9204,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 11; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 17; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View file

@ -321,6 +321,7 @@ fi
LIBPCAP_LIBS="-lpcap"
if test $have_libpcap = yes; then
PCAP_DEPENDS=""
PCAP_BUILD=""
PCAP_CLEAN=""
PCAP_DIST_CLEAN=""
AC_DEFINE(HAVE_LIBPCAP)
@ -333,11 +334,13 @@ else
CXXFLAGS="$CXXFLAGS -I$libpcapdir"
fi
PCAP_DEPENDS='$(LIBPCAPDIR)/libpcap.a'
PCAP_BUILD="pcap_build"
PCAP_CLEAN="pcap_clean"
PCAP_DIST_CLEAN="pcap_dist_clean"
fi
AC_SUBST(PCAP_DEPENDS)
AC_SUBST(PCAP_BUILD)
AC_SUBST(PCAP_CLEAN)
AC_SUBST(PCAP_DIST_CLEAN)
AC_SUBST(LIBPCAP_LIBS)
@ -384,11 +387,13 @@ if test $have_pcre != yes ; then
CXXFLAGS="-I$LIBPCREDIR $CXXFLAGS"
LIBPCRE_LIBS="$LIBPCREDIR/libpcre.a"
PCRE_DEPENDS="$LIBPCREDIR/libpcre.a"
PCRE_BUILD="pcre_build"
PCRE_CLEAN="pcre_clean"
PCRE_DIST_CLEAN="pcre_dist_clean"
else
LIBPCRE_LIBS="-lpcre"
PCRE_DEPENDS=""
PCRE_BUILD=""
PCRE_CLEAN=""
PCRE_DIST_CLEAN=""
fi
@ -396,6 +401,7 @@ fi
AC_SUBST(LIBPCRE_LIBS)
AC_SUBST(LIBPCREDIR)
AC_SUBST(PCRE_DEPENDS)
AC_SUBST(PCRE_BUILD)
AC_SUBST(PCRE_CLEAN)
AC_SUBST(PCRE_DIST_CLEAN)
@ -425,11 +431,13 @@ if test $have_dnet != yes ; then
CXXFLAGS="-I$LIBDNETDIR/include $CXXFLAGS"
LIBDNET_LIBS="$LIBDNETDIR/src/.libs/libdnet.a"
DNET_DEPENDS="$LIBDNETDIR/src/.libs/libdnet.a"
DNET_BUILD="dnet_build"
DNET_CLEAN="dnet_clean"
DNET_DIST_CLEAN="dnet_dist_clean"
else
LIBDNET_LIBS="-ldnet"
DNET_DEPENDS=""
DNET_BUILD=""
DNET_CLEAN=""
DNET_DIST_CLEAN=""
fi
@ -437,6 +445,7 @@ fi
AC_SUBST(LIBDNET_LIBS)
AC_SUBST(LIBDNETDIR)
AC_SUBST(DNET_DEPENDS)
AC_SUBST(DNET_BUILD)
AC_SUBST(DNET_CLEAN)
AC_SUBST(DNET_DIST_CLEAN)
@ -458,6 +467,7 @@ AC_HELP_STRING([--without-liblua], [Compile without lua (this will exclude all o
CXXFLAGS="-I$LIBLUADIR $CXXFLAGS"
LIBLUA_LIBS="$LIBLUADIR/liblua.a"
LUA_DEPENDS="$LIBLUADIR/liblua.a"
LUA_BUILD="lua_build"
LUA_CLEAN="lua_clean"
LUA_DIST_CLEAN="lua_dist_clean"
have_lua="yes"
@ -479,6 +489,7 @@ if test $no_lua == yes; then
CXXFLAGS="-DNOLUA $CXXFLAGS"
LIBLUA_LIBS=""
LUA_DEPENDS=""
LUA_BUILD=""
LUA_CLEAN=""
LUA_DIST_CLEAN=""
INSTALLNSE=""
@ -506,6 +517,7 @@ else
LIBLUA_LIBS="-llua"
LUA_DEPENDS=""
LUA_BUILD=""
LUA_CLEAN=""
LUA_DIST_CLEAN=""
fi
@ -516,6 +528,7 @@ else
CXXFLAGS="-I$LIBLUADIR $CXXFLAGS"
LIBLUA_LIBS="$LIBLUADIR/liblua.a"
LUA_DEPENDS="$LIBLUADIR/liblua.a"
LUA_BUILD="lua_build"
LUA_CLEAN="lua_clean"
LUA_DIST_CLEAN="lua_dist_clean"
else
@ -534,6 +547,7 @@ fi
AC_SUBST(LIBLUA_LIBS)
AC_SUBST(LIBLUADIR)
AC_SUBST(LUA_DEPENDS)
AC_SUBST(LUA_BUILD)
AC_SUBST(LUA_CLEAN)
AC_SUBST(LUA_DIST_CLEAN)
AC_SUBST(INSTALLNSE)
@ -635,8 +649,10 @@ AC_HELP_STRING([--with-libnbase=DIR], [Look for nbase include/libs in DIR]),
;;
*)
NBASEDIR="$with_libnbase"
NBASE_BUILD=""
;;
esac],
NBASE_BUILD="nbase_build"
NBASEDIR="nbase"
)
@ -645,11 +661,13 @@ CXXFLAGS="$CXXFLAGS -I$NBASEDIR"
LIBNBASE_LIBS="-lnbase"
AC_SUBST(NBASEDIR)
AC_SUBST(NBASE_BUILD)
AC_SUBST(LIBNBASE_LIBS)
AC_CONFIG_SUBDIRS(nbase)
NSOCKDIR="nsock"
NSOCK_BUILD="nsock_build"
AC_ARG_WITH(libnsock,
AC_HELP_STRING([--with-libnsock=DIR], [Compile and link to libnsock in DIR]),
[ case "$with_nsock" in
@ -657,6 +675,7 @@ AC_HELP_STRING([--with-libnsock=DIR], [Compile and link to libnsock in DIR]),
;;
*)
NSOCKDIR="$with_nsock"
NSOCK_BUILD=""
;;
esac]
)
@ -666,6 +685,7 @@ CXXFLAGS="$CXXFLAGS -I$NSOCKDIR/include"
LIBNSOCK_LIBS="-lnsock"
AC_SUBST(NSOCKDIR)
AC_SUBST(NSOCK_BUILD)
AC_SUBST(LIBNSOCK_LIBS)
AC_CONFIG_SUBDIRS(nsock/src)