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@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