aboutsummaryrefslogtreecommitdiffstats
path: root/mk/config.mk
blob: d824b7341034df4ee915ff9282866236e91f7e97 (plain) (blame)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.


# The package path prefix, if you want to install to another root, set DESTDIR to that root.
PREFIX ?= /usr
# The command path excluding prefix.
BIN ?= /bin
# The library path excluding prefix.
LIB ?= /lib
# The executable library path excluding prefix.
LIBEXEC ?= /libexec
# The resource path excluding prefix.
DATA ?= /share
# The command path including prefix.
BINDIR ?= $(PREFIX)$(BIN)
# The library path including prefix.
LIBDIR ?= $(PREFIX)$(LIB)
# The executable library path including prefix.
LIBEXECDIR ?= $(PREFIX)$(LIBEXEC)
# The resource path including prefix.
DATADIR ?= $(PREFIX)$(DATA)
# The generic documentation path including prefix.
DOCDIR ?= $(DATADIR)/doc
# The info manual documentation path including prefix.
INFODIR ?= $(DATADIR)/info
# The license base path including prefix.
LICENSEDIR ?= $(DATADIR)/licenses
# The transient directory for temporary files.
TMPDIR ?= /tmp
# The transient directory for runtime files.
RUNDIR ?= /run
# The directory for site-specific configurations.
SYSCONFDIR ?= /etc
# The directory for pseudo-devices.
DEVDIR ?= /dev
# The /proc directory
PROCDIR ?= /proc
# The /proc/self directory
SELFPROCDIR ?= $(PROCDIR)/self

# The name of the package as it should be installed.
PKGNAME ?= mds

# The user ID for the root user.
ROOT_USER_UID = 0
# The group ID for the root group.
ROOT_GROUP_GID = 0
# The group ID for the nobody group.
NOBODY_GROUP_GID = $(ROOT_GROUP_GID)
# The path of the symlink to the executed command
SELF_EXE = $(SELFPROCDIR)/exe
# The path to the directory with symlinks to each file that is open
SELF_FD = $(SELFPROCDIR)/fd
# Random number generator to use for generating a token.
TOKEN_RANDOM = $(DEVDIR)/urandom
# Pathname pattern for virtual terminals.
VT_PATH_PATTERN = $(DEVDIR)/tty%i

# The byte length of the authentication token.
TOKEN_LENGTH = 1024
# The maximum number of command line arguments to allow.
ARGC_LIMIT = 50
# The number of additional arguments a libexec server may have.
LIBEXEC_ARGC_EXTRA_LIMIT = 5
# The maximum number of display allowed on the system.
DISPLAY_MAX = 1000
# The minimum time that most have elapsed for respawning to be allowed.
RESPAWN_TIME_LIMIT_SECONDS = 5
# Pattern for the names of shared object to which states are marshalled.
SHM_PATH_PATTERN = /.proc-pid-%ji

# The name of the environment variable that indicates the index of the display.
DISPLAY_ENV = MDS_DISPLAY
# The name of the environment variable that indicates the display server's process group.
PGROUP_ENV = MDS_PGROUP
# The dot-prefixless basename of the initrc file that the master server executes.
INITRC_FILE = mdsinitrc
# The root directory of all runtime data stored by mds.
MDS_RUNTIME_ROOT_DIRECTORY = $(RUNDIR)/$(PKGNAME)
# The root directory of temporarily stored data stored by mds servers.
MDS_STORAGE_ROOT_DIRECTORY = $(TMPDIR)/.{system-directory}.$(PKGNAME)


# Optimisation level (and debug flags.)
OPTIMISE = -Og -g

# Enabled Warnings.
WARN = -Wall -Wextra -pedantic -Wdouble-promotion -Wformat=2 -Winit-self       \
       -Wmissing-include-dirs -Wtrampolines -Wfloat-equal -Wshadow             \
       -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls           \
       -Wnested-externs -Winline -Wno-variadic-macros -Wsign-conversion        \
       -Wswitch-default -Wconversion -Wsync-nand -Wunsafe-loop-optimizations   \
       -Wcast-align -Wstrict-overflow -Wdeclaration-after-statement -Wundef    \
       -Wbad-function-cast -Wcast-qual -Wwrite-strings -Wlogical-op            \
       -Waggregate-return -Wstrict-prototypes -Wold-style-definition -Wpacked  \
       -Wvector-operation-performance -Wunsuffixed-float-constants             \
       -Wsuggest-attribute=const -Wsuggest-attribute=noreturn                  \
       -Wsuggest-attribute=pure -Wsuggest-attribute=format -Wnormalized=nfkc

# The C standard used in the code.
STD = gnu99

# Libraries linking flags.
ifneq ($(LIBMDSSERVER_IS_INSTALLED),y)
LDS = -pthread -Lbin -lmdsserver -lrt
else
LDS = -pthread -lmdsserver -lrt
endif

# C compiler debug flags.
DEBUG_FLAGS =
ifeq ($(DEBUG),y)
DEBUG_FLAGS += -D'DEBUG'
DEBUG_FLAGS += -D'LIBEXECDIR="$(shell pwd)/bin"'
endif

# Options for the C compiler.
C_FLAGS = $(OPTIMISE) $(WARN) -std=$(STD) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)  \
          -ftree-vrp -fstrict-aliasing -fipa-pure-const -fstack-usage       \
          -fstrict-overflow -funsafe-loop-optimizations -fno-builtin        \
	  -D'_GNU_SOURCE' -D'PKGNAME="$(PKGNAME)"' $(DEBUG_FLAGS)


# Flags to pass into the manual compilers.
TEXIFLAGS = #--force