[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