# $Id: kNIX-bootstrap.kmk 3180 2007-04-22 07:13:02Z bird $ ## @file # # kNIX Boostrap Makefile for bash # # Copyright (c) 2007 knut st. osmundsen # # # This file is part of kNIX. # # kNIX is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # kNIX is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with kNIX; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # DEPTH = ../../.. include $(PATH_KBUILD)/header.kmk # version sans patchlevel. VER = 3.1 # # The bash template. # TEMPLATE_bash = bash template TEMPLATE_bash_EXTENDS = bin TEMPLATE_bash_DEFS = $(TEMPLATE_usr.bin_DEFS) \ LOCALEDIR=\"/@unixroot/usr/share/locale\" \ PROGRAM=\"bash.exe\" \ CONF_HOSTTYPE=\"i386\" \ CONF_OSTYPE=\"os2-emx\" \ CONF_MACHTYPE=\"i386-pc-os2-emx\" \ CONF_VENDOR=\"pc\" \ PACKAGE=\"bash\" \ SHELL \ HAVE_CONFIG_H TEMPLATE_bash_INCS = $(TEMPLATE_usr.bin_INCS) \ $(PATH_TARGET) \ $(PATH_SUB_CURRENT) \ $(PATH_SUB_ROOT)/include \ $(PATH_SUB_ROOT)/lib TEMPLATE_bash_ORDERDEPS = $(TEMPLATE_usr.bin_ORDERDEPS) \ $(PATH_TARGET)/config.h \ $(PATH_TARGET)/version.h \ $(PATH_TARGET)/pathnames.h OTHER_CLEAN += $(TEMPLATE_bash_ORDERDEPS) # # bash # PROGRAMS += bash bash_TEMPLATE = bash bash_INCS = $(PATH_SUB_ROOT)/builtins $(PATH_TARGET)/builtins BUILTINS = \ alias.def \ bind.def \ break.def \ builtin.def \ caller.def \ cd.def \ colon.def \ command.def \ declare.def \ echo.def \ enable.def \ eval.def \ exec.def \ exit.def \ fc.def \ fg_bg.def \ hash.def \ help.def \ history.def \ jobs.def \ kill.def \ let.def \ pushd.def \ read.def \ return.def \ set.def \ setattr.def \ shift.def \ source.def \ suspend.def \ test.def \ times.def \ trap.def \ type.def \ ulimit.def \ umask.def \ wait.def \ getopts.def \ shopt.def \ printf.def \ complete.def bash_SOURCES = \ shell.c \ eval.c \ y.tab.c \ general.c \ make_cmd.c \ print_cmd.c \ dispose_cmd.c \ execute_cmd.c \ variables.c \ copy_cmd.c \ error.c \ expr.c \ flags.c \ jobs.c \ subst.c \ hashcmd.c \ hashlib.c \ mailcheck.c \ trap.c \ input.c \ unwind_prot.c \ pathexp.c \ sig.c \ test.c \ version.c \ alias.c \ array.c \ arrayfunc.c \ braces.c \ bracecomp.c \ bashhist.c \ bashline.c \ list.c \ stringlib.c \ locale.c \ findcmd.c \ redir.c \ pcomplete.c \ pcomplib.c \ xmalloc.c \ $(PATH_TARGET)/syntax.c \ \ $(PATH_TARGET)/builtins/builtins.c \ builtins/common.c \ builtins/evalfile.c \ builtins/evalstring.c \ builtins/getopt.c \ builtins/bashgetopt.c \ $(addprefix $(PATH_TARGET)/builtins/, $(BUILTINS:.def=.c)) \ \ lib/glob/glob.c \ lib/glob/strmatch.c \ lib/glob/smatch.c \ lib/glob/xmbsrtowcs.c \ \ lib/tilde/tilde.c trap.c_DEPS = $(PATH_TARGET)/signames.h $(PATH_TARGET)/builtins/ulimit.c_DEPS = $(PATH_TARGET)/pipesize.h bash_LIBS = \ $(TARGET_libsh) \ $(TARGET_libreadline) \ $(TARGET_libhistory) \ ncurses bash_ORDERDEPS = \ $(PATH_TARGET)/builtins/builtext.h \ $(PATH_TARGET)/builtins/builtins.c bash_CLEAN = \ $(bash_ORDERDEPS) \ $(PATH_TARGET)/syntax.c \ $(PATH_TARGET)/builtins/builtins.c \ $(addprefix $(PATH_TARGET)/builtins/, $(BUILTINS:.def=.c)) # generate syntax.c. $(PATH_TARGET)/syntax.c: $$(TARGET_mksyntax) $(TARGET_mksyntax) -o $@ # generate signames.h for trap.c $(PATH_TARGET)/signames.h: $$(TARGET_mksignames) $(TARGET_mksignames) $@ # generate pipesize.h for ulimit.def $(PATH_TARGET)/pipesize.h: $(RM) -f $@ $(APPEND) $@ '#define PIPESIZE 8192' # generate builtext.h and builtins.c from the builtins/*.def files. $(PATH_TARGET)/builtins/builtext.h $(PATH_TARGET)/builtins/builtins.c: \ $$(TARGET_mkbuiltins) \ $(addprefix $(PATH_SUB_ROOT)/builtins/, $(BUILTINS)) $(MKDIR) -p $(PATH_TARGET)/builtins $(TARGET_mkbuiltins) \ -externfile $(PATH_TARGET)/builtins/builtext.h \ -structfile $(PATH_TARGET)/builtins/builtins.c \ -noproduction \ -D $(PATH_SUB_ROOT)/builtins \ $(addprefix $(PATH_SUB_ROOT)/builtins/, $(BUILTINS)) .NOTPARALLEL: $(PATH_TARGET)/builtins/builtext.h $(PATH_TARGET)/builtins/builtins.c # generate C source files from the builtins/*.def files. define def_mkbuiltin $(PATH_TARGET)/builtins/$(name:.def=.c): $(PATH_SUB_ROOT)/builtins/$(name) $$$$(TARGET_mkbuiltins) $(MKDIR) -p $(PATH_TARGET)/builtins cd $$(@D) && $$(TARGET_mkbuiltins) -D $(PATH_SUB_ROOT)/builtins $$< endef $(foreach name,$(BUILTINS),$(eval $(def_mkbuiltin))) # # mkbuiltins. # BLDPROGS += mkbuiltins mkbuiltins_TEMPLATE = bash mkbuiltins_INCS = \ $(PATH_SUB_ROOT)/builtins mkbuiltins_SOURCES = \ builtins/mkbuiltins.c # # mksignames # BLDPROGS += mksignames mksignames_TEMPLATE = bash mksignames_SOURCES = \ support/mksignames.c # # basheversion # BLDPROGS += bashversion bashversion_TEMPLATE = bash bashversion_DEFS += BUILDTOOL bashversion_SOURCES = \ support/bashversion.c \ version.c # # mksyntax # BLDPROGS += mksyntax mksyntax_TEMPLATE = bash mksyntax_SOURCES = \ mksyntax.c # # libsh # LIBRARIES += libsh libsh_TEMPLATE = bash libsh_NOINST = yes libsh_DEFS = SHELL libsh_INCS = \ $(PATH_SUB_ROOT)/lib/sh libsh_SOURCES = \ lib/sh/clktck.c \ lib/sh/clock.c \ lib/sh/getenv.c \ lib/sh/oslib.c \ lib/sh/setlinebuf.c \ lib/sh/strnlen.c \ lib/sh/itos.c \ lib/sh/zread.c \ lib/sh/zwrite.c \ lib/sh/shtty.c \ lib/sh/shmatch.c \ lib/sh/netconn.c \ lib/sh/netopen.c \ lib/sh/timeval.c \ lib/sh/makepath.c \ lib/sh/pathcanon.c \ lib/sh/pathphys.c \ lib/sh/tmpfile.c \ lib/sh/stringlist.c \ lib/sh/stringvec.c \ lib/sh/spell.c \ lib/sh/shquote.c \ lib/sh/strtrans.c \ lib/sh/strindex.c \ lib/sh/snprintf.c \ lib/sh/mailstat.c \ lib/sh/fmtulong.c \ lib/sh/fmtullong.c \ lib/sh/fmtumax.c \ lib/sh/xstrchr.c \ lib/sh/zcatfd.c \ lib/sh/winsize.c # # libreadline # LIBRARIES += libreadline libreadline_TEMPLATE = bash libreadline_NOINST = yes libreadline_SOURCES = \ lib/readline/readline.c \ lib/readline/vi_mode.c \ lib/readline/funmap.c \ lib/readline/keymaps.c \ lib/readline/parens.c \ lib/readline/search.c \ lib/readline/rltty.c \ lib/readline/complete.c \ lib/readline/bind.c \ lib/readline/isearch.c \ lib/readline/display.c \ lib/readline/signals.c \ lib/readline/util.c \ lib/readline/kill.c \ lib/readline/undo.c \ lib/readline/macro.c \ lib/readline/input.c \ lib/readline/callback.c \ lib/readline/terminal.c \ lib/readline/text.c \ lib/readline/nls.c \ lib/readline/misc.c \ lib/readline/compat.c \ lib/readline/tilde.c \ lib/readline/xmalloc.c lib/readline/tilde.c_DEFS = READLINE_LIBRARY # # libhistory # LIBRARIES += libhistory libhistory_TEMPLATE = bash libhistory_NOINST = yes libhistory_SOURCES = \ lib/readline/history.c \ lib/readline/histexpand.c \ lib/readline/histfile.c \ lib/readline/histsearch.c \ lib/readline/shell.c \ lib/readline/savestring.c \ lib/readline/mbutil.c \ lib/readline/xmalloc.c # # Install docs # INSTALLS += bashman bashman_TEMPLATE = usr.bin.man bashman_SOURCES = \ doc/bash.1 \ doc/bashbug.1 #INSTALLS += bashinfo - later bashinfo_TEMPLATE = usr.bin.info bashinfo_SOURCES = \ $(PATH_TARGET)/bash.info $(PATH_TARGET)/bash.info: | $(call DIRDEP,$(PATH_TARGET)) $(PATH_SUB_ROOT)/doc/infopost.sh < $(PATH_SUB_ROOT)/doc/bashref.info > $@ # # config.h, fnmatch.h and version.h (force shell for on the latter). # $(PATH_TARGET)/config.h: kNIX-bootstrap-$(BUILD_TARGET).$(BUILD_TARGET_ARCH)-config.h $(INSTALL) $< $@ $(PATH_TARGET)/pathnames.h: kNIX-bootstrap-$(BUILD_TARGET).$(BUILD_TARGET_ARCH)-pathnames.h $(INSTALL) $< $@ $(PATH_TARGET)/version.h: $(PATH_SUB_ROOT)/support/mkversion.sh -b -S $(PATH_SUB_ROOT) -s release -d $(VER) -o $(PATH_TARGET)/newversion.h && \ $(MV_EXT) -f $(PATH_TARGET)/newversion.h $(PATH_TARGET)/version.h include $(PATH_KBUILD)/footer.kmk