Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Side by Side Diff: pylib/gyp/generator/cmake.py

Issue 1408993007: Change CMAKE_SOURCE_DIR to CMAKE_CURRENT_LIST_DIR. (Closed) Base URL: https://chromium.googlesource.com/external/gyp.git@master
Patch Set: set builddir to CMAKE_CURRENT_BINARY_DIR Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2013 Google Inc. All rights reserved. 1 # Copyright (c) 2013 Google Inc. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """cmake output module 5 """cmake output module
6 6
7 This module is under development and should be considered experimental. 7 This module is under development and should be considered experimental.
8 8
9 This module produces cmake (2.8.8+) input as its output. One CMakeLists.txt is 9 This module produces cmake (2.8.8+) input as its output. One CMakeLists.txt is
10 created for each configuration. 10 created for each configuration.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 'SHARED_INTERMEDIATE_DIR': '${obj}/gen', 48 'SHARED_INTERMEDIATE_DIR': '${obj}/gen',
49 'PRODUCT_DIR': '${builddir}', 49 'PRODUCT_DIR': '${builddir}',
50 'RULE_INPUT_PATH': '${RULE_INPUT_PATH}', 50 'RULE_INPUT_PATH': '${RULE_INPUT_PATH}',
51 'RULE_INPUT_DIRNAME': '${RULE_INPUT_DIRNAME}', 51 'RULE_INPUT_DIRNAME': '${RULE_INPUT_DIRNAME}',
52 'RULE_INPUT_NAME': '${RULE_INPUT_NAME}', 52 'RULE_INPUT_NAME': '${RULE_INPUT_NAME}',
53 'RULE_INPUT_ROOT': '${RULE_INPUT_ROOT}', 53 'RULE_INPUT_ROOT': '${RULE_INPUT_ROOT}',
54 'RULE_INPUT_EXT': '${RULE_INPUT_EXT}', 54 'RULE_INPUT_EXT': '${RULE_INPUT_EXT}',
55 'CONFIGURATION_NAME': '${configuration}', 55 'CONFIGURATION_NAME': '${configuration}',
56 } 56 }
57 57
58 FULL_PATH_VARS = ('${CMAKE_SOURCE_DIR}', '${builddir}', '${obj}') 58 FULL_PATH_VARS = ('${CMAKE_CURRENT_LIST_DIR}', '${builddir}', '${obj}')
59 59
60 generator_supports_multiple_toolsets = True 60 generator_supports_multiple_toolsets = True
61 generator_wants_static_library_dependencies_adjusted = True 61 generator_wants_static_library_dependencies_adjusted = True
62 62
63 COMPILABLE_EXTENSIONS = { 63 COMPILABLE_EXTENSIONS = {
64 '.c': 'cc', 64 '.c': 'cc',
65 '.cc': 'cxx', 65 '.cc': 'cxx',
66 '.cpp': 'cxx', 66 '.cpp': 'cxx',
67 '.cxx': 'cxx', 67 '.cxx': 'cxx',
68 '.s': 's', # cc 68 '.s': 's', # cc
(...skipping 27 matching lines...) Expand all
96 If rel_path is an absolute path it is returned unchanged. 96 If rel_path is an absolute path it is returned unchanged.
97 Otherwise it is resolved against base_path and normalized. 97 Otherwise it is resolved against base_path and normalized.
98 If the result is a relative path, it is forced to be relative to the 98 If the result is a relative path, it is forced to be relative to the
99 CMakeLists.txt. 99 CMakeLists.txt.
100 """ 100 """
101 if os.path.isabs(rel_path): 101 if os.path.isabs(rel_path):
102 return rel_path 102 return rel_path
103 if any([rel_path.startswith(var) for var in FULL_PATH_VARS]): 103 if any([rel_path.startswith(var) for var in FULL_PATH_VARS]):
104 return rel_path 104 return rel_path
105 # TODO: do we need to check base_path for absolute variables as well? 105 # TODO: do we need to check base_path for absolute variables as well?
106 return os.path.join('${CMAKE_SOURCE_DIR}', 106 return os.path.join('${CMAKE_CURRENT_LIST_DIR}',
107 os.path.normpath(os.path.join(base_path, rel_path))) 107 os.path.normpath(os.path.join(base_path, rel_path)))
108 108
109 109
110 def NormjoinPath(base_path, rel_path): 110 def NormjoinPath(base_path, rel_path):
111 """Resolves rel_path against base_path and returns the result. 111 """Resolves rel_path against base_path and returns the result.
112 TODO: what is this really used for? 112 TODO: what is this really used for?
113 If rel_path begins with '$' it is returned unchanged. 113 If rel_path begins with '$' it is returned unchanged.
114 Otherwise it is resolved against base_path if relative, then normalized. 114 Otherwise it is resolved against base_path if relative, then normalized.
115 """ 115 """
116 if rel_path.startswith('$') and not rel_path.startswith('${configuration}'): 116 if rel_path.startswith('$') and not rel_path.startswith('${configuration}'):
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 output.write('\n') 286 output.write('\n')
287 287
288 output.write(' COMMAND ') 288 output.write(' COMMAND ')
289 output.write(gyp.common.EncodePOSIXShellList(action['action'])) 289 output.write(gyp.common.EncodePOSIXShellList(action['action']))
290 output.write('\n') 290 output.write('\n')
291 291
292 output.write(' DEPENDS ') 292 output.write(' DEPENDS ')
293 WriteVariable(output, inputs_name) 293 WriteVariable(output, inputs_name)
294 output.write('\n') 294 output.write('\n')
295 295
296 output.write(' WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/') 296 output.write(' WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/')
297 output.write(path_to_gyp) 297 output.write(path_to_gyp)
298 output.write('\n') 298 output.write('\n')
299 299
300 output.write(' COMMENT ') 300 output.write(' COMMENT ')
301 if 'message' in action: 301 if 'message' in action:
302 output.write(action['message']) 302 output.write(action['message'])
303 else: 303 else:
304 output.write(action_target_name) 304 output.write(action_target_name)
305 output.write('\n') 305 output.write('\n')
306 306
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 output.write(' COMMAND ') 391 output.write(' COMMAND ')
392 output.write(gyp.common.EncodePOSIXShellList(rule['action'])) 392 output.write(gyp.common.EncodePOSIXShellList(rule['action']))
393 output.write('\n') 393 output.write('\n')
394 394
395 output.write(' DEPENDS ') 395 output.write(' DEPENDS ')
396 WriteVariable(output, inputs_name) 396 WriteVariable(output, inputs_name)
397 output.write(' ') 397 output.write(' ')
398 output.write(NormjoinPath(path_to_gyp, rule_source)) 398 output.write(NormjoinPath(path_to_gyp, rule_source))
399 output.write('\n') 399 output.write('\n')
400 400
401 # CMAKE_SOURCE_DIR is where the CMakeLists.txt lives. 401 # CMAKE_CURRENT_LIST_DIR is where the CMakeLists.txt lives.
402 # The cwd is the current build directory. 402 # The cwd is the current build directory.
403 output.write(' WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/') 403 output.write(' WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/')
404 output.write(path_to_gyp) 404 output.write(path_to_gyp)
405 output.write('\n') 405 output.write('\n')
406 406
407 output.write(' COMMENT ') 407 output.write(' COMMENT ')
408 if 'message' in rule: 408 if 'message' in rule:
409 output.write(rule['message']) 409 output.write(rule['message'])
410 else: 410 else:
411 output.write(action_name) 411 output.write(action_name)
412 output.write('\n') 412 output.write('\n')
413 413
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 output.write(' ') 515 output.write(' ')
516 output.write(dst) 516 output.write(dst)
517 output.write("\n") 517 output.write("\n")
518 518
519 output.write('DEPENDS') 519 output.write('DEPENDS')
520 for copy in (file_copy, dir_copy): 520 for copy in (file_copy, dir_copy):
521 if copy.inputs_name: 521 if copy.inputs_name:
522 WriteVariable(output, copy.inputs_name, ' ') 522 WriteVariable(output, copy.inputs_name, ' ')
523 output.write('\n') 523 output.write('\n')
524 524
525 output.write('WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/') 525 output.write('WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/')
526 output.write(path_to_gyp) 526 output.write(path_to_gyp)
527 output.write('\n') 527 output.write('\n')
528 528
529 output.write('COMMENT Copying for ') 529 output.write('COMMENT Copying for ')
530 output.write(target_name) 530 output.write(target_name)
531 output.write('\n') 531 output.write('\n')
532 532
533 output.write('VERBATIM\n') 533 output.write('VERBATIM\n')
534 output.write(')\n') 534 output.write(')\n')
535 535
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 1119
1120 # The following appears to be as-yet undocumented. 1120 # The following appears to be as-yet undocumented.
1121 # http://public.kitware.com/Bug/view.php?id=8392 1121 # http://public.kitware.com/Bug/view.php?id=8392
1122 output.write('enable_language(ASM)\n') 1122 output.write('enable_language(ASM)\n')
1123 # ASM-ATT does not support .S files. 1123 # ASM-ATT does not support .S files.
1124 # output.write('enable_language(ASM-ATT)\n') 1124 # output.write('enable_language(ASM-ATT)\n')
1125 1125
1126 if cc: 1126 if cc:
1127 SetVariable(output, 'CMAKE_ASM_COMPILER', cc) 1127 SetVariable(output, 'CMAKE_ASM_COMPILER', cc)
1128 1128
1129 SetVariable(output, 'builddir', '${CMAKE_BINARY_DIR}') 1129 SetVariable(output, 'builddir', '${CMAKE_CURRENT_BINARY_DIR}')
1130 SetVariable(output, 'obj', '${builddir}/obj') 1130 SetVariable(output, 'obj', '${builddir}/obj')
1131 output.write('\n') 1131 output.write('\n')
1132 1132
1133 # TODO: Undocumented/unsupported (the CMake Java generator depends on it). 1133 # TODO: Undocumented/unsupported (the CMake Java generator depends on it).
1134 # CMake by default names the object resulting from foo.c to be foo.c.o. 1134 # CMake by default names the object resulting from foo.c to be foo.c.o.
1135 # Gyp traditionally names the object resulting from foo.c foo.o. 1135 # Gyp traditionally names the object resulting from foo.c foo.o.
1136 # This should be irrelevant, but some targets extract .o files from .a 1136 # This should be irrelevant, but some targets extract .o files from .a
1137 # and depend on the name of the extracted .o files. 1137 # and depend on the name of the extracted .o files.
1138 output.write('set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)\n') 1138 output.write('set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)\n')
1139 output.write('set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)\n') 1139 output.write('set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)\n')
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1212 arglists.append((target_list, target_dicts, data, 1212 arglists.append((target_list, target_dicts, data,
1213 params, config_name)) 1213 params, config_name))
1214 pool.map(CallGenerateOutputForConfig, arglists) 1214 pool.map(CallGenerateOutputForConfig, arglists)
1215 except KeyboardInterrupt, e: 1215 except KeyboardInterrupt, e:
1216 pool.terminate() 1216 pool.terminate()
1217 raise e 1217 raise e
1218 else: 1218 else:
1219 for config_name in config_names: 1219 for config_name in config_names:
1220 GenerateOutputForConfig(target_list, target_dicts, data, 1220 GenerateOutputForConfig(target_list, target_dicts, data,
1221 params, config_name) 1221 params, config_name)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698