| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Solaris 10, we need __EXTENSIONS__ defined to make
struct winsize appear out of <termios.h>.
This commit adds detection for what preprocessor symbol needs
to be defined for struct winsize to appear, if it appears at
all. Then this symbol is defined on the compiler command line
when compiling linenoise.
* Makefile (CFLAGS): Add -D$(termios_define) for
linenoise.o target.
* configure (have_winsize, termios_define): New variables.
Detect whether struct winsize is available, and what
preprocessor symbol, if any, is required to reveal the
feature.
* linenoise/linenoise.c: Need to include TXR's "config.h"
for HAVE_WINSIZE.
(get_columns): Reorganized so that use of struct winsize
is guarded by HAVE_WINSIZE and fallback code is used if
either obtaining the size fails or the feature is completely
unavailable.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (OBJS): Only include linenoise.o if
have_termios is y.
* configure: Adding test for termios.
(have_termios): New configure and config.make variable.
(gen_config_make): Generate have_termios variable.
* parser.c (repl): New function.
* parser.h (repl): Declared.
* txr.c (help): Summarize new -i option.
(txr_main): Implement -i repl.
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (OBJS): Add linenoise/linenoise.o.
* linenoise/linenoise.c (linenoiseEditInsert,
linenoiseEditMoveLeft, linenoiseEditMoveRight,
linenoiseEditMoveEnd, linenoiseEditHistoryNext,
linenoiseEditDelete, linenoiseEditBackspace,
linenoiseEditDeletePrevWord): These de facto internal
functions are switched from external to static.
|
|
|
|
|
|
| |
* Makefile (CFLAGS): Remove -iquote $(top_srcdir)mpi
* lib.h: include "mpi/mpi.h" instead of "mpi.h".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* args.c (args_cat_zap): New function.
* args.h: (args_cat_zap): Declared.
* eval.c (struct_lit_s): New symbol variable.
(eval_init): Initialize struct_lit_s.
* eval.h (struct_lit_s): Declared.
* gc.c (finalize): If a symbol has a struct slot
hash attached to it, we must free it when
the symbol is reclaimed.
* lib.c (make_sym): Initialize symbol's slot_cache pointer
to null.
(copy): Copy structure objects.
(init): Call struct_init to initialize struct module.
* lib.h (SLOT_CACHE_SIZE): New preprocessor symbol
(slot_cache_line_t, slot_cache_t): New typedefs.
(struct sym): New member, slot_cache.
* lisplib.c (struct_set_entries, struct_instantiate): New
static functions.
(liplib_init): Register new functions in dl_table.
parser.y (HASH_S): New terminal symbol.
(struct): New grammar rule.
(n_expr): Derive struct.
(yybadtoken): Map HASH_S to #S string.
parser.l (grammar): Recognize #S and return HASH_S token.
share/txr/stdlib/place.tl (slot): New defplace.
share/txr/stdlib/struct.tl: New file.
struct.c: New file.
struct.h: New file.
* Makefile (OBJS): Adding struct.o.
|
|
|
|
|
|
|
|
|
| |
* Makefile (tst/tests/013/maze.out): Add TXR_ARGS. Disable
gc-debugging for tests in new directory.
* tests/013/maze.expected: New file.
* tests/013/maze.tl: New file.
|
|
|
|
|
|
|
|
| |
* Makefile (OBJS): Add args.o object.
* args.c: New file.
* args.h: New file.
|
|
|
|
|
|
| |
* Makefile (y.tab.c, y.tab.h, lex.yy.c): Express dependency of these
on the configuration material via the DEP macro rather than directly.
That way ABBREV can reflect over the dependency.
|
| |
|
|
|
|
|
|
| |
* Makefile (lex.yy.c, y.tab.c, y.tab.h): Add missing dependencies
on config.h and config.make so that these files are regenerated
if we touch the configuration (for instance change the YACC variable).
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (y.tab.c): Putting in an ugly workaround for an obnoxious
new behavior introduced in Bison 3.x, which breaks our build on
platforms that have a newer Bison. After generating y.tab.h, we remove
the unwanted declaration with sed.
* parser.y (yyparse): Declare, since y.tab.h doesn't any more,
and the newer Bison's parse skeletons expect it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The method of inserting a character sequence which generates a
SECRET_TOKEN_E token is being replaced with a purely token based
method.
Because we don't manipulate the input stream, the lexer is not
involved. We don't have to flush its state and deal with the carry-over
of the yy_hold_char.
This comes about because recent changes expose a weakness in the old
scheme. Now that a top-level expression can have the form expr.expr, it
means that the Yacc parser reads one token ahead, to see whether there
is a dot or something else. This lookahead token is discarded. We must
re-create it when we call yyparse again. This re-creation is done by
creating a custom yylex function, which can maintain pushback tokens.
We can prime this array of pushback tokens to generate the
SECRET_TOKEN_E, as well as to re-inject the lookahead symbol that was
thrown away by the previous yyparse. To know which lookahead symbol to
re-inject is simple: the scanner just keeps a copy of the most recent
token that it returns to the parser. When the parser returns, that
token must be the lookahead one.
The tokens we keep now in the parser structure are subject to garbage
collection, and so we must mark them. Since the YYSTYPE union has no
type field, a new API is opened up into the garbage collector to help
implement a conservative GC technique.
* gc.c (gc_is_heap_obj): New function.
* gc.h (gc_is_heap_obj): Declared.
* match.c: Include y.tab.h. This is now needed by any module
that needs to instantiate a parser_t structure, because members
of type YYSTYPE occur in the structure. (parser.h can still be included
without y.tab.h, but only an incomplete declaration for the parser
strucure is then given, and a few functions are not declared.)
* parser.c (yy_tok_mark): New static function.
(parser_mark): Mark the recent token and the pushback tokens.
(parser_common_init): Initialize the recent token, the
pushback tokens, and the pushback stack index.
(pushback_token): New static function.
(prime_parser): hold_byte argument removed. Body considerably
simplified. The catenated stream trick is no longer required.
All we do here is set up two pushback tokens and prime the scanner,
if necessary, so it is in the right start state for Lisp.
* parser.l (YY_DECL): Take over definition of scanning function, renaming
to yylex_impl, so we can implement yylex.
(grammar): Rule which produces SECRET_ESCAPE_E token removed.
(reset_scanner): Function removed.
(yylex): New function.
* parser.h (struct parser): Now only forward-declared unless y.tab.h
has been included. New members, recent_tok, tok_pushback and tok_idx.
(yyset_hold_char): Declared.
(reset_scanner): Declaration removed.
(yylex): Declared (if y.tab.h included).
(prime_parser): Declaration updated.
(prime_scanner): Declared.
* Makefile: express new dependency on existence of y.tab.h of txr.o,
match.o and parser.o.
|
|
|
|
|
| |
--work-tree argument to git. On Cygwin, git throws a strange error
message when --work-tree is given a blank argument.
|
|
|
|
|
|
|
|
|
| |
* Makefile (dbg/%.o): Pass $(DBG_ONLY_FLAGS) to COMPILE_C_WITH_DEPS
recipe macro.
* configure (debug_only_flags): New macro.
(gen_config_make): Generate DBG_ONLY_FLAGS.
Add debug-only-flags to usage help text.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (PLATFORM_FLAGS): Rename to PLATFORM_CFLAGS.
(LDFLAGS): New variable. Includes -lm and PLATFORM_CFLAGS.
(LINK_PROG): Use $(LDFLAGS) instead of -lm.
* configure (platform_flags): Renamed to platform_cflags.
(platform_ldflags): New variable.
(gen_config_make): Rename PLATFORM_CFLAGS and generate
PLATFORM_LDFLAGS.
Usage help text updated.
|
|
|
|
| |
tests in this directory.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This means short, relative names are used for C source files when
compiling in the source directory.
* Makefile (CFLAGS): Exclude -iquote $(top_srcdir) arguments
if top_srcdir is blank. Remove slash after $(top_srcdir),
since the variable includes it now, if its value is not blank.
(SRCS, ABBREV, opt/%-win.o, lex.yy.c, y.tab.c, install): Remove slash
after $(top_srcdir).
(dbg/%.o, opt/%.o): Only include rules for depending
on $(top_srcdir)%.c prerequisite if top_srcdir is not blank.
In the blank case, the rules are redundant.
* configure: if configuring in the root of the source tree,
establish top_srcdir as blank, otherwise establish is as
an absolute path with a trailing slash.
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (TESTS_OUT): Don't use find to hunt down tests;
but rather wildcard. This way common.tl is not mistakenly
identified as an independent test file.
* tests/012/ifa.tl: Removed test code, placed in new file
which is loaded.
* tests/common.tl: New file.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (CFLAGS): Search for mpi header in $(top_srcdir).
(ABBREV): Remove top_srcdir prefix from source names.
(dbg/%.o, opt/%.o): Extra set of pattern rules for searching
for prerequisites in $(top_srcdir) where primary C sources
are found and in the local dir where some generated C is found.
This way we don't rely on VPATH.
(opt/%.res): Bogus target removed.
(VPATH): Removed in favor of explicitly referencing $(top_srcdir).
Was causing problems for tests.
(lex.yy.c, y.tab.c): Prerequisites referenced in $(top_srcdir).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lib.c (init): Call cadr_init.
* lisplib.c (dl_table, set_dlt_entries, dlt_register): Externalize.
* lisplib.h (dl_table, set_dlt_entries, dlt_register): Declared.
* Makefile (OBJS): Add cadr.o.
* cadr.c: New file.
* cadr.h: New file.
* gencadr.txr: New file.
* share/txr/stdlib/cadr.tl: New file.
* txr.1: Document cadr accessors.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (GEN_HDRS, LISP_TO_C_STRING): Variables removed.
(%.h: %.tl): Rule removed. The place.h header is no longer
generated from place.tl.
* lisplib.c (place_instantiate): Load place.tl from stdlib directory,
rather than obtaining it from a string literal in generated header
place.h.
* place.tl: Moved to share/txr/stdlib directory.
* genvim.txr: Refer to place.tl in stdlib.
|
| |
|
|
|
|
|
|
|
|
|
| |
* Makefile (TEST_OUT): Include .tl files.
(tst/%.out): New rule variant, from .tl prerequisite.
* tests/012/ifa.expected: New file.
* tests/012/ifa.tl: New file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (install): Install .tl files present in stdlib directory.
(INSTALL): Handle argument 2 being a list.
* eval.c (load): New function.
* eval.h (load): Declared.
* lisplib.c (ifa_set_entries, ifa_instantiate): New functions
to lazily load ifa.tl.
(lisplib_init): Register new functions.
* txr.c (stdlib_path): New variable.
(sysroot_init): Store the stdlib path in stdlib_path.
* txr.h (stdlib_path): Declared.
* share/txr/stdlib/ifa.tl: New file.
|
|
|
|
|
|
|
|
|
| |
The contents of place.tl are now stored as a UTF-8 ordinary literal
instead of a wide char literal.
* Makefile (LISP_TO_C_STRING): Generate plain literal.
* lisplib.c: Convert plain literal to string.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
so line numbers don't change.
* eval.c (eval_init): Fix registrations of lisp-parse and read.
* lisplib.c (place_instantiate): Give name to parsed string stream
using new lisp_parse argument.
* parser.c (lisp_parse): Takes new argument to override name.
* parser.h (lisp_parse): Declaration updated.
* txr.c (txr_main): Call lisp_parse with four args, defaulting
the new one.
* txr.1: Documented new argument.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The operators set, inc, dec, pop and others are now macros
which generate code, rather than built-in special forms
that use "C magic". Moreover, new such macros are easy to write, and
several new ones are already available. Moreover, new kinds of
assignable places are easy to create.
* place.tl: New file.
* lisplib.c, lisplib.h: New files.
* Makefile (OBJS): New target, lisplib.o.
(GEN_HDRS): New variable.
(LISP_TO_C_STRING): New recipe macro, with rule.
(clean): Remove generated headers named in $(GEN_HDRS).
* eval.c (dec_s, push_s, pop_s, flip_s, del_s): Variables removed.
(setq_s): New variable.
(lookup_var, lokup_sym_lisp_1, lookup_var_l, lookup_fun, lookup_mac,
lookup_symac, lookup_symac_lisp1): Trigger the delayed loading of
libraries for undefined global symbols, and re-try the lookup.
(op_modplace, dwim_loc, force_l): Static functions removed.
(op_setq): New static function.
(eval_init): Initialize setq_s; remove initializations of
removed variables; remove registrations for op_modplace;
add registration for sys:setq, sys:rplaca, sys:rplacd,
sys:dwim-set and sys:dwim-del intrinsics.
Call lisplib_init to initialize the dynamic library loading module.
* lib.c (sys_rplaca, sys_rplacd): New functions, differing
in return value from rplaca and rplacd.
(ref, refset): Handle hash table.
(dwim_set, dwim_del): New functions.
* lib.h (sys_rplaca, sys_rplacd, dwim_set, dwim_del): Declared.
* genvim.txr: Include place.tl in scan.
* tests/010/seq.txr: The del operator test
case no longer throws at run-time but at macro-expansion time, so the
test case is simply removed.
* tests/010/seq.expected: Updated output.
* tests/011/macros-2.txr: Reset *gensym-counter* to zero, because
the textual output of the test case includes gensyms, whose numberings
fluctuate with the content of the new Lisp library material.
* tests/011/macros-2.expected: Updated output.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (CFLAGS, MPI_OBJS): Refer to mpi directory without version
number.
(repatch): Target removed.
(distclean): Don't try to remove old unpacked tarball mpi directory.
* configure (mpi_version, have_quilt, have_patch): Variables removed.
(gen_config_make): Do not generate mpi_version make variable.
Do not test for quilt or patch. No longer extract MPI tarball or
try to apply patches.
* mpi-1.8.6.tar.gz: File removed.
* mpi-patches: Directory and all files under it removed.
|
|
|
|
|
|
| |
* configure (have_git): Don't set this variable if
the TXR repository is missing, even if git is installed.
I.e. have_git means have have the tool and the repo.
|
|
|
|
|
|
|
|
|
|
| |
* parser.h (parser_s): Declared.
(parse_init): Declaration removed.
(parser_l_init): Declared.
* parser.l (parse_init): Function renamed to parser_l_init.
* parser.c: New file.
|
|
|
|
|
| |
file and config.h, so windows resource file is rebuilt
when the version changes.
|
|
|
|
| |
DEP_INSTANTIATE macro.
|
|
|
|
| |
file is removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of XMALLOC, XCALLOC, XREALLOC and XFREE for $(MPI_OBJS). MPI
does not use such macros and the allocator is already retargetted
to use the TXR one.
* mpi-patches/use-txr-allocator: In this patch, we don't need
external declaration for chk_malloc or chk_realloc because they
are not used. Only chk_calloc is used.
* mpi-patches/add-bitops: Refreshed.
* mpi-patches/add-mp-hash: Likewise.
* mpi-patches/add-mp-set-intptr: Likewise.
* mpi-patches/add-mpi-toradix-with-case: Likewise.
* mpi-patches/bit-search-optimizations: Likewise.
* mpi-patches/export-mp-eq: Likewise.
* mpi-patches/faster-square-root: Likewise.
* mpi-patches/fix-bad-shifts: Likewise.
* mpi-patches/fix-ctype-warnings: Likewise.
* mpi-patches/fix-mult-bug: Likewise.
* mpi-patches/mpi-set-double-intptr: Likewise.
* mpi-patches/mpi-set-mpi-word: Likewise.
* mpi-patches/mpi-to-double: Likewise.
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (EACH_CONF): Iterate over arguments.
(opt/txr-win.o, dbg/txr-win.o): New special object files.
(opt/%-win.o, dbg/%-win.o): New pattern rule to build special object
files.
($(PROG)-win, $(PROG)-win-dbg): New program targets.
* inst.nsi: Install txr-win.exe.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (EXTRA_OBJS-y): New variable.
(WINDRES): New recipe.
* configure: Check for presence of windres,
and generate add_win_res variable in config.make.
* win/txr.xcf: New file: GIMP project for icon.
* win/txr.ico: New file: icon with three sizes generated
from GIMP project.
* win/txr.rc: New file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(glob_wrap, glob_init): New functions.
(errfunc_thunk): New static function.
* glob.h: New file.
* txr.c (main): call glob_init if HAVE_GLOB is defined.
* configure (have_glob): New variable.
(gen_config_make): Add have_glob to config/config.make.
Detect glob function and set have_glob, and add
HAVE_GLOB to config/config.h.
* Makefile (OBJS): Include glob.h if have_glob is "y".
* genvim.txr: Scan glob.c for functions and variables also.
* txr.1: Documented glob and glob-related variables.
|
| |
|
|
|
|
|
|
| |
the program is not configured.
(distclean): Providing alternative implementation when the
program is not configured.
|
|
|
|
|
|
|
| |
* Makefile (COMPILE_C, COMPILE_C_WITH_DEPS, LINK_PROG): New
macro strings.
(dbg/%.o, opt/*.o, %.o, $(PROG), $(PROG)-dbg, conftest,
conftest2): These targets now use these commands.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
then that header is used when building in a separate directory,
instead of the config.h generated in that directory.
To fix this, we move config.h into a config/ subdirectory.
The $(top_srcdir)/config is not in the include search path
when buiding in a separate build directory.
While we are at it, let's move all the configure materials
generated by the configure script into config/.
* Makefile: include config/config.make at the top. Removing the
rule which asserts the existence of configuration based on
the presence of config.make.
(CFLAGS): Add $(conf_dir) to include search path with -iquote.
(notconfigured): New conditionally-defined target for producing
the error message when the build system is not configured.
(NL, DEP): New variables.
($(OBJS)): Make dependent on config/config.make and config/config.h
with help of DEP macro.
(opt/lex.yy.o, dbg/lex.yy.o): Express dependency using DEP.
(y.tab.h): Split off as a dependent on y.tab.c rather than
a co-target in the rule. The rule has a body to handle
the situation when y.tab.h is missing for some reason, but
y.tab.c already exists (and so won't be re-made, and so
y.tab.h won't be remade).
* configure: Require GNU Make 3.81 rather than 3.80.
(conf_dir): New variable.
(config_h, config_make, config_log): New variables. These are used in
place of config.h, config.make and config.log. Add conf_dir to
config.make variable.
|
|
|
|
|
| |
* Makefile (SRCS): Only set if git is available.
(enforce): Fail if we don't have git.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (DEPGEN): New macro variable.
(OPT_OBJS, DBG_OBJS): Define with := assignment.
(OBJS): New variable.
(dbg/%.o, opt/*.o): Use -MMD and -MT options of gcc to generate
dependencies. Also use DEPGEN macro to rewrite each dependency
makefile's rule into a DEP_ variable assignment.
(DEP_INSTANTIATE): New macro variable.
(include dep.mk): Removed, replaced by eval hack that
includes all the .d files and instantiates the rule from
the DEP_ variable in each one.
(opt/lex.yy.o, dbg/lex.yy.o): We need to hard code the dependency
of these on y.tab.h, to force that header to generate.
(DEP_opt/lex.yy.o, DEP_dbg/lex.yy.o): New variables, related
to above.
(depend): Target removed.
* dep.mk: File removed.
* depend.txr: File removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
variables to remove the dependencies from the output.
(ABBREV2): No longer needed, removed.
(dbg/%.o, opt/%.o, %.o): Just use ABBREV instead of ABBREV2; it does
the right thing. Dependency of objects on config.make removed.
* dep.mk: Regenerated. Now provides variable assignments
in addition to rules, and each object is made dependent
on config.make.
* depend.txr: Adjusted to generate dep.mk in new format.
|
|
|
|
|
|
| |
cpio (use old ASCII format). This was unintentional.
On extract, use -m option to preserve timestamps,
like we do in INSTALL.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (TESTS_OUT): We don't need to refer to top_srcdir.
Add the tst/ prefix to .out paths. Find must be used with -H
because tests is a symlink for out-of-tree build directories.
(tests/*): All target-specific assignments are moved to tst/tests/*
paths, and top_srcdir is no longer used in the right hand side
values.
(%.out): Becomes (tst/%.out).
(%.ok): need to compute .expected name from .out differently to
account for tst/ prefix.
(tests.clean): Just remove the tst directory.
(install-tests): Remove the tst directory first so test commands
are forced to run (though it is a dry run).
We no longer need to switch to top_srcdir to find the .txr
files, nor do we have to filter out .out files from the tests
tree. We no longer have to switch to top_srcdir in the recursive
make. Also, show the installation of tests using ABBREV3.
* configure: When configuring in a separate directory, symlink
the tests directory back to the source tree. Since there
are now three things being symlinked, rewrote that as a loop.
The recommendation to build in a separate directory is just a note, not
a warning.
|
|
|
|
|
|
|
| |
This adds superfluous commands to run.sh under make install-tests,
and is also inappropriate if a different txr binary is being tested.
(install-tests): Do not override top_srcdir in the recursive make
call; instead use -C to change to $(top_srcdir).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (VERBOSE): New variable.
(V, ABBREV, ABBREV1, ABBREV3): New macro variables.
(dbg/%.o, opt/%.o): Use V, ABBREV1 for concensed output.
($(PROG), $(PROG)-dbg, lex.yy.c, y.tab.c, %.out,
%.ok, INSTALL): Likewise, but use ABBREV.
(tests, GREP_CHECK, config.make, conftest.yacc,
conftest.clean): Use $(V) instead of @.
(tests.clean): Remove @; do not hide remove commands.
(INSTALL): Use $(V) instead of @ and use ABBREV3 to
provide condensed output.
(install): Use $(V) on $(PREINSTALL) so we don't see :
in the output.
(install-tests): Put $(V) on all steps.
|
|
|
|
|
|
|
|
|
| |
* Makefile (PROG): Variable removed, now set in config.make.
(all): Target now depends on $(BUILD_TARGETS) variable, set
in config.make.
* configure (debug_also) New variable.
(gen_config_make): Generate PROG and BUILD_TARGETS variables.
|