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 query/detect supports SOCKS5 proxying for DoH.
|
||||||
- DNS watch (passive, best-effort) implemented.
|
- DNS watch (passive, best-effort) implemented.
|
||||||
- Calc subcrate with subnet/contains/overlap/summarize wired to CLI.
|
- Calc subcrate with subnet/contains/overlap/summarize wired to CLI.
|
||||||
|
- CMake/Makefile build, install, and package targets for release packaging.
|
||||||
|
|
||||||
### In progress
|
### In progress
|
||||||
- v0.2 features: http, tls, discover, diag.
|
- v0.2 features: http, tls, discover, diag.
|
||||||
|
|||||||
Reference in New Issue
Block a user