Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ib4000ab597f94b2dd3dccf1e31fce3a76a6a6964
95 lines
2.3 KiB
CMake
95 lines
2.3 KiB
CMake
cmake_minimum_required(VERSION 3.19)
|
|
project(nix-ir-plugin)
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
pkg_check_modules(NIX_STORE REQUIRED IMPORTED_TARGET nix-store)
|
|
pkg_check_modules(NIX_EXPR REQUIRED IMPORTED_TARGET nix-expr)
|
|
pkg_check_modules(NIX_CMD REQUIRED IMPORTED_TARGET nix-cmd)
|
|
pkg_check_modules(NIX_UTIL REQUIRED IMPORTED_TARGET nix-util)
|
|
pkg_check_modules(NIX_FETCHERS REQUIRED IMPORTED_TARGET nix-fetchers)
|
|
pkg_check_modules(NIX_MAIN REQUIRED IMPORTED_TARGET nix-main)
|
|
|
|
# nix-irc
|
|
add_executable(nix-irc
|
|
src/irc/main.cpp
|
|
src/irc/parser.cpp
|
|
src/irc/resolver.cpp
|
|
src/irc/ir_gen.cpp
|
|
src/irc/serializer.cpp
|
|
)
|
|
|
|
target_include_directories(nix-irc PRIVATE
|
|
${NIX_STORE_INCLUDE_DIRS}
|
|
${NIX_EXPR_INCLUDE_DIRS}
|
|
${NIX_UTIL_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_link_libraries(nix-irc PRIVATE
|
|
${NIX_STORE_LINK_LIBRARIES}
|
|
${NIX_EXPR_LINK_LIBRARIES}
|
|
${NIX_UTIL_LINK_LIBRARIES}
|
|
)
|
|
|
|
# Nix IR Plugin
|
|
add_library(nix-ir-plugin MODULE
|
|
src/plugin.cpp
|
|
src/irc/parser.cpp
|
|
src/irc/resolver.cpp
|
|
src/irc/ir_gen.cpp
|
|
src/irc/serializer.cpp
|
|
src/irc/evaluator.cpp
|
|
)
|
|
|
|
# Include directories from pkg-config
|
|
target_include_directories(nix-ir-plugin PRIVATE
|
|
${CMAKE_SOURCE_DIR}/src
|
|
${NIX_STORE_INCLUDE_DIRS}
|
|
${NIX_EXPR_INCLUDE_DIRS}
|
|
${NIX_CMD_INCLUDE_DIRS}
|
|
${NIX_UTIL_INCLUDE_DIRS}
|
|
${NIX_FETCHERS_INCLUDE_DIRS}
|
|
${NIX_MAIN_INCLUDE_DIRS}
|
|
)
|
|
|
|
# Link libraries
|
|
target_link_libraries(nix-ir-plugin PRIVATE
|
|
${NIX_STORE_LINK_LIBRARIES}
|
|
${NIX_EXPR_LINK_LIBRARIES}
|
|
${NIX_CMD_LINK_LIBRARIES}
|
|
${NIX_UTIL_LINK_LIBRARIES}
|
|
${NIX_FETCHERS_LINK_LIBRARIES}
|
|
${NIX_MAIN_LINK_LIBRARIES}
|
|
)
|
|
|
|
# Set output name
|
|
set_target_properties(nix-ir-plugin PROPERTIES
|
|
PREFIX ""
|
|
OUTPUT_NAME "nix-ir-plugin"
|
|
)
|
|
|
|
# Install to plugin directory
|
|
install(TARGETS nix-ir-plugin LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/nix/plugins")
|
|
|
|
# Regression tests
|
|
add_executable(regression_test
|
|
tests/regression_test.cpp
|
|
src/irc/serializer.cpp
|
|
src/irc/parser.cpp
|
|
)
|
|
|
|
target_include_directories(regression_test PRIVATE
|
|
${CMAKE_SOURCE_DIR}/src
|
|
${NIX_STORE_INCLUDE_DIRS}
|
|
${NIX_EXPR_INCLUDE_DIRS}
|
|
${NIX_UTIL_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_link_libraries(regression_test PRIVATE
|
|
${NIX_STORE_LINK_LIBRARIES}
|
|
${NIX_EXPR_LINK_LIBRARIES}
|
|
${NIX_UTIL_LINK_LIBRARIES}
|
|
)
|