[Ecls-list] gmp bitness on 32bit msvc
red plait
redplait at gmail.com
Sat Feb 18 14:16:48 UTC 2012
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
More information about the ecl-devel
mailing list