Add cmake/make for build system
This commit is contained in:
41
CMakeLists.txt
Normal file
41
CMakeLists.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(wtfnet LANGUAGES NONE)
|
||||
|
||||
set(CARGO_CMD cargo)
|
||||
set(CARGO_TARGET_DIR "${CMAKE_BINARY_DIR}/cargo-target")
|
||||
set(BIN_NAME "wtfn${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
set(BIN_PATH "${CARGO_TARGET_DIR}/release/${BIN_NAME}")
|
||||
|
||||
file(READ "${CMAKE_SOURCE_DIR}/crates/wtfnet-cli/Cargo.toml" CLI_TOML)
|
||||
string(REGEX MATCH "version = \"([0-9]+\\.[0-9]+\\.[0-9]+)\"" CLI_VERSION_MATCH "${CLI_TOML}")
|
||||
if(CMAKE_MATCH_1)
|
||||
set(PACKAGE_VERSION "${CMAKE_MATCH_1}")
|
||||
else()
|
||||
set(PACKAGE_VERSION "0.1.0")
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${BIN_PATH}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E env CARGO_TARGET_DIR="${CARGO_TARGET_DIR}"
|
||||
"${CARGO_CMD}" build --release --workspace --bin wtfn
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
COMMENT "Building wtfn with cargo"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_custom_target(wtfnet_build ALL DEPENDS "${BIN_PATH}")
|
||||
|
||||
install(PROGRAMS "${BIN_PATH}" DESTINATION bin)
|
||||
install(DIRECTORY "${CMAKE_SOURCE_DIR}/data" DESTINATION share/wtfnet)
|
||||
|
||||
add_dependencies(install wtfnet_build)
|
||||
|
||||
set(CPACK_PACKAGE_NAME "wtfnet")
|
||||
set(CPACK_PACKAGE_VERSION "${PACKAGE_VERSION}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "wtfnet-${PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
if(WIN32)
|
||||
set(CPACK_GENERATOR "ZIP")
|
||||
else()
|
||||
set(CPACK_GENERATOR "TGZ")
|
||||
endif()
|
||||
include(CPack)
|
||||
18
Makefile
Normal file
18
Makefile
Normal file
@@ -0,0 +1,18 @@
|
||||
BUILD_DIR ?= build
|
||||
|
||||
.PHONY: build configure package install clean
|
||||
|
||||
configure:
|
||||
cmake -S . -B $(BUILD_DIR)
|
||||
|
||||
build: configure
|
||||
cmake --build $(BUILD_DIR)
|
||||
|
||||
package: build
|
||||
cmake --build $(BUILD_DIR) --target package
|
||||
|
||||
install: build
|
||||
cmake --build $(BUILD_DIR) --target install
|
||||
|
||||
clean:
|
||||
cmake -E rm -rf $(BUILD_DIR)
|
||||
@@ -57,6 +57,7 @@ This document tracks the planned roadmap alongside the current implementation st
|
||||
- DNS query/detect supports SOCKS5 proxying for DoH.
|
||||
- DNS watch (passive, best-effort) implemented.
|
||||
- Calc subcrate with subnet/contains/overlap/summarize wired to CLI.
|
||||
- CMake/Makefile build, install, and package targets for release packaging.
|
||||
|
||||
### In progress
|
||||
- v0.2 features: http, tls, discover, diag.
|
||||
|
||||
Reference in New Issue
Block a user