Home | History | Annotate | Download | only in include
      1 set(files
      2   altivec.h
      3   ammintrin.h
      4   avxintrin.h
      5   avx2intrin.h
      6   bmiintrin.h
      7   bmi2intrin.h
      8   emmintrin.h
      9   f16cintrin.h
     10   float.h
     11   fma4intrin.h
     12   fmaintrin.h
     13   immintrin.h
     14   iso646.h
     15   limits.h
     16   lzcntintrin.h
     17   mm3dnow.h
     18   mmintrin.h
     19   mm_malloc.h
     20   nmmintrin.h
     21   pmmintrin.h
     22   popcntintrin.h
     23   prfchwintrin.h
     24   rdseedintrin.h
     25   rtmintrin.h
     26   smmintrin.h
     27   stdalign.h
     28   stdarg.h
     29   stdbool.h
     30   stddef.h
     31   stdint.h
     32   stdnoreturn.h
     33   tgmath.h
     34   tmmintrin.h
     35   varargs.h
     36   wmmintrin.h
     37   __wmmintrin_aes.h
     38   __wmmintrin_pclmul.h
     39   x86intrin.h
     40   xmmintrin.h
     41   xopintrin.h
     42   cpuid.h
     43   unwind.h
     44   module.map
     45   )
     46 
     47 set(output_dir ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/include)
     48 
     49 # If we are in an IDE that has a configuration directory, we need to
     50 # create a second copy of the headers so that 'clang' can find them if
     51 # it's run from the build directory.
     52 if(MSVC_IDE OR XCODE)
     53    set(other_output_dir ${LLVM_BINARY_DIR}/bin/lib/clang/${CLANG_VERSION}/include)
     54 endif()
     55 
     56 # Generate arm_neon.h
     57 clang_tablegen(arm_neon.h.inc -gen-arm-neon
     58   SOURCE ${CLANG_SOURCE_DIR}/include/clang/Basic/arm_neon.td)
     59 
     60 set(out_files)
     61 foreach( f ${files} )
     62   set( src ${CMAKE_CURRENT_SOURCE_DIR}/${f} )
     63   set( dst ${output_dir}/${f} )
     64   add_custom_command(OUTPUT ${dst}
     65     DEPENDS ${src}
     66     COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
     67     COMMENT "Copying clang's ${f}...")
     68   list(APPEND out_files ${dst})
     69 
     70   if(other_output_dir)
     71    set(other_dst ${other_output_dir}/${f})
     72     add_custom_command(OUTPUT ${other_dst}
     73       DEPENDS ${src}
     74       COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${other_dst}
     75       COMMENT "Copying clang's ${f}...")    
     76     list(APPEND out_files ${other_dst})
     77   endif()
     78 endforeach( f )
     79 
     80 add_custom_command(OUTPUT ${output_dir}/arm_neon.h 
     81   DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h.inc
     82   COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h.inc ${output_dir}/arm_neon.h
     83   COMMENT "Copying clang's arm_neon.h...")
     84 list(APPEND out_files ${output_dir}/arm_neon.h)
     85 
     86 if (other_output_dir)
     87     set(other_dst ${other_output_dir}/arm_neon.h)
     88     add_custom_command(OUTPUT ${other_dst}
     89       DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h.inc
     90       COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h.inc ${other_dst}
     91       COMMENT "Copying clang's arm_neon.h...")
     92     list(APPEND out_files ${other_dst})
     93 endif ()
     94 
     95 add_custom_target(clang-headers ALL DEPENDS ${out_files})
     96 set_target_properties(clang-headers PROPERTIES FOLDER "Misc")
     97 
     98 if (other_output_dir)
     99 	if(UNIX)
    100 		add_custom_command(TARGET clang-headers POST_BUILD
    101             COMMAND ${CMAKE_COMMAND} -E make_directory "${LLVM_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}"
    102 	    	COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLVM_BINARY_DIR}/bin/lib/clang" "${LLVM_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/clang")
    103 	endif()
    104 endif ()
    105 
    106 install(FILES ${files} ${output_dir}/arm_neon.h
    107   PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
    108   DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
    109