From ddcc94e46a8c28463374119e0582253bb5ca353a Mon Sep 17 00:00:00 2001
From: Denis Dzyubenko <denis.dzyubenko@nokia.com>
Date: Tue, 3 Jan 2012 18:09:02 +0100
Subject: [PATCH] Initial commit

This should show some moc-issue:

$ qmake
$ make #builds successfully
$ cd ./tests/daemon
$ git clean -dfx OR make distclean
$ qmake
$ make #build FAILS

This is because qmake decided that moc_bar.cpp should be compiled as a separate
module, but moc didn't know about the namespace, so compilation fails. Instead
moc_bar.cpp should not be compiled separately, but included from bar.cpp.
---
 namespaceissue.pro      |    2 ++
 src/daemon/bar.cpp      |    8 ++++++++
 src/daemon/bar.h        |   21 +++++++++++++++++++++
 src/daemon/daemon.pri   |    3 +++
 src/daemon/daemon.pro   |    5 +++++
 src/daemon/main.cpp     |    5 +++++
 src/daemon/zap-global.h |    8 ++++++++
 src/src.pro             |    2 ++
 tests/daemon/daemon.pro |    5 +++++
 tests/daemon/main.cpp   |    5 +++++
 tests/tests.pro         |    2 ++
 11 files changed, 66 insertions(+), 0 deletions(-)
 create mode 100644 namespaceissue.pro
 create mode 100644 src/daemon/bar.cpp
 create mode 100644 src/daemon/bar.h
 create mode 100644 src/daemon/daemon.pri
 create mode 100644 src/daemon/daemon.pro
 create mode 100644 src/daemon/main.cpp
 create mode 100644 src/daemon/zap-global.h
 create mode 100644 src/src.pro
 create mode 100644 tests/daemon/daemon.pro
 create mode 100644 tests/daemon/main.cpp
 create mode 100644 tests/tests.pro

diff --git a/namespaceissue.pro b/namespaceissue.pro
new file mode 100644
index 0000000..8007e82
--- /dev/null
+++ b/namespaceissue.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = src tests
diff --git a/src/daemon/bar.cpp b/src/daemon/bar.cpp
new file mode 100644
index 0000000..790e373
--- /dev/null
+++ b/src/daemon/bar.cpp
@@ -0,0 +1,8 @@
+#include "bar.h"
+
+BEGIN_NAMESPACE
+
+
+#include "moc_bar.cpp"
+
+END_NAMESPACE
diff --git a/src/daemon/bar.h b/src/daemon/bar.h
new file mode 100644
index 0000000..7b12d9e
--- /dev/null
+++ b/src/daemon/bar.h
@@ -0,0 +1,21 @@
+#ifndef BAR_H
+#define BAR_H
+
+#include <QObject>
+#include "zap-global.h"
+
+BEGIN_NAMESPACE
+
+class Bar: public QObject
+{
+    Q_OBJECT
+public:
+    Bar() { }
+
+public Q_SLOTS:
+    void bar() { }
+};
+
+END_NAMESPACE
+
+#endif // BAR_H
diff --git a/src/daemon/daemon.pri b/src/daemon/daemon.pri
new file mode 100644
index 0000000..2ce364b
--- /dev/null
+++ b/src/daemon/daemon.pri
@@ -0,0 +1,3 @@
+INCLUDEPATH += $$PWD
+HEADERS += $$PWD/bar.h $$PWD/zap-global.h
+SOURCES += $$PWD/bar.cpp
diff --git a/src/daemon/daemon.pro b/src/daemon/daemon.pro
new file mode 100644
index 0000000..282609f
--- /dev/null
+++ b/src/daemon/daemon.pro
@@ -0,0 +1,5 @@
+TEMPLATE = app
+
+include (daemon.pri)
+
+SOURCES += main.cpp
diff --git a/src/daemon/main.cpp b/src/daemon/main.cpp
new file mode 100644
index 0000000..31a1337
--- /dev/null
+++ b/src/daemon/main.cpp
@@ -0,0 +1,5 @@
+
+int main()
+{
+    return 0;
+}
diff --git a/src/daemon/zap-global.h b/src/daemon/zap-global.h
new file mode 100644
index 0000000..4b3a589
--- /dev/null
+++ b/src/daemon/zap-global.h
@@ -0,0 +1,8 @@
+#ifndef FOO_GLOBAL_H
+#define FOO_GLOBAL_H
+
+#define BEGIN_NAMESPACE namespace FooBar {
+#define END_NAMESPACE }
+
+#endif // FOO_GLOBAL_H
+
diff --git a/src/src.pro b/src/src.pro
new file mode 100644
index 0000000..b317fe3
--- /dev/null
+++ b/src/src.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = daemon
diff --git a/tests/daemon/daemon.pro b/tests/daemon/daemon.pro
new file mode 100644
index 0000000..ab5b225
--- /dev/null
+++ b/tests/daemon/daemon.pro
@@ -0,0 +1,5 @@
+TEMPLATE = app
+
+include (../../src/daemon/daemon.pri)
+
+SOURCES += main.cpp
diff --git a/tests/daemon/main.cpp b/tests/daemon/main.cpp
new file mode 100644
index 0000000..31a1337
--- /dev/null
+++ b/tests/daemon/main.cpp
@@ -0,0 +1,5 @@
+
+int main()
+{
+    return 0;
+}
diff --git a/tests/tests.pro b/tests/tests.pro
new file mode 100644
index 0000000..b317fe3
--- /dev/null
+++ b/tests/tests.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = daemon
-- 
1.7.4.4

