# $Id: pmkfile 1922 2006-10-26 20:25:32Z coudercd $
# pmkfile for pmk

# set target file
SETTINGS {
	LANG="C"
	TARGET=("compat/config.h.pmk","Makefile.pmk","tests/Makefile.pmk")
}

SWITCHES {
	sw_usermode = FALSE
}

IF(sw_usermode) {
	DEFINE {
		# override prefix
		PREFIX = "\\$(HOME)"
		CONFDIR = "\\$(PREFIX)/.pmk"
		SBINDIR = "\\$(PREFIX)/bin"
		DATADIR = "\\$(CONFDIR)"
	}
}

IF(!sw_usermode) {
	DEFINE {
		CONFDIR = "\\$(SYSCONFDIR)/pmk"
		SBINDIR = "\\$(PREFIX)/sbin"
		DATADIR = "\\$(PREFIX)/share/\\$(PREMAKE)"
	}
}

DEFINE {
	BINDIR = "\\$(PREFIX)/bin"
	MANDIR = "\\$(PREFIX)/man"
	MAN1DIR = "\\$(MANDIR)/man1"
	MAN5DIR = "\\$(MANDIR)/man5"
	MAN8DIR = "\\$(MANDIR)/man8"
	PRIVSEP_USER = "nobody"
	PACKAGE = "pmk"
	VERSION = "0.9.3"
	INSTALL = "./pmkinstall"
}

# check alternate privsep user
CHECK_VARIABLE(var_privsep) {
	REQUIRED = FALSE
	NAME = "PRIVSEP_USER"
}

# if not defined fall to default user
IF(!var_privsep) {
	DEFINE {
		PRIVSEP_USER = "nobody"
	}
}


#
# binary checks
#

# XXX TODO : check stuff for C99, C89 and CC
CHECK_BINARY(binary_cc) {
	NAME = "cc"
	VARIABLE = "CC"
}

CHECK_BINARY(binary_cpp) {
	NAME = "cpp"
	VARIABLE = "CPP"
}

CHECK_BINARY(binary_as) {
	NAME = "as"
	VARIABLE = "AS"
}


#
# type checks
#

# check _Bool type
CHECK_TYPE(type__bool) {
	REQUIRED = FALSE
	NAME = "_Bool"
}

# check blkcnt_t type
CHECK_TYPE(type_blkcnt_t) {
	REQUIRED = FALSE
	NAME = "blkcnt_t"
	HEADER = "sys/types.h"
}

# check long long type
CHECK_TYPE(type_long_long) {
	REQUIRED = FALSE
	NAME = "long long"
}

# check unsigned long long type
CHECK_TYPE(type_unsigned_long_long) {
	REQUIRED = FALSE
	NAME = "unsigned long long"
}

# check long double type
CHECK_TYPE(type_long_double) {
	REQUIRED = FALSE
	NAME = "long double"
}

# check intmax_t type
CHECK_TYPE(type_intmax_t) {
	REQUIRED = FALSE
	NAME = "intmax_t"
	HEADER = "stdint.h"
}

# check ptrdiff_t type
CHECK_TYPE(type_ptrdiff_t) {
	REQUIRED = FALSE
	NAME = "ptrdiff_t"
	HEADER = "stddef.h"
}

# check wchar_t type
CHECK_TYPE(type_wchar_t) {
	REQUIRED = FALSE
	NAME = "wchar_t"
	HEADER = "wchar.h"
}

# check wint_t type
CHECK_TYPE(type_wint_t) {
	REQUIRED = FALSE
	NAME = "wint_t"
	HEADER = "wchar.h"
}


#
# header checks
#

# checking stdbool.h
CHECK_HEADER(header_stdbool_h) {
	REQUIRED = FALSE
	NAME = "stdbool.h"
}

# checking libgen.h
CHECK_HEADER(header_libgen_h) {
	REQUIRED = FALSE
	NAME = "libgen.h"
	FUNCTION = ("dirname", "basename")
}


#
# procedure checks
#

# checking strlcpy() and strlcat() in string.h
CHECK_HEADER(header_string_h) {
	REQUIRED = FALSE
	NAME = "string.h"
	FUNCTION = ("strlcpy","strlcat")
}

# checking strdup in string.h
CHECK_HEADER(function_strdup) {
	REQUIRED = FALSE
	NAME = "string.h"
	FUNCTION = ("strdup")
}

# checking vsnprintf and snprintf in stdio.h
CHECK_HEADER(header_stdio_h) {
	REQUIRED = FALSE
	NAME = "stdio.h"
	FUNCTION = ("vsnprintf", "snprintf")
}

# checking isblank in ctype.h
CHECK_HEADER(function_isblank) {
	REQUIRED = FALSE
	NAME = "ctype.h"
	FUNCTION = ("isblank")
}

# checking mkstemps in unistd.h
CHECK_HEADER(function_mkstemps) {
	REQUIRED = FALSE
	NAME = "unistd.h"
	FUNCTION = ("mkstemps")
}


#
# library checks
#

# check dirname and basename in libgen
CHECK_LIB(library_gen) {
	REQUIRED = FALSE
	NAME = "gen"
	FUNCTION = ("dirname", "basename")
	LIBS = "LGEN_FLAGS"
}

