From d7dddb094a35d32e364093b0715aee7871260f2d Mon Sep 17 00:00:00 2001
From: Jon Turney <jon.turney@dronecode.org.uk>
Date: Mon, 10 Feb 2014 18:12:14 +0000
Subject: [PATCH 10/29] Teach gyp generated Makefile to build
 crash_generation_app correctly

- Use linker flag for Windows subsystem
- Use linker flag for unicode
- Add rule for compiling windows resources, using $RC to name the resource compiler
- Rename crash_generation_app.rc to avoid a clash in corresponding .o names

Also
- Fix linking of unit test when built using gyp generated Makefile by providing
needed library

XXX: We need to arrange for the gyp Makefile generator to set
CXXFLAGS="-DUNICODE -D_UNICODE" somewhere when generating for Windows.  This is
already done in generated MSVS projects.

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
---
 .../crash_generation_app/crash_generation_app.gyp  | 29 +++++++++++++++++++---
 .../{crash_generation_app.rc => resource.rc}       | 13 +++++-----
 src/client/windows/unittests/client_tests.gyp      | 12 +++++++--
 3 files changed, 41 insertions(+), 13 deletions(-)
 rename src/client/windows/tests/crash_generation_app/{crash_generation_app.rc => resource.rc} (96%)

diff --git a/src/client/windows/tests/crash_generation_app/crash_generation_app.gyp b/src/client/windows/tests/crash_generation_app/crash_generation_app.gyp
index 3ce307da..774f6004 100644
--- a/src/client/windows/tests/crash_generation_app/crash_generation_app.gyp
+++ b/src/client/windows/tests/crash_generation_app/crash_generation_app.gyp
@@ -40,19 +40,40 @@
         'crash_generation_app.cc',
         'crash_generation_app.h',
         'crash_generation_app.ico',
-        'crash_generation_app.rc',
+        'resource.rc',
         'resource.h',
         'small.ico',
       ],
-      'libraries': [
-        'user32.lib',
-      ],
       'dependencies': [
         '../../breakpad_client.gyp:common',
         '../../crash_generation/crash_generation.gyp:crash_generation_server',
         '../../crash_generation/crash_generation.gyp:crash_generation_client',
         '../../handler/exception_handler.gyp:exception_handler',
       ],
+      'conditions': [
+          [ '"<(GENERATOR)" == "make"', {
+              'ldflags': [
+                  '-Wl,--subsystem=2', '-municode'
+              ],
+              'rules': [
+                  { 'rule_name': 'windres',
+                    'extension': 'rc',
+                    'inputs'   : [ ],
+                    'outputs'  : [ '$(builddir)/<(RULE_INPUT_ROOT).o' ],
+                    'action'   : [ '$(RC)', '--input=<(RULE_INPUT_PATH)', '--output=$(builddir)/<(RULE_INPUT_ROOT).o', '--input-format=rc', '--output-format=coff', '-v', '--use-temp-file' ],
+                    'message'  : 'Compiling Windows resources',
+                    'process_outputs_as_sources' : 1,
+                },
+              ],
+            }
+          ],
+          [ '"<(GENERATOR)" == "msvs"', {
+              'libraries': [
+                  'user32.lib',
+              ],
+            }
+          ]
+      ],
       'msvs_settings': {
         'VCLinkerTool': {
           'SubSystem': '2',  # Windows Subsystem as opposed to a console app
diff --git a/src/client/windows/tests/crash_generation_app/crash_generation_app.rc b/src/client/windows/tests/crash_generation_app/resource.rc
similarity index 96%
rename from src/client/windows/tests/crash_generation_app/crash_generation_app.rc
rename to src/client/windows/tests/crash_generation_app/resource.rc
index a362562b..6c7e8b63 100644
--- a/src/client/windows/tests/crash_generation_app/crash_generation_app.rc
+++ b/src/client/windows/tests/crash_generation_app/resource.rc
@@ -38,7 +38,7 @@ IDI_SMALL               ICON                    "small.ico"
 // Menu
 //
 
-IDC_CRASHGENERATIONAPP MENU 
+IDC_CRASHGENERATIONAPP MENU
 BEGIN
     POPUP "&File"
     BEGIN
@@ -64,7 +64,7 @@ END
 // Accelerator
 //
 
-IDC_CRASHGENERATIONAPP ACCELERATORS 
+IDC_CRASHGENERATIONAPP ACCELERATORS
 BEGIN
     "?",            IDM_ABOUT,              ASCII,  ALT
     "/",            IDM_ABOUT,              ASCII,  ALT
@@ -94,12 +94,12 @@ END
 // TEXTINCLUDE
 //
 
-1 TEXTINCLUDE 
+1 TEXTINCLUDE
 BEGIN
     "resource.h\0"
 END
 
-2 TEXTINCLUDE 
+2 TEXTINCLUDE
 BEGIN
     "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
     "#include ""windows.h""\r\n"
@@ -107,7 +107,7 @@ BEGIN
     "\0"
 END
 
-3 TEXTINCLUDE 
+3 TEXTINCLUDE
 BEGIN
     "\r\n"
     "\0"
@@ -121,7 +121,7 @@ END
 // String Table
 //
 
-STRINGTABLE 
+STRINGTABLE
 BEGIN
     IDS_APP_TITLE           "CrashGenerationApp"
     IDC_CRASHGENERATIONAPP  "CRASHGENERATIONAPP"
@@ -141,4 +141,3 @@ END
 
 /////////////////////////////////////////////////////////////////////////////
 #endif    // not APSTUDIO_INVOKED
-
diff --git a/src/client/windows/unittests/client_tests.gyp b/src/client/windows/unittests/client_tests.gyp
index b13603ef..15dab5ff 100644
--- a/src/client/windows/unittests/client_tests.gyp
+++ b/src/client/windows/unittests/client_tests.gyp
@@ -51,8 +51,16 @@
         '../crash_generation/crash_generation.gyp:crash_generation_server',
         '../crash_generation/crash_generation.gyp:crash_generation_client',
         '../handler/exception_handler.gyp:exception_handler',
-	'processor_bits',
-      ]
+        'processor_bits',
+      ],
+      'conditions': [
+          [ '"<(GENERATOR)" == "make"', {
+              'libraries': [
+                  '-ldbghelp', '-lversion', '-lpthread',
+              ],
+            },
+          ],
+      ],
     },
     {
       'target_name': 'processor_bits',
-- 
2.15.0

