Lines Matching +full:write +full:- +full:output
5 # Use of this source code is governed by a BSD-style license that can be
12 gn gen out/config --ide=json --json-ide-script=../../gn/gn_to_cmake.py
16 gn gen out/config --ide=json
19 The first is recommended, as it will auto-update.
49 CMP0037 in CMake 3.0 restricts target names to "^[A-Za-z0-9_.:+-]+$"
53 if c in string.ascii_letters or c in string.digits or c in '_.+-':
62 out.write('set("')
63 out.write(CMakeStringEscape(variable_name))
64 out.write('" "')
65 out.write(CMakeStringEscape(value))
66 out.write('")\n')
75 out.write('list(APPEND "')
76 out.write(CMakeStringEscape(variable_name))
77 out.write('"\n "')
78 out.write('"\n "'.join([CMakeStringEscape(value) for value in values]))
79 out.write('")\n')
82 def SetFilesProperty(output, variable, property_name, values, sep): argument
84 output.write('set_source_files_properties(')
85 WriteVariable(output, variable)
86 output.write(' PROPERTIES ')
87 output.write(property_name)
88 output.write(' "')
90 output.write(CMakeStringEscape(value))
91 output.write(sep)
92 output.write('")\n')
97 out.write('set_target_properties("${target}" PROPERTIES ')
98 out.write(property_name)
99 out.write(' "')
101 out.write(CMakeStringEscape(value))
102 out.write(sep)
103 out.write('")\n')
106 def WriteVariable(output, variable_name, prepend=None): argument
108 output.write(prepend)
109 output.write('${')
110 output.write(variable_name)
111 output.write('}')
204 if toolchain_separator == -1:
210 toolchain = gn_target_name[toolchain_separator + 1:-1]
221 cmake_target_name += '--' + toolchain
237 for output in target.properties.get('outputs', []):
238 output_abs_path = project.GetAbsolutePath(output)
246 out.write('add_custom_command(OUTPUT ')
248 out.write('\n')
251 out.write(' COMMAND ${CMAKE_COMMAND} -E make_directory "')
252 out.write('" "'.join(map(CMakeStringEscape, output_directories)))
253 out.write('"\n')
257 out.write(' COMMAND python3 "')
258 out.write(CMakeStringEscape(project.GetAbsolutePath(script)))
259 out.write('"')
261 out.write('\n "')
262 out.write('"\n "'.join(map(CMakeStringEscape, arguments)))
263 out.write('"')
264 out.write('\n')
266 out.write(' DEPENDS ')
269 out.write('\n')
273 out.write(' WORKING_DIRECTORY "')
274 out.write(CMakeStringEscape(project.build_path))
275 out.write('"\n')
277 out.write(' COMMENT "Action: ${target}"\n')
279 out.write(' VERBATIM)\n')
305 for output in all_outputs[outputs_per_input * count:
307 output_abs_path = project.GetAbsolutePath(output)
315 out.write('add_custom_command(OUTPUT ')
317 out.write('\n')
320 out.write(' COMMAND ${CMAKE_COMMAND} -E make_directory "')
321 out.write('" "'.join(map(CMakeStringEscape, output_directories)))
322 out.write('"\n')
327 out.write(' COMMAND python3 "')
328 out.write(CMakeStringEscape(project.GetAbsolutePath(script)))
329 out.write('"')
331 out.write('\n "')
333 out.write('"\n "'.join(map(CMakeStringEscape, map(expand,arguments))))
334 out.write('"')
335 out.write('\n')
337 out.write(' DEPENDS')
340 out.write(' "')
341 out.write(CMakeStringEscape(source_abs_path))
342 out.write('"\n')
346 out.write(' WORKING_DIRECTORY "')
347 out.write(CMakeStringEscape(project.build_path))
348 out.write('"\n')
350 out.write(' COMMENT "Action ${target} on ')
351 out.write(CMakeStringEscape(source_abs_path))
352 out.write('"\n')
354 out.write(' VERBATIM)\n')
365 for output in raw_outputs:
366 output_abs_path = project.GetAbsolutePath(output)
371 out.write('add_custom_command(OUTPUT ')
373 out.write('\n')
381 out.write(' COMMAND ${CMAKE_COMMAND} -E copy "')
383 out.write(' COMMAND ${CMAKE_COMMAND} -E copy_directory "')
384 out.write(abs_src_path)
385 out.write('" "')
386 out.write(CMakeStringEscape(dst))
387 out.write('"\n')
389 out.write(' DEPENDS ')
392 out.write('\n')
394 out.write(' WORKING_DIRECTORY "')
395 out.write(CMakeStringEscape(project.build_path))
396 out.write('"\n')
398 out.write(' COMMENT "Copy ${target}"\n')
400 out.write(' VERBATIM)\n')
422 # This includes using 'source_outputs' to direct compiler output.
427 out.write('set_property(TARGET "${target}" ')
428 out.write('APPEND PROPERTY INCLUDE_DIRECTORIES')
430 out.write('\n "')
431 out.write(project.GetAbsolutePath(include_dir))
432 out.write('"')
433 out.write(')\n')
519 # Only executables and non-OBJECT libraries may reference an OBJECT library.
538 out.write('\n#')
539 out.write(target.gn_name)
540 out.write('\n')
559 out.write(target.cmake_type.command)
560 out.write('("${target}"')
562 out.write(' ')
563 out.write(target.cmake_type.modifier)
567 out.write(' DEPENDS')
570 out.write(')\n')
600 # Non-library dependencies.
602 out.write('add_dependencies("${target}"')
604 out.write('\n "')
605 out.write(nonlibrary)
606 out.write('"')
607 out.write(')\n')
609 # Non-OBJECT library dependencies.
623 external_library = external_library[:-len('.framework')]
627 out.write('find_library("')
628 out.write(CMakeStringEscape(system_library))
629 out.write('" "')
630 out.write(CMakeStringEscape(external_library))
631 out.write('"')
633 out.write(' PATHS "')
635 out.write('"')
636 out.write(')\n')
638 out.write('target_link_libraries("${target}"')
640 out.write(' INTERFACE')
642 out.write('\n "')
643 out.write(CMakeStringEscape(library))
644 out.write('"')
647 out.write('"')
648 out.write(')\n')
654 out.write('# Generated by gn_to_cmake.py.\n')
655 out.write('cmake_minimum_required(VERSION 3.7 FATAL_ERROR)\n')
656 out.write('cmake_policy(VERSION 3.7)\n')
657 out.write('project(Skia)\n\n')
659 out.write('file(WRITE "')
660 out.write(CMakeStringEscape(posixpath.join(project.build_path, "empty.cpp")))
661 out.write('")\n')
665 # gn gen out/config --ide=json --json-ide-script=../../gn/gn_to_cmake.py
667 out.write('execute_process(COMMAND\n')
668 out.write(' ninja -C "')
669 out.write(CMakeStringEscape(project.build_path))
670 out.write('" build.ninja\n')
671 out.write(' RESULT_VARIABLE ninja_result)\n')
672 out.write('if (ninja_result)\n')
673 out.write(' message(WARNING ')
674 out.write('"Regeneration failed running ninja: ${ninja_result}")\n')
675 out.write('endif()\n')
677 out.write('include("')
678 out.write(CMakeStringEscape(extName))
679 out.write('")\n')
681 out.write('include_directories(SYSTEM $ENV{EMSDK}/upstream/emscripten/system/include/)\n')
685 out.write('# Generated by gn_to_cmake.py.\n')
686 out.write('cmake_minimum_required(VERSION 3.7 FATAL_ERROR)\n')
687 out.write('cmake_policy(VERSION 3.7)\n')
689 # The following appears to be as-yet undocumented.
691 out.write('enable_language(ASM)\n\n')
692 # ASM-ATT does not support .S files.
693 # output.write('enable_language(ASM-ATT)\n')
695 # Current issues with automatic re-generation:
701 out.write('file(READ "')
703 out.write(CMakeStringEscape(gn_deps_file))
704 out.write('" "gn_deps_file_content")\n')
706 out.write('string(REGEX REPLACE "^[^:]*: " "" ')
707 out.write('gn_deps_string ${gn_deps_file_content})\n')
711 out.write('string(REPLACE " " ";" "gn_deps" ${gn_deps_string})\n')
712 out.write('foreach("gn_dep" ${gn_deps})\n')
713 out.write(' configure_file("')
714 out.write(CMakeStringEscape(project.build_path))
715 out.write('${gn_dep}" "CMakeLists.devnull" COPYONLY)\n')
716 out.write('endforeach("gn_dep")\n')
718 out.write('list(APPEND other_deps "')
719 out.write(CMakeStringEscape(os.path.abspath(__file__)))
720 out.write('")\n')
721 out.write('foreach("other_dep" ${other_deps})\n')
722 out.write(' configure_file("${other_dep}" "CMakeLists.devnull" COPYONLY)\n')
723 out.write('endforeach("other_dep")\n')
726 out.write('\n')