summaryrefslogtreecommitdiff
blob: aaedc404a20838a7532e59e92f1ce2f0c2bea327 (plain)
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
From 1c369c46fd2cceeb6abe46b89fc539960a6c0c88 Mon Sep 17 00:00:00 2001
From: David Seifert <soap@gentoo.org>
Date: Sat, 1 Jul 2017 19:42:50 -0700
Subject: [PATCH] Make buildsystem respect GNU conventions

* CPPFLAGS is a user variable and should be respected
  when compiling .c files. Think of -D_FORTIFY_SOURCE=2.
* Pass ALL_CFLAGS when linking too. This is recommended
  for certain edge cases (-flto)
* Use DESTDIR instead of INSTALLROOT for staging dir
  Every other build system (Automake, CMake, Meson) uses
  DESTDIR. This integrates better into distro and other
  build systems that have standard hooks for DESTDIR.
* $(MAKE) -C <dir> is better than cd'ing into a <dir>
* Use Autoconf's ${docdir} and ${htmldir} for installing
  the documentation. This makes handling documentation
  easier and respects user choice.
---
 Makefile.in     | 41 +++++++++++++++++++++--------------------
 doc/Makefile.in | 13 ++++++++-----
 2 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index a48d980..e7f01e4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -20,6 +20,7 @@ datarootdir	= @datarootdir@
 
 CC		= @CC@
 CFLAGS		= @CFLAGS@
+CPPFLAGS	= @CPPFLAGS@
 BUILD_CFLAGS	= $(CFLAGS) @DEFS@
 INTERNAL_CFLAGS = -I$(srcdir) -I$(objdir) \
 		  -I$(srcdir)/include -I$(objdir)/include \
@@ -72,13 +73,13 @@ endif
 .PHONY: manpages nsis
 
 .c.$(O):
-	$(CC) -c $(ALL_CFLAGS) -o $@ $<
+	$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
 
 .c.s:
-	$(CC) -S $(ALL_CFLAGS) -o $@ $<
+	$(CC) -S $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
 
 .c.i:
-	$(CC) -E $(ALL_CFLAGS) -o $@ $<
+	$(CC) -E $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
 
 .txt.xml:
 	$(ASCIIDOC) -b docbook -d manpage -o $@ $<
@@ -88,7 +89,7 @@ endif
 
 # This rule is only used for rdoff, to allow common rules
 .$(O)$(X):
-	$(CC) $(LDFLAGS) -o $@ $< $(RDFLIB) $(NASMLIB) $(LIBS)
+	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $< $(RDFLIB) $(NASMLIB) $(LIBS)
 
 #-- Begin File Lists --#
 NASM =	asm/nasm.$(O)
@@ -152,10 +153,10 @@ $(NASMLIB): $(LIBOBJ)
 	$(RANLIB) $(NASMLIB)
 
 nasm$(X): $(NASM) $(NASMLIB)
-	$(CC) $(LDFLAGS) -o nasm$(X) $(NASM) $(NASMLIB) $(LIBS)
+	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o nasm$(X) $(NASM) $(NASMLIB) $(LIBS)
 
 ndisasm$(X): $(NDISASM) $(NASMLIB)
-	$(CC) $(LDFLAGS) -o ndisasm$(X) $(NDISASM) $(NASMLIB) $(LIBS)
+	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o ndisasm$(X) $(NDISASM) $(NASMLIB) $(LIBS)
 
 #-- Begin Generated File Rules --#
 
@@ -335,12 +336,12 @@ nsis: nsis/nasm.nsi nsis/arch.nsh nsis/version.nsh
 manpages: nasm.1 ndisasm.1
 
 install: nasm$(X) ndisasm$(X)
-	$(MKDIR) -p $(INSTALLROOT)$(bindir)
-	$(INSTALL_PROGRAM) nasm$(X) $(INSTALLROOT)$(bindir)/nasm$(X)
-	$(INSTALL_PROGRAM) ndisasm$(X) $(INSTALLROOT)$(bindir)/ndisasm$(X)
-	$(MKDIR) -p $(INSTALLROOT)$(mandir)/man1
-	$(INSTALL_DATA) $(srcdir)/nasm.1 $(INSTALLROOT)$(mandir)/man1/nasm.1
-	$(INSTALL_DATA) $(srcdir)/ndisasm.1 $(INSTALLROOT)$(mandir)/man1/ndisasm.1
+	$(MKDIR) -p $(DESTDIR)$(bindir)
+	$(INSTALL_PROGRAM) nasm$(X) $(DESTDIR)$(bindir)/nasm$(X)
+	$(INSTALL_PROGRAM) ndisasm$(X) $(DESTDIR)$(bindir)/ndisasm$(X)
+	$(MKDIR) -p $(DESTDIR)$(mandir)/man1
+	$(INSTALL_DATA) $(srcdir)/nasm.1 $(DESTDIR)$(mandir)/man1/nasm.1
+	$(INSTALL_DATA) $(srcdir)/ndisasm.1 $(DESTDIR)$(mandir)/man1/ndisasm.1
 
 clean:
 	for d in . $(SUBDIRS) $(XSUBDIRS); do \
@@ -364,7 +365,7 @@ distclean: clean
 
 cleaner: clean
 	$(RM_F) $(PERLREQ) *.1 nasm.spec
-	cd doc && $(MAKE) clean
+	$(MAKE) -C doc clean
 
 spotless: distclean cleaner
 	$(RM_F) doc/Makefile
@@ -386,23 +387,23 @@ cscope:
 	cscope -b -f cscope.out
 
 rdf_install install_rdf install_rdoff:
-	$(MKDIR) -p $(INSTALLROOT)$(bindir)
+	$(MKDIR) -p $(DESTDIR)$(bindir)
 	for f in $(RDFPROGS); do \
-		$(INSTALL_PROGRAM) "$$f" '$(INSTALLROOT)$(bindir)'/ ; \
+		$(INSTALL_PROGRAM) "$$f" '$(DESTDIR)$(bindir)'/ ; \
 	done
-	cd '$(INSTALLROOT)$(bindir)' && \
+	cd '$(DESTDIR)$(bindir)' && \
 	for f in $(RDF2BINLINKS); do \
 		bn=`basename "$$f"` && $(RM_F) "$$bn" && \
 		$(LN_S) rdf2bin$(X) "$$bn" ; \
 	done
-	$(MKDIR) -p $(INSTALLROOT)$(mandir)/man1
-	$(INSTALL_DATA) $(srcdir)/rdoff/*.1 $(INSTALLROOT)$(mandir)/man1/
+	$(MKDIR) -p $(DESTDIR)$(mandir)/man1
+	$(INSTALL_DATA) $(srcdir)/rdoff/*.1 $(DESTDIR)$(mandir)/man1/
 
 doc:
-	cd doc && $(MAKE) all
+	$(MAKE) -C doc all
 
 doc_install install_doc:
-	cd doc && $(MAKE) install
+	$(MAKE) -C doc install
 
 everything: all manpages doc rdf
 
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 2ddfd1e..261a791 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -9,7 +9,8 @@ prefix		= @prefix@
 exec_prefix	= @exec_prefix@
 bindir		= @bindir@
 mandir		= @mandir@
-docdir		= $(prefix)/doc/nasm
+docdir		= @docdir@
+htmldir		= @htmldir@
 infodir		= @infodir@
 datarootdir	= @datarootdir@
 
@@ -21,6 +22,7 @@ PERL		= perl -I$(srcdir)
 
 PDFOPT		= @PDFOPT@
 
+MKDIR		= mkdir
 RM_F		= rm -f
 RM_RF		= rm -rf
 CP_F		= cp -f
@@ -41,7 +43,7 @@ inslist.src: inslist.pl ../x86/insns.dat
 
 .PHONY: html
 html: $(HTMLAUX)
-	mkdir -p html
+	$(MKDIR) -p html
 	for f in $(HTMLAUX); do $(CP_UF) "$(srcdir)/$$f" html/; done
 	$(MAKE) html/nasmdoc0.html
 
@@ -81,6 +83,7 @@ spotless: clean
 	-$(RM_F) *.hlp nasmdoc.txt *.inf *.pdf *.dvi
 
 install: all
-	mkdir -p $(INSTALLROOT)$(docdir)/html
-	$(INSTALL_DATA) html/* $(INSTALLROOT)$(docdir)/html
-	$(INSTALL_DATA) nasmdoc.pdf nasmdoc.txt $(INSTALLROOT)$(docdir)
+	$(MKDIR) -p $(DESTDIR)$(htmldir)
+	$(INSTALL_DATA) html/* $(DESTDIR)$(htmldir)
+	$(MKDIR) -p $(DESTDIR)$(docdir)
+	$(INSTALL_DATA) nasmdoc.pdf nasmdoc.txt $(DESTDIR)$(docdir)
-- 
2.13.2