-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConfig.cmake
More file actions
79 lines (74 loc) · 3.29 KB
/
Config.cmake
File metadata and controls
79 lines (74 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# cmake/Config.cmake — Per-applet configuration
include_guard()
# ── Per-applet options ──────────────────────────────────────
# Default all to ON. Each generates CFBOX_ENABLE_<APPLET> in applet_config.hpp
set(CFBOX_APPLETS
echo printf cat head tail wc sort uniq
mkdir rm cp mv ls grep find sed init
true false yes pwd
basename dirname uname nproc link
hostname logname whoami tty
sleep id test
sh
printenv hostid sync usleep rmdir unlink who env
readlink realpath touch truncate stat install mktemp
ln mkfifo mknod du
seq tee tac fold expand
cut paste nl comm tr
cksum md5sum sum
date od split shuf factor
timeout nice nohup df
expr tsort
xargs
gzip gunzip diff cmp patch ed tar cpio ar unzip
awk
free uptime kill pidof ps pgrep sysctl
pwdx pstree pmap fuser iostat
watch top
dmesg hexdump more rev cal renice
clear which mountpoint chmod chown chgrp
)
foreach(applet IN LISTS CFBOX_APPLETS)
string(TOUPPER "${applet}" APPLET_UPPER)
option(CFBOX_ENABLE_${APPLET_UPPER} "Enable ${applet} applet" ON)
endforeach()
# ── Preset profiles ─────────────────────────────────────────
# Usage: cmake -DCFBOX_PROFILE=minimal ..
set(CFBOX_PROFILE "" CACHE STRING "Configuration profile: full, desktop, minimal, embedded")
if(CFBOX_PROFILE)
if(CFBOX_PROFILE STREQUAL "minimal")
# Minimal: only essential file operations
set(CFBOX_ENABLE_ECHO ON CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_PRINTF OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_CAT ON CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_HEAD OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_TAIL OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_WC OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_SORT OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_UNIQ OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_MKDIR ON CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_RM ON CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_CP ON CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_MV ON CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_LS ON CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_GREP ON CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_FIND OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_SED OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_INIT OFF CACHE BOOL "" FORCE)
elseif(CFBOX_PROFILE STREQUAL "embedded")
# Embedded: everything except optional text processing
set(CFBOX_ENABLE_SORT OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_UNIQ OFF CACHE BOOL "" FORCE)
set(CFBOX_ENABLE_SED OFF CACHE BOOL "" FORCE)
elseif(CFBOX_PROFILE STREQUAL "desktop" OR CFBOX_PROFILE STREQUAL "full")
# All enabled (same as default)
else()
message(WARNING "Unknown CFBOX_PROFILE: ${CFBOX_PROFILE}")
endif()
endif()
# ── Generate applet_config.hpp ──────────────────────────────
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/include/cfbox/applet_config.hpp.in
${CMAKE_CURRENT_BINARY_DIR}/include/cfbox/applet_config.hpp
@ONLY
)