CMake/Tests/Preprocess/preprocess.c
Brad King 4085454658 ENH: Support preprocessor def values in VS6
The add_definitions() command and COMPILE_DEFINITIONS dir/tgt/src
properties support preprocessor definitions with values.  Previously
values were not supported in the VS6 generator even though the native
tool supports them.  It is only values with spaces that VS6 does not
support.  This enables support and instead complains only for values
with spaces.  See issue #8779.
2009-03-23 14:48:09 -04:00

199 lines
4.0 KiB
C

#include <preprocess.h>
#include FILE_PATH
#include TARGET_PATH
#include <string.h>
#include <stdio.h>
int check_defines_C(void)
{
int result = 1;
if(strcmp(FILE_STRING, STRING_VALUE) != 0)
{
fprintf(stderr,
"FILE_STRING has wrong value in C [%s]\n", FILE_STRING);
result = 0;
}
if(strcmp(TARGET_STRING, STRING_VALUE) != 0)
{
fprintf(stderr,
"TARGET_STRING has wrong value in C [%s]\n", TARGET_STRING);
result = 0;
}
{
int x = 2;
int y = 3;
if((FILE_EXPR) != (EXPR))
{
fprintf(stderr, "FILE_EXPR did not work in C [%s]\n",
TO_STRING(FILE_EXPR));
result = 0;
}
if((TARGET_EXPR) != (EXPR))
{
fprintf(stderr, "TARGET_EXPR did not work in C [%s]\n",
TO_STRING(FILE_EXPR));
result = 0;
}
}
#ifdef NDEBUG
# ifdef FILE_DEF_DEBUG
{
fprintf(stderr, "FILE_DEF_DEBUG should not be defined in C\n");
result = 0;
}
# endif
# ifdef TARGET_DEF_DEBUG
{
fprintf(stderr, "TARGET_DEF_DEBUG should not be defined in C\n");
result = 0;
}
# endif
# ifdef DIRECTORY_DEF_DEBUG
{
fprintf(stderr, "DIRECTORY_DEF_DEBUG should not be defined in C\n");
result = 0;
}
# endif
# ifndef FILE_DEF_RELEASE
# ifndef PREPROCESS_XCODE
{
fprintf(stderr, "FILE_DEF_RELEASE should be defined in C\n");
result = 0;
}
# endif
# endif
# ifndef TARGET_DEF_RELEASE
{
fprintf(stderr, "TARGET_DEF_RELEASE should be defined in C\n");
result = 0;
}
# endif
# ifndef DIRECTORY_DEF_RELEASE
{
fprintf(stderr, "DIRECTORY_DEF_RELEASE should be defined in C\n");
result = 0;
}
# endif
#endif
#ifdef PREPROCESS_DEBUG
# ifndef FILE_DEF_DEBUG
# ifndef PREPROCESS_XCODE
{
fprintf(stderr, "FILE_DEF_DEBUG should be defined in C\n");
result = 0;
}
# endif
# endif
# ifndef TARGET_DEF_DEBUG
{
fprintf(stderr, "TARGET_DEF_DEBUG should be defined in C\n");
result = 0;
}
# endif
# ifndef DIRECTORY_DEF_DEBUG
{
fprintf(stderr, "DIRECTORY_DEF_DEBUG should be defined in C\n");
result = 0;
}
# endif
# ifdef FILE_DEF_RELEASE
{
fprintf(stderr, "FILE_DEF_RELEASE should not be defined in C\n");
result = 0;
}
# endif
# ifdef TARGET_DEF_RELEASE
{
fprintf(stderr, "TARGET_DEF_RELEASE should not be defined in C\n");
result = 0;
}
# endif
# ifdef DIRECTORY_DEF_RELEASE
{
fprintf(stderr, "DIRECTORY_DEF_RELEASE should not be defined in C\n");
result = 0;
}
# endif
#endif
#if defined(FILE_DEF_DEBUG) || defined(TARGET_DEF_DEBUG)
# if !defined(FILE_DEF_DEBUG) || !defined(TARGET_DEF_DEBUG)
# ifndef PREPROCESS_XCODE
{
fprintf(stderr,
"FILE_DEF_DEBUG and TARGET_DEF_DEBUG inconsistent in C\n");
result = 0;
}
# endif
# endif
# if defined(FILE_DEF_RELEASE) || defined(TARGET_DEF_RELEASE)
{
fprintf(stderr, "DEBUG and RELEASE definitions inconsistent in C\n");
result = 0;
}
# endif
#endif
#if defined(FILE_DEF_RELEASE) || defined(TARGET_DEF_RELEASE)
# if !defined(FILE_DEF_RELEASE) || !defined(TARGET_DEF_RELEASE)
# ifndef PREPROCESS_XCODE
{
fprintf(stderr,
"FILE_DEF_RELEASE and TARGET_DEF_RELEASE inconsistent in C\n");
result = 0;
}
# endif
# endif
# if defined(FILE_DEF_DEBUG) || defined(TARGET_DEF_DEBUG)
{
fprintf(stderr, "RELEASE and DEBUG definitions inconsistent in C\n");
result = 0;
}
# endif
#endif
#ifndef FILE_PATH_DEF
{
fprintf(stderr, "FILE_PATH_DEF not defined in C\n");
result = 0;
}
#endif
#ifndef TARGET_PATH_DEF
{
fprintf(stderr, "TARGET_PATH_DEF not defined in C\n");
result = 0;
}
#endif
#ifndef FILE_DEF
{
fprintf(stderr, "FILE_DEF not defined in C\n");
result = 0;
}
#endif
#ifndef TARGET_DEF
{
fprintf(stderr, "TARGET_DEF not defined in C\n");
result = 0;
}
#endif
#ifndef DIRECTORY_DEF
{
fprintf(stderr, "DIRECTORY_DEF not defined in C\n");
result = 0;
}
#endif
#ifndef OLD_DEF
{
fprintf(stderr, "OLD_DEF not defined in C\n");
result = 0;
}
#endif
#if !defined(OLD_EXPR) || OLD_EXPR != 2
{
fprintf(stderr, "OLD_EXPR id not work in C [%s]\n",
TO_STRING(OLD_EXPR));
result = 0;
}
#endif
return result;
}