improved build system

This commit is contained in:
Maxim Devaev 2025-02-08 15:38:11 +02:00
parent dd7701be38
commit a2b8b35070
7 changed files with 43 additions and 54 deletions

View File

@ -1,4 +1,3 @@
include lib.mk
-include config.mk -include config.mk
@ -24,6 +23,18 @@ WITH_PTHREAD_NP ?= 1
WITH_SETPROCTITLE ?= 1 WITH_SETPROCTITLE ?= 1
WITH_PDEATHSIG ?= 1 WITH_PDEATHSIG ?= 1
define optbool
$(filter $(shell echo $(1) | tr A-Z a-z), yes on 1)
endef
MK_WITH_PYTHON = $(call optbool,$(WITH_PYTHON))
MK_WITH_JANUS = $(call optbool,$(WITH_JANUS))
MK_WITH_V4P = $(call optbool,$(WITH_V4P))
MK_WITH_GPIO = $(call optbool,$(WITH_GPIO))
MK_WITH_SYSTEMD = $(call optbool,$(WITH_SYSTEMD))
MK_WITH_PTHREAD_NP = $(call optbool,$(WITH_PTHREAD_NP))
MK_WITH_SETPROCTITLE = $(call optbool,$(WITH_SETPROCTITLE))
MK_WITH_PDEATHSIG = $(call optbool,$(WITH_PDEATHSIG))
export export
_LINTERS_IMAGE ?= ustreamer-linters _LINTERS_IMAGE ?= ustreamer-linters
@ -44,10 +55,10 @@ endif
# ===== # =====
all: all:
+ $(MAKE) apps + $(MAKE) apps
ifneq ($(call optbool,$(WITH_PYTHON)),) ifneq ($(MK_WITH_PYTHON),)
+ $(MAKE) python + $(MAKE) python
endif endif
ifneq ($(call optbool,$(WITH_JANUS)),) ifneq ($(MK_WITH_JANUS),)
+ $(MAKE) janus + $(MAKE) janus
endif endif
@ -71,10 +82,10 @@ janus:
install: all install: all
$(MAKE) -C src install $(MAKE) -C src install
ifneq ($(call optbool,$(WITH_PYTHON)),) ifneq ($(MK_WITH_PYTHON),)
$(MAKE) -C python install $(MAKE) -C python install
endif endif
ifneq ($(call optbool,$(WITH_JANUS)),) ifneq ($(MK_WITH_JANUS),)
$(MAKE) -C janus install $(MAKE) -C janus install
endif endif
mkdir -p $(R_DESTDIR)$(MANPREFIX)/man1 mkdir -p $(R_DESTDIR)$(MANPREFIX)/man1

View File

@ -1,7 +1,3 @@
include ../lib.mk
# =====
R_DESTDIR ?= R_DESTDIR ?=
PREFIX ?= /usr/local PREFIX ?= /usr/local
@ -22,7 +18,7 @@ _SRCS = $(shell ls src/uslibs/*.c src/*.c)
_BUILD = build _BUILD = build
ifneq ($(call optbool,$(WITH_PTHREAD_NP)),) ifneq ($(MK_WITH_PTHREAD_NP),)
override _CFLAGS += -DWITH_PTHREAD_NP override _CFLAGS += -DWITH_PTHREAD_NP
endif endif

3
lib.mk
View File

@ -1,3 +0,0 @@
define optbool
$(filter $(shell echo $(1) | tr A-Z a-z), yes on 1)
endef

View File

@ -1,5 +1,3 @@
-include ../config.mk
R_DESTDIR ?= R_DESTDIR ?=
PREFIX ?= /usr/local PREFIX ?= /usr/local

View File

@ -16,20 +16,12 @@ def _find_sources() -> list[str]:
def _find_flags() -> dict[str, bool]: def _find_flags() -> dict[str, bool]:
return { return {
key: bool(int(value)) key[3:]: (value.strip().lower() in ["true", "on", "1"])
for (key, value) in sorted(os.environ.items()) for (key, value) in sorted(os.environ.items())
if key.startswith("WITH_") if key.startswith("MK_WITH_")
} }
def _make_d_flags(flags: dict[str, bool]) -> list[str]:
return [
f"-D{key}"
for (key, value) in flags.items()
if value
]
def _make_d_features(flags: dict[str, bool]) -> str: def _make_d_features(flags: dict[str, bool]) -> str:
features = " ".join([ features = " ".join([
f"{key}={int(value)}" f"{key}={int(value)}"
@ -54,7 +46,6 @@ def main() -> None:
extra_compile_args=[ extra_compile_args=[
"-std=c17", "-D_GNU_SOURCE", "-std=c17", "-D_GNU_SOURCE",
_make_d_features(flags), _make_d_features(flags),
*_make_d_flags(flags),
], ],
undef_macros=["NDEBUG"], undef_macros=["NDEBUG"],
sources=_find_sources(), sources=_find_sources(),

View File

@ -1,7 +1,3 @@
include ../lib.mk
# =====
R_DESTDIR ?= R_DESTDIR ?=
PREFIX ?= /usr/local PREFIX ?= /usr/local
@ -50,45 +46,45 @@ _OBJS = $(_USTR_SRCS:%.c=$(_BUILD)/%.o) $(_DUMP_SRCS:%.c=$(_BUILD)/%.o)
# ===== # =====
ifneq ($(call optbool,$(WITH_PYTHON)),) ifneq ($(MK_WITH_PYTHON),)
override _CFLAGS += -DWITH_PYTHON override _CFLAGS += -DMK_WITH_PYTHON
endif endif
ifneq ($(call optbool,$(WITH_JANUS)),) ifneq ($(MK_WITH_JANUS),)
override _CFLAGS += -DWITH_JANUS override _CFLAGS += -DMK_WITH_JANUS
endif endif
ifneq ($(call optbool,$(WITH_GPIO)),) ifneq ($(MK_WITH_GPIO),)
override _CFLAGS += -DWITH_GPIO $(shell $(PKG_CONFIG) --atleast-version=2 libgpiod 2> /dev/null && echo -DHAVE_GPIOD2) override _CFLAGS += -DMK_WITH_GPIO -DWITH_GPIO $(shell $(PKG_CONFIG) --atleast-version=2 libgpiod 2> /dev/null && echo -DHAVE_GPIOD2)
override _USTR_LDFLAGS += -lgpiod override _USTR_LDFLAGS += -lgpiod
override _USTR_SRCS += $(shell ls ustreamer/gpio/*.c) override _USTR_SRCS += $(shell ls ustreamer/gpio/*.c)
endif endif
ifneq ($(call optbool,$(WITH_SYSTEMD)),) ifneq ($(MK_WITH_SYSTEMD),)
override _CFLAGS += -DWITH_SYSTEMD override _CFLAGS += -DMK_WITH_SYSTEMD -DWITH_SYSTEMD
override _USTR_LDFLAGS += -lsystemd override _USTR_LDFLAGS += -lsystemd
override _USTR_SRCS += $(shell ls ustreamer/http/systemd/*.c) override _USTR_SRCS += $(shell ls ustreamer/http/systemd/*.c)
endif endif
ifneq ($(call optbool,$(WITH_PTHREAD_NP)),) ifneq ($(MK_WITH_PTHREAD_NP),)
override _CFLAGS += -DWITH_PTHREAD_NP override _CFLAGS += -DMK_WITH_PTHREAD_NP -DWITH_PTHREAD_NP
endif endif
ifneq ($(call optbool,$(WITH_SETPROCTITLE)),) ifneq ($(MK_WITH_SETPROCTITLE),)
override _CFLAGS += -DWITH_SETPROCTITLE override _CFLAGS += -DMK_WITH_SETPROCTITLE -DWITH_SETPROCTITLE
ifeq ($(shell uname -s | tr A-Z a-z),linux) ifeq ($(shell uname -s | tr A-Z a-z),linux)
override _USTR_LDFLAGS += -lbsd override _USTR_LDFLAGS += -lbsd
endif endif
endif endif
ifneq ($(call optbool,$(WITH_PDEATHSIG)),) ifneq ($(MK_WITH_PDEATHSIG),)
override _CFLAGS += -DWITH_PDEATHSIG override _CFLAGS += -DMK_WITH_PDEATHSIG -DWITH_PDEATHSIG
endif endif
ifneq ($(call optbool,$(WITH_V4P)),) ifneq ($(MK_WITH_V4P),)
override _TARGETS += $(_V4P) override _TARGETS += $(_V4P)
override _OBJS += $(_V4P_SRCS:%.c=$(_BUILD)/%.o) override _OBJS += $(_V4P_SRCS:%.c=$(_BUILD)/%.o)
override _CFLAGS += -DWITH_V4P $(shell $(PKG_CONFIG) --cflags libdrm) override _CFLAGS += -DMK_WITH_V4P -DWITH_V4P $(shell $(PKG_CONFIG) --cflags libdrm)
override _V4P_LDFLAGS += $(shell $(PKG_CONFIG) --libs libdrm) override _V4P_LDFLAGS += $(shell $(PKG_CONFIG) --libs libdrm)
override _USTR_SRCS += $(shell ls libs/drm/*.c) override _USTR_SRCS += $(shell ls libs/drm/*.c)
override _USTR_LDFLAGS += $(shell $(PKG_CONFIG) --libs libdrm) override _USTR_LDFLAGS += $(shell $(PKG_CONFIG) --libs libdrm)

View File

@ -581,49 +581,49 @@ static int _check_instance_id(const char *str) {
} }
static void _features(void) { static void _features(void) {
# ifdef WITH_PYTHON # ifdef MK_WITH_PYTHON
puts("+ WITH_PYTHON"); puts("+ WITH_PYTHON");
# else # else
puts("- WITH_PYTHON"); puts("- WITH_PYTHON");
# endif # endif
# ifdef WITH_JANUS # ifdef MK_WITH_JANUS
puts("+ WITH_JANUS"); puts("+ WITH_JANUS");
# else # else
puts("- WITH_JANUS"); puts("- WITH_JANUS");
# endif # endif
# ifdef WITH_V4P # ifdef MK_WITH_V4P
puts("+ WITH_V4P"); puts("+ WITH_V4P");
# else # else
puts("- WITH_V4P"); puts("- WITH_V4P");
# endif # endif
# ifdef WITH_GPIO # ifdef MK_WITH_GPIO
puts("+ WITH_GPIO"); puts("+ WITH_GPIO");
# else # else
puts("- WITH_GPIO"); puts("- WITH_GPIO");
# endif # endif
# ifdef WITH_SYSTEMD # ifdef MK_WITH_SYSTEMD
puts("+ WITH_SYSTEMD"); puts("+ WITH_SYSTEMD");
# else # else
puts("- WITH_SYSTEMD"); puts("- WITH_SYSTEMD");
# endif # endif
# ifdef WITH_PTHREAD_NP # ifdef MK_WITH_PTHREAD_NP
puts("+ WITH_PTHREAD_NP"); puts("+ WITH_PTHREAD_NP");
# else # else
puts("- WITH_PTHREAD_NP"); puts("- WITH_PTHREAD_NP");
# endif # endif
# ifdef WITH_SETPROCTITLE # ifdef MK_WITH_SETPROCTITLE
puts("+ WITH_SETPROCTITLE"); puts("+ WITH_SETPROCTITLE");
# else # else
puts("- WITH_SETPROCTITLE"); puts("- WITH_SETPROCTITLE");
# endif # endif
# ifdef WITH_PDEATHSIG # ifdef MK_WITH_PDEATHSIG
puts("+ WITH_PDEATHSIG"); puts("+ WITH_PDEATHSIG");
# else # else
puts("- WITH_PDEATHSIG"); puts("- WITH_PDEATHSIG");