| the new YFLAGS code doesn't correctly handle srcdir |
| |
| allow foo_NAME to rename an object (library or program) |
| at build/install time |
| |
| remove _LTLIBRARIES and just use _LIBRARIES |
| then use this for zip/jar as well |
| |
| add an error if the user makefile.am violates our |
| namespace rules |
| |
| we need a document describing automake from the end user's point of view |
| eg describe INSTALL_HEADER there, among other things |
| |
| * maintainer-clean |
| |
| Akim: |
| > @@ -31,5 +31,9 @@ |
| > DISTCLEAN -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) |
| > |
| > maintainer-clean-generic: |
| > +## FIXME: shouldn't we really print these messages before running |
| > +## the dependencies? |
| > + @echo "This command is intended for maintainers to use" |
| > + @echo "it deletes files that may require special tools to rebuild." |
| > -rm -f Makefile.in |
| |
| Tom: |
| > I'd like to eventually fix the FIXME comment by having |
| > maintainer-clean look like: |
| > |
| > maintainer-clean: |
| > @echo ... |
| > $(MAKE) whatever |
| > |
| > We're left with the question of whether we should repeat them in every |
| > subdir. |
| |
| * |
| Alexandre Oliva: |
| > Hmm... Interesting. It must have been a side effect of the enabling |
| > of forced `relink' on GNU/Linux/x86. Anyway, on platforms that |
| > actually require relinking, this problem remains, and I see no way to |
| > overcome it other than arranging for automake to install libraries |
| > before executables, as you suggest. This shouldn't be a big problem, |
| > anyway. |
| > |
| > A bigger problem could show up if two libraries in the same directory, |
| > one dependent on the other, are installed concurrently. If relinking |
| > is needed for the dependent library, we have a problem. It appears to |
| > me that user will have to live without `make -j install', in this |
| > case. |
| |
| Alex Hornby |
| > Here's an Automake patch and changelog entry allow make -j install on |
| > such degenerate systems (and Linux with buggy libtool <g>) |
| > |
| > If you install to locations other that bin_ and lib_ then a larger fix |
| > is necessary, but this should fix the 90% case. |
| |
| * think about how per-object flags should work. in particular: |
| * how should they be specified? |
| using the object name is confusing when .lo/.obj in use |
| however, the object name provides a nice interaction with |
| per-exe flags |
| * how should they interact with per-executable flags? |
| [ this is probably a feature in search of a problem ] |
| |
| * cross-compilation support: |
| programs built and used by the build process need to be |
| built for CC_FOR_BUILD |
| introduce a new prefxi for this, e.g. `build_PROGRAMS' |
| [ we can do this in an automatic way I think. |
| unfortunately it isn't that useful until autoconf has support |
| for this sort of thing as well ] |
| |
| * one performance enhancement would be to have autoconf write |
| a single file containing all the macro assignments. |
| then read this file via `include' |
| unfortunately this can't be done because of conditionals |
| -- but it could be made to work if we also changed: |
| * automake to rewrite @FOO@ to $(FOO), and |
| * the implementation of conditionals to rely on some new |
| config.status magic |
| |
| * support prog_LIBS as override for LIBS |
| |
| * Test subdir-objects option with yacc, lex, ansi2knr |
| Our locking scheme won't prevent a parallel make from losing |
| if there are two `bar.o' files and the timing is just right |
| This only happens with parallel make and no-`-c -o' compiler, |
| so it probably isn't very important |
| `-c -o' when doing libtool |
| try to find a losing compiler and see if it really works. |
| (actually: hack config.cache and do it) |
| |
| * per-exe flags |
| ** LIBOBJS shouldn't be used when there are per-exe flags (?) |
| |
| * Allow creation of Java .zip/.jar files in natural way |
| If you are building a compiled Java library, then the .zip/.jar |
| ought to be made automatically. |
| |
| * examine possibility of using any character in a macro name |
| and rewriting names automatically. this means we must rewrite |
| all references as well. |
| [ this is a 2.0-style feature ] |
| |
| * `distcheck' and `dist' should depend on `all' |
| |
| * Add code to generate foo-config script like gnome, gtk |
| |
| * document user namespace for macro/target names |
| adopt some conventions and use uniformly |
| [ this is a good thing for the rewrite ] |
| |
| * distclean must remove config.status |
| can't this cause problems for maintainer-clean? |
| shouldn't maintainer-clean print the message before running |
| any part of the make? (just to slow things down long enough |
| for the user to stop it) |
| (maybe doesn't matter since people who even know about |
| maintainer-clean already have a clue) |
| |
| * reintroduce AM_FUNC_FNMATCH which sets LIBOBJS |
| Then have automake know about fnmatch.h. |
| [ probably should wait for autoconf to get right functionality ] |
| |
| * "make diff" capability |
| look at gcc's Makefile.in to see what to do |
| or look at maint program |
| |
| * in --cygnus, clean-info not generated at top level |
| |
| * what if an element of a scanned variable looks like |
| $(FOO).$(BAR) ? |
| or some other arbitrary thing? |
| right now we try to cope, but not very well |
| [ this is only of theoretical interest for now ] |
| [ We now have an 'inner_expand' option to traverse_recursively, |
| but it is not yet used. ] |
| |
| * make sure every variable that is used is also defined |
| [ we don't really look at variable uses in detail. |
| 2.0 thing ] |
| |
| * make sure `missing' defines are generated |
| |
| * missing should handle install -d and rmdir -p (for uninstall) |
| |
| * NORMAL_INSTALL / NORMAL_UNINSTALL -vs- recursive rules |
| [ requires changes to the standard ] |
| |
| * should not put texiname_TEXINFOS into distribution |
| should rename this macro anyway, to foo_texi_DEPENDENCIES |
| |
| * For now I guess I'll just have automake give an error if it encounters |
| non-C source in a libtool library specification. |
| |
| * if program has the same name as a target, do something sensible: |
| - if the target is internal, rename it |
| - if the target is mandated (eg, "info"), tell the user |
| consider auto-modifying the program name to work around this |
| |
| * should separate actual options from strictness levels |
| strictness should only cover requirements |
| You should be able to pick and choose options |
| |
| having just one Makefile for a project would give a big speed increase |
| for a project with many directories, eg glibc. ideally (?) you'd |
| still be able to have a Makefile.am in each directory somehow; this |
| might make editing conceptually easier. |
| |
| * finish up TAGS work |
| |
| * only remove libtool at top level? |
| |
| * clean up source directory by moving stuff into subdirs |
| |
| * consider adding other variables similar to pkglibexecdir? |
| requests for pkg-dirs with version included |
| |
| Avoid loops when installing; instead unroll them in automake |
| [ Impossible when @AC_SUBST@ values are used. ] |
| |
| Some long-term projects: |
| * if $(FOO) is used somewhere, ensure FOO is defined, either by |
| user or by automake if possible |
| |
| [ include, += support ] |
| * even better would be allowing targets in different included |
| fragments to be merged. e.g., `install-local'. |
| |
| consider putting all check-* targets onto @check? |
| |
| take diff-n-query code from libit |
| |
| Per Bothner says: |
| Per> 1) Being able to build a set of non-source programs |
| Per> from source programs, without necessarily linking them together. |
| Per> I.e. one should be able to say something like: |
| Per> dummy_SOURCES=foo.c bar.c |
| Per> and automake should realize that it needs to build foo.o and bar.o. |
| Per> 2) Being intelligent about new kinds of suffixes. |
| Per> If it sees: |
| Per> SUFFIXES = .class .java |
| Per> and a suffix rule of the form: |
| Per> .java.class: |
| Per> then it should be able to realize it can build .class files from |
| Per> .java files, and thus be able to generate a list of |
| Per> .class files from a list of .java source files. |
| [What Per wanted here was a way to have automate automatically follow |
| suffix rules. So for instance if you had a `.x.y:' rule, and automake |
| saw a `.x' file, it would automatically build and install the |
| corresponding `.y' file.] |
| |
| Jim's idea: should look for @setfilename and warn if filenames too long |
| * guess split size |
| |
| from joerg-martin schwarz: |
| -- If Makefile.am contains $(CC), $(COMPILE), $(YLWRAP), .... |
| in an explicitly written rule, you should emit the corresponding |
| Makefile variables automatically. |
| |
| From the GNU Standards. These things could be checked, and probably |
| should be if --gnu. |
| * Make sure that the directory into which the distribution unpacks (as |
| well as any subdirectories) are all world-writable (octal mode 777). |
| * Make sure that no file name in the distribution is more than 14 |
| characters long. |
| * Don't include any symbolic links in the distribution itself. |
| (ditto hard links) |
| * Make sure that all the files in the distribution are world-readable. |
| |
| should be able to determine what is built by looking at rules (and |
| configure.in). Then built man pages (eg) could automatically be |
| omitted from the distribution. |
| |
| Right now, targets generated internally (eg "install") are not |
| overridable by user code. This should probably be possible, even |
| though it isn't very important. This could be done by generating all |
| internal rules via a function call instead of just appending to |
| $output_rules. |
| [ this will be harder to implement when scanning a rule like all-recursive |
| from subdirs.am ] |
| |
| Other priorities: |
| * Must rewrite am_install_var. Should break into multiple functions. |
| This will allow the callers to be a little smarter. |
| * Rewrite clean targets. |
| * Fix up require_file junk. |
| |
| djm wants ``LINKS'' variable; list of things to link together after |
| install. In BSD environment, use: |
| LINKS = from1 to1 from2 to2 ... |
| |
| Need way to say there are no suffixes in a Makefile (Franc,ois' |
| "override" idea suffices here) |
| |
| Check to make sure various scripts are executable (IE when looking for |
| them in a directory) |
| |
| Add support for html via an option. Use texi2html. Use |
| "html_TEXINFOS", and htmldir = .../html. Include html files in |
| distribution. Also allow "html_DATA", for raw .html files. |
| [ when will texinfo directly support html? ] |
| See also Karl Berry's message on a roadmap for a "info -> html" |
| transition: |
| <https://lists.gnu.org/archive/html/texinfo-devel/2012-03/msg00018.html> |
| |
| uninstall and pkg-dirs should rm -rf the dir. |
| |
| In general most .am files should be merged into automake. For |
| instance all the "clean" targets could be merged by keeping lists of |
| things to be removed. This would be a lot nicer looking. Note that |
| the install targets probably should not be merged; it is sometimes |
| useful to only install a small part. |
| |
| * Lex, yacc support: |
| ** It would be nice to automatically support using bison's better features |
| to rename the output files. This requires autoconf support |
| ** Consider supporting syntax from autoconf "derived:source", eg: |
| y.tab.c:perly.y |
| for yacc and lex source |
| ** what if you use flex and the option to avoid -lfl? |
| should support this? |
| |
| * Multi-language support: |
| ** should have mapping of file extensions to languages |
| ** should automatically handle the linking issue (special-case C++) |
| ** must get compile rules for various languages; FORTRAN probably |
| most important unimplemented language |
| This should be integrated in some way with Per's idea. |
| Eg .f.o rules should be recognized & auto-handled in _SOURCES |
| That way any random language can be treated with C/C++ on a first-class |
| basis (maybe) |
| |
| It might be cool to generate .texi dependencies by grepping for |
| @include. (If done, it should be done the same way C dependencies are |
| done) |
| [ Ask Karl Berry for a -M option to makeinfo and texi2dvi? ] |
| |
| It would be good to check some parts of GNU standards. Already check |
| for install-sh and mkinstalldirs. What else is required to be in |
| package by GNU standards or by automake? |
| Some things for --strictness=gnits: |
| * "cd $(foo); something" is an error in a rule. Should be: |
| "cd $(foo) && something" |
| * Look for 'ln -s' and warn about using $(LN_S) and AC_PROG_LN_S |
| * Look for $(LN_S) and require AC_PROG_LN_S |
| |
| Auto-distribute "ChangeLog.[0-9]+"? "ChangeLog.[a-z]+"? |
| |
| Check all source files to make sure that FSF address is up-to-date. |
| --gnits or --gnu only. |
| |
| Merge each -vars.am file with corresponding ".am" file. Can do this |
| because of changes to &file_contents. |
| |
| Should libexec programs have the name transform done on them? |
| |
| Order the output rules sensibly, so FOO_SOURCES and FOO_OBJECTS are |
| together and rules are in the usual order. |
| |
| djm says: |
| David> To avoid comments like the one about subdirs getting buried in |
| David> the middle of a Makefile.in, how about pushing comments that |
| David> start with ### to the top of the Makefile.in (in order)? Sort |
| David> of like how Autoconf uses diversions to force initialization |
| David> code to the top of configure. |
| |
| ================================================================ |
| |
| Stuff for aclocal: |
| |
| probably should put each group of m4 files into a subdir owned by the |
| containing application. |
| |
| ================================================================ |
| |
| Document: |
| |
| AM_MISSING_PROG |
| |
| how to use the generated makefiles |
| - standard targets |
| - required targets |
| - NORMAL_INSTALL junk |
| |
| rationale for avoiding |
| make CFLAGS="$CFLAGS" ... |
| in subdirs make rule |
| |
| write example of using automake with dejagnu |
| follow calc example in dejagnu docs |
| |
| document which variables are actually scanned and which are not. |
| |
| Document customary ordering of Makefile.am. From François. |
| |
| Should include extended version of diagram from Autoconf (suggested by |
| Greg Woods) |
| |
| Make a definition of the term "source" |
| |
| document how to use Automake with CVS. Idea from Mark Galassi. Also |
| include Greg Woods' more sophisticated "cvs-dist" target. |
| |
| -- must document all variables that are supposed |
| to be public knowledge |
| |
| must document the targets required for integration with |
| non-automake-using subdirs |
| |
| document the "make SHELL='/bin/sh -x'" trick for debugging |
| |
| section on relationship to GNU make. include notes on parallel makes |
| |
| add a concept index |
| |
| move discussion of cygwin32, etags, mkid under other gnu tools |
| |
| CCLD, CXXLD, FLD |
| |
| ================================================================ |
| |
| Libraries: |
| |
| * Should support standalone library along with subdir library in same |
| Makefile.am. Maybe: turn off "standalone" mode if library's Makefile.am |
| is not only one specd? [ add an option for this ] |
| |
| ================================================================ |
| |
| Longer term: |
| |
| Would it be useful to integrate in some way with the Debian package |
| building utility? Must check. maybe it would be possible to deal |
| with all the different package utilities somehow. Lately I've been |
| hearing good things about the RedHat packaging utilities. Why are |
| there so many of these? Are they fun to write or something? |
| The RedHat package utility is called RPM; see |
| http://rpm.org/ |
| It actually has problems, like no configure script and no documentation. |
| |
| For Cygnus it would probably be good to be able to handle the native |
| package utility on each platform. There are probably 3 or 4 of these |
| (sysv, solaris?, aix?) |
| |
| tcl/unix/Makefile.in has some code to generate a Solaris package. |
| |
| Automake probably can't do all of this on its own. A new tool might |
| be a better idea |
| |
| I have some notes from a Debian developer on how the integration |
| should work |
| |
| ================================================================ |
| |
| A tool to guess what the local Makefile.am should look like: |
| (see Gord's Maint program!) |
| |
| * Probably integrate with autoscan |
| * Use various simple rules to determine what to do: |
| * get name of top directory, sans version info |
| * search for .c files with 'main' in them |
| * if in main.c, use directory name for program |
| * if in more than one, generate multiple programs |
| * if not found, generate a library named after directory |
| * order subdir searches correctly: lib first, src last |
| * assume 'testsuite' dir means we are using dejagnu |
| * maybe be smart about reading existing Makefile.am, so tool |
| can be run for incremental changes? You could imagine: |
| |
| Makefile.am: |
| autoproject --incremental |
| |
| ================================================================ |
| |
| Stuff NOT to do, and why: |
| |
| consider auto-including any file that matches "*.in". |
| [ no: po/Makefile.in shouldn't be included ] |
| |
| must look at mkid to see how it works (for subdir usage) |
| [ right now, it doesn't. i don't see a simple fix right now ] |
| |
| if configure.in not found, move up a directory and try again? This |
| could eliminate a common source of problems. |
| [ this is just a bad idea ] |
| |
| * scripts are installed in $exec_prefix/bin, not $prefix/bin |
| Bug or feature? |
| [ the consensus on Gnits is that this isn't required. |
| doubters can work around it anyway ] |
| |
| Scan source directories and warn about missing files, eg .c/.h files |
| that aren't mentioned? |
| [ distcheck makes this less useful ] |
| |
| * quoting bugs |
| - how to install file with a space in its name? |
| [ don't bother with this -- make is just too losing ] |
| |
| * notice when a .c file is a target somewhere, and auto-add it to |
| BUILT_SOURCES |
| [ BUILT_SOURCES are for files that need to be built before anything |
| else because of hidden dependencies (something .c files are |
| unlikely to be) ] |
| |
| * Scan multiple input files when Makefile is generated? |
| This would provide flexibility for large projects; subsumes |
| the "Makefile.tmpl" idea |
| [ can't do this. must explain why in manual. |
| basically, solving all the problems is too hard |
| like: how to remove redundancies between generated .in files |
| instead should implement `include' directive for Makefile.am ] |
| |
| * Should be a way to have "nobuild_PROGRAMS" which aren't even built, |
| but which could be by running the magic make command. |
| [ We already have EXTRA_PROGRAMS for this. ] |
| |
| |
| * copyright notice |
| |
| Copyright 1994-2018 Free Software Foundation, Inc. |
| |
| This program 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, or (at your option) |
| any later version. |
| |
| This program 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 this program. If not, see <https://www.gnu.org/licenses/>. |
| |
| |
| Local Variables: |
| mode: outline |
| End: |