brewery
notashelf /
ddfbc91b5888d1d176b921af489a94eaedfbd25a

nixir

public

Import-resolving Nix IR plugin

Star0tarball
clone
ssh://git@git.notashelf.dev:33/notashelf/nixir.git
CMakeLists.txt75 lines1.9 KB
1
cmake_minimum_required(VERSION 3.19)
2
project(nix-ir-plugin)
3
4
set(CMAKE_CXX_STANDARD 23)
5
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6
7
find_package(PkgConfig REQUIRED)
8
9
pkg_check_modules(NIX_STORE REQUIRED IMPORTED_TARGET nix-store)
10
pkg_check_modules(NIX_EXPR REQUIRED IMPORTED_TARGET nix-expr)
11
pkg_check_modules(NIX_CMD REQUIRED IMPORTED_TARGET nix-cmd)
12
pkg_check_modules(NIX_UTIL REQUIRED IMPORTED_TARGET nix-util)
13
pkg_check_modules(NIX_FETCHERS REQUIRED IMPORTED_TARGET nix-fetchers)
14
pkg_check_modules(NIX_MAIN REQUIRED IMPORTED_TARGET nix-main)
15
16
# nix-irc
17
add_executable(nix-irc
18
    src/irc/main.cpp
19
    src/irc/parser.cpp
20
    src/irc/resolver.cpp
21
    src/irc/ir_gen.cpp
22
    src/irc/serializer.cpp
23
)
24
25
target_include_directories(nix-irc PRIVATE
26
    ${NIX_STORE_INCLUDE_DIRS}
27
    ${NIX_EXPR_INCLUDE_DIRS}
28
    ${NIX_UTIL_INCLUDE_DIRS}
29
)
30
31
target_link_libraries(nix-irc PRIVATE
32
    ${NIX_STORE_LINK_LIBRARIES}
33
    ${NIX_EXPR_LINK_LIBRARIES}
34
    ${NIX_UTIL_LINK_LIBRARIES}
35
)
36
37
# Nix IR Plugin
38
add_library(nix-ir-plugin MODULE
39
    src/plugin.cpp
40
    src/irc/parser.cpp
41
    src/irc/resolver.cpp
42
    src/irc/ir_gen.cpp
43
    src/irc/serializer.cpp
44
    src/irc/evaluator.cpp
45
)
46
47
# Include directories from pkg-config
48
target_include_directories(nix-ir-plugin PRIVATE
49
    ${CMAKE_SOURCE_DIR}/src
50
    ${NIX_STORE_INCLUDE_DIRS}
51
    ${NIX_EXPR_INCLUDE_DIRS}
52
    ${NIX_CMD_INCLUDE_DIRS}
53
    ${NIX_UTIL_INCLUDE_DIRS}
54
    ${NIX_FETCHERS_INCLUDE_DIRS}
55
    ${NIX_MAIN_INCLUDE_DIRS}
56
)
57
58
# Link libraries
59
target_link_libraries(nix-ir-plugin PRIVATE
60
    ${NIX_STORE_LINK_LIBRARIES}
61
    ${NIX_EXPR_LINK_LIBRARIES}
62
    ${NIX_CMD_LINK_LIBRARIES}
63
    ${NIX_UTIL_LINK_LIBRARIES}
64
    ${NIX_FETCHERS_LINK_LIBRARIES}
65
    ${NIX_MAIN_LINK_LIBRARIES}
66
)
67
68
# Set output name
69
set_target_properties(nix-ir-plugin PROPERTIES
70
    PREFIX ""
71
    OUTPUT_NAME "nix-ir-plugin"
72
)
73
74
# Install to plugin directory
75
install(TARGETS nix-ir-plugin LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/nix/plugins")