[m-dev.] Building with MSVC

Sergey Khorev sergey.khorev at gmail.com
Tue Dec 11 17:33:32 AEDT 2007


I've been compiling last few ROTDs with Visual Studio 2005 and would 
like to put a couple of notes on this:

1) New versions of nmake have default rule for .cc files which breaks 
build of Boehm GC. I suggest a simple patch to fix that

*** boehm_gc/NT_MAKEFILE.bak	Sun Feb 18 11:01:55 2007
--- boehm_gc/NT_MAKEFILE	Sat Dec  8 19:16:35 2007
*** 6,11 ****
--- 6,14 ----
   !include <ntwin32.mak>

+ .SUFFIXES: .obj .c .cpp .cxx
   OBJS= alloc.obj reclaim.obj allchblk.obj misc.obj mach_dep.obj 
os_dep.obj mark_rts.obj headers.obj mark.obj obj_map.obj blacklst.obj 
finalize.obj new_hblk.obj dbg_mlc.obj malloc.obj stubborn.obj 
dyn_load.obj typd_mlc.obj ptr_chck.obj gc_cpp.obj mallocx.obj msvc_dbg.obj

   all: gctest.exe cord\de.exe test_cpp.exe

2) rotd-2007-12-09 introduced unportable code in 
runtime/mercury_wrapper.c (see below)
Perhaps /proc should be used in Unix environment only.
Also in MSVC world snprintf is known as _snprintf so there should be 
something like
#if defined(MR_HAVE__SNPRINTF) && ! defined(MR_HAVE_SNPRINTF)
   #define snprintf	_snprintf

     if (MR_mem_usage_report_prefix != NULL) {
         struct stat statbuf;
         char        filename_buf[MAX_MEM_USAGE_REPORT_CMD_SIZE];
         char        cmd_buf[MAX_MEM_USAGE_REPORT_CMD_SIZE];
         int         i;

         for (i = 1; i < MAX_MEM_USAGE_REPORT_ATTEMPTS; i++) {
             snprintf(filename_buf, MAX_MEM_USAGE_REPORT_CMD_SIZE,
                 "%s%02d", MR_mem_usage_report_prefix, i);

             if (stat(filename_buf, &statbuf) == 0) {
                 /* Filename_buf exists; try next name. */

             snprintf(cmd_buf, MAX_MEM_USAGE_REPORT_CMD_SIZE,
                 "cp /proc/%d/status %s", getpid(), filename_buf);
mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au

More information about the developers mailing list