[cmake-developers] [CMake 0013320]: UINT32_C() et al. macro shenanigans break build on HP-UX

Mantis Bug Tracker mantis at public.kitware.com
Tue Jun 19 16:08:35 EDT 2012


The following issue has been SUBMITTED. 
====================================================================== 
http://public.kitware.com/Bug/view.php?id=13320 
====================================================================== 
Reported By:                Daniel R. Gomez
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   13320
Category:                   CMake
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2012-06-19 16:08 EDT
Last Modified:              2012-06-19 16:08 EDT
====================================================================== 
Summary:                    UINT32_C() et al. macro shenanigans break build on
HP-UX
Description: 
Bootstrapping CMake 2.8.8 on this HP-UX system fails with

[  1%] Building C object
Utilities/KWIML/test/CMakeFiles/cmIML_test.dir/test_INT_C.c.o
cd /tmp/cmake-build/Utilities/KWIML/test && /opt/tg/bin/tg-gcc 
-DKWIML_NAMESPACE=cmIML -DKWIML_LANGUAGE_C -DKWIML_LANGUAGE_CXX -pipe -W -Wall
-Wcast-align -Wformat=2 -Wpointer-arith -Wundef -mpa-risc-2-0 -O3  -Wno-format
-I/tmp/cmake-build/Utilities/KWIML/test -I/tmp/cmake-build/Utilities    -o
CMakeFiles/cmIML_test.dir/test_INT_C.c.o   -c
/home/src/cmake-2.8.8/Utilities/KWIML/test/test_INT_C.c
In file included from
/home/src/cmake-2.8.8/Utilities/KWIML/test/test_INT_C.c:14:0:
/tmp/cmake-build/Utilities/KWIML/test/test_INT_format.h: In function
'test_INT_format':
/tmp/cmake-build/Utilities/KWIML/test/test_INT_format.h:195:1: error: pasting
")" and "l" does not give a valid preprocessing token
/tmp/cmake-build/Utilities/KWIML/test/test_INT_format.h:195:3: error: expected
',' or ';' before 'l'
gmake[2]: *** [Utilities/KWIML/test/CMakeFiles/cmIML_test.dir/test_INT_C.c.o]
Error 1
gmake[2]: Leaving directory `/tmp/cmake-build'
gmake[1]: *** [Utilities/KWIML/test/CMakeFiles/cmIML_test.dir/all] Error 2
gmake[1]: Leaving directory `/tmp/cmake-build'
gmake: *** [all] Error 2


The test_INT_format.h makes use of a symbol UINT32_C, and others like it. This
is defined in inttypes.h:

    $ gnu-grep -R UINT32_C /usr/include 
    /usr/include/inttypes.h:#define UINT32_C(__c)                   
__CONCAT_U__(__c)
    /usr/include/inttypes.h:#define UINT32_C(__c)                   
__CONCAT__(__CONCAT_U__(__c),l)
    /usr/include/inttypes.h:#  define UINT32_MAX     UINT32_C(4294967295)

>From what I can tell, this macro is being expanded before being passed as an
argument to TEST_C(). I'm not sure how to work around this.
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2012-06-19 16:08 Daniel R. GomezNew Issue                                    
======================================================================




More information about the cmake-developers mailing list