live-bootstrap/sysa/bash-2.05b/mk/main.mk

93 lines
2.5 KiB
Makefile

# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
# SPDX-FileCopyrightText: 2021 fosslinux <fosslinux@aussies.space>
#
# SPDX-License-Identifier: GPL-3.0-or-later
include common.mk
CFLAGS = \
-I. \
-Iinclude \
-Ilib \
-Ilib/sh \
-Ibuiltins \
$(COMMON_CFLAGS)
LDFLAGS = -L. -Lbuiltins
LIBRARIES = libsh.a builtins/libbuiltins.a libglob.a libtilde.a
SHLIB_FILES = clktck getcwd getenv oslib setlinebuf strcasecmp strerror strtod \
vprint itos rename zread zwrite shtty inet_aton netopen \
strpbrk timeval clock makepath pathcanon pathphys stringlist stringvec \
tmpfile spell strtrans strindex shquote snprintf mailstat fmtulong \
fmtullong strtoll strtoull strtoimax strtoumax fmtumax netconn mktime \
strftime xstrchr zcatfd
# FIXME: for some reason these don't get picked up correctly in the
# final linking cmd
SHLIB_ODD_FILES = zcatfd strtoumax spell pathphys
SHLIB_OBJS = $(addprefix lib/sh/, $(addsuffix .o, $(SHLIB_FILES)))
SHLIB_ODD_OBJS = $(addprefix lib/sh/, $(addsuffix .o, $(SHLIB_ODD_FILES)))
MKBUILTINS_OBJS = builtins/mkbuiltins.o
BUILTINS_DEFS = $(addprefix builtins/, $(addsuffix .def, $(BUILTINS_DEF_FILES)))
GLOB_FILES = glob strmatch smatch xmbsrtowcs
GLOB_OBJS = $(addprefix lib/glob/, $(addsuffix .o, $(GLOB_FILES)))
TILDE_OBJS = lib/tilde/tilde.o
MKSYNTAX_OBJS = mksyntax.o
MKSIGNAMES_OBJS = support/mksignames.o
FILES = shell eval y.tab general make_cmd print_cmd dispose_cmd execute_cmd \
variables copy_cmd error expr flags nojobs subst hashcmd hashlib mailcheck \
trap input unwind_prot pathexp sig test version alias array arrayfunc \
braces bracecomp bashhist bashline list stringlib locale findcmd redir \
pcomplete pcomplib syntax xmalloc siglist
OBJS = $(addsuffix .o, $(FILES))
all: bash
# Builtins
mkbuiltins: $(MKBUILTINS_OBJS)
$(CC) $(CFLAGS) $(MKBUILTINS_OBJS) $(LDFLAGS) -o $@
./mkbuiltins -externfile builtins/builtext.h -structfile builtins/builtins.c -noproduction $(BUILTINS_DEFS)
# libsh
libsh.a: $(SHLIB_OBJS)
$(AR) cr $@ $^
# libglob
libglob.a: $(GLOB_OBJS)
$(AR) cr $@ $^
# libtilde
libtilde.a: $(TILDE_OBJS)
$(AR) cr $@ $^
# The actual program
mksyntax: $(MKSYNTAX_OBJS)
$(CC) $^ $(LDFLAGS) -o $@ -lgetopt
syntax.c: mksyntax
./mksyntax -o $@
mksignames: $(MKSIGNAMES_OBJS)
$(CC) $^ $(LDFLAGS) -o $@ -lgetopt
signames.h: mksignames
./mksignames $@
y.tab.c: parse.y
yacc -d $^
trap.c: signames.h
bash: libsh.a libglob.a libtilde.a $(OBJS)
$(CC) -o bash $(LIBRARIES) $(OBJS) $(SHLIB_ODD_OBJS) $(LDFLAGS) -lsh -lbuiltins -lglob -ltilde