build: use full paths on compile/link targets

This makes the compile commands clearer when building in parallel (with
`make -j`) and ensures that `__FILE__` includes the full build-time path
(relative to the root of the repository) whenever it is referenced, such
as in failed assert() messages (currently the full path is only shown in
errExit() messages).  Example:

Before:

    firejail: main.c💯 main: Assertion `1 == 2' failed.
    Error src/firecfg/main.c💯 main: malloc: Cannot allocate memory

After:

    firejail: ../../src/firejail/main.c💯 main: Assertion `1 == 2' failed.
    Error ../../src/firecfg/main.c💯 main: malloc: Cannot allocate memory

Commands used to search and replace:

    $ git grep -Ilz '^MOD_DIR =' -- '*Makefile' | xargs -0 -I '{}' \
      sh -c "printf '%s\n' \"\$(sed -E \
        -e 's|^MOD_DIR = src/(.*)|MOD = \\1\\nMOD_DIR = \$(ROOT)/src/\$(MOD)|' \
        -e 's:^(PROG|SO) = [^.]+(\.so)?$:\\1 = \$(MOD_DIR)/\$(MOD)\2:' \
        '{}')\" >'{}'"
    $ git grep -Ilz '^HDRS :=' -- '*.mk' | xargs -0 -I '{}' \
      sh -c "printf '%s\n' \"\$(sed -E \
        -e 's|wildcard (\*\..)|wildcard \$(MOD_DIR)/\\1|' '{}')\" >'{}'"

Note: config.mk.in, src/fnettrace/Makefile and src/include/common.h were
edited manually.

This is a follow-up to #5871.
This commit is contained in:
Kelvin M. Klann 2023-07-02 22:19:48 -03:00
parent a8abb78009
commit 5b1bd33c7d
30 changed files with 86 additions and 60 deletions

View file

@ -81,7 +81,7 @@ LDFLAGS=@LDFLAGS@
# Project variables # Project variables
EXTRA_CFLAGS =@EXTRA_CFLAGS@ EXTRA_CFLAGS =@EXTRA_CFLAGS@
COMMON_CFLAGS = \ COMMON_CFLAGS = \
-ggdb -O2 -DVERSION='"$(VERSION)"' -DMOD_DIR='"$(MOD_DIR)"' \ -ggdb -O2 -DVERSION='"$(VERSION)"' \
-Wall -Wextra $(HAVE_FATAL_WARNINGS) \ -Wall -Wextra $(HAVE_FATAL_WARNINGS) \
-Wformat -Wformat-security \ -Wformat -Wformat-security \
-fstack-protector-all -D_FORTIFY_SOURCE=2 \ -fstack-protector-all -D_FORTIFY_SOURCE=2 \

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/etc-cleanup MOD = etc-cleanup
PROG = etc-cleanup MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/etc_groups.h EXTRA_HDRS = ../include/etc_groups.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fbuilder MOD = fbuilder
PROG = fbuilder MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/syscall.h EXTRA_HDRS = ../include/common.h ../include/syscall.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fcopy MOD = fcopy
PROG = fcopy MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/syscall.h EXTRA_HDRS = ../include/common.h ../include/syscall.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fids MOD = fids
PROG = fids MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h EXTRA_HDRS = ../include/common.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/firecfg MOD = firecfg
PROG = firecfg MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = \ EXTRA_HDRS = \

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/firejail MOD = firejail
PROG = firejail MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = \ EXTRA_HDRS = \

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/firemon MOD = firemon
PROG = firemon MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/pid.h EXTRA_HDRS = ../include/common.h ../include/pid.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fldd MOD = fldd
PROG = fldd MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/syscall.h ../include/ldd_utils.h EXTRA_HDRS = ../include/common.h ../include/syscall.h ../include/ldd_utils.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fnet MOD = fnet
PROG = fnet MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/libnetlink.h EXTRA_HDRS = ../include/common.h ../include/libnetlink.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fnetfilter MOD = fnetfilter
PROG = fnetfilter MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/syscall.h EXTRA_HDRS = ../include/common.h ../include/syscall.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fnetlock MOD = fnetlock
PROG = fnetlock MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
include $(ROOT)/src/prog.mk include $(ROOT)/src/prog.mk

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fnettrace-dns MOD = fnettrace-dns
PROG = fnettrace-dns MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
include $(ROOT)/src/prog.mk include $(ROOT)/src/prog.mk

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fnettrace-icmp MOD = fnettrace-icmp
PROG = fnettrace-icmp MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
include $(ROOT)/src/prog.mk include $(ROOT)/src/prog.mk

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fnettrace-sni MOD = fnettrace-sni
PROG = fnettrace-sni MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
include $(ROOT)/src/prog.mk include $(ROOT)/src/prog.mk

View file

@ -2,12 +2,13 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fnettrace MOD = fnettrace
PROG = fnettrace MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
include $(ROOT)/src/prog.mk include $(ROOT)/src/prog.mk
all: $(TARGET) static-ip-map all: $(TARGET) static-ip-map
static-ip-map: static-ip-map.txt fnettrace static-ip-map: static-ip-map.txt $(PROG)
./fnettrace --squash-map=static-ip-map.txt > static-ip-map ./$(PROG) --squash-map=static-ip-map.txt > static-ip-map

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fsec-optimize MOD = fsec-optimize
PROG = fsec-optimize MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/seccomp.h ../include/syscall.h EXTRA_HDRS = ../include/common.h ../include/seccomp.h ../include/syscall.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fsec-print MOD = fsec-print
PROG = fsec-print MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/seccomp.h ../include/syscall.h EXTRA_HDRS = ../include/common.h ../include/seccomp.h ../include/syscall.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fseccomp MOD = fseccomp
PROG = fseccomp MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/syscall.h EXTRA_HDRS = ../include/common.h ../include/syscall.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/ftee MOD = ftee
PROG = ftee MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
include $(ROOT)/src/prog.mk include $(ROOT)/src/prog.mk

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/fzenity MOD = fzenity
PROG = fzenity MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h EXTRA_HDRS = ../include/common.h

View file

@ -41,8 +41,8 @@
#define errExit(msg) do { \ #define errExit(msg) do { \
char msgout[500]; \ char msgout[500]; \
snprintf(msgout, 500, "Error %s/%s:%d: %s: %s", \ snprintf(msgout, 500, "Error %s:%d: %s: %s", \
MOD_DIR, __FILE__, __LINE__, __func__, msg); \ __FILE__, __LINE__, __func__, msg); \
perror(msgout); \ perror(msgout); \
exit(1); \ exit(1); \
} while (0) } while (0)

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/jailcheck MOD = jailcheck
PROG = jailcheck MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h ../include/pid.h EXTRA_HDRS = ../include/common.h ../include/pid.h

View file

@ -2,7 +2,8 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/lib MOD = lib
MOD_DIR = $(ROOT)/src/$(MOD)
TARGET = lib TARGET = lib
include $(ROOT)/src/prog.mk include $(ROOT)/src/prog.mk

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/libpostexecseccomp MOD = libpostexecseccomp
SO = libpostexecseccomp.so MOD_DIR = $(ROOT)/src/$(MOD)
SO = $(MOD_DIR)/$(MOD).so
TARGET = $(SO) TARGET = $(SO)
EXTRA_HDRS = ../include/seccomp.h ../include/rundefs.h EXTRA_HDRS = ../include/seccomp.h ../include/rundefs.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/libtrace MOD = libtrace
SO = libtrace.so MOD_DIR = $(ROOT)/src/$(MOD)
SO = $(MOD_DIR)/$(MOD).so
TARGET = $(SO) TARGET = $(SO)
include $(ROOT)/src/so.mk include $(ROOT)/src/so.mk

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/libtracelog MOD = libtracelog
SO = libtracelog.so MOD_DIR = $(ROOT)/src/$(MOD)
SO = $(MOD_DIR)/$(MOD).so
TARGET = $(SO) TARGET = $(SO)
EXTRA_HDRS = ../include/rundefs.h EXTRA_HDRS = ../include/rundefs.h

View file

@ -2,8 +2,9 @@
ROOT = ../.. ROOT = ../..
-include $(ROOT)/config.mk -include $(ROOT)/config.mk
MOD_DIR = src/profstats MOD = profstats
PROG = profstats MOD_DIR = $(ROOT)/src/$(MOD)
PROG = $(MOD_DIR)/$(MOD)
TARGET = $(PROG) TARGET = $(PROG)
EXTRA_HDRS = ../include/common.h EXTRA_HDRS = ../include/common.h

View file

@ -5,8 +5,8 @@
# The includer should probably define PROG and TARGET and may also want to # The includer should probably define PROG and TARGET and may also want to
# define EXTRA_HDRS and EXTRA_OBJS and extend CLEANFILES. # define EXTRA_HDRS and EXTRA_OBJS and extend CLEANFILES.
HDRS := $(sort $(wildcard *.h)) $(EXTRA_HDRS) HDRS := $(sort $(wildcard $(MOD_DIR)/*.h)) $(EXTRA_HDRS)
SRCS := $(sort $(wildcard *.c)) SRCS := $(sort $(wildcard $(MOD_DIR)/*.c))
OBJS := $(SRCS:.c=.o) $(EXTRA_OBJS) OBJS := $(SRCS:.c=.o) $(EXTRA_OBJS)
.PHONY: all .PHONY: all

View file

@ -5,8 +5,8 @@
# The includer should probably define SO and TARGET and may also want to define # The includer should probably define SO and TARGET and may also want to define
# EXTRA_HDRS and EXTRA_OBJS and extend CLEANFILES. # EXTRA_HDRS and EXTRA_OBJS and extend CLEANFILES.
HDRS := $(sort $(wildcard *.h)) $(EXTRA_HDRS) HDRS := $(sort $(wildcard $(MOD_DIR)/*.h)) $(EXTRA_HDRS)
SRCS := $(sort $(wildcard *.c)) SRCS := $(sort $(wildcard $(MOD_DIR)/*.c))
OBJS := $(SRCS:.c=.o) $(EXTRA_OBJS) OBJS := $(SRCS:.c=.o) $(EXTRA_OBJS)
.PHONY: all .PHONY: all