MAKE: Fix parallel builds; .o files; .gitignore; new makedocs

This commit is contained in:
KuhnChris 2023-06-28 16:07:28 +02:00 committed by Stefano Brivio
parent e01759e2fa
commit cc2a6bec3c
3 changed files with 45 additions and 26 deletions

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
*~
*.o
/passt
/passt.avx2
/pasta

View file

@ -100,29 +100,41 @@ else
BIN := passt pasta qrap
endif
all: $(BIN) $(MANPAGES) docs
.NOTPARALLEL: seccomp.h
all: seccomp.h $(BIN) $(MANPAGES) docs
PASST_OBJS = $(PASST_SRCS:.c=.o)
PASST_AVX2_OBJS = $(PASST_SRCS:.c=.avx2.o)
OBJS = $(SRCS:.c=.o)
QRAP_OBJS = $(QRAP_SRCS:.c=.o)
AVXFLAGS += -Ofast -mavx2 -ftree-vectorize -funroll-loops
static: FLAGS += -static -DGLIBC_NO_STATIC_NSS
static: clean all
static: clean seccomp.h all
seccomp.h: seccomp.sh $(PASST_SRCS) $(PASST_HEADERS)
@ EXTRA_SYSCALLS="$(EXTRA_SYSCALLS)" ARCH="$(TARGET_ARCH)" CC="$(CC)" ./seccomp.sh $(PASST_SRCS) $(PASST_HEADERS)
passt: $(PASST_SRCS) $(HEADERS)
$(CC) $(FLAGS) $(CFLAGS) $(CPPFLAGS) $(PASST_SRCS) -o passt $(LDFLAGS)
.c.o:
$(CC) $(FLAGS) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
passt.avx2: FLAGS += -Ofast -mavx2 -ftree-vectorize -funroll-loops
passt.avx2: $(PASST_SRCS) $(HEADERS)
$(CC) $(filter-out -O2,$(FLAGS)) $(CFLAGS) $(CPPFLAGS) \
$(PASST_SRCS) -o passt.avx2 $(LDFLAGS)
$(PASST_AVX2_OBJS): seccomp.h
$(CC) $(AVXFLAGS) $(FLAGS) $(CFLAGS) $(CPPFLAGS) -c $(@:.avx2.o=.c) -o $@
passt.avx2: passt
passt: $(PASST_OBJS) seccomp.h
$(CC) $(FLAGS) $(CFLAGS) $(CPPFLAGS) $(PASST_OBJS) -o passt $(LDFLAGS)
passt.avx2: $(PASST_AVX2_OBJS) $(HEADERS) seccomp.h
$(CC) $(filter-out -O2,$(FLAGS)) $(CFLAGS) $(CPPFLAGS) $(AVXFLAGS) \
$(PASST_AVX2_OBJS) -o passt.avx2 $(LDFLAGS)
passt.avx2: passt seccomp.h
pasta.avx2 pasta.1 pasta: pasta%: passt%
ln -sf $< $@
qrap: $(QRAP_SRCS) passt.h
$(CC) $(FLAGS) $(CFLAGS) $(CPPFLAGS) $(QRAP_SRCS) -o qrap $(LDFLAGS)
qrap: $(QRAP_OBJS) passt.h seccomp.h
$(CC) $(FLAGS) $(CFLAGS) $(CPPFLAGS) $(QRAP_OBJS) -o qrap $(LDFLAGS)
valgrind: EXTRA_SYSCALLS += rt_sigprocmask rt_sigtimedwait rt_sigaction \
getpid gettid kill clock_gettime mmap \
@ -170,21 +182,8 @@ pkgs: static
# other way around: the web version should be obtained by adding HTML and
# JavaScript portions to a plain Markdown, instead. However, cgit needs to use
# a file in the git tree. Find a better way around this.
docs: README.md
@( \
skip=0; \
while read l; do \
case $$l in \
"## Demo") exit 0 ;; \
"<!"*) ;; \
"</"*) skip=1 ;; \
"<"*) skip=2 ;; \
esac; \
\
[ $$skip -eq 0 ] && echo "$$l"; \
[ $$skip -eq 1 ] && skip=0; \
done < README.md; \
) > README.plain.md
docs:
[ ! -e doc/ ]; mkdir docs; perl makedocs.pl > docs/README.plain.md
# Checkers currently disabled for clang-tidy:
# - llvmlibc-restrict-system-libc-headers

19
makedocs.pl Normal file
View file

@ -0,0 +1,19 @@
use strict;
my $str = '';
my $regex = qr/(<[^\/].*?>.*?<\/.*?>\n?)|(<\/div>)|(<\/p>)/msp;
my $subst = '';
local $/=undef;
open FILE, '<', 'README.md' or die "Can't open file $!";
my $file_content = <FILE>;
close FILE;
#print "Source: $file_content\n";
my $result = $file_content =~ s/$regex//rg;
my $regex2 = qr/\n[ \n]{3,}\n/msp;
$result = $result =~ s/$regex2/\n\n/rg;
#print "The result of the substitution is: $result\n";
print "$result\n";