Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: [OMPI users] Windows CMake build problems ...
From: cjohnson_at_[hidden]
Date: 2010-01-12 18:40:18



The OpenMPI build problem I'm having occurs in both OpenMPI 1.4 and 1.3.4.

I am on a Windows 7 (US) Enterprise (x86) OS on an HP system with Intel core 2 extreme x9000 (4GB RAM), using the 2005 Visual Studio for S/W Architects (release 8.0.50727.867). [That release has everything the platform SDK would have.]

I'm using CMake 2.8 to generate code, I used it correctly, pointing at the root directory where the makelists are located for the source side and to an empty directory for the build side: did configure, click debug, configure again, generate and opened the OpenMPI.sln file created by CMake. Then I right-clicked on the "ALL_BUILD" project and selected "build".

1 project built, 13 did not. I have the build listing. [I'm afraid of what the mailing list server would do if I attached it to this email.;

The first error in the listing points to source line: C:\prog\openmpi-1.3.4\opal/class/opal_object.h(182),

After that critical error, the compile falls apart due to it. Here's the section of the listing with the first error in the center:

1>Generating Code...
1>Compiling...
1>signal.c
1>select.c
1>log.c
1>evutil.c
1>event.c
1>win32.c
1>c:\prog\openmpi-1.3.4\opal\event\win32-code\./config.h(185) : warning C4005: 'PACKAGE_BUGREPORT' : macro redefinition
1>        c:\prog\mon\opal\include\opal_config.h(1307) : see previous definition of 'PACKAGE_BUGREPORT'
1>c:\prog\openmpi-1.3.4\opal\event\win32-code\./config.h(188) : warning C4005: 'PACKAGE_NAME' : macro redefinition
1>        c:\prog\mon\opal\include\opal_config.h(1310) : see previous definition of 'PACKAGE_NAME'
1>c:\prog\openmpi-1.3.4\opal\event\win32-code\./config.h(191) : warning C4005: 'PACKAGE_STRING' : macro redefinition
1>        c:\prog\mon\opal\include\opal_config.h(1313) : see previous definition of 'PACKAGE_STRING'
1>c:\prog\openmpi-1.3.4\opal\event\win32-code\./config.h(194) : warning C4005: 'PACKAGE_TARNAME' : macro redefinition
1>        c:\prog\mon\opal\include\opal_config.h(1316) : see previous definition of 'PACKAGE_TARNAME'
1>c:\prog\openmpi-1.3.4\opal\event\win32-code\./config.h(197) : warning C4005: 'PACKAGE_VERSION' : macro redefinition
1>        c:\prog\mon\opal\include\opal_config.h(1319) : see previous definition of 'PACKAGE_VERSION'
1>c:\prog\openmpi-1.3.4\opal\event\win32-code\./config.h(212) : warning C4005: '__func__' : macro redefinition
1>        C:\prog\openmpi-1.3.4\opal\include\opal_config_bottom.h(449) : see previous definition of '__func__'

****************************** First error in build listing, below:
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(182) : error C2016: C requires that a struct or union has at least one member
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(182) : error C2061: syntax error : identifier '__uint64_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(190) : error C2059: syntax error : '}'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(248) : error C2037: left of 'obj_magic_id' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(249) : error C2037: left of 'cls_init_file_name' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(250) : error C2037: left of 'cls_init_lineno' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(421) : error C2037: left of 'obj_class' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(423) : error C2037: left of 'obj_class' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(443) : error C2037: left of 'obj_class' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(445) : error C2037: left of 'obj_class' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(466) : error C2027: use of undefined type 'opal_object_t'
1>        C:\prog\openmpi-1.3.4\opal/class/opal_object.h(178) : see declaration of 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(473) : error C2037: left of 'obj_class' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(474) : error C2037: left of 'obj_reference_count' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(497) : error C2037: left of 'obj_reference_count' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(498) : error C2037: left of 'obj_reference_count' specifies undefined struct/union 'opal_object_t'
1>C:\prog\openmpi-1.3.4\opal/class/opal_object.h(498) : warning C4033: 'opal_obj_update' must return a value
1>C:\prog\openmpi-1.3.4\opal/util/output.h(99) : error C2079: 'super' uses undefined struct 'opal_object_t'

Here's the source file section with the error line indicated:

---> Opal_object.h (lines 173-190)

/**
 * For static initializations of OBJects.
 *
 * @param NAME   Name of the class to initialize
 */
#if OMPI_ENABLE_DEBUG
#define OPAL_OBJ_STATIC_INIT(BASE_CLASS) { OPAL_OBJ_MAGIC_ID, OBJ_CLASS(BASE_CLASS), 1, __FILE__, __LINE__ }
#else
#define OPAL_OBJ_STATIC_INIT(BASE_CLASS) { OBJ_CLASS(BASE_CLASS), 1 }
#endif

/**
 * Base object.
 *
 * This is special and does not follow the pattern for other classes.
 */
struct opal_object_t {
#if OMPI_ENABLE_DEBUG
    /** Magic ID -- want this to be the very first item in the
        struct's memory */

************************* Error (the first one) C2016 points to line 182 below:
182->    uint64_t obj_magic_id;
#endif
    opal_class_t *obj_class;            /**< class descriptor */
    volatile int32_t obj_reference_count;   /**< reference count */
#if OMPI_ENABLE_DEBUG
   const char* cls_init_file_name;        /**< In debug mode store the file where the object get contructed */
   int   cls_init_lineno;           /**< In debug mode store the line number where the object get contructed */
#endif  /* OMPI_ENABLE_DEBUG */
};

Usually, compile errors in a system are like a missing path or a header file not found, this one has me stumped.

C.S. Johnson ...