1set(files 2 adxintrin.h 3 altivec.h 4 ammintrin.h 5 amxintrin.h 6 arm_acle.h 7 arm_cmse.h 8 armintr.h 9 arm64intr.h 10 avx2intrin.h 11 avx512bf16intrin.h 12 avx512bwintrin.h 13 avx512bitalgintrin.h 14 avx512vlbitalgintrin.h 15 avx512cdintrin.h 16 avx512vpopcntdqintrin.h 17 avx512dqintrin.h 18 avx512erintrin.h 19 avx512fintrin.h 20 avx512ifmaintrin.h 21 avx512ifmavlintrin.h 22 avx512pfintrin.h 23 avx512vbmiintrin.h 24 avx512vbmivlintrin.h 25 avx512vbmi2intrin.h 26 avx512vlvbmi2intrin.h 27 avx512vlbf16intrin.h 28 avx512vlbwintrin.h 29 avx512vlcdintrin.h 30 avx512vldqintrin.h 31 avx512vlintrin.h 32 avx512vp2intersectintrin.h 33 avx512vlvp2intersectintrin.h 34 avx512vpopcntdqvlintrin.h 35 avx512vnniintrin.h 36 avx512vlvnniintrin.h 37 avxintrin.h 38 avxvnniintrin.h 39 bmi2intrin.h 40 bmiintrin.h 41 builtins.h 42 __clang_cuda_builtin_vars.h 43 __clang_cuda_math.h 44 __clang_cuda_cmath.h 45 __clang_cuda_complex_builtins.h 46 __clang_cuda_device_functions.h 47 __clang_cuda_intrinsics.h 48 __clang_cuda_libdevice_declares.h 49 __clang_cuda_math_forward_declares.h 50 __clang_cuda_runtime_wrapper.h 51 __clang_hip_libdevice_declares.h 52 __clang_hip_cmath.h 53 __clang_hip_math.h 54 __clang_hip_runtime_wrapper.h 55 cetintrin.h 56 cet.h 57 cldemoteintrin.h 58 clzerointrin.h 59 cpuid.h 60 clflushoptintrin.h 61 clwbintrin.h 62 emmintrin.h 63 enqcmdintrin.h 64 f16cintrin.h 65 float.h 66 fma4intrin.h 67 fmaintrin.h 68 fxsrintrin.h 69 gfniintrin.h 70 hexagon_circ_brev_intrinsics.h 71 hexagon_protos.h 72 hexagon_types.h 73 hvx_hexagon_protos.h 74 hresetintrin.h 75 htmintrin.h 76 htmxlintrin.h 77 ia32intrin.h 78 immintrin.h 79 intrin.h 80 inttypes.h 81 invpcidintrin.h 82 iso646.h 83 keylockerintrin.h 84 limits.h 85 lwpintrin.h 86 lzcntintrin.h 87 mm3dnow.h 88 mmintrin.h 89 mm_malloc.h 90 module.modulemap 91 movdirintrin.h 92 msa.h 93 mwaitxintrin.h 94 nmmintrin.h 95 opencl-c.h 96 opencl-c-base.h 97 pkuintrin.h 98 pmmintrin.h 99 pconfigintrin.h 100 popcntintrin.h 101 prfchwintrin.h 102 ptwriteintrin.h 103 rdseedintrin.h 104 rtmintrin.h 105 serializeintrin.h 106 sgxintrin.h 107 s390intrin.h 108 shaintrin.h 109 smmintrin.h 110 stdalign.h 111 stdarg.h 112 stdatomic.h 113 stdbool.h 114 stddef.h 115 __stddef_max_align_t.h 116 stdint.h 117 stdnoreturn.h 118 tbmintrin.h 119 tgmath.h 120 tmmintrin.h 121 tsxldtrkintrin.h 122 uintrintrin.h 123 unwind.h 124 vadefs.h 125 vaesintrin.h 126 varargs.h 127 vecintrin.h 128 vpclmulqdqintrin.h 129 waitpkgintrin.h 130 wasm_simd128.h 131 wbnoinvdintrin.h 132 wmmintrin.h 133 __wmmintrin_aes.h 134 __wmmintrin_pclmul.h 135 x86gprintrin.h 136 x86intrin.h 137 xmmintrin.h 138 xopintrin.h 139 xsavecintrin.h 140 xsaveintrin.h 141 xsaveoptintrin.h 142 xsavesintrin.h 143 xtestintrin.h 144 ) 145 146set(cuda_wrapper_files 147 cuda_wrappers/algorithm 148 cuda_wrappers/complex 149 cuda_wrappers/new 150) 151 152set(ppc_wrapper_files 153 ppc_wrappers/mmintrin.h 154 ppc_wrappers/xmmintrin.h 155 ppc_wrappers/mm_malloc.h 156 ppc_wrappers/emmintrin.h 157 ppc_wrappers/pmmintrin.h 158 ppc_wrappers/tmmintrin.h 159 ppc_wrappers/smmintrin.h 160) 161 162set(openmp_wrapper_files 163 openmp_wrappers/math.h 164 openmp_wrappers/cmath 165 openmp_wrappers/complex.h 166 openmp_wrappers/complex 167 openmp_wrappers/__clang_openmp_device_functions.h 168 openmp_wrappers/complex_cmath.h 169 openmp_wrappers/new 170) 171 172set(output_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include) 173set(out_files) 174set(generated_files) 175 176function(copy_header_to_output_dir src_dir file) 177 set(src ${src_dir}/${file}) 178 set(dst ${output_dir}/${file}) 179 add_custom_command(OUTPUT ${dst} 180 DEPENDS ${src} 181 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst} 182 COMMENT "Copying clang's ${file}...") 183 list(APPEND out_files ${dst}) 184 set(out_files ${out_files} PARENT_SCOPE) 185endfunction(copy_header_to_output_dir) 186 187function(clang_generate_header td_option td_file out_file) 188 clang_tablegen(${out_file} ${td_option} 189 -I ${CLANG_SOURCE_DIR}/include/clang/Basic/ 190 SOURCE ${CLANG_SOURCE_DIR}/include/clang/Basic/${td_file}) 191 192 copy_header_to_output_dir(${CMAKE_CURRENT_BINARY_DIR} ${out_file}) 193 set(out_files ${out_files} PARENT_SCOPE) 194 list(APPEND generated_files "${CMAKE_CURRENT_BINARY_DIR}/${out_file}") 195 set(generated_files ${generated_files} PARENT_SCOPE) 196endfunction(clang_generate_header) 197 198 199# Copy header files from the source directory to the build directory 200foreach( f ${files} ${cuda_wrapper_files} ${ppc_wrapper_files} ${openmp_wrapper_files}) 201 copy_header_to_output_dir(${CMAKE_CURRENT_SOURCE_DIR} ${f}) 202endforeach( f ) 203 204# Generate header files and copy them to the build directory 205# Generate arm_neon.h 206clang_generate_header(-gen-arm-neon arm_neon.td arm_neon.h) 207# Generate arm_fp16.h 208clang_generate_header(-gen-arm-fp16 arm_fp16.td arm_fp16.h) 209# Generate arm_sve.h 210clang_generate_header(-gen-arm-sve-header arm_sve.td arm_sve.h) 211# Generate arm_bf16.h 212clang_generate_header(-gen-arm-bf16 arm_bf16.td arm_bf16.h) 213# Generate arm_mve.h 214clang_generate_header(-gen-arm-mve-header arm_mve.td arm_mve.h) 215# Generate arm_cde.h 216clang_generate_header(-gen-arm-cde-header arm_cde.td arm_cde.h) 217# Generate riscv_vector.h 218clang_generate_header(-gen-riscv-vector-header riscv_vector.td riscv_vector.h) 219 220add_custom_target(clang-resource-headers ALL DEPENDS ${out_files}) 221set_target_properties(clang-resource-headers PROPERTIES 222 FOLDER "Misc" 223 RUNTIME_OUTPUT_DIRECTORY "${output_dir}") 224 225set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) 226 227install( 228 FILES ${files} ${generated_files} 229 DESTINATION ${header_install_dir} 230 COMPONENT clang-resource-headers) 231 232install( 233 FILES ${cuda_wrapper_files} 234 DESTINATION ${header_install_dir}/cuda_wrappers 235 COMPONENT clang-resource-headers) 236 237install( 238 FILES ${ppc_wrapper_files} 239 DESTINATION ${header_install_dir}/ppc_wrappers 240 COMPONENT clang-resource-headers) 241 242install( 243 FILES ${openmp_wrapper_files} 244 DESTINATION ${header_install_dir}/openmp_wrappers 245 COMPONENT clang-resource-headers) 246 247if (NOT LLVM_ENABLE_IDE) 248 add_llvm_install_targets(install-clang-resource-headers 249 DEPENDS clang-resource-headers 250 COMPONENT clang-resource-headers) 251endif() 252