mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-09-19 11:09:05 +01:00
wip: add nix flake
This commit is contained in:
parent
f9cb0115e1
commit
d5b33c0d72
187
CMakeLists.txt
187
CMakeLists.txt
@ -31,78 +31,103 @@ option(FORCE_LLVM_STATIC "Build with static llvm and clang" ON)
|
|||||||
find_package(gflags REQUIRED)
|
find_package(gflags REQUIRED)
|
||||||
|
|
||||||
### tomlplusplus (for configuration files)
|
### tomlplusplus (for configuration files)
|
||||||
FetchContent_Declare(
|
find_package(tomlplusplus 3.2.0)
|
||||||
tomlplusplus
|
if (NOT tomlplusplus_FOUND)
|
||||||
GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git
|
FetchContent_Declare(
|
||||||
GIT_TAG 4b166b69f28e70a416a1a04a98f365d2aeb90de8 # v3.2.0
|
tomlplusplus
|
||||||
GIT_PROGRESS TRUE
|
GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git
|
||||||
)
|
GIT_TAG 4b166b69f28e70a416a1a04a98f365d2aeb90de8 # v3.2.0
|
||||||
FetchContent_MakeAvailable(tomlplusplus)
|
GIT_PROGRESS TRUE
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(tomlplusplus)
|
||||||
|
endif()
|
||||||
|
|
||||||
### glog
|
### glog
|
||||||
FetchContent_Declare(
|
find_package(glog 0.4.0)
|
||||||
glog
|
if (NOT glog_FOUND)
|
||||||
GIT_REPOSITORY https://github.com/google/glog.git
|
FetchContent_Declare(
|
||||||
GIT_TAG 96a2f23dca4cc7180821ca5f32e526314395d26a
|
glog
|
||||||
GIT_PROGRESS TRUE
|
GIT_REPOSITORY https://github.com/google/glog.git
|
||||||
)
|
GIT_TAG 96a2f23dca4cc7180821ca5f32e526314395d26a
|
||||||
FetchContent_MakeAvailable(glog)
|
GIT_PROGRESS TRUE
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(glog)
|
||||||
|
endif()
|
||||||
|
|
||||||
# These glog executable targets still generate warnings - disable warnings for
|
# These glog executable targets still generate warnings - disable warnings for
|
||||||
# them explicitly
|
# them explicitly
|
||||||
target_compile_options(demangle_unittest PRIVATE "-w")
|
# target_compile_options(demangle_unittest PRIVATE "-w")
|
||||||
target_compile_options(logging_unittest PRIVATE "-w")
|
# target_compile_options(logging_unittest PRIVATE "-w")
|
||||||
target_compile_options(stl_logging_unittest PRIVATE "-w")
|
# target_compile_options(stl_logging_unittest PRIVATE "-w")
|
||||||
target_compile_options(symbolize_unittest PRIVATE "-w")
|
# target_compile_options(symbolize_unittest PRIVATE "-w")
|
||||||
target_compile_options(utilities_unittest PRIVATE "-w")
|
# target_compile_options(utilities_unittest PRIVATE "-w")
|
||||||
|
|
||||||
### googletest
|
### googletest
|
||||||
# Do this in the main file so it can be fetched before setting project warnings.
|
# Do this in the main file so it can be fetched before setting project warnings.
|
||||||
# After this is fixed with FetchContent, move to test/CMakeLists.txt.
|
# After this is fixed with FetchContent, move to test/CMakeLists.txt.
|
||||||
FetchContent_Declare(
|
find_package(googletest 1.14.0)
|
||||||
googletest
|
if (NOT googletest_FOUND)
|
||||||
GIT_REPOSITORY https://github.com/google/googletest.git
|
FetchContent_Declare(
|
||||||
GIT_TAG 1ed6a8c67a0bd675149ece27bbec0ef1759854cf
|
googletest
|
||||||
GIT_PROGRESS TRUE
|
# GIT_REPOSITORY https://github.com/google/googletest.git
|
||||||
)
|
# GIT_TAG 1ed6a8c67a0bd675149ece27bbec0ef1759854cf
|
||||||
FetchContent_MakeAvailable(googletest)
|
# GIT_PROGRESS TRUE
|
||||||
|
SOURCE_DIR @gtest_src@
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(googletest)
|
||||||
|
endif()
|
||||||
|
|
||||||
### rocksdb
|
### rocksdb
|
||||||
FetchContent_Declare(
|
find_package(rocksdb 8.5.3)
|
||||||
rocksdb
|
if (NOT RocksDB_FOUND)
|
||||||
GIT_REPOSITORY https://github.com/facebook/rocksdb.git
|
FetchContent_Declare(
|
||||||
GIT_TAG f32521662acf3352397d438b732144c7813bbbec # v8.5.3
|
rocksdb
|
||||||
GIT_PROGRESS TRUE
|
GIT_REPOSITORY https://github.com/facebook/rocksdb.git
|
||||||
)
|
GIT_TAG f32521662acf3352397d438b732144c7813bbbec # v8.5.3
|
||||||
FetchContent_Populate(rocksdb)
|
GIT_PROGRESS TRUE
|
||||||
add_custom_target(librocksdb ALL
|
)
|
||||||
WORKING_DIRECTORY ${rocksdb_SOURCE_DIR}
|
FetchContent_Populate(rocksdb)
|
||||||
COMMAND cmake -G Ninja -B ${rocksdb_BINARY_DIR} -DCMAKE_BUILD_TYPE=Release -DWITH_GFLAGS=Off -DWITH_LIBURING=Off -DWITH_ZSTD=On -DFAIL_ON_WARNINGS=Off
|
add_custom_target(librocksdb_build ALL
|
||||||
COMMAND cmake --build ${rocksdb_BINARY_DIR} --target rocksdb
|
WORKING_DIRECTORY ${rocksdb_SOURCE_DIR}
|
||||||
BYPRODUCTS ${rocksdb_BINARY_DIR}/librocksdb.a
|
COMMAND CXX_FLAGS=-Wno-error cmake -G Ninja -B ${rocksdb_BINARY_DIR} -DCMAKE_BUILD_TYPE=Release -DWITH_GFLAGS=Off -DWITH_LIBURING=Off -DWITH_ZSTD=On -DFAIL_ON_WARNINGS=Off
|
||||||
COMMENT "Building RocksDB"
|
COMMAND cmake --build ${rocksdb_BINARY_DIR} --target rocksdb
|
||||||
USES_TERMINAL
|
BYPRODUCTS ${rocksdb_BINARY_DIR}/librocksdb.a
|
||||||
)
|
COMMENT "Building RocksDB"
|
||||||
include_directories(SYSTEM "${rocksdb_SOURCE_DIR}/include")
|
USES_TERMINAL
|
||||||
|
)
|
||||||
|
add_library(librocksdb INTERFACE)
|
||||||
|
add_dependencies(librocksdb librocksdb_build)
|
||||||
|
target_include_directories(librocksdb INTERFACE SYSTEM "${rocksdb_SOURCE_DIR}/include")
|
||||||
|
add_library(RocksDB::rocksdb ALIAS librocksdb)
|
||||||
|
|
||||||
|
### zstd (for rocksdb)
|
||||||
|
find_package(zstd REQUIRED)
|
||||||
|
|
||||||
|
target_link_libraries(librocksdb INTERFACE zstd::zstd ${rocksdb_BINARY_DIR}/librocksdb.a)
|
||||||
|
endif()
|
||||||
|
|
||||||
### folly
|
### folly
|
||||||
### use folly as a header only library. some features won't be supported.
|
### use folly as a header only library. some features won't be supported.
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
folly
|
folly
|
||||||
GIT_REPOSITORY https://github.com/JakeHillion/folly.git
|
# GIT_REPOSITORY https://github.com/JakeHillion/folly.git
|
||||||
GIT_TAG 8db54418e3ccdd97619ac8b69bb3702f82bb0f66
|
# GIT_TAG 8db54418e3ccdd97619ac8b69bb3702f82bb0f66
|
||||||
GIT_PROGRESS TRUE
|
# GIT_PROGRESS TRUE
|
||||||
|
SOURCE_DIR @folly_src@
|
||||||
)
|
)
|
||||||
FetchContent_Populate(folly)
|
FetchContent_Populate(folly)
|
||||||
|
|
||||||
### range-v3
|
### range-v3
|
||||||
FetchContent_Declare(
|
find_package(Range-v3 0.12.0)
|
||||||
range-v3
|
if (NOT Range-v3_FOUND)
|
||||||
GIT_REPOSITORY https://github.com/ericniebler/range-v3.git
|
FetchContent_Declare(
|
||||||
GIT_TAG a81477931a8aa2ad025c6bda0609f38e09e4d7ec # 0.12.0
|
range-v3
|
||||||
GIT_PROGRESS TRUE
|
GIT_REPOSITORY https://github.com/ericniebler/range-v3.git
|
||||||
)
|
GIT_TAG a81477931a8aa2ad025c6bda0609f38e09e4d7ec # 0.12.0
|
||||||
FetchContent_MakeAvailable(range-v3)
|
GIT_PROGRESS TRUE
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(range-v3)
|
||||||
|
endif()
|
||||||
|
|
||||||
set_project_warnings()
|
set_project_warnings()
|
||||||
|
|
||||||
@ -123,9 +148,13 @@ endif()
|
|||||||
### (Re)download submodules
|
### (Re)download submodules
|
||||||
find_package(Git QUIET)
|
find_package(Git QUIET)
|
||||||
|
|
||||||
|
if (NOT DEFINED drgn_SOURCE_DIR)
|
||||||
|
SET(drgn_SOURCE_DIR "${PROJECT_SOURCE_DIR}/extern/drgn")
|
||||||
|
endif()
|
||||||
|
|
||||||
# TODO: No idea if this huge block is required, just picked from an example. There may be a short-hand.
|
# TODO: No idea if this huge block is required, just picked from an example. There may be a short-hand.
|
||||||
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
if(NOT EXISTS "${drgn_SOURCE_DIR}" AND GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
||||||
# Update submodules as needed
|
# Update submodules as needed
|
||||||
option(GIT_SUBMODULE "Check submodules during build" ON)
|
option(GIT_SUBMODULE "Check submodules during build" ON)
|
||||||
if(GIT_SUBMODULE)
|
if(GIT_SUBMODULE)
|
||||||
message(STATUS "Submodule update")
|
message(STATUS "Submodule update")
|
||||||
@ -144,11 +173,11 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
|||||||
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
|
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
|
||||||
message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
|
message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/drgn")
|
if(NOT EXISTS "${drgn_SOURCE_DIR}")
|
||||||
message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
|
message(FATAL_ERROR "The submodules were not downloaded! Please update submodules and try again.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
### Select Python version
|
### Select Python version
|
||||||
@ -222,37 +251,39 @@ set(DRGN_CONFIGURE_FLAGS "--with-libkdumpfile=no")
|
|||||||
if (ASAN)
|
if (ASAN)
|
||||||
list(APPEND DRGN_CONFIGURE_FLAGS "--enable-asan=yes")
|
list(APPEND DRGN_CONFIGURE_FLAGS "--enable-asan=yes")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(drgn_BUILD_DIR "${drgn_SOURCE_DIR}/build")
|
||||||
|
|
||||||
add_custom_target(libdrgn ALL
|
add_custom_target(libdrgn ALL
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/extern/drgn
|
WORKING_DIRECTORY ${drgn_SOURCE_DIR}
|
||||||
COMMAND unset BISON_PKGDATADIR && CC=gcc CFLAGS="${DRGN_CFLAGS}" CONFIGURE_FLAGS="${DRGN_CONFIGURE_FLAGS}" ${PYTHON} ./setup.py build --build-temp build
|
COMMAND unset BISON_PKGDATADIR && CC=gcc CFLAGS="${DRGN_CFLAGS}" CONFIGURE_FLAGS="${DRGN_CONFIGURE_FLAGS}" ${PYTHON} ./setup.py build --build-temp "${drgn_BUILD_DIR}"
|
||||||
BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/extern/drgn/build/.libs/libdrgnimpl.a
|
BYPRODUCTS ${drgn_BUILD_DIR}/.libs/libdrgnimpl.a
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/extern/drgn/build/velfutils/libdw/libdw.a
|
${drgn_BUILD_DIR}/velfutils/libdw/libdw.a
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/extern/drgn/build/velfutils/libelf/libelf.a
|
${drgn_BUILD_DIR}/velfutils/libelf/libelf.a
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/extern/drgn/build/velfutils/libdwelf/libdwelf.a
|
${drgn_BUILD_DIR}/velfutils/libdwelf/libdwelf.a
|
||||||
COMMENT "Building drgn"
|
COMMENT "Building drgn"
|
||||||
USES_TERMINAL
|
USES_TERMINAL
|
||||||
)
|
)
|
||||||
set(DRGN_PATH "${PROJECT_SOURCE_DIR}/extern/drgn/build")
|
|
||||||
|
|
||||||
# Ideally drgn stuff should be together at the end. But looks like rpath needs
|
# Ideally drgn stuff should be together at the end. But looks like rpath needs
|
||||||
# to be set before add_executable() unfortunately. Maybe split libdrgn stuff
|
# to be set before add_executable() unfortunately. Maybe split libdrgn stuff
|
||||||
# into a separate file later.
|
# into a separate file later.
|
||||||
set(CMAKE_SKIP_BUILD_RPATH FALSE)
|
set(CMAKE_SKIP_BUILD_RPATH FALSE)
|
||||||
set(CMAKE_INSTALL_RPATH
|
set(CMAKE_INSTALL_RPATH
|
||||||
"${DRGN_PATH}/.libs"
|
"${drgn_BUILD_DIR}/.libs"
|
||||||
"${DRGN_PATH}/velfutils/libdw"
|
"${drgn_BUILD_DIR}/velfutils/libdw"
|
||||||
"${DRGN_PATH}/velfutils/libelf"
|
"${drgn_BUILD_DIR}/velfutils/libelf"
|
||||||
"${DRGN_PATH}/velfutils/libdwelf"
|
"${drgn_BUILD_DIR}/velfutils/libdwelf"
|
||||||
)
|
)
|
||||||
set(CMAKE_BUILD_RPATH
|
set(CMAKE_BUILD_RPATH
|
||||||
"${DRGN_PATH}/.libs"
|
"${drgn_BUILD_DIR}/.libs"
|
||||||
"${DRGN_PATH}/velfutils/libdw"
|
"${drgn_BUILD_DIR}/velfutils/libdw"
|
||||||
"${DRGN_PATH}/velfutils/libelf"
|
"${drgn_BUILD_DIR}/velfutils/libelf"
|
||||||
"${DRGN_PATH}/velfutils/libdwelf"
|
"${drgn_BUILD_DIR}/velfutils/libdwelf"
|
||||||
)
|
)
|
||||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
|
|
||||||
include_directories(SYSTEM "${DRGN_PATH}")
|
include_directories(SYSTEM "${drgn_BUILD_DIR}")
|
||||||
|
|
||||||
if (STATIC_LINK)
|
if (STATIC_LINK)
|
||||||
# glog links against the `gflags` target, which is an alias for `gflags_shared`
|
# glog links against the `gflags` target, which is an alias for `gflags_shared`
|
||||||
@ -322,7 +353,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(oicore
|
target_link_libraries(oicore
|
||||||
"-L${DRGN_PATH}/.libs"
|
"-L${drgn_BUILD_DIR}/.libs"
|
||||||
drgn
|
drgn
|
||||||
dw
|
dw
|
||||||
pthread
|
pthread
|
||||||
@ -333,9 +364,8 @@ add_library(treebuilder
|
|||||||
oi/TreeBuilder.cpp
|
oi/TreeBuilder.cpp
|
||||||
oi/exporters/TypeCheckingWalker.cpp
|
oi/exporters/TypeCheckingWalker.cpp
|
||||||
)
|
)
|
||||||
add_dependencies(treebuilder librocksdb)
|
|
||||||
target_link_libraries(treebuilder
|
target_link_libraries(treebuilder
|
||||||
${rocksdb_BINARY_DIR}/librocksdb.a
|
RocksDB::rocksdb
|
||||||
oicore # overkill but it does need a lot of stuff
|
oicore # overkill but it does need a lot of stuff
|
||||||
zstd::zstd
|
zstd::zstd
|
||||||
)
|
)
|
||||||
@ -373,9 +403,8 @@ target_link_libraries(oip oicore)
|
|||||||
|
|
||||||
### Object Introspection RocksDB Printer (OIRP)
|
### Object Introspection RocksDB Printer (OIRP)
|
||||||
add_executable(oirp tools/OIRP.cpp)
|
add_executable(oirp tools/OIRP.cpp)
|
||||||
add_dependencies(oirp librocksdb)
|
|
||||||
target_link_libraries(oirp
|
target_link_libraries(oirp
|
||||||
${rocksdb_BINARY_DIR}/librocksdb.a
|
rocksdb::rocksdb
|
||||||
zstd::zstd
|
zstd::zstd
|
||||||
msgpackc
|
msgpackc
|
||||||
)
|
)
|
||||||
|
2
extern/drgn
vendored
2
extern/drgn
vendored
@ -1 +1 @@
|
|||||||
Subproject commit de2480353e73a48063f4eca4b620d72e80e5246f
|
Subproject commit f54be805ec0e8d63f54f513b5246f47e4ee100c5
|
97
flake.lock
Normal file
97
flake.lock
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"drgn": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1694096687,
|
||||||
|
"narHash": "sha256-D7nEVjOlNEZWVK2l7xJ7I1cHqEqyBWDvF3GUGVP1SF8=",
|
||||||
|
"owner": "JakeHillion",
|
||||||
|
"repo": "drgn",
|
||||||
|
"rev": "f54be805ec0e8d63f54f513b5246f47e4ee100c5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "JakeHillion",
|
||||||
|
"repo": "drgn",
|
||||||
|
"rev": "f54be805ec0e8d63f54f513b5246f47e4ee100c5",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1694529238,
|
||||||
|
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"folly": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1677193012,
|
||||||
|
"narHash": "sha256-ZXLmLF5xaysHv1rP5yEEkSdFskoeTAEPaikA1L1GSN0=",
|
||||||
|
"owner": "JakeHillion",
|
||||||
|
"repo": "folly",
|
||||||
|
"rev": "8db54418e3ccdd97619ac8b69bb3702f82bb0f66",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "JakeHillion",
|
||||||
|
"repo": "folly",
|
||||||
|
"rev": "8db54418e3ccdd97619ac8b69bb3702f82bb0f66",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1700390070,
|
||||||
|
"narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"drgn": "drgn",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"folly": "folly",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
117
flake.nix
Normal file
117
flake.nix
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
{
|
||||||
|
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
inputs.flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
|
||||||
|
inputs.drgn = {
|
||||||
|
flake = false;
|
||||||
|
type = "github";
|
||||||
|
owner = "JakeHillion";
|
||||||
|
repo = "drgn";
|
||||||
|
rev = "f54be805ec0e8d63f54f513b5246f47e4ee100c5";
|
||||||
|
};
|
||||||
|
inputs.folly = {
|
||||||
|
flake = false;
|
||||||
|
type = "github";
|
||||||
|
owner = "JakeHillion";
|
||||||
|
repo = "folly";
|
||||||
|
rev = "8db54418e3ccdd97619ac8b69bb3702f82bb0f66";
|
||||||
|
};
|
||||||
|
|
||||||
|
description = "A flake for building and developing Object Introspection";
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, drgn, folly, flake-utils }: (
|
||||||
|
flake-utils.lib.eachSystem [ flake-utils.lib.system.x86_64-linux ]
|
||||||
|
(system:
|
||||||
|
let
|
||||||
|
pkgs =
|
||||||
|
import nixpkgs
|
||||||
|
{
|
||||||
|
system = "x86_64-linux";
|
||||||
|
overlays = [
|
||||||
|
(self: super: {
|
||||||
|
boost = super.boost.override { enableShared = false; enableStatic = true; };
|
||||||
|
rocksdb = super.rocksdb.overrideAttrs ( old: rec {
|
||||||
|
version = "8.5.3";
|
||||||
|
src = super.fetchFromGitHub {
|
||||||
|
owner = "facebook";
|
||||||
|
repo = "rocksdb";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "sha256-Qa4bAprXptA79ilNE5KSfggEDvNFHdrvDQ6SvzWMQus=";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages.oid = with pkgs;
|
||||||
|
pkgs.llvmPackages_12.stdenv.mkDerivation {
|
||||||
|
name = "oid";
|
||||||
|
src = self;
|
||||||
|
|
||||||
|
postPatch = with pkgs; ''
|
||||||
|
substituteInPlace CMakeLists.txt --replace '@gtest_src@' '${gtest.src}'
|
||||||
|
substituteInPlace CMakeLists.txt --replace '@folly_src@' '${folly}'
|
||||||
|
'';
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-Ddrgn_SOURCE_DIR=${drgn}"
|
||||||
|
"-DGIT_SUBMODULES=Off"
|
||||||
|
"-DWARNINGS_AS_ERRORS=Off"
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
install -t $out/bin /build/source/build/oid
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
autoconf
|
||||||
|
automake
|
||||||
|
cmake
|
||||||
|
gettext
|
||||||
|
git
|
||||||
|
libtool
|
||||||
|
ninja
|
||||||
|
pkgconf
|
||||||
|
|
||||||
|
python310
|
||||||
|
python310Packages.toml
|
||||||
|
python310Packages.setuptools
|
||||||
|
];
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
bison
|
||||||
|
boost
|
||||||
|
bzip2
|
||||||
|
curl
|
||||||
|
double-conversion
|
||||||
|
elfutils
|
||||||
|
flex
|
||||||
|
fmt
|
||||||
|
gflags
|
||||||
|
glog
|
||||||
|
gtest
|
||||||
|
icu
|
||||||
|
jemalloc
|
||||||
|
libarchive
|
||||||
|
libmicrohttpd
|
||||||
|
llvmPackages_15.libclang
|
||||||
|
llvmPackages_15.llvm
|
||||||
|
lzma
|
||||||
|
msgpack
|
||||||
|
range-v3
|
||||||
|
rocksdb
|
||||||
|
sqlite
|
||||||
|
tomlplusplus
|
||||||
|
libxml2
|
||||||
|
zstd
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
packages.default = self.packages.${system}.oid;
|
||||||
|
}) // flake-utils.lib.eachSystem flake-utils.lib.allSystems (system: {
|
||||||
|
formatter = nixpkgs.legacyPackages.${system}.nixpkgs-fmt;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user