Commit 18b84e5f authored by Adkins, Cameron's avatar Adkins, Cameron
Browse files

graaf: init at v1.1.1

parent cd07adde
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 03c5f1b..45eda87 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,3 +29,41 @@ if(NOT SKIP_BENCHMARKS)
 add_subdirectory(perf)
 endif()
 
+# Install w/ find_package()
+add_library(${PROJECT_NAME} INTERFACE)
+target_include_directories(
+    ${PROJECT_NAME} INTERFACE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
+    $<INSTALL_INTERFACE:include>
+)
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+    "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+    VERSION ${PROJECT_VERSION}
+    COMPATIBILITY AnyNewerVersion
+)
+
+install(
+    TARGETS ${PROJECT_NAME}
+    EXPORT ${PROJECT_NAME}Targets
+)
+
+configure_package_config_file(
+    "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in"
+    "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+    INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}
+)
+
+install(
+    EXPORT      ${PROJECT_NAME}Targets
+    DESTINATION lib/cmake/${PROJECT_NAME}
+)
+install(
+    FILES       "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+    DESTINATION lib/cmake/${PROJECT_NAME}
+)
+install(
+    DIRECTORY   "${PROJECT_SOURCE_DIR}/include/"
+    DESTINATION include
+)
diff --git a/cmake/GraafConfig.cmake.in b/cmake/GraafConfig.cmake.in
new file mode 100644
index 0000000..9c15f36
--- /dev/null
+++ b/cmake/GraafConfig.cmake.in
@@ -0,0 +1,4 @@
+@PACKAGE_INIT@
+
+include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
+check_required_components("@PROJECT_NAME@")
diff --git a/include/README.md b/include_README.md
similarity index 100%
rename from include/README.md
rename to include_README.md
+49 −0
Original line number Diff line number Diff line
{
  lib, stdenv, fetchFromGitHub,
  cmake
}:

stdenv.mkDerivation rec {
  pname = "graaf";
  version = "1.1.1";

  src = fetchFromGitHub {
    owner = "bobluppes";
    repo = "${pname}";
    rev = "v${version}";
    sha256 = "sha256-bEojDcDLznEJQFCs0TgDL+s0f7CwsfzOofWOBdj56NQ=";
  };

  patches = [
    ./0001-install.patch
  ];

  buildInputs = [
    # NOP
  ];

  nativeBuildInputs = [
    cmake
  ];

  cmakeFlags = [
    "-DSKIP_EXAMPLES=ON"
    "-DSKIP_TESTS=ON"
    "-DSKIP_BENCHMARKS=ON"
  ];

  meta = {
    description = "A general-purpose lightweight C++ graph library";
    longDescription = ''
      Graaf is designed with the goal of simplifying graph-related tasks. It
      offers a lightweight alternative to the Boost Graph Library (BGL) and is
      built for simplicity and extensibility. With Graaf, you can easily
      create, manipulate, and analyze graphs, making it suitable for a wide
      range of applications.
    '';
    homepage = "https://github.com/bobluppes/graaf";
    license = lib.licenses.mit;
    maintainers = [ lib.maintainers.cadkin ];
    platforms = lib.platforms.all;
  };
}