svcman/Makefile

86 lines
1.7 KiB
Makefile

include config.dist.mk
-include config.mk
B := build
OBJ := $(B)/obj
BIN := $(B)/bin
SRC := src
NS := sm_
ALL =
AR = ar
ARFLAGS = -c
CC = cc
CPPFLAGS = -I $(SRC)/include
CFLAGS = -std=c99 -Wall -Wextra -pedantic -Wno-unused-parameter $(shell pkg-config --cflags openssl)
ifeq ($(V),)
QV = @echo
Q = @
else
QV = @true
Q =
endif
.DEFAULT_GOAL := all
.PHONY: all clean
clean:
$(QV) "[RM] $(B)"
$(Q)rm -rf $(B)
ifeq ($(REAP_METHOD),parent)
$(BIN)/reaper: \
$(OBJ)/reaper/reaper.o \
$(OBJ)/libreap-$(PARENT_REAP_METHOD).a
ALL += $(BIN)/reaper
ENTRY = reaper
else
ENTRY = spawner
endif
$(OBJ)/libdb-rw.a: \
$(OBJ)/db/adb/io.o \
$(OBJ)/db/adb/adb.o \
$(OBJ)/db/adb/adb_walk_genadb.o \
$(OBJ)/db/adb/adb_walk_gentext.o \
$(OBJ)/db/adb/adb_walk_adb.o \
$(OBJ)/db/adb/adb_walk_text.o
$(OBJ)/libdb-ro.a: \
$(OBJ)/db/adb/io.o \
$(OBJ)/db/adb/adb.o \
$(OBJ)/db/adb/adb_walk_adb.o \
$(OBJ)/db/adb/adb_walk_text.o
$(OBJ)/libreap-$(REAP_METHOD).a: $(OBJ)/reaper/reapfd-$(REAP_METHOD).o
$(OBJ)/libreap-$(PARENT_REAP_METHOD).a: $(OBJ)/reaper/reapfd-$(PARENT_REAP_METHOD).o
$(BIN)/spawner: \
$(OBJ)/spawner/spawner.o \
$(OBJ)/libreap-$(REAP_METHOD).a \
$(OBJ)/libdb-ro.a
ALL += $(BIN)/spawner
$(OBJ)/%.o: $(SRC)/%.c
$(Q)mkdir -p $(dir $@)
$(QV) "[CC] $(subst $(SRC)/,,$<)"
$(Q)$(CROSS_COMPILE)$(CC) $(CPPFLAGS) $(CFLAGS) -c $^ -o $@
$(OBJ)/%.a:
$(Q)mkdir -p $(dir $@)
$(QV) "[AR] $(subst $(OBJ)/,,$@)"
$(Q)rm -f $@
$(Q)$(CROSS_COMPILE)$(AR) -r $(ARFLAGS) $@ $^ $(AREXTRA)
$(BIN)/%: $(SRC)/applet.c
$(Q)mkdir -p $(dir $@)
$(QV) "[LD] $(subst $(BIN)/,,$@)"
$(Q)$(CROSS_COMPILE)$(CC) $(CFLAGS) -DAPPLET_MAIN=$(NS)$(notdir $@)_main -DAPPLET_USAGE=$(NS)$(notdir $@)_usage $(LDFLAGS) $^ -o $@
all: $(ALL)