@@ -41,7 +41,18 @@ get_filename_component(LLVM_ABSOLUTE_DIR
41
41
42
42
set (LLVM_DIR "${LLVM_ABSOLUTE_DIR} " CACHE FILEPATH "b" FORCE)
43
43
44
- message ("found llvm dir " ${LLVM_DIR} )
44
+ if (NOT DEFINED LLVM_EXTERNAL_LIT)
45
+ if (LLVM_DIR MATCHES ".*/cmake/llvm/?$" )
46
+ message ("found llvm match ${CMAKE_MATCH_1} dir ${LLVM_DIR} " )
47
+ if (EXISTS ${LLVM_DIR} /../../../bin/llvm-lit)
48
+ set (LLVM_EXTERNAL_LIT ${LLVM_DIR} /../../../bin/llvm-lit)
49
+ endif ()
50
+ else ()
51
+ if (EXISTS ${LLVM_DIR} /bin/llvm-lit)
52
+ set (LLVM_EXTERNAL_LIT ${LLVM_DIR} /bin/llvm-lit)
53
+ endif ()
54
+ endif ()
55
+ endif ()
45
56
46
57
get_filename_component (LLVM_ABSOLUTE_LIT
47
58
"${LLVM_EXTERNAL_LIT} "
@@ -50,15 +61,55 @@ get_filename_component(LLVM_ABSOLUTE_LIT
50
61
set (LLVM_EXTERNAL_LIT "${LLVM_ABSOLUTE_LIT} " CACHE FILEPATH "a" FORCE)
51
62
message ("found llvm lit " ${LLVM_EXTERNAL_LIT} )
52
63
53
-
54
-
55
64
list (INSERT CMAKE_PREFIX_PATH 0 "${LLVM_DIR} " )
65
+ if (DEFINED Clang_DIR)
66
+ get_filename_component (Clang_ABSOLUTE_DIR
67
+ "${Clang_DIR} "
68
+ REALPATH BASE_DIR "${CMAKE_BINARY_DIR} " )
69
+ set (Clang_DIR "${Clang_ABSOLUTE_DIR} " CACHE FILEPATH "b" FORCE)
70
+ list (INSERT CMAKE_PREFIX_PATH 0 "${Clang_DIR} " )
71
+ message ("clang dir defined ${Clang_DIR} " )
72
+ else ()
73
+ if (LLVM_DIR MATCHES ".*/cmake/llvm/?$" )
74
+ if (EXISTS ${LLVM_DIR} /../clang/../../libclangBasic.a)
75
+ set (Clang_DIR ${LLVM_DIR} /../clang)
76
+ list (INSERT CMAKE_PREFIX_PATH 0 "${Clang_DIR} " )
77
+ endif ()
78
+ elseif (LLVM_DIR MATCHES ".*/llvm-([0-9]+)/?$" )
79
+ if (EXISTS ${LLVM_DIR} /lib/libclangBasic.a)
80
+ set (Clang_DIR ${LLVM_DIR} /lib/cmake/clang)
81
+ list (INSERT CMAKE_PREFIX_PATH 0 "${Clang_DIR} " )
82
+ endif ()
83
+ else ()
84
+ if (EXISTS ${LLVM_DIR} /lib/libclangBasic.a)
85
+ set (Clang_DIR ${LLVM_DIR} )
86
+ list (INSERT CMAKE_PREFIX_PATH 0 "${Clang_DIR} " )
87
+ endif ()
88
+ endif ()
89
+ message ("clang dir from llvm ${Clang_DIR} " )
90
+ endif ()
56
91
message ("CMAKE_PREFIX_PATH " ${CMAKE_PREFIX_PATH} )
92
+
57
93
find_package (LLVM REQUIRED CONFIG)
58
94
59
95
list (APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR} " )
60
96
include (AddLLVM)
61
97
98
+ message ("clang dir ${Clang_DIR} " )
99
+
100
+ if (DEFINED Clang_DIR)
101
+ find_package (Clang REQUIRED CONFIG PATHS ${Clang_DIR} NO_DEFAULT_PATH)
102
+ if (${Clang_FOUND} )
103
+ include_directories (${CLANG_INCLUDE_DIRS} )
104
+ message ("clang inc dir ${CLANG_INCLUDE_DIRS} " )
105
+ add_definitions (${CLANG_DEFINITIONS} )
106
+ endif ()
107
+ else ()
108
+ set (Clang_FOUND 0)
109
+ endif ()
110
+ message ("found ${Clang_FOUND} " )
111
+ # include(AddClang)
112
+
62
113
add_definitions (${LLVM_DEFINITIONS} )
63
114
include_directories (${LLVM_INCLUDE_DIRS} )
64
115
message ("LLVM_INSTALL_PREFIX: ${LLVM_INSTALL_PREFIX} " )
@@ -132,9 +183,13 @@ if(NOT IS_ABSOLUTE "${${var}}")
132
183
endif ()
133
184
endforeach ()
134
185
135
- export (TARGETS LLVMEnzyme-${LLVM_VERSION_MAJOR} ClangEnzyme- ${LLVM_VERSION_MAJOR}
186
+ export (TARGETS LLVMEnzyme-${LLVM_VERSION_MAJOR}
136
187
FILE "${PROJECT_BINARY_DIR} /EnzymeTargets.cmake" )
137
188
189
+ if (${Clang_FOUND} )
190
+ export (TARGETS ClangEnzyme-${LLVM_VERSION_MAJOR}
191
+ APPEND FILE "${PROJECT_BINARY_DIR} /EnzymeTargets.cmake" )
192
+ endif ()
138
193
export (PACKAGE Enzyme)
139
194
140
195
set (CONF_LLVM_VERSION_MAJOR ${LLVM_VERSION_MAJOR} )
0 commit comments