-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
Makefile
139 lines (118 loc) · 6.86 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
MAKENSIS=/cygdrive/c/Program Files (x86)/NSIS-strlen/makensis.exe
MAKENSIS_WIN=$(shell echo '$(MAKENSIS)' | sed 's|/cygdrive/\(.\)|\1:|;s|/|\\|g')
SIGNTOOL := $(shell reg query "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0" /v "InstallationFolder" | egrep InstallationFolder | cut -d ' ' -f13- | sed 's%\\%/%g' | tr -d '\r\n' | sed 's%$$%bin/x86/signtool.exe%')
NMAPDIR=..
NMAPDIR_WIN=$(shell echo '$(NMAPDIR)' | sed 's|/cygdrive/\(.\)|\1:|;s|/|\\|g')
include make-vars.make
export NPCAP_VERSION := $(shell ls npcap-*.exe | sed -e 's/npcap-\([0-9.]*\)[-oem]*\.exe/\1/' -e 'q')
NSE_FILES = $(NMAPDIR)/scripts/script.db $(NMAPDIR)/scripts/*.nse
NMAP_MSWIN32_AUX = $(NMAPDIR)/../nmap-mswin32-aux
SIGNTOOL_ARGS = sign /a /n "Insecure.Com LLC" /tr http:https://timestamp.digicert.com /td sha256 /fd sha256
# escape quotes for NSIS
# escape for right side of sed regex replace
SIGNTOOL_SUBST = $(shell echo '"$(SIGNTOOL)" $(SIGNTOOL_ARGS)' | sed -e 's/"/$$\\"/g' -e 's/[\/&]/\\&/g' )
PRODUCT_NAME=Nmap
PLATFORM=Win32
VCCONFIG=Release
NSIS_DEFINES=
all: build-nmap
make-vars.make: make-vars.h
cmd /c Build.bat Vars
bundle-nmap: bundle-zip bundle-nsis
build-nmap${OEM_SUFFIX}: nmap.sln
cmd /c Build.bat Build "$(VCCONFIG)${OEM_SUFFIX}"
stage-common: $(NMAPDIR)/CHANGELOG $(NMAPDIR)/LICENSE $(NMAPDIR)/nmap-mac-prefixes $(NMAPDIR)/nmap-os-db $(NMAPDIR)/nmap-payloads $(NMAPDIR)/nmap-protocols $(NMAPDIR)/nmap-rpc $(NMAPDIR)/nmap-service-probes $(NMAPDIR)/nmap-services $(NMAPDIR)/docs/nmap.xsl $(NMAPDIR)/nse_main.lua $(NMAPDIR)/mswin32/nmap_performance.reg $(NMAPDIR)/README-WIN32 $(NMAPDIR)/docs/3rd-party-licenses.txt icon1.ico LICENSE.formatted VC_redist.x86.exe
mkdir -p nmap-$(NMAP_VERSION)
cp $^ nmap-$(NMAP_VERSION)/
# Use "cmd /c copy" rather than "cp" to preserve Windows ACLs. Using
# "cp" means that the copied DLLs don't have the same ACL and cause an
# error on startup: 0xc0000022.
cmd /c copy $(subst /,\\,$(NMAP_MSWIN32_AUX))\\OpenSSL\\bin\\*.dll nmap-$(NMAP_VERSION)
cmd /c copy $(NMAPDIR_WIN)\\libssh2\\win32\\$(VCCONFIG)_dll\\libssh2.dll nmap-$(NMAP_VERSION)
cmd /c copy $(NMAPDIR_WIN)\\libz\\contrib\\vstudio\\vc12\\x86\\ZlibDll$(VCCONFIG)WithoutAsm\\zlibwapi.dll nmap-$(NMAP_VERSION)
mkdir -p nmap-$(NMAP_VERSION)/scripts
cp -f $(NSE_FILES) nmap-$(NMAP_VERSION)/scripts/
for f in `cd $(NMAPDIR) && find nselib -name .svn -prune -o -type d -print`; do \
mkdir -p nmap-$(NMAP_VERSION)/$$f; \
done
for f in `cd $(NMAPDIR) && find nselib -name .svn -prune -o -type f -print`; do \
cp -f $(NMAPDIR)/$$f nmap-$(NMAP_VERSION)/$$f; \
done
cp -r $(NMAPDIR)/docs/licenses nmap-$(NMAP_VERSION)/
rm -rf nmap-$(NMAP_VERSION)/licenses/.svn
cp VC_redist.x86.exe nmap-$(NMAP_VERSION)
#cp $(NMAP_MSWIN32_AUX)/vcredist2008_x86.exe nmap-$(NMAP_VERSION)
cp $(NMAPDIR)/ncat/$(VCCONFIG)/ncat.exe nmap-$(NMAP_VERSION)
cp $(NMAPDIR)/ncat/$(VCCONFIG)/ca-bundle.crt nmap-$(NMAP_VERSION)
cp $(NMAPDIR)/nping/$(VCCONFIG)/nping.exe nmap-$(NMAP_VERSION)
# Install the ndiff batch file wrapper in the zip distribution.
cp $(NMAPDIR)/ndiff/ndiff.py nmap-$(NMAP_VERSION)/ndiff.py
cp python-wrap.bat nmap-$(NMAP_VERSION)/ndiff.bat
cd $(NMAPDIR)/zenmap && install_scripts/windows/copy_and_compile.bat
cp -R $(NMAPDIR)/zenmap/dist/* nmap-$(NMAP_VERSION)/
cp $(NMAPDIR)/zenmap/README nmap-$(NMAP_VERSION)/ZENMAP_README
cp $(NMAPDIR)/zenmap/COPYING_HIGWIDGETS nmap-$(NMAP_VERSION)
cp $(NMAPDIR)/ndiff/README nmap-$(NMAP_VERSION)/NDIFF_README
cp nsis/AddToPath.nsh nsis/shortcuts.ini nsis/final.ini nmap-$(NMAP_VERSION)
stage: stage-nmap stage-nmap-oem stage-common
stage-nmap:
$(MAKE) OEM_SUFFIX= stage-nmap-main
stage-nmap-oem:
$(MAKE) OEM_SUFFIX=-oem stage-nmap-main
stage-nmap-main: nmap-$(NMAP_VERSION)/Nmap.nsi build-nmap${OEM_SUFFIX}
mkdir -p nmap-$(NMAP_VERSION)${OEM_SUFFIX}
cp $(VCCONFIG)${OEM_SUFFIX}/nmap.exe nmap-$(NMAP_VERSION)${OEM_SUFFIX}/
sign-files: nmap-$(NMAP_VERSION)-oem/nmap.exe nmap-$(NMAP_VERSION)/nmap.exe nmap-$(NMAP_VERSION)/ncat.exe nmap-$(NMAP_VERSION)/nping.exe nmap-$(NMAP_VERSION)/ndiff.exe nmap-$(NMAP_VERSION)/zenmap.exe nmap-$(NMAP_VERSION)/libssh2.dll nmap-$(NMAP_VERSION)/libcrypto-1_1.dll nmap-$(NMAP_VERSION)/libssl-1_1.dll nmap-$(NMAP_VERSION)/zlibwapi.dll
# TODO: evaluate whether we should also sign the Python stuff for Zenmap, Ndiff
"$(SIGNTOOL)" $(SIGNTOOL_ARGS) $^
touch sign-files
bundle-nsis: sign-files
"$(MAKENSIS)" "/XOutFile nmap-$(NMAP_VERSION)-setup.exe" "/DNSISEXE=$(MAKENSIS_WIN)" nmap-$(NMAP_VERSION)/Nmap.nsi
mv nmap-$(NMAP_VERSION)/nmap-$(NMAP_VERSION)-setup.exe .
"$(MAKENSIS)" "/XOutFile nmap-$(NMAP_VERSION)-oem-setup.exe" "/DNSISEXE=$(MAKENSIS_WIN)" "/DNMAP_OEM=1" nmap-$(NMAP_VERSION)/Nmap.nsi
mv nmap-$(NMAP_VERSION)/nmap-$(NMAP_VERSION)-oem-setup.exe .
"$(SIGNTOOL)" $(SIGNTOOL_ARGS) nmap-$(NMAP_VERSION)-setup.exe nmap-$(NMAP_VERSION)-oem-setup.exe
bundle-zip: bundle-zip-public bundle-zip-oem
bundle-zip-public:
$(MAKE) OEM_SUFFIX= bundle-zip-main
bundle-zip-oem:
$(MAKE) OEM_SUFFIX=-oem bundle-zip-main
bundle-zip-main: sign-files
rm -f nmap-$(NMAP_VERSION)${OEM_SUFFIX}-win32.zip
test -n "${OEM_SUFFIX}" \
&& cp -n -R nmap-$(NMAP_VERSION)/* nmap-$(NMAP_VERSION)${OEM_SUFFIX}/ \
|| true
cp npcap-$(NPCAP_VERSION)${OEM_SUFFIX}.exe nmap-$(NMAP_VERSION)${OEM_SUFFIX}
zip -x nmap-$(NMAP_VERSION)${OEM_SUFFIX}/ZENMAP_README \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/zenmap/\* \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/zenmap.exe \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/share/\* \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/python27.dll \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/py2exe/\* \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/COPYING_HIGWIDGETS \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/w9xpopen.exe \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/vcredist2008_x86.exe \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/ndiff.exe \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/\*.ini \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/Uninstall.exe \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/\*.nsi \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/\*.nsh \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/LICENSE.formatted \
nmap-$(NMAP_VERSION)${OEM_SUFFIX}/icon1.ico \
-r nmap-$(NMAP_VERSION)${OEM_SUFFIX}-win32.zip nmap-$(NMAP_VERSION)${OEM_SUFFIX}
rm nmap-$(NMAP_VERSION)${OEM_SUFFIX}/npcap-$(NPCAP_VERSION)${OEM_SUFFIX}.exe
nmap-$(NMAP_VERSION)/Nmap.nsi: nsis/Nmap.nsi.in $(NMAPDIR)/nmap.h
test -n "$(NPCAP_VERSION)" # Make sure NPcap is present
mkdir -p nmap-$(NMAP_VERSION)
sed -e '1i; Automatically generated from $<.' \
-e 's/@@VIPRODUCTVERSION@@/"$(NMAP_NUM_VERSION)"/' \
-e 's/@@VERSION@@/"$(NMAP_VERSION)"/' \
-e 's/@@NPCAP_VERSION@@/$(NPCAP_VERSION)/' \
-e 's/@@SIGNTOOL@@/$(SIGNTOOL_SUBST)/' \
-e 's/@@PRODUCT_NAME@@/$(PRODUCT_NAME)/' \
"$<" > "$@"
LICENSE.formatted: $(NMAPDIR)/LICENSE
./license-format/licformat.sh "$<" > "$@"
clean:
./Build.bat Clean "$(VCCONFIG)${OEM_SUFFIX}"
rm -rf nmap-$(NMAP_VERSION) nmap-$(NMAP_VERSION)-oem Debug Release Release-oem msbuild.log LICENSE.formatted