Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0000051 [libFirm] tools/scripts minor always 2009-10-10 02:48 2011-06-17 20:26
Reporter jeffz View Status public  
Assigned To
Priority low Resolution fixed  
Status closed   Product Version 1.17.0
Summary 0000051: configure and Makefile.in should be version controlled?
Description git clone'd the libfirm repo.
cd libfirm

The README says to build libfirm, create a directory named build
cd build
../configure
bash: ../configure: No such file or directory

no configure or Makefile.in is present...
running autoconf complains:

configure.ac:19: error: possibly undefined macro: AM_INIT_AUTOMAKE
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.

$ ./configure
./configure: line 1713: syntax error near unexpected token `foreign'
./configure: line 1713: `AM_INIT_AUTOMAKE(foreign dist-bzip2 1.9)'

$ autoconf --version
autoconf (GNU Autoconf) 2.61

Commenting out the offending lines in configure lets it run until it finds there is no Makefile.in.

Running automake does not produce a Makefile.in.

Can the README be updated to explain what is required or the necessary build files be version controlled like other projects?
Additional Information
Tags No tags attached.
Attached Files

- Relationships

-  Notes
(0000087)
Matze (administrator)
2009-10-16 12:17
edited on: 2009-10-16 12:21

The situation with the repository is because of the following:

* Internally we use jam for building libFirm because we don't like the autotools.
* Unfortunately experience shows that requiring additional build tools for other users hinders adoption, so we decided to use autotools for the releases.

So to answer your questions/problems:
* We haven't opened our internal build system to the public yet which leads to alot of confusion
* The automake files are usually out of date and get only fixed for release
* The README file (like is common for autotools projects) only describes the situation for a release. For releases we don't expect the users to have all the autotools installed and package Makefile.in, configure etc. - The README is not enough for a snapshot from the version control system. We won't include that information into the README file to not confuse users but we could add a README.GIT
* We do not include configure, Makefile.in etc. into the version control because they are automatically generated files which do more harm than good when put under version control.

Anyway the easiest way to generate all the build files is using autoreconf which is a wrapper around all the autotools and invokes them in the correct order (because most people don't understand the complexity of the autotools anymore - don't you like it):

$ autoreconf --force --install

you also need to generate some stuff manually which is not integrated into the automakefiles yet:

$ python scripts/gen_ir.py spec ir/ir
$ python scripts/gen_ir_io.py spec ir/ir

You probably also have to bring some Makefile.am up to date...


I admit that this is all a pain for external users. For the future we should consider the following options:
* For the short term we should create a README.GIT or something which describes the situation.
* Go back to plain simple old Makefiles. They can be properly written and produce nice output as can be seen for the linux kernel or samba...
* Make our jamfiles public and use them for releases too (if jam would be more popular I'd vote for this...)
* We will not use any other layer over the buildsystem that promises to solve everything while just making stuff slower and more complicated = no cmake!

(0000110)
Matze (administrator)
2011-06-17 20:26

we have a simple makefile in libfirm by now.

- Issue History
Date Modified Username Field Change
2009-10-10 02:48 jeffz New Issue
2009-10-16 12:17 Matze Note Added: 0000087
2009-10-16 12:17 Matze Priority normal => low
2009-10-16 12:17 Matze Severity major => minor
2009-10-16 12:17 Matze Status new => confirmed
2009-10-16 12:18 Matze Note Edited: 0000087
2009-10-16 12:20 Matze Note Edited: 0000087
2009-10-16 12:20 Matze Note Edited: 0000087
2009-10-16 12:21 Matze Note Edited: 0000087
2011-06-17 20:26 Matze Note Added: 0000110
2011-06-17 20:26 Matze Status confirmed => closed
2011-06-17 20:26 Matze Resolution open => fixed


Mantis 1.1.5[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker