|
1 |
| -set(RUNTIME_PATH ${CMAKE_CURRENT_SOURCE_DIR}/runtime) |
2 |
| -set(RUNTIME_TOOLS_PATH ${RUNTIME_PATH}/tools) |
3 |
| -set(RUNTIME_NATIVE_PATH ${RUNTIME_PATH}/native) |
4 |
| -set(PREAMBLE ${CMAKE_CURRENT_BINARY_DIR}/runtime/native/lib/preamble.ll) |
5 |
| - |
6 |
| -set(PHASE src) |
7 |
| - |
8 |
| -add_subdirectory(runtime) # Sets PRELUDE_SOURCES.${PHASE}. |
9 |
| -add_subdirectory(frontend) # Sets FRONTEND_SOURCES. |
10 |
| -add_subdirectory(utils) # Sets UTILS_SOURCES. |
11 |
| -add_subdirectory(project) # Sets PROJECT_SOURCES. |
12 |
| -add_subdirectory(native) # Sets COMPILER_SOURCES. |
13 |
| -add_subdirectory(server) |
14 |
| -add_subdirectory(tools) |
15 |
| -add_subdirectory(nuclide) |
| 1 | +if(EXTERN_LKG) |
| 2 | + message("************************************************************************") |
| 3 | + message("************************************************************************") |
| 4 | + message("** Using external LKG: ${EXTERN_LKG} **") |
| 5 | + message("************************************************************************") |
| 6 | + message("************************************************************************") |
16 | 7 |
|
17 |
| -set(PHASE) |
18 | 8 |
|
19 |
| -# ------------------------------------------------------------------------------ |
| 9 | + if(NOT EXISTS ${EXTERN_LKG}/bin/skip_to_llvm) |
| 10 | + message(FATAL_ERROR "${EXTERN_LKG}/bin/skip_to_llvm not found. Did you already build skip_to_llvm in your external LKG?") |
| 11 | + endif() |
20 | 12 |
|
21 |
| -# Bootstrap takes the current src/ code and promotes it to lkg/ |
| 13 | + # When using an external LKG we don't want to actually depend on it - just use |
| 14 | + # it. It's up to the user to rebuild it properly. |
22 | 15 |
|
23 |
| -set(CHECK_LKG_COMMANDS) |
24 |
| -set(UPDATE_LKG_COMMANDS) |
| 16 | + add_executable(skip_to_llvm.lkg IMPORTED GLOBAL) |
| 17 | + set_target_properties(skip_to_llvm.lkg PROPERTIES |
| 18 | + IMPORTED_LOCATION ${EXTERN_LKG}/bin/skip_to_llvm |
| 19 | + OUTPUT_NAME skip_to_llvm |
| 20 | + RUNTIME_OUTPUT_DIRECTORY ${EXTERN_LKG}/bin |
| 21 | + ) |
25 | 22 |
|
26 |
| -set(src_ll ${CMAKE_CURRENT_BINARY_DIR}/native/lkg_prep_skip_to_llvm.ll) |
27 |
| -set(stage_ll ${CMAKE_CURRENT_BINARY_DIR}/skip_to_llvm.ll) |
28 |
| -set(lkg_ll ${LKG_DIR}/skip_to_llvm.ll.bz2) |
29 |
| -set(cmd awk '{print >out}; /; -* END OF PREAMBLE -*/{out=\"${stage_ll}\"}' out=/dev/null ${src_ll}) |
30 |
| -add_command_target( |
31 |
| - stage_skip_to_llvm_ll |
32 |
| - OUTPUT ${stage_ll} |
33 |
| - COMMAND "${cmd}" |
34 |
| - DEPENDS ${src_ll} |
35 |
| -) |
| 23 | + return() |
| 24 | +endif() |
36 | 25 |
|
37 |
| -set(SRC_RUNTIME ${CMAKE_SOURCE_DIR}/src/runtime) |
38 |
| -set(TESTS_RUNTIME ${CMAKE_SOURCE_DIR}/tests/runtime) |
39 |
| -set(LKG_RUNTIME ${CMAKE_SOURCE_DIR}/lkg/runtime) |
| 26 | +set(PHASE lkg) |
| 27 | +add_subdirectory(runtime/native) |
| 28 | +set(PHASE) |
40 | 29 |
|
41 |
| -add_custom_target(build_lkg |
42 |
| - DEPENDS stage_skip_to_llvm_ll |
| 30 | +# This is needed for the cxx targets defined in this file. |
| 31 | +if(CMAKE_COMPILER_IS_GNUCXX AND |
| 32 | + CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0) |
| 33 | + add_compile_options(-faligned-new) |
| 34 | +endif() |
| 35 | + |
| 36 | +recursiveGlobSources(EXTC_FILES |
| 37 | + ${CMAKE_CURRENT_SOURCE_DIR}/runtime/native/include/skip/*-extc.h |
| 38 | + ${CMAKE_CURRENT_SOURCE_DIR}/runtime/native/include/skip/plugin/skip_plugin.h |
| 39 | + ${CMAKE_CURRENT_SOURCE_DIR}/runtime/native/include/skip/rvmi/rvmi.h |
43 | 40 | )
|
44 | 41 |
|
45 |
| -add_custom_target(check_lkg |
46 |
| - COMMAND ${TOOLS_DIR}/check_lkg_file ${stage_ll} ${lkg_ll} |
47 |
| - COMMAND ${TOOLS_DIR}/check_lkg_file ${SRC_RUNTIME}/CMakeLists.txt ${LKG_RUNTIME}/CMakeLists.txt |
48 |
| - COMMAND ${TOOLS_DIR}/check_lkg_file ${SRC_RUNTIME}/native ${LKG_RUNTIME}/native |
49 |
| - COMMAND ${TOOLS_DIR}/check_lkg_file ${SRC_RUNTIME}/tools ${LKG_RUNTIME}/tools |
50 |
| - DEPENDS stage_skip_to_llvm_ll |
| 42 | +set(preamble_ll ${CMAKE_CURRENT_BINARY_DIR}/tmp/preamble.ll) |
| 43 | + |
| 44 | +add_custom_command( |
| 45 | + OUTPUT ${preamble_ll} |
| 46 | + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/runtime/tools/gen_preamble |
| 47 | + preamble |
| 48 | + --compiler ${CLANG_EXECUTABLE} |
| 49 | + -o ${preamble_ll} |
| 50 | + $<$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>,$<CONFIG:MinSizeRel>>:--ndebug> |
| 51 | + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/runtime/tools/gen_preamble ${EXTC_FILES} |
51 | 52 | )
|
52 | 53 |
|
53 |
| -add_custom_target(update_lkg_compiler |
54 |
| - COMMAND ${TOOLS_DIR}/check_lkg_file --update ${stage_ll} ${lkg_ll} |
55 |
| - # Using rsync like this copies only if changed |
56 |
| - COMMAND rsync -rc ${SRC_RUNTIME}/CMakeLists.txt ${LKG_RUNTIME}/CMakeLists.txt |
57 |
| - COMMAND rsync -rc --delete ${SRC_RUNTIME}/native/ ${LKG_RUNTIME}/native |
58 |
| - COMMAND rsync -rc --delete ${SRC_RUNTIME}/tools/ ${LKG_RUNTIME}/tools |
59 |
| - DEPENDS stage_skip_to_llvm_ll |
| 54 | + |
| 55 | +add_custom_target(lkg) |
| 56 | + |
| 57 | +set(ll ${CMAKE_CURRENT_SOURCE_DIR}/skip_to_llvm.ll.bz2) |
| 58 | +set(gen_ll ${CMAKE_CURRENT_BINARY_DIR}/tmp/skip_to_llvm.gen.ll) |
| 59 | +set(gen_o ${CMAKE_CURRENT_BINARY_DIR}/tmp/skip_to_llvm.gen.o) |
| 60 | + |
| 61 | +add_custom_command( |
| 62 | + OUTPUT ${gen_ll} |
| 63 | + COMMAND cat ${preamble_ll} > ${gen_ll} |
| 64 | + COMMAND bzcat ${ll} >> ${gen_ll} |
| 65 | + DEPENDS ${preamble_ll} ${ll} |
60 | 66 | )
|
61 | 67 |
|
62 |
| -add_custom_target(update_lkg |
63 |
| - DEPENDS update_lkg_compiler |
| 68 | +add_custom_command( |
| 69 | + OUTPUT ${gen_o} |
| 70 | + COMMAND echo Building LKG skip_to_llvm.o |
| 71 | + COMMAND ${CLANG_EXECUTABLE} -fPIC -c -o ${gen_o} ${gen_ll} |
| 72 | + DEPENDS ${gen_ll} |
64 | 73 | )
|
65 | 74 |
|
66 |
| -add_custom_target(check_runtimes |
67 |
| - COMMAND ${TOOLS_DIR}/check_runtime_file ${SRC_RUNTIME} ${TESTS_RUNTIME} |
68 |
| -) |
69 |
| -add_dependencies(test check_runtimes) |
| 75 | +add_executable(skip_to_llvm.lkg |
| 76 | + ${gen_o} |
| 77 | + ${CMAKE_CURRENT_SOURCE_DIR}/runtime/native/src/sk_standalone.cpp |
| 78 | + ) |
| 79 | +set_target_properties(skip_to_llvm.lkg |
| 80 | + PROPERTIES |
| 81 | + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin |
| 82 | + OUTPUT_NAME skip_to_llvm |
| 83 | + ) |
| 84 | +target_link_libraries(skip_to_llvm.lkg skip_runtime.lkg) |
70 | 85 |
|
71 |
| -add_custom_target(check_pretty_printed |
72 |
| - COMMAND ${TOOLS_DIR}/check_pretty_printed ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/pretty_printed.testok |
73 |
| - DEPENDS skip_printer |
74 |
| -) |
75 |
| -add_dependencies(test check_pretty_printed) |
| 86 | +#add_command_target( |
| 87 | +# skip_to_llvm.lkg |
| 88 | +# OUTPUT ${binary_name} |
| 89 | +# COMMAND echo Building LKG skip_to_llvm |
| 90 | +# COMMAND |
| 91 | +# ${CLANG_EXECUTABLE} |
| 92 | +# -o ${binary_name} |
| 93 | +# ${gen_ll} |
| 94 | +# ${CMAKE_CURRENT_SOURCE_DIR}/runtime/native/src/sk_standalone.cpp |
| 95 | +# `pkg-config --cflags --libs ${CMAKE_CURRENT_BINARY_DIR}/runtime/native/native_cc.pc` |
| 96 | +# -pthread |
| 97 | +# DEPENDS |
| 98 | +# skip_runtime.lkg ${gen_ll} native_cc.lkg |
| 99 | +# ${CMAKE_CURRENT_SOURCE_DIR}/runtime/native/src/sk_standalone.cpp |
| 100 | +# ) |
76 | 101 |
|
77 |
| -add_custom_target(check_cpp_format |
78 |
| - COMMAND ${CMAKE_SOURCE_DIR}/tools/check_cpp_format ${CMAKE_SOURCE_DIR} ${CLANG_EXECUTABLE} |
79 |
| -) |
80 |
| -add_dependencies(test check_cpp_format) |
| 102 | +add_dependencies(lkg skip_to_llvm.lkg) |
0 commit comments