summaryrefslogtreecommitdiff
path: root/Makefile
blob: bbdf9699cf75bb3a4141c1e2cbb07244a0d28962 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
.sinclude "cheusov_local_settings.mk" # for debugging

##################################################

MKFILESDIR?=		${PREFIX}/share/mkc-mk
EXTRAFILESDIR?=		${PREFIX}/share/doc/mk-configure
BUILTINSDIR?=		${PREFIX}/share/mk-configure/custom

BMAKE?=			bmake

.if exists(/usr/xpg4/bin/awk)
# Solaris' /usr/bin/awk is completely broken,
# /usr/xpg4/bin/awk sucks too but sucks less.
AWK?=/usr/xpg4/bin/awk
.elif exists(/usr/bin/awk)
AWK?=/usr/bin/awk
.else
AWK?=/bin/awk
.endif

##################################################
.PATH:			${.CURDIR}

SHRTOUT=		yes

PROJECTNAME=		mk-configure

VERSION=		0.24.0

BIRTHDATE=		2009-02-21

MKCHECKS=		no

SCRIPTS=		mkc_check_funclib mkc_check_header \
			mkc_check_sizeof  mkc_check_decl \
			mkc_check_prog mkc_check_custom \
			mkc_which mkc_check_version \
			mkc_test_helper mkc_check_compiler \
			mkc_install mkcmake

SCRIPTS+=		${:!cd ${.CURDIR} && echo custom/*!:N*/CVS}

MAN=			mkc_check_funclib.1 mkc_check_header.1 \
			mkc_check_sizeof.1  mkc_check_decl.1 \
			mkc_check_prog.1 mkc_check_custom.1 \
			mk-configure.7 mkcmake.1

EXTRAFILES?=		README NEWS TODO COPYRIGHT FAQ

FILES=	sys.mk configure.mk mkc.configure.mk mkc.mk \
	mkc.own.mk mkc_imp.intexts.mk \
	mkc_check_common.sh \
	mkc.minitest.mk mkc_imp.pkg-config.mk mkc_imp.vars.mk \
	mkc_imp.files.mk mkc_imp.inc.mk mkc_imp.info.mk mkc_imp.lib.mk \
	mkc_imp.links.mk mkc_imp.man.mk mkc_imp.own.mk mkc_imp.prog.mk \
	mkc_imp.subdir.mk mkc_imp.subprj.mk mkc_imp.sys.mk \
	mkc_imp.init.mk mkc_imp.final.mk mkc_imp.scripts.mk \
	mkc_imp.platform.sys.mk mkc_imp.dep.mk mkc_imp.lua.mk \
	mkc_imp.arch.mk mkc_imp.pod.mk mkc_imp.preinit.mk \
	mkc_imp.objdir.mk

FILES+=			${EXTRAFILES}

.for i in ${EXTRAFILES}
FILESDIR_${i}=		${EXTRAFILESDIR}
.endfor

FILESDIR_mkc_check_common.sh=	${BINDIR}

FILESDIR=			${MKFILESDIR}

.for s in ${SCRIPTS:Mcustom/*}
SCRIPTSDIR_${s:S|/|_|}=		${BUILTINSDIR}
.endfor

SYMLINKS=	mkc.subprj.mk ${MKFILESDIR}/mkc.subprjs.mk
SYMLINKS+=	mkc_imp.pkg-config.mk ${MKFILESDIR}/mkc.pkg-config.mk
SYMLINKS+=	mkc_imp.intexts.mk ${MKFILESDIR}/mkc.intexts.mk

CLEANFILES+=		configure.mk *.cat1 *.html1 ChangeLog

INFILES+=		configure.mk mkc_imp.vars.mk mk-configure.7
INSCRIPTS+=		mkc_check_version mkcmake
INTEXTS_REPLS+=		version        ${VERSION}
INTEXTS_REPLS+=		AWK            ${AWK}
INTEXTS_REPLS+=		BMAKE          ${BMAKE}
INTEXTS_REPLS+=		mkfilesdir     ${MKFILESDIR}
INTEXTS_REPLS+=		syscustomdir   ${BUILTINSDIR}
INTEXTS_REPLS+=		mkc_libexecdir ${LIBEXECDIR}

DIST_TARGETS=		doc mkc_clean

INSTALL=		${.CURDIR}/mkc_install

##################################################
.PHONY: doc
doc: all
doc:
	cd doc && ${MAKE} -m ${.OBJDIR} presentation.pdf clean-garbage ${MAKEFLAGS}

.for i in mkc.prog.mk mkc.lib.mk mkc.subdir.mk mkc.subprj.mk mkc.files.mk
SYMLINKS+=	mkc.mk ${MKFILESDIR}/${i}
CLEANFILES+=	${i}
all: ${i}
${i}:
	ln -f -s ${.CURDIR}/mkc.mk ${i}
.endfor

##################################################

.PHONY: test
test: configure.mk mkc_imp.vars.mk mkc_check_version
	@set -e; \
	PATH=${.CURDIR}:${.OBJDIR}:$$PATH; \
	BUILTINSDIR=${.CURDIR}/custom; \
	MKCATPAGES=yes; \
	NO_AUTODEP=yes; \
	export PATH BUILTINSDIR MKCATPAGES NO_AUTODEP; \
	unset MAKEOBJDIR MAKEOBJDIRPREFIX || true; \
	cd ${.CURDIR}/tests; \
	${MAKE} -m ${.CURDIR} -m ${.OBJDIR} -m ${MKFILESDIR} ${MAKEFLAGS} test

.PHONY: cleandir_tests clean_tests

cleandir: cleandir_tests
cleandir_tests: configure.mk
	PATH=${.CURDIR}:$$PATH; \
	export PATH; \
	for d in ${.CURDIR}/tests ${.CURDIR}/doc; do \
	   cd $$d; \
	   ${MAKE} -m ${.CURDIR} -m ${.OBJDIR} -m ${MKFILESDIR} \
		${MAKEFLAGS} cleandir; \
	done
clean: clean_tests
clean_tests: configure.mk
	PATH=${.CURDIR}:$$PATH; \
	export PATH; \
	for d in ${.CURDIR}/tests ${.CURDIR}/doc; do \
	   cd $$d; \
	   ${MAKE} -m ${.CURDIR} -m ${.OBJDIR} -m ${MKFILESDIR} \
		${MAKEFLAGS} clean; \
	done

##################################################
.include <mkc.mk>