From owner-freebsd-questions@FreeBSD.ORG Fri Jun 12 00:10:30 2009 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6AE261065670 for ; Fri, 12 Jun 2009 00:10:30 +0000 (UTC) (envelope-from mel.flynn+fbsd.questions@mailing.thruhere.net) Received: from mailhub.rachie.is-a-geek.net (rachie.is-a-geek.net [66.230.99.27]) by mx1.freebsd.org (Postfix) with ESMTP id 2380E8FC15 for ; Fri, 12 Jun 2009 00:10:29 +0000 (UTC) (envelope-from mel.flynn+fbsd.questions@mailing.thruhere.net) Received: from smoochies.rachie.is-a-geek.net (mailhub.rachie.is-a-geek.net [192.168.2.11]) by mailhub.rachie.is-a-geek.net (Postfix) with ESMTP id EF8617E837 for ; Thu, 11 Jun 2009 16:10:28 -0800 (AKDT) From: Mel Flynn To: freebsd-questions@freebsd.org Date: Thu, 11 Jun 2009 16:10:26 -0800 User-Agent: KMail/1.11.4 (FreeBSD/8.0-CURRENT; KDE/4.2.4; i386; ; ) References: <70C0964126D66F458E688618E1CD008A0793EF4E@WADPEXV0.waddell.com> In-Reply-To: <70C0964126D66F458E688618E1CD008A0793EF4E@WADPEXV0.waddell.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200906111610.27482.mel.flynn+fbsd.questions@mailing.thruhere.net> Subject: Re: reference for beginner on configure/make/compile/linking/etc. X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jun 2009 00:10:30 -0000 On Thursday 11 June 2009 14:09:43 Gary Gatten wrote: > It seems > COMPLETELY overly complex to me - maybe cause the developer tries to > make it as portable as possible, but with every *nix like things putting > files wherever they want, different cc's / ld's, etc. - I can see where > it can get hairy. It *is* overly complex. The original design goal of "easily create portable shell to configure and Makefiles" has long been replaced with "cruft now requiring perl, additional files for linking (.la) and overall confusion when things don't work". It is no wonder that larger projects are switching to cmake and smaller to jam/scons. That said, if the developers know what they're doing, you won't see any OS assumption in the source code (#ifdef __FreeBSD__ and similar) and you would be able to assert portability differences by grepping for '^#ifn?def[[:space:]]+HAVE_' in headers and source. Problems with configure/automake usually can be classified in the following categories: - Unhandled cases developers are not aware of: prerequisite headers or headers in different locations then are assumed. Library symbols in differently named libraries. - Attempt to figure out a prerequisite is present not directly supported by autoconf/automake then created by the developers in not so portable script. - Assumptions on struct members, number of arguments to certain functions, size of data structures, presence of symbols. - Lex/yacc/bison parser generator version problems. I've always found curl (ftp/curl) port a good example of autoconf usage. -- Mel