Changeset View
Changeset View
Standalone View
Standalone View
cmake/FindJulia.cmake
- This file was added.
1 | # This is copypasted with minor changes from here: | ||||
---|---|---|---|---|---|
2 | # https://gist.github.com/JayKickliter/06d0e7c4f84ef7ccc7a9 | ||||
3 | if(JULIA_FOUND) | ||||
4 | return() | ||||
5 | endif() | ||||
6 | | ||||
7 | # Find julia executable | ||||
8 | find_program(JULIA_EXECUTABLE julia DOC "Julia executable") | ||||
9 | | ||||
10 | if(NOT JULIA_EXECUTABLE) | ||||
11 | return() | ||||
12 | endif() | ||||
13 | | ||||
14 | # | ||||
15 | # Julia version | ||||
16 | # | ||||
17 | execute_process( | ||||
18 | COMMAND ${JULIA_EXECUTABLE} --version | ||||
19 | OUTPUT_VARIABLE JULIA_VERSION_STRING | ||||
20 | RESULT_VARIABLE RESULT | ||||
21 | ) | ||||
22 | if(RESULT EQUAL 0) | ||||
23 | string(REGEX REPLACE ".*([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" | ||||
24 | JULIA_VERSION_STRING ${JULIA_VERSION_STRING}) | ||||
25 | endif() | ||||
26 | | ||||
27 | # | ||||
28 | # Julia includes | ||||
29 | # | ||||
30 | execute_process( | ||||
31 | COMMAND ${JULIA_EXECUTABLE} -E "joinpath(match(r\"(.*)(bin)\",JULIA_HOME).captures[1],\"include\",\"julia\")" | ||||
32 | OUTPUT_VARIABLE JULIA_INCLUDE_DIRS | ||||
33 | RESULT_VARIABLE RESULT | ||||
34 | ) | ||||
35 | if(RESULT EQUAL 0) | ||||
36 | string(REGEX REPLACE "\"" "" JULIA_INCLUDE_DIRS ${JULIA_INCLUDE_DIRS}) | ||||
37 | string(REGEX REPLACE "\n" "" JULIA_INCLUDE_DIRS ${JULIA_INCLUDE_DIRS}) | ||||
38 | string(STRIP JULIA_INCLUDE_DIRS ${JULIA_INCLUDE_DIRS}) | ||||
39 | set(JULIA_INCLUDE_DIRS ${JULIA_INCLUDE_DIRS} | ||||
40 | CACHE PATH "Location of Julia include files") | ||||
41 | endif() | ||||
42 | | ||||
43 | find_path(JULIA_MAIN_HEADER julia.h HINTS ${JULIA_INCLUDE_DIRS}) | ||||
44 | | ||||
45 | # | ||||
46 | # Julia library location | ||||
47 | # | ||||
48 | execute_process( | ||||
49 | COMMAND ${JULIA_EXECUTABLE} -E "abspath(dirname(Libdl.dlpath(\"libjulia\")))" | ||||
50 | OUTPUT_VARIABLE JULIA_LIBRARY_DIR | ||||
51 | RESULT_VARIABLE RESULT | ||||
52 | ) | ||||
53 | if(RESULT EQUAL 0) | ||||
54 | string(REGEX REPLACE "\"" "" JULIA_LIBRARY_DIR ${JULIA_LIBRARY_DIR}) | ||||
55 | string(STRIP ${JULIA_LIBRARY_DIR} JULIA_LIBRARY_DIR) | ||||
56 | set(JULIA_LIBRARY_DIR ${JULIA_LIBRARY_DIR} | ||||
57 | CACHE PATH "Julia library directory") | ||||
58 | endif() | ||||
59 | | ||||
60 | | ||||
61 | find_library(JULIA_LIBRARY | ||||
62 | NAMES julia | ||||
63 | PATHS ${JULIA_LIBRARY_DIR} | ||||
64 | ) | ||||
65 | | ||||
66 | include(FindPackageHandleStandardArgs) | ||||
67 | find_package_handle_standard_args( | ||||
68 | Julia | ||||
69 | REQUIRED_VARS JULIA_LIBRARY JULIA_LIBRARY_DIR JULIA_INCLUDE_DIRS JULIA_MAIN_HEADER | ||||
70 | VERSION_VAR JULIA_VERSION_STRING | ||||
71 | FAIL_MESSAGE "Julia not found" | ||||
72 | ) |