[v2] Gather necessary options for build in Make.global and include it.

Message ID 1264724571.17517.18.camel@mattotaupa
State New
Headers

Commit Message

Paul Menzel Jan. 29, 2010, 12:22 a.m. UTC
  Without this patch, if some options in `Makefile` were set outside `Makefile` and no `Make.config` existed with the necessary options, builds could fail. [1][2][3]

Therefore include strictly necessary options in `Make.global` and include this in all the Makefiles before `Make.config`.

This patch does not delete the those options which were factored out into `Make.global` to make it easier for people to understand the Makefile and what options are needed.

[1] http://www.linuxtv.org/pipermail/vdr/2009-July/020977.html
[2] http://www.linuxtv.org/pipermail/vdr/2009-December/021807.html
[3] http://www.linuxtv.org/pipermail/vdr/2010-January/022235.html

v2: Use `include` instead of `-include` to get a warning/error if it is not present. [4]

[4] http://www.gnu.org/software/make/manual/make.html#Include

Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
---
 Make.config.template             |    6 ------
 Make.global                      |   14 ++++++++++++++
 Makefile                         |    1 +
 PLUGINS/src/dvbsddevice/Makefile |    4 ++++
 PLUGINS/src/hello/Makefile       |    4 ++++
 PLUGINS/src/osddemo/Makefile     |    4 ++++
 PLUGINS/src/pictures/Makefile    |    4 ++++
 PLUGINS/src/servicedemo/Makefile |    4 ++++
 PLUGINS/src/skincurses/Makefile  |    4 ++++
 PLUGINS/src/status/Makefile      |    4 ++++
 PLUGINS/src/svdrpdemo/Makefile   |    4 ++++
 11 files changed, 47 insertions(+), 6 deletions(-)
 create mode 100644 Make.global
  

Comments

Frank Schmirler Jan. 29, 2010, 9:04 a.m. UTC | #1
Hi Paul,

thanks for the patch - looks good. Some suggestions from me:

1) from VDR's Makefile, remove the line
DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
It is already included from Make.global

2) in all plugin Makefiles, remove -fPIC from the line
CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
It will be added by Make.global anyway

3) in Make.config.template, remove only the line
DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
The lines with "+= -fPIC" are still necessary, as Make.config resets
CFLAGS/CXXFLAGS.

4) Script newplugin needs to be modified, too.

Best regards,
Frank
  
Paul Menzel Jan. 29, 2010, 1:51 p.m. UTC | #2
Dear Frank,


Am Freitag, den 29.01.2010, 10:04 +0100 schrieb Frank Schmirler:

[…]

> 1) from VDR's Makefile, remove the line
> DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
> It is already included from Make.global
> 
> 2) in all plugin Makefiles, remove -fPIC from the line
> CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
> It will be added by Make.global anyway

My reasoning was that someone reading the Makefile would have it easier
to see what options are needed. I will change it now.

I will also remove the line `DEFINES += -D_FILE …` in there too because
it should be added by `Make.global` too.

> 3) in Make.config.template, remove only the line
> DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
> The lines with "+= -fPIC" are still necessary, as Make.config resets
> CFLAGS/CXXFLAGS.

Correct.

> 4) Script newplugin needs to be modified, too.

I did not know about `newplugin`.


Thanks for the review. I will send a new version of the patch,

Paul
  

Patch

diff --git a/Make.config.template b/Make.config.template
index 758fc14..3296992 100644
--- a/Make.config.template
+++ b/Make.config.template
@@ -16,12 +16,6 @@  CFLAGS   = -g -O2 -Wall
 CXX      = g++
 CXXFLAGS = -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
-ifdef PLUGIN
-CFLAGS   += -fPIC
-CXXFLAGS += -fPIC
-DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-endif
-
 ### The directory environment:
 
 #DVBDIR   = /usr/src/v4l-dvb/linux
diff --git a/Make.global b/Make.global
new file mode 100644
index 0000000..5ef70f0
--- /dev/null
+++ b/Make.global
@@ -0,0 +1,14 @@ 
+#
+# Strictly necessary Makefile options for the Video Disk Recorder
+#
+# See the main source file 'vdr.c' for copyright information and
+# how to reach the author.
+
+# Plugins need to be compiled with position independent code, otherwise linking
+# VDR against it will fail.
+ifdef PLUGIN
+CFLAGS   += -fPIC
+CXXFLAGS += -fPIC
+endif
+
+DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
diff --git a/Makefile b/Makefile
index e13ea5e..faa36e7 100644
--- a/Makefile
+++ b/Makefile
@@ -32,6 +32,7 @@  CONFDIR  = $(VIDEODIR)
 DOXYGEN  = /usr/bin/doxygen
 DOXYFILE = Doxyfile
 
+include Make.global
 -include Make.config
 
 SILIB    = $(LSIDIR)/libsi.a
diff --git a/PLUGINS/src/dvbsddevice/Makefile b/PLUGINS/src/dvbsddevice/Makefile
index 8ef273c..a3854a5 100644
--- a/PLUGINS/src/dvbsddevice/Makefile
+++ b/PLUGINS/src/dvbsddevice/Makefile
@@ -20,6 +20,10 @@  VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
 CXX      ?= g++
 CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
 ### The directory environment:
 
 VDRDIR = ../../..
diff --git a/PLUGINS/src/hello/Makefile b/PLUGINS/src/hello/Makefile
index ea5b806..1132cc9 100644
--- a/PLUGINS/src/hello/Makefile
+++ b/PLUGINS/src/hello/Makefile
@@ -20,6 +20,10 @@  VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
 CXX      ?= g++
 CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
 ### The directory environment:
 
 VDRDIR = ../../..
diff --git a/PLUGINS/src/osddemo/Makefile b/PLUGINS/src/osddemo/Makefile
index 1b1c622..54dc1e0 100644
--- a/PLUGINS/src/osddemo/Makefile
+++ b/PLUGINS/src/osddemo/Makefile
@@ -18,6 +18,10 @@  VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
 CXX      ?= g++
 CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
 ### The directory environment:
 
 VDRDIR = ../../..
diff --git a/PLUGINS/src/pictures/Makefile b/PLUGINS/src/pictures/Makefile
index 46a262f..6f95238 100644
--- a/PLUGINS/src/pictures/Makefile
+++ b/PLUGINS/src/pictures/Makefile
@@ -20,6 +20,10 @@  VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
 CXX      ?= g++
 CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
 ### The directory environment:
 
 VDRDIR = ../../..
diff --git a/PLUGINS/src/servicedemo/Makefile b/PLUGINS/src/servicedemo/Makefile
index ea7e66a..e36757a 100644
--- a/PLUGINS/src/servicedemo/Makefile
+++ b/PLUGINS/src/servicedemo/Makefile
@@ -20,6 +20,10 @@  VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN1).c | awk '{ pr
 CXX      ?= g++
 CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
 ### The directory environment:
 
 VDRDIR = ../../..
diff --git a/PLUGINS/src/skincurses/Makefile b/PLUGINS/src/skincurses/Makefile
index cade795..4a7a72f 100644
--- a/PLUGINS/src/skincurses/Makefile
+++ b/PLUGINS/src/skincurses/Makefile
@@ -20,6 +20,10 @@  VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
 CXX      ?= g++
 CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
 ### The directory environment:
 
 VDRDIR = ../../..
diff --git a/PLUGINS/src/status/Makefile b/PLUGINS/src/status/Makefile
index 81d4163..51281d3 100644
--- a/PLUGINS/src/status/Makefile
+++ b/PLUGINS/src/status/Makefile
@@ -18,6 +18,10 @@  VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
 CXX      ?= g++
 CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
 ### The directory environment:
 
 VDRDIR = ../../..
diff --git a/PLUGINS/src/svdrpdemo/Makefile b/PLUGINS/src/svdrpdemo/Makefile
index c835f3c..053622e 100644
--- a/PLUGINS/src/svdrpdemo/Makefile
+++ b/PLUGINS/src/svdrpdemo/Makefile
@@ -18,6 +18,10 @@  VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
 CXX      ?= g++
 CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
 ### The directory environment:
 
 VDRDIR = ../../..