1set(files
2  altivec.h
3  ammintrin.h
4  arm_acle.h
5  avxintrin.h
6  avx2intrin.h
7  bmiintrin.h
8  bmi2intrin.h
9  emmintrin.h
10  f16cintrin.h
11  float.h
12  fma4intrin.h
13  fmaintrin.h
14  ia32intrin.h
15  immintrin.h
16  iso646.h
17  Intrin.h
18  limits.h
19  lzcntintrin.h
20  mm3dnow.h
21  mmintrin.h
22  mm_malloc.h
23  nmmintrin.h
24  pmmintrin.h
25  popcntintrin.h
26  prfchwintrin.h
27  rdseedintrin.h
28  rtmintrin.h
29  shaintrin.h
30  smmintrin.h
31  stdalign.h
32  stdarg.h
33  stdbool.h
34  stddef.h
35  stdint.h
36  stdnoreturn.h
37  tbmintrin.h
38  tgmath.h
39  tmmintrin.h
40  varargs.h
41  wmmintrin.h
42  __wmmintrin_aes.h
43  __wmmintrin_pclmul.h
44  x86intrin.h
45  xmmintrin.h
46  xopintrin.h
47  cpuid.h
48  unwind.h
49  module.modulemap
50  )
51
52set(output_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include)
53
54# Generate arm_neon.h
55clang_tablegen(arm_neon.h -gen-arm-neon
56  SOURCE ${CLANG_SOURCE_DIR}/include/clang/Basic/arm_neon.td)
57
58set(out_files)
59foreach( f ${files} )
60  set( src ${CMAKE_CURRENT_SOURCE_DIR}/${f} )
61  set( dst ${output_dir}/${f} )
62  add_custom_command(OUTPUT ${dst}
63    DEPENDS ${src}
64    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
65    COMMENT "Copying clang's ${f}...")
66  list(APPEND out_files ${dst})
67endforeach( f )
68
69add_custom_command(OUTPUT ${output_dir}/arm_neon.h 
70  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h
71  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h ${output_dir}/arm_neon.h
72  COMMENT "Copying clang's arm_neon.h...")
73list(APPEND out_files ${output_dir}/arm_neon.h)
74
75add_custom_target(clang-headers ALL DEPENDS ${out_files})
76set_target_properties(clang-headers PROPERTIES FOLDER "Misc")
77
78install(
79  FILES ${files} ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h
80  PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
81  DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
82