[Ecls-list] gmp bitness on 32bit msvc
Juan Jose Garcia-Ripoll
juanjose.garciaripoll at googlemail.com
Sun Feb 19 23:07:47 UTC 2012
I think I will do without the configuration flag and just remove the #ifdef
_WIN64 completely
On Sat, Feb 18, 2012 at 3:16 PM, red plait <redplait at gmail.com> wrote:
> Hi
> > I believe there is a simpler way to achieve this: just teaching ECL (not
> > GMP) that there exist long long integers in Windows/32. Why not just
> change
> > config.h.msvc6 to define ecl_uint64_t also for 32 bits?
> It seems that I now able to build ECL with int64 numbers support
> Patch:
> *** msvc\ecl\config.h.msvc6.old Wed Feb 15 17:16:30 2012
> --- msvc\ecl\config.h.msvc6 Sat Feb 18 17:49:26 2012
> ***************
> *** 120,126 ****
> #define ecl_uint32_t unsigned int
> #define ecl_int32_t int
>
> ! #ifdef _WIN64
> # define ecl_uint64_t unsigned __int64
> # define ecl_int64_t __int64
> # define ecl_long_long_t long long
> --- 120,126 ----
> #define ecl_uint32_t unsigned int
> #define ecl_int32_t int
>
> ! #if defined(_WIN64) || defined(BITS64)
> # define ecl_uint64_t unsigned __int64
> # define ecl_int64_t __int64
> # define ecl_long_long_t long long
>
> *** msvc\Makefile.old Wed Feb 15 16:01:44 2012
> --- msvc\Makefile Sat Feb 18 18:05:10 2012
> ***************
> *** 60,65 ****
> --- 60,68 ----
> # Profiling
> ECL_PROFILE =
>
> + # Bitness of numbers - set it to non-empty to build 64bit numbers on
> win32
> + ECL_64BITS = 1
> +
> # <END> (ECL configuration)
> # =============================================================
>
> ***************
> *** 91,97 ****
> --- 94,106 ----
> ARCHITECTURE=AMD64
> VCREDIST=vcredist_x64.exe
> !else
> + !if "$(ECL_64BITS)" != ""
> + GMP_BITS=32
> + ECL_BITS64=/D BITS64
> + !else
> GMP_BITS=32
> + ECL_BITS64=
> + !endif
> GC_CPU=i386
> ARCHITECTURE=PENTIUM4
> VCREDIST=vcredist_x86.exe
> ***************
> *** 102,114 ****
> #
> !if "$(ECL_DEBUG)" != ""
> CFLAGS_OPTIMIZE = /Od
> ! CFLAGS_CONFIG = /Zi /D_DEBUG /MDd $(CFLAGS_OPTIMIZE) $(CFLAGS_SSE)
> LDFLAGS_CONFIG = /debug /nodefaultlib:msvcrt.lib
> SHARED_LDFLAGS = /LDd
> GCFLAGS =
> !else
> CFLAGS_OPTIMIZE = /O2
> ! CFLAGS_CONFIG = /DNDEBUG /MD $(CFLAGS_OPTIMIZE) $(CFLAGS_SSE)
> LDFLAGS_CONFIG = /nodefaultlib:msvcrtd.lib
> SHARED_LDFLAGS = /LD
> GCFLAGS = nodebug=1
> --- 111,123 ----
> #
> !if "$(ECL_DEBUG)" != ""
> CFLAGS_OPTIMIZE = /Od
> ! CFLAGS_CONFIG = /Zi /D_DEBUG /MDd $(CFLAGS_OPTIMIZE) $(CFLAGS_SSE)
> $(ECL_BITS64)
> LDFLAGS_CONFIG = /debug /nodefaultlib:msvcrt.lib
> SHARED_LDFLAGS = /LDd
> GCFLAGS =
> !else
> CFLAGS_OPTIMIZE = /O2
> ! CFLAGS_CONFIG = /DNDEBUG /MD $(CFLAGS_OPTIMIZE) $(CFLAGS_SSE)
> $(ECL_BITS64)
> LDFLAGS_CONFIG = /nodefaultlib:msvcrtd.lib
> SHARED_LDFLAGS = /LD
> GCFLAGS = nodebug=1
> ***************
> *** 352,358 ****
> eclgmp.lib:
> cd gmp
> $(MAKE) "MPN_TYPE=$(GMP_TYPE)" "CFLAGS_CONFIG=$(CFLAGS_CONFIG)" \
> ! "BITS=$(GMP_BITS)"
> $(CP) gmp.lib ..\eclgmp.lib
> $(CP) gmp.h ..\ecl\gmp.h
> cd ..
> --- 361,367 ----
> eclgmp.lib:
> cd gmp
> $(MAKE) "MPN_TYPE=$(GMP_TYPE)" "CFLAGS_CONFIG=$(CFLAGS_CONFIG)" \
> ! "BITS=$(GMP_BITS)" "BITS64=$(ECL_BITS64)"
> $(CP) gmp.lib ..\eclgmp.lib
> $(CP) gmp.h ..\ecl\gmp.h
> cd ..
>
> After building:
> dumpbin /exports ecl.dll | grep int64
> 1040 40F 000B44E0 ecl_make_int64_t
> 1058 421 000B4470 ecl_make_uint64_t
> 1176 497 000B4380 ecl_to_int64_t
> 1182 49D 000B4270 ecl_to_uint64_t
>
--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20120220/10e1db89/attachment.html>
More information about the ecl-devel
mailing list