aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt9
-rw-r--r--cmake/Finddynstr.cmake15
2 files changed, 23 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1a8bf44..c89fa03 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,14 @@ add_library(${PROJECT_NAME}
http.c
server.c
wildcard_cmp.c)
-add_subdirectory(dynstr)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/cmake)
+find_package(dynstr 0.1.0)
+
+if(NOT DYNSTR_FOUND)
+ message(STATUS "Using in-tree dynstr")
+ add_subdirectory(dynstr)
+endif()
+
target_include_directories(${PROJECT_NAME} PUBLIC include)
target_link_libraries(${PROJECT_NAME} PUBLIC dynstr)
install(TARGETS ${PROJECT_NAME})
diff --git a/cmake/Finddynstr.cmake b/cmake/Finddynstr.cmake
new file mode 100644
index 0000000..8d785b2
--- /dev/null
+++ b/cmake/Finddynstr.cmake
@@ -0,0 +1,15 @@
+mark_as_advanced(DYNSTR_LIBRARY DYNSTR_INCLUDE_DIR)
+find_library(DYNSTR_LIBRARY NAMES dynstr)
+find_path(DYNSTR_INCLUDE_DIR NAMES dynstr PATH_SUFFIXES include)
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(dynstr
+ DEFAULT_MSG DYNSTR_LIBRARY DYNSTR_INCLUDE_DIR)
+
+if(DYNSTR_FOUND)
+ if(NOT TARGET dynstr)
+ add_library(dynstr UNKNOWN IMPORTED)
+ set_target_properties(dynstr PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${DYNSTR_INCLUDE_DIR}"
+ IMPORTED_LOCATION "${DYNSTR_LIBRARY}")
+ endif()
+endif()