summaryrefslogtreecommitdiff
path: root/pkgs/development/python-modules/dm-tree/cmake.patch
blob: 28f201a30f71bf1342671e69717b9ba8581ad591 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
diff --git a/tree/CMakeLists.txt b/tree/CMakeLists.txt
index 4fd1b1a..f0d072b 100644
--- a/tree/CMakeLists.txt
+++ b/tree/CMakeLists.txt
@@ -50,70 +50,79 @@ if(APPLE)
   set (CMAKE_FIND_FRAMEWORK LAST)
 endif()
 
-# Fetch pybind to be able to use pybind11_add_module symbol.
-set(PYBIND_VER v2.10.1)
-include(FetchContent)
-FetchContent_Declare(
-  pybind11
-  GIT_REPOSITORY https://github.com/pybind/pybind11
-  GIT_TAG        ${PYBIND_VER}
-)
-if(NOT pybind11_POPULATED)
-    FetchContent_Populate(pybind11)
-    add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
-    include_directories(${pybind11_INCLUDE_DIR})
-endif()
-
-# Needed to disable Abseil tests.
-set (BUILD_TESTING OFF)
-
-# Include abseil-cpp.
-set(ABSEIL_VER 20210324.2)
-include(ExternalProject)
-set(ABSEIL_CMAKE_ARGS
-    "-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/abseil-cpp"
-    "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
-    "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
-    "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
-    "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
-    "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}"
-    "-DLIBRARY_OUTPUT_PATH=${CMAKE_SOURCE_DIR}/abseil-cpp/lib")
-if(DEFINED CMAKE_OSX_ARCHITECTURES)
-    set(ABSEIL_CMAKE_ARGS
-        ${ABSEIL_CMAKE_ARGS}
-        "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
+find_package(pybind11 CONFIG)
+
+if (NOT pybind11_FOUND)
+  # Fetch pybind to be able to use pybind11_add_module symbol.
+  set(PYBIND_VER v2.10.1)
+  include(FetchContent)
+  FetchContent_Declare(
+    pybind11
+    GIT_REPOSITORY https://github.com/pybind/pybind11
+    GIT_TAG        ${PYBIND_VER}
+  )
+  if(NOT pybind11_POPULATED)
+      FetchContent_Populate(pybind11)
+      add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
+      include_directories(${pybind11_INCLUDE_DIR})
+  endif()
 endif()
-ExternalProject_Add(abseil-cpp
-  GIT_REPOSITORY    https://github.com/abseil/abseil-cpp.git
-  GIT_TAG           ${ABSEIL_VER}
-  PREFIX            ${CMAKE_SOURCE_DIR}/abseil-cpp
-  CMAKE_ARGS        ${ABSEIL_CMAKE_ARGS}
-)
-ExternalProject_Get_Property(abseil-cpp install_dir)
-set(abseil_install_dir ${install_dir})
-include_directories (${abseil_install_dir}/include)
-
 
 # Define pybind11 tree module.
 pybind11_add_module(_tree tree.h tree.cc)
-add_dependencies(_tree abseil-cpp)
-
+find_package(absl)
+
+if (NOT absl_FOUND)
+  # Needed to disable Abseil tests.
+  set (BUILD_TESTING OFF)
+
+  # Include abseil-cpp.
+  set(ABSEIL_VER 20210324.2)
+  include(ExternalProject)
+  set(ABSEIL_CMAKE_ARGS
+      "-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/abseil-cpp"
+      "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
+      "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
+      "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
+      "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
+      "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}"
+      "-DLIBRARY_OUTPUT_PATH=${CMAKE_SOURCE_DIR}/abseil-cpp/lib")
+  if(DEFINED CMAKE_OSX_ARCHITECTURES)
+      set(ABSEIL_CMAKE_ARGS
+          ${ABSEIL_CMAKE_ARGS}
+          "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
+  endif()
+  ExternalProject_Add(abseil-cpp
+    GIT_REPOSITORY    https://github.com/abseil/abseil-cpp.git
+    GIT_TAG           ${ABSEIL_VER}
+    PREFIX            ${CMAKE_SOURCE_DIR}/abseil-cpp
+    CMAKE_ARGS        ${ABSEIL_CMAKE_ARGS}
+  )
+  ExternalProject_Get_Property(abseil-cpp install_dir)
+  set(abseil_install_dir ${install_dir})
+  include_directories (${abseil_install_dir}/include)
+
+  add_dependencies(_tree abseil-cpp)
+
+  if (WIN32 OR MSVC)
+      set(ABSEIL_LIB_PREF "absl")
+      set(LIB_SUFF "lib")
+  else()
+      set(ABSEIL_LIB_PREF "libabsl")
+      set(LIB_SUFF "a")
+  endif()
+
-if (WIN32 OR MSVC)
-    set(ABSEIL_LIB_PREF "absl")
-    set(LIB_SUFF "lib")
+  # Link abseil static libs.
+  # We don't use find_library here to force cmake to build abseil before linking.
+  set(ABSEIL_LIBS int128 raw_hash_set raw_logging_internal strings throw_delegate)
+  foreach(ABSEIL_LIB IN LISTS ABSEIL_LIBS)
+    target_link_libraries(_tree PRIVATE
+        "${abseil_install_dir}/lib/${ABSEIL_LIB_PREF}_${ABSEIL_LIB}.${LIB_SUFF}")
+  endforeach()
 else()
-    set(ABSEIL_LIB_PREF "libabsl")
-    set(LIB_SUFF "a")
+  target_link_libraries(_tree PRIVATE absl::int128 absl::raw_hash_set absl::raw_logging_internal absl::strings absl::throw_delegate)
 endif()
 
-# Link abseil static libs.
-# We don't use find_library here to force cmake to build abseil before linking.
-set(ABSEIL_LIBS int128 raw_hash_set raw_logging_internal strings throw_delegate)
-foreach(ABSEIL_LIB IN LISTS ABSEIL_LIBS)
-  target_link_libraries(_tree PRIVATE
-      "${abseil_install_dir}/lib/${ABSEIL_LIB_PREF}_${ABSEIL_LIB}.${LIB_SUFF}")
-endforeach()
-
 # Make the module private to tree package.
 set_target_properties(_tree PROPERTIES OUTPUT_NAME tree/_tree)