From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Andy Moreton Newsgroups: gmane.emacs.devel Subject: Re: bignum branch Date: Fri, 10 Aug 2018 08:43:38 +0100 Message-ID: <86bmaasm39.fsf@gmail.com> References: <87o9fbbw1t.fsf@tromey.com> <87a7qr8cz7.fsf@tromey.com> <86tvoy3je9.fsf@gmail.com> <86bmb0vbxf.fsf@gmail.com> <87k1pnfcg1.fsf@tromey.com> <86sh4b1833.fsf@gmail.com> <861sbgz3dm.fsf@gmail.com> <83a7q4ufxp.fsf@gnu.org> <87wot71hpb.fsf@tromey.com> <86in4rgt1m.fsf@gmail.com> <83pnyyu0k1.fsf@gnu.org> <86k1p59haq.fsf@gmail.com> <83va8osuz2.fsf@gnu.org> <87ftzrknyg.fsf@tromey.com> <87zhxwig5k.fsf@tromey.com> <86lg9gl7vy.fsf@gmail.com> <87tvo4i9em.fsf@tromey.com> <86k1ozl0yd.fsf@gmail.com> <83in4iojva.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1533886916 5178 195.159.176.226 (10 Aug 2018 07:41:56 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 10 Aug 2018 07:41:56 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (windows-nt) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Aug 10 09:41:52 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fo23T-0001GK-KQ for ged-emacs-devel@m.gmane.org; Fri, 10 Aug 2018 09:41:51 +0200 Original-Received: from localhost ([::1]:54782 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fo25a-0006ci-14 for ged-emacs-devel@m.gmane.org; Fri, 10 Aug 2018 03:44:02 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36043) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fo25T-0006cP-Dc for emacs-devel@gnu.org; Fri, 10 Aug 2018 03:43:56 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fo25O-00015Y-9Z for emacs-devel@gnu.org; Fri, 10 Aug 2018 03:43:55 -0400 Original-Received: from [195.159.176.226] (port=48886 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fo25N-00014G-Pk for emacs-devel@gnu.org; Fri, 10 Aug 2018 03:43:49 -0400 Original-Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fo23F-00010e-0E for emacs-devel@gnu.org; Fri, 10 Aug 2018 09:41:37 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 59 Original-X-Complaints-To: usenet@blaine.gmane.org Cancel-Lock: sha1:iJHwtOVsmnWzvRV7ppSyZPEZOMY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:228354 Archived-At: On Fri 10 Aug 2018, Eli Zaretskii wrote: >> From: Andy Moreton >> Date: Thu, 09 Aug 2018 21:49:46 +0100 >> >> c:/msys64/mingw64/include/gmp.h has this (package version 6.1.2-1): >> >> /* Instantiated by configure. */ >> #if ! defined (__GMP_WITHIN_CONFIGURE) >> #define _LONG_LONG_LIMB 1 >> #define __GMP_LIBGMP_DLL 0 >> #endif >> >> That is suitable for linking to a static library. If I change it to look >> like this: >> >> /* Instantiated by configure. */ >> #if ! defined (__GMP_WITHIN_CONFIGURE) >> #define _LONG_LONG_LIMB 1 >> #define __GMP_LIBGMP_DLL 1 >> #endif >> >> After rebuilding emacs, logcount works, and data-tests passes. > > I'd actually prefer us to link against GMP statically, at least on > Windows, because GMP usually gets replaced when you install a new > version of GCC. So linking statically runs a lower risk of a "DLL > hell". It also makes the Emacs binary self-contained and more easily > movable. Yes. I don't know how to fix the configury and makefiles to ensure it links against a static library if it is available. > Why is it a problem with linking statically against GMP? Could it be > tat your libgmp.a is from a different GMP version, i.e. incompatible > with the GMP headers you have installed? Or maybe some other optional > library depends on GMP and causes conflicts? If not, I don't > understand why the results should depend on how we linked the library. Building the GMP library builds *different* gmp.h headers when building for static library vs. a shared library. The only difference in the headers preduced by the static libary and shared libary builds is the hunk shown above. The shared library version (the second hunk above) ensures that APIs get a __dllimport__ decoration for APIs on Windows, for linking to the shared library. The MSYS2 GMP package includes a single gmp.h header for the static library build, installed as "c:/msys64/mingw64/include/gmp.h". Emacs currently links against the shared library on MSYS2 64bit, and has a dependency on "c:/msys64/mingw64/bin/libgmp-10.dll". Using the gmp.h header without __dllimport__ API decorations probably results in incorrect runtime linking to the DLL. AndyM