Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: adblockplus.gyp

Issue 11058028: Developer installation, gyp version
Patch Set: Created July 2, 2013, 3:13 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « BHO_remove.reg ('k') | dev_install.cmd » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 { 1 {
2 'includes': ['defaults.gypi'], 2 'includes': ['defaults.gypi'],
3 3
4 'variables': { 4 'variables': {
5 'build_type%': 'devbuild', 5 'build_type%': 'devbuild',
6 'build_version%': '', 6 'build_version%': '',
7 'shared_files': [ 7 'shared_files': [
8 'src/shared/AutoHandle.cpp', 8 'src/shared/AutoHandle.cpp',
9 'src/shared/Communication.cpp', 9 'src/shared/Communication.cpp',
10 'src/shared/Dictionary.cpp', 10 'src/shared/Dictionary.cpp',
11 'src/shared/Utils.cpp', 11 'src/shared/Utils.cpp',
12 ] 12 ],
13
14 # Architecture Detections
Felix Dahlke 2013/07/02 08:00:46 This describes something that's happening in dev_i
Eric 2013/07/02 12:58:06 It's happening in both the install and uninstall c
15 # =======================
16 # We must make an effort to locate the correct executable to manipulate the registry,
17 # because Windows automatically remaps "reg.exe" to a 32-bit version when invoked from a 32-bit program.
18 # There are _five_ different architectures relevant to this detection,
19 # all of which come in 32-bit and 64-bit versions.
20 # 1. The architecture of the processor itself.
21 # 2. The architecture of the version of Windows running.
22 # 3. The architecture of the 'python' executable that runs 'gyp'.
23 # 4. The architecture of the executable running the build, which will we eit her MSBuild or Visual Studio.
24 # 5. The architecture of the build target.
25 # Unfortunately, we cannot know the architecture of the build executable at compile time,
26 # so regardless of the architecture of python, we have a certain amount of build-time detection to do.
27 #
28 # The easy cases are 1 and 2.
29 # If Windows is 32-bit, then it doesn't matter what the processor is, all th e executables are also 32-bit
30 # and only 32-bit registrations can be supported.
31 # We represent this value as the variable 'platform_arch'.
32 # We use it below to compile out the registration project for the case of 32 -bit platform and 64-bit target.
33 # The detection we're using for this is outlined here: http://support.micros oft.com/kb/556009
34 # It requires querying a particular registry key that indicates the architec ture of the OS.
35 # After that it's just a bunch of cmd.exe hacks to coerce the search result to one of two strings.
36
37 'platform_arch': '<!(cmd /c reg query HKLM\\HARDWARE\\DESCRIPTION\\System\\C entralProcessor\\0 -v "Platform ID" | find "0x20" & if errorlevel 1 (echo x64) e lse echo ia32)'
38
39 # Case 3 is relevant if only as a cautionary warning that it should be ignor ed.
40 # It's possible to detect the architecture of the python executable, but it doesn't do any good
41 # because there's no relationship between it and that of the build executa ble.
42 # Case 4 would be called 'build_arch' here if it were possible to know it in advance, but we can't.
43 # Case 5 is available as gyp variable 'target_arch'.
44
45 # For 32-bit Windows, we have only one case; everything is 32-bit.
46 # For 64-bit Windows, we have four cases depending on the architectures of t he spawning process and which view of the registry to write to.
47 # platform spawn executable registry comment
48 # ======== ===== ========== ======== =======
49 # 32 32 %WINDIR%\System32\reg.exe 32 Native
50 # 64 32 %WINDIR%\System32\reg.exe 32 Path name is remap ped, even if fully specified
51 # 64 64 %WINDIR%\SysWOW64\reg.exe 32 'SysWOW64' visible to both 32-bit and 64-bit processes
52 # 64 32 %WINDIR%\sysnative\reg.exe 64 Virtual directory 'sysnative' only visible in this combination
53 # 64 64 %WINDIR%\System32\reg.exe 64 Native
54 # Under 64-bit Windows, 32-bit keys appear under a "Wow6432Node" key when se en natively, that is, with a 64-bit binary,
55 # but without the modifier when seen under WoW64, that is, with a 32-bit b inary.
56 # In order to keep the syntax consistent, we want 32-bit binaries for 32-bit targets
57 # and 64-bit binaries for 64-bit targets.
58 # We need to detect the architecture of the (batch file) process at run time , but given that and the platform architecture,
59 # we can select the right "reg.exe" to run.
60 # This allows us to keep the syntax of the registration statements identical except for the path to "reg.exe".
61 # See 'dev_install.cmd' for the implementation.
13 }, 62 },
14 63 'conditions': [
64 [ 'platform_arch=="ia32"', {
65 'variables': {
66 'reg32': 'system32',
67 'reg64': 'system32' # Something needed so that the .cmd file has suf ficient arguments
68 }
69 } ],
70 [ 'platform_arch=="x64"', {
71 'conditions': [
72 [ 'target_arch=="ia32"', {
73 'variables': {
74 'reg32': 'system32',
75 'reg64': 'SysWOW64'
76 }
77 } ],
78 [ 'target_arch=="x64"', {
79 'variables': {
80 'reg32': 'sysnative',
81 'reg64': 'system32'
82 }
83 } ],
84 ],
85 } ]
86 ],
87
15 'target_defaults': { 88 'target_defaults': {
16 'conditions': [ 89 'conditions': [
17 [ 90 [
18 'build_type=="devbuild"', 91 'build_type=="devbuild"',
19 { 92 {
20 'defines': ['ADBLOCK_PLUS_TEST_MODE', 'ADBLOCKPLUS_TEST_MODE'], 93 'defines': ['ADBLOCK_PLUS_TEST_MODE', 'ADBLOCKPLUS_TEST_MODE'],
21 }, 94 },
22 { 95 {
23 'defines': ['ADBLOCK_PLUS_PRODUCTION_MODE', 'ADBLOCKPLUS_PRODUCTION_MO DE'], 96 'defines': ['ADBLOCK_PLUS_PRODUCTION_MODE', 'ADBLOCKPLUS_PRODUCTION_MO DE'],
24 }, 97 },
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 ], 215 ],
143 } 216 }
144 ]], 217 ]],
145 'AdditionalLibraryDirectories': [ 218 'AdditionalLibraryDirectories': [
146 '$(VCInstallDir)atlmfc/lib', 219 '$(VCInstallDir)atlmfc/lib',
147 ], 220 ],
148 'DelayLoadDLLs': ['Shell32.dll'], 221 'DelayLoadDLLs': ['Shell32.dll'],
149 }, 222 },
150 }, 223 },
151 }, 224 },
225
226 {
227 'target_name': 'Developer Install',
228 'type': 'none',
229 'dependencies': [
230 'AdblockPlus'
231 ],
232 'actions': [ {
233 'action_name': 'Install',
234 'message': 'Performing a developer installation',
235 'inputs': [],
236 'outputs': [
237 # This file is never written, meaning the action always runs.
Oleksandr 2013/07/02 08:16:17 Can you please elaborate on this part? I don't qui
Eric 2013/07/02 12:58:06 MSBuild is essentially a glorified Makefile, speci
238 '<(PRODUCT_DIR)/timestamp.txt'
239 ],
240 'action': [
241 '..\\..\\dev_install.cmd "$(OutDir)Adblockplus.dll" "$(ProjectDir)" <(re g32) <(reg64)',
242 ],
243 } ],
244 },
245
246 {
247 'target_name': 'Developer Uninstall',
248 'type': 'none',
249 'actions': [ {
250 'action_name': 'Uninstall',
251 'message': 'Removing any developer installation',
252 'inputs': [],
253 'outputs': [
254 # This file is never written, meaning the action always runs.
255 '<(PRODUCT_DIR)/timestamp.txt'
256 ],
257 'action': [
258 '..\\..\\dev_uninstall.cmd <(reg32) <(reg64)',
Felix Dahlke 2013/07/02 08:00:46 So this means that I cannot just run dev_uninstall
Eric 2013/07/02 12:58:06 It would be possible to pass in the architecture i
259 ],
260 } ],
261 },
152 262
153 { 263 {
154 'target_name': 'tests', 264 'target_name': 'tests',
155 'type': 'executable', 265 'type': 'executable',
156 'dependencies': [ 266 'dependencies': [
157 'libadblockplus/third_party/googletest.gyp:googletest_main', 267 'libadblockplus/third_party/googletest.gyp:googletest_main',
158 ], 268 ],
159 'sources': [ 269 'sources': [
160 'test/CommunicationTest.cpp', 270 'test/CommunicationTest.cpp',
161 'test/DictionaryTest.cpp', 271 'test/DictionaryTest.cpp',
162 '<@(shared_files)', 272 '<@(shared_files)',
163 ], 273 ],
164 'defines': ['WINVER=0x0501'], 274 'defines': ['WINVER=0x0501'],
165 'link_settings': { 275 'link_settings': {
166 'libraries': ['-ladvapi32', '-lshell32', '-lole32'], 276 'libraries': ['-ladvapi32', '-lshell32', '-lole32'],
167 }, 277 },
168 'msvs_settings': { 278 'msvs_settings': {
169 'VCLinkerTool': { 279 'VCLinkerTool': {
170 'SubSystem': '1', # Console 280 'SubSystem': '1', # Console
171 'EntryPointSymbol': 'mainCRTStartup', 281 'EntryPointSymbol': 'mainCRTStartup',
172 }, 282 },
173 }, 283 },
174 }] 284 }]
175 } 285 }
OLDNEW
« no previous file with comments | « BHO_remove.reg ('k') | dev_install.cmd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld