# This makefile builds a disk image (.dmg) containing the installer for Nmap, # Zenmap, Ncat, and Ndiff. NMAP_VERSION := $(shell grep '^\#[ \t]*define[ \t]\+NMAP_VERSION' ../nmap.h | sed -e 's/.*"\(.*\)".*/\1/' -e 'q') NMAP_NUM_VERSION := $(shell grep '^\#[ \t]*define[ \t]\+NMAP_NUM_VERSION' ../nmap.h | sed -e 's/.*"\(.*\)".*/\1/' -e 'q') OSX_VERSION=$(shell sw_vers -productVersion | cut -d'.' -f1,2 | tr -d ' ') OSX_MIN_VERSION = 10.8 NAME_VERSION = nmap-$(NMAP_VERSION)$(if $(APPENDAGE),-$(APPENDAGE)) IMAGE_NAME = $(NAME_VERSION).dmg PKG_NAME = $(NAME_VERSION).mpkg IMAGE_STAGING_DIR = $(NAME_VERSION) NMAP_BUILD_DIR = nmap-build NMAP_STAGING_DIR = Nmap ZENMAP_BUILD_DIR = zenmap-build ZENMAP_STAGING_DIR = Zenmap NCAT_BUILD_DIR = ncat-build NCAT_STAGING_DIR = Ncat NDIFF_BUILD_DIR = ndiff-build NDIFF_STAGING_DIR = Ndiff NPING_BUILD_DIR = nping-build NPING_STAGING_DIR = Nping NMAP_UPDATE_BUILD_DIR = nmap-update-build NMAP_UPDATE_STAGING_DIR = nmap-update JHBUILD_PREFIX=$(HOME)/gtk/inst export JHBUILD_PREFIX PREFIX = /usr/local # Extra distribution file names README_FILE = README.md COPYING_FILE = COPYING 3RD_P_LIC_FILE = 3rd-party-licenses.txt LICENSES_FILE = licenses EXTRA_DIST = README.md ../COPYING ../docs/3rd-party-licenses.txt ../docs/licenses CONFIGURE_ARGS = --prefix="$(PREFIX)" --with-libdnet=included --with-libpcap=included --with-libpcre=included --with-liblua=included CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" PYTHON="$(PYTHON)" # Flags for building universal binaries. See # http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/compiling/chapter_4_section_3.html. UNIVERSAL_CONFIGURE_ARGS = --disable-dependency-tracking UNIVERSAL_CC = gcc UNIVERSAL_CXX = g++ # Setting ARCHFLAGS separately is required. distutils.util.get_platform # sniffs it to determine whether to return a universal architecture # ("fat" or "universal") or a single one ("i386" or "ppc"). py2app in # turn uses the arch value to decide which of its bootstrappers to # install. UNIVERSAL_ARCHFLAGS = -arch i386 UNIVERSAL_CPPFLAGS = -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$(OSX_VERSION).sdk UNIVERSAL_CFLAGS = $(UNIVERSAL_CPPFLAGS) -mmacosx-version-min=$(OSX_MIN_VERSION) $(UNIVERSAL_ARCHFLAGS) UNIVERSAL_CXXFLAGS = $(UNIVERSAL_CFLAGS) # https://stackoverflow.com/questions/19637164/c-linking-error-after-upgrading-to-mac-os-x-10-9-xcode-5-0-1/19637199#19637199 UNIVERSAL_LDFLAGS = -stdlib=libstdc++ -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$(OSX_VERSION).sdk -mmacosx-version-min=$(OSX_MIN_VERSION) $(UNIVERSAL_ARCHFLAGS) CC = $(UNIVERSAL_CC) CXX = $(UNIVERSAL_CXX) ARCHFLAGS += $(UNIVERSAL_ARCHFLAGS) CONFIGURE_ARGS += $(UNIVERSAL_CONFIGURE_ARGS) CPPFLAGS += $(UNIVERSAL_CPPFLAGS) CFLAGS += $(UNIVERSAL_CFLAGS) CXXFLAGS += $(UNIVERSAL_CXXFLAGS) LDFLAGS += $(UNIVERSAL_LDFLAGS) # Mac OS options for libraries used by nmap-update MAC_FLAGS = -lsasl2 -liconv -framework CoreFoundation -framework Security # Jhbuild static libraries PYTHON = $(JHBUILD_PREFIX)/bin/python2.7 OPENSSL_STATIC = $(JHBUILD_PREFIX)/lib/libssl.a $(JHBUILD_PREFIX)/lib/libcrypto.a SVN_STATIC = $(JHBUILD_PREFIX)/lib/libsvn_client-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_wc-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_diff-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_delta-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_subr-1.a \ $(JHBUILD_PREFIX)/lib/libexpat.a \ $(JHBUILD_PREFIX)/lib/libsvn_ra-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_ra_svn-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_ra_local-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_fs-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_repos-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_fs_util-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_fs_fs-1.a \ $(JHBUILD_PREFIX)/lib/libsvn_fs_x-1.a \ $(JHBUILD_PREFIX)/lib/libintl.a \ $(JHBUILD_PREFIX)/lib/libsvn_ra_serf-1.a \ $(JHBUILD_PREFIX)/lib/libserf-1.a \ $(JHBUILD_PREFIX)/lib/libz.a \ $(JHBUILD_PREFIX)/lib/libsqlite3.a APR_STATIC = $(JHBUILD_PREFIX)/lib/libapr-1.a \ $(JHBUILD_PREFIX)/lib/libaprutil-1.a \ $(JHBUILD_PREFIX)/lib/libapriconv-1.a # These are the positions used by the createdmg.sh and check_test.sh scripts export ICON_SIZE=88 export FONT_SIZE=13 export MPKG_POS_X=110 export MPKG_POS_Y=170 export APPS_POS_X=110 export APPS_POS_Y=310 export README_POS_X=802 export README_POS_Y=180 export COPYING_POS_X=802 export COPYING_POS_Y=310 export THIRD_P_POS_X=802 export THIRD_P_POS_Y=440 export LICENSES_POS_X=670 export LICENSES_POS_Y=60 $(IMAGE_NAME): tool-checks $(IMAGE_STAGING_DIR)/$(PKG_NAME) rm -f $@ # Create the dmg disk image and convert it to read only disk ./createdmg.sh $(IMAGE_STAGING_DIR) $(README_FILE) $(COPYING_FILE) $(3RD_P_LIC_FILE) $(LICENSES_FILE) # Check the created disk image for the sizes, backgrounds and icons presence and positions ./check_test.sh $(README_FILE) $(COPYING_FILE) $(3RD_P_LIC_FILE) $(LICENSES_FILE) tool-checks: have-$(CC) have-jhbuild have-gtk-mac-bundler have-%: which $* $(IMAGE_STAGING_DIR)/$(PKG_NAME): check-nmap check-ncat check-ndiff check-zenmap check-nping check-nmap-update COPYING.formatted mkdir -p $(IMAGE_STAGING_DIR) cp -rf $(EXTRA_DIST) $(IMAGE_STAGING_DIR)/ # Create packages (.pkg) for all the components to install in the installer (.mpkg) pkgbuild --root $(NMAP_STAGING_DIR) --identifier org.insecure.nmap --version $(NMAP_VERSION) --install-location / nmap.pkg pkgbuild --root $(NCAT_STAGING_DIR) --identifier org.insecure.nmap.ncat --version $(NMAP_VERSION) --install-location / ncat.pkg pkgbuild --root $(NDIFF_STAGING_DIR) --identifier org.insecure.nmap.ndiff --version $(NMAP_VERSION) --install-location / ndiff.pkg pkgbuild --root $(NPING_STAGING_DIR) --identifier org.insecure.nmap.nping --version $(NMAP_VERSION) --install-location / nping.pkg pkgbuild --root $(NMAP_UPDATE_STAGING_DIR) --identifier org.insecure.nmap.nmap-update --version $(NMAP_VERSION) --install-location / nmap-update.pkg pkgbuild --root $(ZENMAP_STAGING_DIR) --identifier org.insecure.nmap.zenmap --version $(NMAP_VERSION) --install-location /Applications zenmap.pkg # Produce a .xml with packages information productbuild --synthesize \ --package 'nmap.pkg' \ --package 'ncat.pkg' \ --package 'ndiff.pkg' \ --package 'nping.pkg' \ --package 'nmap-update.pkg' \ --package 'zenmap.pkg' \ distribution.xml # Make a new file and add background and title attributes head -n 2 distribution.xml > finalDist.xml echo "