mkconfig_c

Name
Description
C Language Units
See Also
Bugs
Website
Author

Name

mkconfig_c - mkconfig C language units

Description

The C language units create an include file for use by C programs.

C Language Units

c-main

The c-main unit creates an include file for C programs. The hdr and sys directives should be listed first in the mkconfig configuration file so that the headers are available for use in the other tests.

standard

The standard checks are: the headers stdio.h, stdlib.h, sys/types.h and sys/param.h, the keywords void and const, the void * type as a parameter, and C function prototypes.

Output:
#define _hdr_stdio 1
#define _hdr_stdlib 1
#define _sys_types 1
#define _sys_param 1
#define _key_void 1
#define _key_const 1
#define _param_void_star 1
#define _proto_stdc 1

args [noconst] name-of-function

Checks the number of arguments, the types of the arguments and the return type for a function. If ’noconst’ is specified, any data type is returned. Outputs the following check variables: _args_function, _c_arg_N_function, and _c_type_function. _args_function indicates the number of arguments. _c_arg_N_function indicates the argument data type. _c_type_function indicates the return type of the function. The ’awk’ program is a requirement for this directive.

e.g.
args noconst setmntent
Output:

#define _c_arg_1_setmntent char *
#define _c_arg_2_setmntent char *
#define _c_type_setmntent FILE *
#define _args_setmntent 2

hdr name-of-header [required-headers]

Check for a header. The standard include path as set in CFLAGS is used. If required-headers is specified, those headers are included in the compilation test before attempting the compilation test.

e.g.
hdr getopt
hdr storage/volumes.h gui/window.h
Output:

#define _hdr_getopt 1
#define _hdr_storage_volumes 0

sys name-of-sys-header [required-headers]

Like hdr, but looks in the sys/ directory.

e.g.
sys types.h
Output:

#define _sys_types 1

class class [libs, ...]

Check to see if class class exists. If the optional libs are specified, the test will try first without the libraries, then with the first set of libraries specified, then the next set, etc. Sets of libraries to be tested are separated by commas.

e.g.
class os::Volumes
Output:

#define _class_os__Volumes 0

Execute mkc.sh -reqlib after creating the output file to output the libraries required for linking. See the usage for mkc.sh -reqlib in the lib check below.

const constant-name [required-headers]

Check to see that a constant exists. If required-headers is specified, those headers are included in the compilation test before attempting the compilation test.

e.g.
const O_NOCTTY
Output:

#define _const_O_NOCTTY 1

dcl {int|ptr} variable-name

Check to see if variable-name is declared. If int is specified, the variable is a numeric type. If ptr is specified, the variable is a pointer type.

e.g.
dcl int errno
dcl ptr optarg
Output:

#define _dcl_errno 1
#define _dcl_optarg 1

define definition-name

Check to see if definition-name is defined.

e.g.
define MCTL_QUERY
Output:

#define _define_MCTL_QUERY 0

key keyword

Check to see if a C-language keyword is reserved.

e.g.
key volatile
Output:

#define _key_volatile 1

lib function [libs, ...]

Check to see if the library function function exists. If the optional libs are specified, the test will try first without the libraries, then with the first set of libraries specified linked in, then the next set, etc. Sets of libraries to be tested are separated by commas. If link libraries are specified, any value in the cache is ignored, and the function is retested.

e.g.
lib gettext -lintl, -lintl -liconv
[Will first test gettext, then gettext -lintl,
then gettext -lintl -liconv]
Output:

#define _lib_gettext 1

Execute mkc.sh -reqlib after creating the output file to output the libraries required for linking.

mkc.sh -reqlib creates the list of libraries required for linking based on the output file. This allows the user to modify the output file and only the necessary libraries will be linked in.

mkc.sh -reqlib is executed with a command line argument of the output file name created by mkconfig.sh. The output library file defaults to ’mkconfig.reqlibs’, but may be changed with the -o command line option.

The string ’_dollar_’, if included in the library function name will be replaced with the ’$’ symbol.

member struct struct-name member
member
union union-name member
member
typedef-name member

Check to see if member is a member of struct struct-name or typedef-name.

e.g.
member struct statfs f_bsize
Output:

#define _mem_struct_statfs_f_bsize 1

memberxdr struct-name member

Define the appropriate xdr function for struct-name.member. The ’awk’ program is a requirement for this directive.

e.g.
memberxdr getquota_args gqa_uid
Output:

#define xdr_gqa_uid xdr_int
#define _memberxdr_getquota_args_gqa_uid 1

npt function [library-requirement]

Check to see if if function needs to have a prototype declared. The optional library-requirement should be written as: _lib_<funcname>. If library-requirement does not exist, _npt_<function> will be set to false in the output file.

e.g.
npt getopt
npt statfs _lib_statfs
Output:

#define _npt_getopt 0
#define _npt_statfs 0

siz type-name

Check the size of type-name. If using with a cross-compiler, the MKC_CROSS environment variable must be set to ’Y’.

e.g.
siz long long
Output:

#define _siz_long_long 8

typ type-name

Check to see if a type-name exists. type-name may be a type or a structure.

e.g.
typ size_t
typ struct dqblk
Output:

#define _typ_size_t 1
#define _typ_struct_dqblk 1

c-include-conflict

include_conflict <header-1> <header-2>

Check to see if there is a compile conflict when including two headers. If there is a conflict, the check variable is set to 0.

e.g.
include_conflict time.h sys/time.h
Output:

#define _inc_conflict__hdr_time__sys_time 1

See Also

iffe(1) autoconf(1) dist(7) mkconfig(7) mkconfig_env(7) mkconfig_d(7)

Bugs

Send bug reports to: brad.lanam.di_at_gmail.com

Website

http://www.gentoo.com/di/mkconfig.html

Author

This program is Copyright 2011 by Brad Lanam, Walnut Creek CA

Brad Lanam, Walnut Creek, CA (brad.lanam.di_at_gmail.com)