[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