blob: eb4bd0c9a49ee1859cc125b02099ee35ea7daf35 [file] [log] [blame]
Douglas Gregor7f7b7482009-08-23 05:28:29 +00001# Clang version information
2set(CLANG_VERSION 1.0)
3
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +00004macro(add_clang_library name)
Cedric Venetfe2f8082008-11-02 16:28:53 +00005 set(srcs ${ARGN})
Ted Kremenekbf5de3f2009-03-25 20:34:07 +00006 if(MSVC_IDE OR XCODE)
Douglas Gregorf5216f22009-06-17 18:31:02 +00007 file( GLOB_RECURSE headers *.h *.td *.def)
Cedric Venetfe2f8082008-11-02 16:28:53 +00008 set(srcs ${srcs} ${headers})
9 string( REGEX MATCHALL "/[^/]+" split_path ${CMAKE_CURRENT_SOURCE_DIR})
10 list( GET split_path -1 dir)
Douglas Gregorf5216f22009-06-17 18:31:02 +000011 file( GLOB_RECURSE headers
12 ../../include/clang${dir}/*.h
13 ../../include/clang${dir}/*.td
14 ../../include/clang${dir}/*.def)
Cedric Venetfe2f8082008-11-02 16:28:53 +000015 set(srcs ${srcs} ${headers})
Ted Kremenekbf5de3f2009-03-25 20:34:07 +000016 endif(MSVC_IDE OR XCODE)
Cedric Venetfe2f8082008-11-02 16:28:53 +000017 add_library( ${name} ${srcs} )
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +000018 if( LLVM_COMMON_DEPENDS )
19 add_dependencies( ${name} ${LLVM_COMMON_DEPENDS} )
20 endif( LLVM_COMMON_DEPENDS )
Douglas Gregora393e9e2009-03-16 23:06:59 +000021 add_dependencies(${name} ClangDiagnosticCommon)
Cedric Venet1c212a02008-12-13 11:00:04 +000022 if(MSVC)
23 get_target_property(cflag ${name} COMPILE_FLAGS)
24 if(NOT cflag)
25 set(cflag "")
26 endif(NOT cflag)
27 set(cflag "${cflag} /Za")
28 set_target_properties(${name} PROPERTIES COMPILE_FLAGS ${cflag})
29 endif(MSVC)
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +000030 install(TARGETS ${name}
31 LIBRARY DESTINATION lib
Oscar Fuentes755f3df2009-06-12 02:54:12 +000032 ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +000033endmacro(add_clang_library)
34
35macro(add_clang_executable name)
Cedric Venetfe2f8082008-11-02 16:28:53 +000036 set(srcs ${ARGN})
37 if(MSVC_IDE)
Douglas Gregorf5216f22009-06-17 18:31:02 +000038 file( GLOB_RECURSE headers *.h *.td *.def)
Cedric Venetfe2f8082008-11-02 16:28:53 +000039 set(srcs ${srcs} ${headers})
40 endif(MSVC_IDE)
41 add_llvm_executable( ${name} ${srcs} )
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +000042endmacro(add_clang_executable)
43
44include_directories(
45 ${CMAKE_CURRENT_SOURCE_DIR}/include
Douglas Gregora393e9e2009-03-16 23:06:59 +000046 ${CMAKE_CURRENT_BINARY_DIR}/include
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +000047 )
48
Chris Lattnerbc6ec752008-11-11 18:39:10 +000049install(DIRECTORY include
50 DESTINATION .
51 PATTERN ".svn" EXCLUDE
52 )
53
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +000054add_definitions( -D_GNU_SOURCE )
55
Douglas Gregora393e9e2009-03-16 23:06:59 +000056add_subdirectory(include)
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +000057add_subdirectory(lib)
Daniel Dunbarcbcd98b2009-03-24 02:52:57 +000058add_subdirectory(tools)
Oscar Fuentesd2f4e5e2008-10-26 00:56:18 +000059
60# TODO: docs.
Douglas Gregoreb357b62009-06-05 16:00:31 +000061add_subdirectory(test)