mirror of
https://github.com/nmap/nmap.git
synced 2025-12-29 10:59:02 +00:00
"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.
265 lines
9.8 KiB
Makefile
265 lines
9.8 KiB
Makefile
# Extract the version string from nmap.h.
|
|
export NMAP_VERSION := $(shell grep '^\#[ \t]*define[ \t]\+NMAP_VERSION' nmap.h | sed -e 's/.*"\(.*\)".*/\1/' -e 'q')
|
|
NMAP_NAME= Nmap
|
|
NMAP_URL= http://insecure.org
|
|
NMAP_PLATFORM=@host@
|
|
prefix = @prefix@
|
|
exec_prefix = @exec_prefix@
|
|
bindir = @bindir@
|
|
sbindir = @sbindir@
|
|
mandir = @mandir@
|
|
srcdir = @srcdir@
|
|
nmaplibexecdir = @libexecdir@/nmap
|
|
nmapdatadir = @datadir@/nmap
|
|
deskdir = $(prefix)/share/applications
|
|
NMAPDEVDIR=~/nmap-dev
|
|
|
|
export NBASEDIR=@NBASEDIR@
|
|
export NSOCKDIR=@NSOCKDIR@
|
|
export LIBLUADIR = @LIBLUADIR@
|
|
export NDIR=$(shell pwd)
|
|
export LIBLUA_LIBS = @LIBLUA_LIBS@
|
|
CC = @CC@
|
|
CXX = @CXX@
|
|
CCOPT =
|
|
DBGFLAGS =
|
|
STRIP = @STRIP@
|
|
LIBPCAPDIR = @libpcapdir@
|
|
LIBPCREDIR = @LIBPCREDIR@
|
|
export LIBDNETDIR = @LIBDNETDIR@
|
|
ZENMAPDIR = zenmap
|
|
PYTHON = @PYTHON@
|
|
DEFS = @DEFS@ -DNMAP_NAME=\"$(NMAP_NAME)\" -DNMAP_URL=\"$(NMAP_URL)\" -DNMAP_PLATFORM=\"$(NMAP_PLATFORM)\" -DNMAPDATADIR=\"$(nmapdatadir)\" -DNMAPLIBEXECDIR=\"$(nmaplibexecdir)\"
|
|
# For mtrace debugging -- see MTRACE define in main.cc for instructions
|
|
# Should only be enabled during debugging and not in any real release.
|
|
# DEFS += -DMTRACE=1
|
|
CXXFLAGS = @CXXFLAGS@ $(DBGFLAGS) $(CCOPT) $(DEFS)
|
|
CPPFLAGS = @CPPFLAGS@
|
|
export CFLAGS = $(CXXFLAGS)
|
|
# CFLAGS = $(DEFS) $(INCLS)
|
|
STATIC =
|
|
LDFLAGS = @LDFLAGS@ $(DBGFLAGS) $(STATIC)
|
|
LIBS = @LIBNBASE_LIBS@ @LIBNSOCK_LIBS@ @LIBPCRE_LIBS@ @LIBPCAP_LIBS@ @OPENSSL_LIBS@ @LIBDNET_LIBS@ @LIBLUA_LIBS@ @LIBS@
|
|
# LIBS = -lefence @LIBS@
|
|
# LIBS = -lrmalloc @LIBS@
|
|
SHTOOL = ./shtool
|
|
INSTALL = $(SHTOOL) install
|
|
# MAKEDEPEND = @MAKEDEPEND@
|
|
export RPMTDIR=$(HOME)/rpm
|
|
|
|
|
|
# DESTDIR is used by some package maintainers to install Nmap under
|
|
# its usual directory structure into a different tree. See the
|
|
# CHANGELOG for more info.
|
|
DESTDIR =
|
|
|
|
TARGET = nmap
|
|
INSTALLNSE=@INSTALLNSE@
|
|
BUILDZENMAP=@BUILDZENMAP@
|
|
INSTALLZENMAP=@INSTALLZENMAP@
|
|
|
|
ifneq (@LIBLUA_LIBS@,)
|
|
NSE_SRC=nse_main.cc nse_auxiliar.cc nse_nsock.cc nse_init.cc nse_nmaplib.cc nse_debug.cc nse_pcrelib.cc nse_string.cc
|
|
NSE_HDRS=nse_main.h nse_auxiliar.h nse_nsock.h nse_init.h nse_nmaplib.h nse_debug.h nse_macros.h nse_pcrelib.h nse_string.h
|
|
NSE_OBJS=nse_main.o nse_auxiliar.o nse_nsock.o nse_init.o nse_nmaplib.o nse_debug.o nse_pcrelib.o nse_string.o
|
|
NSESTDLIB=nsestdlib
|
|
endif
|
|
|
|
export SRCS = main.cc nmap.cc targets.cc tcpip.cc nmap_error.cc utils.cc idle_scan.cc osscan.cc osscan2.cc output.cc scan_engine.cc timing.cc charpool.cc services.cc protocols.cc nmap_rpc.cc portlist.cc NmapOps.cc TargetGroup.cc Target.cc FingerPrintResults.cc service_scan.cc NmapOutputTable.cc MACLookup.cc nmap_tty.cc nmap_dns.cc traceroute.cc portreasons.cc $(NSE_SRC) @COMPAT_SRCS@
|
|
|
|
export HDRS = charpool.h FingerPrintResults.h global_structures.h idle_scan.h MACLookup.h nmap_amigaos.h nmap_dns.h nmap_error.h nmap.h NmapOps.h NmapOutputTable.h nmap_rpc.h nmap_tty.h nmap_winconfig.h osscan.h osscan2.h output.h portlist.h protocols.h scan_engine.h service_scan.h services.h TargetGroup.h Target.h targets.h tcpip.h timing.h utils.h traceroute.h portreasons.h $(NSE_HDRS)
|
|
|
|
OBJS = main.o nmap.o targets.o tcpip.o nmap_error.o utils.o idle_scan.o osscan.o osscan2.o output.o scan_engine.o timing.o charpool.o services.o protocols.o nmap_rpc.o portlist.o NmapOps.o TargetGroup.o Target.o FingerPrintResults.o service_scan.o NmapOutputTable.o MACLookup.o nmap_tty.o nmap_dns.o traceroute.o portreasons.o $(NSE_OBJS) @COMPAT_OBJS@
|
|
|
|
# %.o : %.cc -- nope this is a GNU extension
|
|
.cc.o:
|
|
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
|
|
|
all: @LUA_BUILD@ @PCAP_BUILD@ @PCRE_BUILD@ @DNET_BUILD@ @NBASE_BUILD@ @NSOCK_BUILD@
|
|
$(MAKE) $(TARGET) $(NSESTDLIB) $(BUILDZENMAP)
|
|
|
|
$(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)
|
|
|
|
nsestdlib: nselib/Makefile
|
|
@echo Compiling nse-standard-library; cd nselib && $(MAKE)
|
|
|
|
|
|
pcre_build: $(LIBPCREDIR)/Makefile
|
|
@echo Compiling libpcre; cd $(LIBPCREDIR) && $(MAKE)
|
|
|
|
dnet_build: $(LIBDNETDIR)/Makefile
|
|
@echo Compiling libdnet; cd $(LIBDNETDIR) && $(MAKE)
|
|
|
|
pcap_build: $(LIBPCAPDIR)/Makefile
|
|
@echo Compiling libpcap; cd $(LIBPCAPDIR) && $(MAKE)
|
|
|
|
nbase_build: $(NBASEDIR)/Makefile
|
|
@echo Compiling libnbase;
|
|
cd $(NBASEDIR) && $(MAKE)
|
|
|
|
nsock_build: $(NSOCKDIR)/src/Makefile
|
|
@echo Compiling libnsock;
|
|
cd $(NSOCKDIR)/src && $(MAKE)
|
|
|
|
lua_build: $(LIBLUADIR)/Makefile
|
|
@echo Compiling liblua; cd $(LIBLUADIR) && $(MAKE) liblua.a @LUAFLAGS@
|
|
|
|
#$(LIBPCAPDIR)/Makefile:
|
|
# @echo Configuring libpcap; cd $(LIBPCAPDIR); ./configure
|
|
|
|
|
|
# Make a statically compiled binary for portability between distributions
|
|
static:
|
|
$(MAKE) STATIC=-static
|
|
|
|
debug:
|
|
$(MAKE) DBGFLAGS="-O0 -g -pg -ftest-coverage -fprofile-arcs"
|
|
|
|
# Make the Nmap tarball
|
|
distro:
|
|
cd $(NMAPDEVDIR) && $(MAKE) distro
|
|
|
|
# Update the web site
|
|
web:
|
|
cd $(NMAPDEVDIR) && $(MAKE) web
|
|
|
|
clean: @LUA_CLEAN@ @PCAP_CLEAN@ @PCRE_CLEAN@ @DNET_CLEAN@ nsock_clean nbase_clean my_clean @NSELIB_CLEAN@ @ZENMAP_CLEAN@
|
|
|
|
my_clean:
|
|
rm -f dependencies.mk
|
|
rm -f $(OBJS) $(TARGET) config.cache
|
|
pcap_clean:
|
|
-cd $(LIBPCAPDIR) && $(MAKE) clean
|
|
pcre_clean:
|
|
-cd $(LIBPCREDIR) && $(MAKE) clean
|
|
dnet_clean:
|
|
-cd $(LIBDNETDIR) && $(MAKE) clean
|
|
nbase_clean:
|
|
-cd $(NBASEDIR) && $(MAKE) clean
|
|
nsock_clean:
|
|
-cd $(NSOCKDIR)/src && $(MAKE) clean
|
|
lua_clean:
|
|
-cd $(LIBLUADIR) && $(MAKE) clean
|
|
nselib_clean:
|
|
-cd nselib && $(MAKE) clean
|
|
zenmap_clean:
|
|
-cd $(ZENMAPDIR) && $(PYTHON) setup.py clean --all
|
|
pcap_dist_clean:
|
|
-cd $(LIBPCAPDIR) && $(MAKE) distclean
|
|
pcre_dist_clean:
|
|
-cd $(LIBPCREDIR) && $(MAKE) distclean
|
|
dnet_dist_clean:
|
|
-cd $(LIBDNETDIR) && $(MAKE) distclean
|
|
lua_dist_clean:
|
|
-cd $(LIBLUADIR) && $(MAKE) clean
|
|
nselib_dist_clean:
|
|
-cd nselib && $(MAKE) distclean
|
|
nbase_dist_clean:
|
|
-cd $(NBASEDIR) && $(MAKE) distclean
|
|
nsock_dist_clean:
|
|
-cd $(NSOCKDIR)/src && $(MAKE) distclean
|
|
zenmap_dist_clean: zenmap_clean
|
|
-cd $(ZENMAPDIR) && rm -rf MANIFEST build/ dist/
|
|
debugclean:
|
|
rm -f *.gcov *.gcda *.gcno gmon.out
|
|
|
|
distclean: my_clean my_distclean @LUA_DIST_CLEAN@ @PCAP_DIST_CLEAN@ @PCRE_DIST_CLEAN@ @DNET_DIST_CLEAN@ nbase_dist_clean nsock_dist_clean @NSELIB_DIST_CLEAN@ @ZENMAP_DIST_CLEAN@
|
|
|
|
my_distclean:
|
|
rm -f Makefile Makefile.bak makefile.dep config.h stamp-h stamp-h.in \
|
|
config.cache config.log config.status
|
|
|
|
install-nmap: $(TARGET)
|
|
$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(nmapdatadir)
|
|
$(INSTALL) -c -m 755 nmap $(DESTDIR)$(bindir)/nmap
|
|
# Use strip -x to avoid stripping dynamically loaded NSE functions. See
|
|
# http://seclists.org/nmap-dev/2007/q4/0272.html.
|
|
$(STRIP) -x $(DESTDIR)$(bindir)/nmap
|
|
$(INSTALL) -c -m 644 docs/$(TARGET).1 $(DESTDIR)$(mandir)/man1/$(TARGET).1
|
|
$(INSTALL) -c -m 644 docs/nmap.xsl $(DESTDIR)$(nmapdatadir)/
|
|
$(INSTALL) -c -m 644 docs/nmap.dtd $(DESTDIR)$(nmapdatadir)/
|
|
$(INSTALL) -c -m 644 nmap-services $(DESTDIR)$(nmapdatadir)/
|
|
$(INSTALL) -c -m 644 nmap-rpc $(DESTDIR)$(nmapdatadir)/
|
|
$(INSTALL) -c -m 644 nmap-os-db $(DESTDIR)$(nmapdatadir)/
|
|
$(INSTALL) -c -m 644 nmap-service-probes $(DESTDIR)$(nmapdatadir)/
|
|
$(INSTALL) -c -m 644 nmap-protocols $(DESTDIR)$(nmapdatadir)/
|
|
$(INSTALL) -c -m 644 nmap-mac-prefixes $(DESTDIR)$(nmapdatadir)/
|
|
|
|
$(ZENMAPDIR)/setup.py:
|
|
cd $(ZENMAPDIR) && install_scripts/unix/setup.sh
|
|
|
|
# Update the version number used by Zenmap.
|
|
$(ZENMAPDIR)/umitCore/Version.py $(ZENMAPDIR)/share/zenmap/config/zenmap_version: nmap.h
|
|
cd $(ZENMAPDIR) && $(PYTHON) install_scripts/utils/version_update.py "$(NMAP_VERSION)"
|
|
|
|
# By default distutils rewrites installed scripts to hardcode the
|
|
# location of the Python interpreter they were built with (something
|
|
# like #!/usr/bin/python2.4). This is the wrong thing to do when
|
|
# installing on a machine other than the one used to do the build. Use
|
|
# this as the location of the interpreter whenever we're not doing a
|
|
# local installation.
|
|
DEFAULT_PYTHON_PATH = /usr/bin/env python
|
|
|
|
build-zenmap: $(ZENMAPDIR)/setup.py $(ZENMAPDIR)/umitCore/Version.py
|
|
# When DESTDIR is defined, assume we're building an executable
|
|
# distribution rather than a local installation and force a generic
|
|
# Python interpreter location.
|
|
cd $(ZENMAPDIR) && $(PYTHON) setup.py build $(if $(DESTDIR),--executable "$(DEFAULT_PYTHON_PATH)")
|
|
|
|
install-zenmap: $(ZENMAPDIR)/setup.py
|
|
cd $(ZENMAPDIR) && $(PYTHON) setup.py install --prefix "$(prefix)" $(if $(DESTDIR),--root "$(DESTDIR)")
|
|
# Create a symlink from nmapfe to zenmap if nmapfe doesn't exist or is
|
|
# already a link.
|
|
if [ ! -e $(DESTDIR)$(bindir)/nmapfe -o -L $(DESTDIR)$(bindir)/nmapfe ]; then \
|
|
ln -sf zenmap $(DESTDIR)$(bindir)/nmapfe; \
|
|
fi
|
|
# Create a symlink from xnmap to zenmap unconditionally.
|
|
ln -sf zenmap $(DESTDIR)$(bindir)/xnmap
|
|
|
|
NSE_FILES = scripts/script.db scripts/*.nse
|
|
NSE_LIB_LUA_FILES = nselib/*.lua
|
|
NSE_LIB_SO_FILES = nselib/*.so
|
|
|
|
install-nse: $(TARGET)
|
|
$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(nmapdatadir)/scripts
|
|
cp -f $(NSE_FILES) $(DESTDIR)$(nmapdatadir)/scripts
|
|
$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(nmapdatadir)/nselib
|
|
cp -f $(NSE_LIB_LUA_FILES) $(DESTDIR)$(nmapdatadir)/nselib
|
|
$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(nmaplibexecdir)/nse
|
|
cp -f $(NSE_LIB_SO_FILES) $(DESTDIR)$(nmaplibexecdir)/nse
|
|
|
|
install: install-nmap $(INSTALLNSE) $(INSTALLZENMAP)
|
|
@echo "NMAP SUCCESSFULLY INSTALLED"
|
|
|
|
uninstall:
|
|
rm -f $(bindir)/$(TARGET) $(bindir)/xnmap
|
|
rm -f $(mandir)/man1/nmap.1
|
|
rm -rf $(nmapdatadir) $(nmaplibexecdir)
|
|
|
|
${srcdir}/configure: configure.ac
|
|
cd ${srcdir} && autoconf
|
|
|
|
## autoheader might not change config.h.in, so touch a stamp file.
|
|
#${srcdir}/config.h.in: stamp-h.in
|
|
#${srcdir}/stamp-h.in: configure.ac acconfig.h \
|
|
# config.h.top config.h.bot
|
|
# cd ${srcdir} && autoheader
|
|
# echo timestamp > ${srcdir}/stamp-h.in
|
|
#
|
|
#config.h: stamp-h
|
|
#stamp-h: config.h.in config.status
|
|
# ./config.status
|
|
|
|
Makefile: Makefile.in config.status
|
|
./config.status
|
|
|
|
config.status: configure
|
|
./config.status --recheck
|
|
|
|
makefile.dep:
|
|
$(CXX) -MM $(CXXFLAGS) $(CPPFLAGS) $(SRCS) > $@
|
|
include makefile.dep
|