1- # Go parameters
2- GOCMD =go
3- GOBUILD =$(GOCMD ) build
4- GOCLEAN =$(GOCMD ) clean
5- GOGET =$(GOCMD ) get
6- CPE2CVE =cpe2cve
7- CSV2CPE =csv2cpe
8- NVDSYNC =nvdsync
9- RPM2CPE =rpm2cpe
10-
11- NAME =nvdtools
12- PKG =$(NAME ) -$(VERSION )
13- TGZ =$(PKG ) .tar.gz
14-
15- all : build
16- build :
17- $(GOBUILD ) -o $(CPE2CVE ) ./cmd/$(CPE2CVE ) /cpe2cve.go
18- $(GOBUILD ) -o $(CSV2CPE ) ./cmd/$(CSV2CPE ) /csv2cpe.go
19- $(GOBUILD ) -o $(NVDSYNC ) ./cmd/$(NVDSYNC ) /main.go
20- $(GOBUILD ) -o $(RPM2CPE ) ./cmd/$(RPM2CPE ) /rpm2cpe.go
21-
22- clean :
23- $(GOCLEAN )
24- rm -f $(CPE2CVE )
25- rm -f $(CSV2CPE )
26- rm -f $(NVDSYNC )
27- rm -f $(RPM2CPE )
28-
1+ # Copyright (c) Facebook, Inc. and its affiliates.
2+ #
3+ # Licensed under the Apache License, Version 2.0 (the "License");
4+ # you may not use this file except in compliance with the License.
5+ # You may obtain a copy of the License at
6+ #
7+ # http://www.apache.org/licenses/LICENSE-2.0
8+ #
9+ # Unless required by applicable law or agreed to in writing, software
10+ # distributed under the License is distributed on an "AS IS" BASIS,
11+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+ # See the License for the specific language governing permissions and
13+ # limitations under the License.
14+
15+ NAME = nvdtools
16+ VERSION = tip
17+
18+ TOOLS = \
19+ cpe2cve \
20+ csv2cpe \
21+ fireeye2nvd \
22+ flexera2nvd \
23+ nvdsync \
24+ rpm2cpe \
25+ rustsec2nvd \
26+ vulndb
27+
28+ DOCS = \
29+ CODE_OF_CONDUCT.md \
30+ CONTRIBUTING.md \
31+ HOWTO.md \
32+ LICENSE \
33+ README.md
34+
35+ GO = go
36+ GOOS = $(shell $(GO ) env GOOS)
37+ GOARCH = $(shell $(GO ) env GOARCH)
38+
39+ TAR = tar
40+ ZIP = zip
41+ INSTALL = install
42+
43+ # Compile all tools.
44+ all : $(TOOLS )
45+
46+ # Compile TOOLS to ./build/bin/$tool using GOOS and GOARCH.
47+ $(TOOLS ) :
48+ GOOS=$(GOOS ) GOARCH=$(GOARCH ) $(GO ) build $(GOFLAGS ) -o ./build/bin/$@ ./cmd/$@
49+
50+ # Check/fetch all dependencies.
51+ deps :
52+ GOOS=$(GOOS ) GOARCH=$(GOARCH ) $(GO ) get -v -d ./...
53+
54+ # install installs tools and documentation.
55+ # The install target is used by rpm and deb builders.
2956install :
30- install -d $(DESTDIR ) /usr/bin
31- install -p -m 0755 ./cpe2cve $(DESTDIR ) /usr/bin/cpe2cve
32- install -p -m 0755 ./csv2cpe $(DESTDIR ) /usr/bin/csv2cpe
33- install -p -m 0755 ./nvdsync $(DESTDIR ) /usr/bin/nvdsync
34- install -p -m 0755 ./rpm2cpe $(DESTDIR ) /usr/bin/rpm2cpe
35-
36- archive :
37- touch $(TGZ )
38- tar czf $(TGZ ) --exclude=$(TGZ ) --transform s/$(NAME ) /$(PKG ) / ../$(NAME )
57+ # tools
58+ $(INSTALL ) -d $(DESTDIR ) /usr/bin
59+ for tool in $( TOOLS) ; do $( INSTALL) -p -m 0755 ./build/bin/$$ tool $( DESTDIR) /usr/bin/$$ tool; done
60+ # docs
61+ $(INSTALL ) -d $(DESTDIR ) /usr/share/doc/nvdtools
62+ for doc in $( DOCS) ; do $( INSTALL) -p -m 0644 $$ doc $( DESTDIR) /usr/share/doc/nvdtools/$$ doc; done
63+
64+ DIST_NAME = $(NAME ) -$(VERSION )
65+ DIST_DIR = build/$(DIST_NAME )
66+
67+ # binary_dist creates a local binary distribution in DIST_DIR.
68+ binary_dist : $(TOOLS )
69+ mkdir -p $(DIST_DIR ) /doc
70+ cp $(DOCS ) $(DIST_DIR ) /doc
71+ mv build/bin $(DIST_DIR ) /bin
72+
73+ # binary_tar creates tarball of binary distribution.
74+ binary_tar : binary_dist
75+ mkdir -p build/tgz
76+ cd build && $(TAR ) czf tgz/$(DIST_NAME ) -$(GOOS ) -$(GOARCH ) .tar.gz $(DIST_NAME )
77+ rm -rf $(DIST_DIR )
78+
79+ # binary_zip creates zip of binary distribution.
80+ binary_zip : binary_dist
81+ mkdir -p build/zip
82+ cd build && $(ZIP ) -r zip/$(DIST_NAME ) -$(GOOS ) -$(GOARCH ) .zip $(DIST_NAME )
83+ rm -rf $(DIST_DIR )
84+
85+ # binary_deb creates debian package.
86+ #
87+ # Requires GOPATH and dependencies available to compile nvdtools.
88+ # Must set version to build: make binary_deb VERSION=1.0
89+ binary_deb :
90+ VERSION=$(VERSION ) dpkg-buildpackage -rfakeroot -uc -us
91+ mkdir -p build/deb
92+ mv ../$(NAME ) * .deb build/deb/
93+
94+ # archive_tar creates tarball of the source code.
95+ archive_tar :
96+ mkdir -p build/tgz
97+ $(TAR ) czf build/tgz/$(DIST_NAME ) .tar.gz \
98+ --exclude=build \
99+ --exclude=release \
100+ --exclude=.git \
101+ --exclude=.travis.yml \
102+ --transform s/./$(DIST_NAME ) / \
103+ .
104+
105+ # binary_rpm creates rpm package.
106+ #
107+ # Requires GOPATH and dependencies available to compile nvdtools.
108+ # Must set version to build: make binary_rpm VERSION=1.0
109+ binary_rpm : archive_tar
110+ mkdir -p build/rpm/SOURCES
111+ mv build/tgz/$(DIST_NAME ) .tar.gz build/rpm/SOURCES/
112+ rpmbuild -ba \
113+ --define=" _topdir $( PWD) /build/rpm" \
114+ --define=" _version $( VERSION) " \
115+ rpm/nvdtools.spec
116+
117+ # release_tar creates tarball releases.
118+ release_tar :
119+ mkdir -p release
120+ make deps binary_tar GOOS=darwin GOARCH=amd64
121+ make deps binary_tar GOOS=freebsd GOARCH=amd64
122+ make deps binary_tar GOOS=linux GOARCH=amd64
123+ make deps binary_tar GOOS=linux GOARCH=arm64
124+ mv build/tgz/* .tar.gz release
125+
126+ # release_zip creates zip releases.
127+ release_zip :
128+ mkdir -p release
129+ make deps binary_zip GOOS=windows GOARCH=386
130+ make deps binary_zip GOOS=windows GOARCH=amd64
131+ mv build/zip/* .zip release
132+
133+ # release_deb creates debian releases.
134+ release_deb : binary_deb
135+ mkdir -p release
136+ mv build/deb/* .deb release
137+
138+ # release_rpm creates rpm releases.
139+ release_rpm : binary_rpm
140+ mkdir -p release
141+ mv build/rpm/RPMS/* /* .rpm release
142+
143+ # release creates all release packages.
144+ # Example: make distclean release VERSION=1.0
145+ release : release_deb release_rpm release_tar release_zip
146+
147+ # Removes build related files.
148+ clean :
149+ rm -rf build
150+
151+ distclean : clean
152+ rm -rf release
153+
154+ .PHONY : $(TOOLS )
0 commit comments