[Info-vax] MariaDB/MySQL on x86

Arne Vajhøj arne at vajhoej.dk
Tue Apr 25 17:18:21 EDT 2023


On 4/25/2023 3:16 PM, Craig A. Berry wrote:
> 
> On 4/25/23 12:04 PM, Arne Vajhøj wrote:
>> On 4/25/2023 11:33 AM, Mark Berryman wrote:
> 
>>> The field test is still limited in some functionality.  For example, 
>>> there are some pragmas that are not yet supported or not yet fully 
>>> supported.  The include_directory pragma does not yet appear to work 
>>> and my build procedure depends heavily on this.
>>
>> Is that VMS C++ specific pragma or standard?
> 
> Pages 24-25 here:
> 
> https://docs.vmssoftware.com/test-docs/vsi-cxx-user-s-guide-for-openvms-systems.pdf
> 
> say:
> 
> "This pragma is intended to ease DCL command-line length limitations
> when porting applications from POSIX-like environments built with
> makefiles containing long lists of -I options that specify directories
> to search for headers. Just as long lists of macro definitions specified
> by the /DEFINE qualifier can be converted to #define directives in a
> source file, long lists of places to search specified by the
> /INCLUDE_DIRECTORY qualifier can be converted to #pragma
> include_directory directives in a source file."
> 
>> If VMS C++ specific then maybe it will not be added as I believe John R
>> want to keep the C++ compiler as close to clang elsewhere as possible.
> 
> A worthy goal, but if there are workarounds in the compiler for
> limitations in the VMS build environment, they may very well still be
> needed.  Unless alternate solutions are found.  In this case, it *might*
> be possible, depending on current command line length limitations and
> where and how the MariaDB build exceeds them, to use clang++ rather than
> CXX from the command line.  That based on the fact that -Ifoo takes up
> less space than /INCLUDE=[foo].

Maybe I should have RTFM ...

:-)

But I got it now.

I am sort of in favor of logicals here if possible (but it is not
necessarily possible).

:-)

Demo:

$ type [.liba.include]a.h
char *a = "This is A";
$ type [.libb.include]b.h
char *b = "This is B";
$ type w1.c
#include <stdio.h>

#include "a.h"
#include "b.h"

int main(int argc, char *argv[])
{
     printf("%s\n", a);
     printf("%s\n", b);
     return 0;
}
$ cc /include=([.liba.include],[.libb.include]) w1
$ link w1
$ run w1
This is A
This is B
$ type w2.c
#pragma include_directory "[.liba.include]"
#pragma include_directory "[.libb.include]"

#include <stdio.h>

#include "a.h"
#include "b.h"

int main(int argc, char *argv[])
{
     printf("%s\n", a);
     printf("%s\n", b);
     return 0;
}
$ cc w2
$ link w2
$ run w2
This is A
This is B
$ type w3.c
#include <stdio.h>

#include "liba/include/a.h"
#include "libb/include/b.h"

int main(int argc, char *argv[])
{
     printf("%s\n", a);
     printf("%s\n", b);
     return 0;
}
$ define/nolog liba [.liba]
$ define/nolog libb [.libb]
$ cc w3
$ link w3
$ run w3
This is A
This is B

Arne




More information about the Info-vax mailing list