1 # $NetBSD: Makefile,v 1.199 2010/02/09 07:22:06 dholland Exp $
3 # This pkg does not compile in mod_ssl, only the `mod_ssl EAPI' (a set of
4 # code hooks that allow mod_ssl to be compiled separately later, if desired).
6 DISTNAME= apache_1.3.42
7 PKGNAME= ${DISTNAME:S/_/-/}
9 MASTER_SITES= ${MASTER_SITE_APACHE:=httpd/} \
10 ${MASTER_SITE_APACHE:=httpd/old/}
11 DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${NETBSD_LOGO} ${MODSSL_DIST}
13 MAINTAINER= pkgsrc-users@NetBSD.org
14 HOMEPAGE= http://httpd.apache.org/
15 COMMENT= Apache HTTP (Web) server
17 PKG_DESTDIR_SUPPORT= user-destdir
19 NETBSD_LOGO= sitedrivenby.gif
20 SITES.${NETBSD_LOGO}= http://www.NetBSD.org/images/logos/
22 MODSSL_VERSION= 2.8.31
23 MODSSL_DISTNAME= mod_ssl-${MODSSL_VERSION}-1.3.41
24 MODSSL_DIST= ${MODSSL_DISTNAME}.tar.gz
25 MODSSL_SRC= ${WRKDIR}/${MODSSL_DISTNAME}
26 SITES.${MODSSL_DIST}= http://www.modssl.org/source/ \
27 ftp://ftp.pca.dfn.de/pub/tools/net/mod_ssl/source/ \
28 ftp://ftp.funet.fi/pub/crypt/cryptography/libs/modssl/source/
30 CONFLICTS= apache-*ssl-[0-9]* apache6-[0-9]*
32 EXTRACT_ONLY= ${DISTFILES:N*.gif}
33 # Actually, apache is only written in C, but we need this so that
34 # a dlopen()ed apache module that's written in C++ will have static
35 # objects constructed properly.
38 CONFIGURE_ARGS+= --with-layout="${WRKSRC}/config.layout:pkgsrc"
39 CONFIGURE_ARGS+= --enable-module=most \
40 --enable-module=auth_db \
41 --disable-module=auth_dbm
42 CONFIGURE_ARGS+= --enable-rule=EAPI \
44 CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR}
45 CONFIGURE_ARGS+= --without-confadjust
46 CONFIGURE_ARGS+= --with-perl=${PERL5:Q}
47 CONFIGURE_ARGS+= --with-port=80
48 CONFIGURE_ENV+= OPTIM=${APACHE_CUSTOM_CFLAGS:Q}
49 CONFIGURE_ENV+= EAPI_MM="${BUILDLINK_PREFIX.libmm}"
50 CONFIGURE_ENV+= BINOWN=${BINOWN:Q} BINGRP=${BINGRP:Q}
51 INSTALL_MAKE_FLAGS+= root=${DESTDIR:Q}
53 .include "../../mk/bsd.prefs.mk"
56 CONFIGURE_ARGS+= --without-execstrip
59 PKG_SYSCONFSUBDIR?= httpd
64 PKG_USERS_VARS+= APACHE_USER
65 PKG_GROUPS_VARS+= APACHE_GROUP
67 CONFIGURE_ARGS+= --server-uid=${APACHE_USER:Q}
68 CONFIGURE_ARGS+= --server-gid=${APACHE_GROUP:Q}
70 PKG_OPTIONS_VAR= PKG_OPTIONS.apache
71 PKG_SUPPORTED_OPTIONS= perf-tuning suexec
73 .include "../../mk/bsd.options.mk"
75 .if !empty(PKG_OPTIONS:Msuexec)
76 APACHE_SUEXEC_DOCROOT?= ${PREFIX}/share/httpd/htdocs
77 APACHE_SUEXEC_PATH= /bin:/usr/bin:${PREFIX}/bin:/usr/local/bin
78 APACHE_SUEXEC_CONFIGURE_ARGS+= \
79 --suexec-caller=${APACHE_USER} \
80 --suexec-safepath=${APACHE_SUEXEC_PATH:Q} \
81 --suexec-docroot=${APACHE_SUEXEC_DOCROOT}
82 CONFIGURE_ARGS+= --enable-suexec \
83 ${APACHE_SUEXEC_CONFIGURE_ARGS:M--suexec-*}
84 PLIST_SRC= ${PKGDIR}/PLIST.suexec
85 BUILD_DEFS+= APACHE_SUEXEC_DOCROOT
88 # Note that there is NO static compile module hook here. This is intentional.
89 # Under Apache 1.3, modules can be compiled to link dynamically to the server
90 # using the "apxs" program. See apxs(8).
93 CONFIGURE_ARGS+= --enable-module=so # requires dlopen()
94 _ENABLE_MOD= --enable-shared
95 PLIST_SRC+= ${PKGDIR}/PLIST.shared
97 _ENABLE_MOD= --enable-module
99 PLIST_SRC+= ${PKGDIR}/PLIST
101 CONFIGURE_ARGS+= ${_ENABLE_MOD}=proxy
102 CONFIGURE_ARGS+= ${_ENABLE_MOD}=define # from mod_ssl pkg.addon
104 APACHE_CUSTOM_CFLAGS?= # empty
106 .if !empty(PKG_OPTIONS:Mperf-tuning)
107 APACHE_CUSTOM_CFLAGS+= -DBUFFERED_LOGS
108 APACHE_CUSTOM_CFLAGS+= ${COMPILER_PERFTUNE_FLAGS}
109 LDFLAGS+= ${COMPILER_PERFTUNE_FLAGS}
112 # Explicitly turn on large file support
113 APACHE_CUSTOM_CFLAGS+= -D_LARGEFILE_SOURCE
114 APACHE_CUSTOM_CFLAGS+= -D_FILE_OFFSET_BITS=64
116 .include "../../mk/compiler.mk"
118 # On NetBSD ELF platforms, we need to link libgcc.a whole-archive so that
119 # certain symbols from the C++ implementation (__get_eh_context, etc.)
120 # referenced by DSOs written in C++ will resolve correctly.
122 .if ${OPSYS} == "NetBSD"
123 . if ${OBJECT_FMT} == "ELF"
124 LINK_LIBGCC_LDFLAGS= ${LINK_ALL_LIBGCC_HACK}
125 MAKE_ENV+= LINK_LIBGCC_LDFLAGS=${LINK_LIBGCC_LDFLAGS:Q}
127 # If we are using gcc3, we need to link against libgcc_s, too. This
128 # ensures modules can resolve symbols they require from gcc.
130 . if !empty(CC_VERSION:Mgcc-3*)
131 LINK_LIBGCC_LDFLAGS+= -lgcc_s
136 BUILD_DEFS+= APACHE_CUSTOM_CFLAGS APACHE_USER APACHE_GROUP
138 EGDIR= ${PREFIX}/share/examples/httpd
140 CONF_FILES= ${EGDIR}/httpd.conf.default ${PKG_SYSCONFDIR}/httpd.conf
141 CONF_FILES+= ${EGDIR}/magic.default ${PKG_SYSCONFDIR}/magic
142 CONF_FILES+= ${EGDIR}/mime.types.default ${PKG_SYSCONFDIR}/mime.types
145 REQD_DIRS= ${PREFIX}/share/httpd
146 REQD_DIRS+= ${PREFIX}/share/httpd/htdocs
147 REQD_DIRS+= ${PREFIX}/lib/httpd
148 OWN_DIRS+= ${VARBASE}/httpd
149 OWN_DIRS+= ${VARBASE}/log/httpd
150 OWN_DIRS_PERMS+= ${VARBASE}/httpd/proxy ${APACHE_USER} ${APACHE_GROUP} 0755
153 # Fix paths in the apache manpages.
156 SUBST_STAGE.man= post-patch
157 SUBST_FILES.man= src/support/*.1 src/support/*.8
158 SUBST_SED.man= -e 's,/usr/local/apache/conf,${PKG_SYSCONFDIR},'
159 SUBST_SED.man+= -e 's,/usr/local/etc/apache,${PKG_SYSCONFDIR},'
160 SUBST_SED.man+= -e 's,/path/to/apache/etc,${PKG_SYSCONFDIR},'
161 SUBST_SED.man+= -e 's,/usr/local/apache/logs,${VARBASE}/log/httpd,'
162 SUBST_SED.man+= -e 's,/usr/local/apache,${PREFIX}/share/httpd/htdocs,'
163 SUBST_SED.man+= -e 's,/usr/web,${PREFIX}/share/httpd/htdocs,'
165 SUBST_CLASSES+= paths
166 SUBST_FILES.paths= config.layout
167 SUBST_SED.paths+= -e 's,@PREFIX@,${PREFIX},g'
168 SUBST_SED.paths+= -e 's,@PKG_SYSCONFDIR@,${PKG_SYSCONFDIR},g'
169 SUBST_SED.paths+= -e 's,@VARBASE@,${VARBASE},g'
170 SUBST_STAGE.paths= post-patch
172 .include "../../mk/bdb.buildlink3.mk"
174 SUBST_STAGE.db= post-patch
175 SUBST_FILES.db= src/modules/standard/mod_auth_db.module
176 SUBST_SED.db+= -e 's,@DB_LIB@,${BDB_LIBS},g'
177 SUBST_SED.db+= -e 's,@DB_VERSION@,${BDB_TYPE},g'
178 .if defined(BDB_BASE) && !empty(BDB_BASE)
179 SUBST_SED.db+= -e 's,@DB_CFLAGS@,-I${BDB_BASE}/include,g'
181 SUBST_SED.db+= -e 's,@DB_CFLAGS@,,g'
184 REPLACE_PERL+= cgi-bin/printenv
185 CHECK_INTERPRETER_SKIP+= lib/httpd/httpd.exp
187 PKG_GROUPS= ${APACHE_GROUP}
188 PKG_USERS= ${APACHE_USER}:${APACHE_GROUP}
190 MAKE_ENV+= CHMOD=${CHMOD:Q} CHOWN=${CHOWN:Q} XARGS=${XARGS:Q}
191 MAKE_ENV+= FIND=${FIND:Q} CHGRP=${CHGRP:Q}
193 .include "../../devel/libmm/buildlink3.mk"
194 .include "../../textproc/expat/buildlink3.mk"
195 .include "../../mk/dlopen.buildlink3.mk"
198 ${CP} ${FILESDIR}/ap_include_extern.h ${WRKSRC}/src/include
199 ${CP} ${MODSSL_SRC}/pkg.addon/*.c ${WRKSRC}/src/modules/extra
200 ${CP} ${MODSSL_SRC}/pkg.addon/*.html ${WRKSRC}/htdocs/manual/mod
201 ${CP} ${MODSSL_SRC}/pkg.eapi/*.c ${WRKSRC}/src/ap
202 ${CP} ${MODSSL_SRC}/pkg.eapi/*.h ${WRKSRC}/src/include
203 ${CP} ${FILESDIR}/config.layout ${WRKSRC}
206 cd ${WRKSRC} && ${CAT} \
207 ${MODSSL_SRC}/pkg.addon/addon.patch \
208 ${MODSSL_SRC}/pkg.eapi/eapi.patch \
209 ${MODSSL_SRC}/pkg.sslcfg/sslcfg.patch \
210 ${MODSSL_SRC}/pkg.sslmod/sslmod.patch \
211 ${MODSSL_SRC}/pkg.sslsup/sslsup.patch \
212 | ${PATCH} ${PATCH_ARGS}
213 cd ${WRKSRC} && ${TAIL} -n +160 \
214 ${MODSSL_SRC}/pkg.ssldoc/ssldoc.patch \
215 | ${PATCH} ${PATCH_ARGS}
216 ${FIND} ${WRKSRC} -name '*.orig' -print | ${XARGS} ${RM} -f
219 cd ${WRKSRC}/src/support; \
220 ${SED} -e "s|@INSTALL@|"`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'`" -c -o ${LIBOWN} -g ${LIBGRP}|" \
221 apxs.pl > apxs.pl.sed; \
222 ${MV} apxs.pl.sed apxs.pl
225 ${FIND} ${WRKSRC}/htdocs -name '*.orig' -print | ${XARGS} ${RM} -f
229 cd ${DESTDIR}${PREFIX}/lib/httpd; ${MV} libproxy.so mod_proxy.so
231 ${INSTALL_DATA_DIR} ${DESTDIR}${PREFIX}/share/examples/httpd
232 for file in httpd.conf magic mime.types; do \
233 ${INSTALL_DATA} ${DESTDIR}${PKG_SYSCONFDIR}/$${file}.default \
234 ${DESTDIR}${PREFIX}/share/examples/httpd; \
235 ${RM} -f ${DESTDIR}${PKG_SYSCONFDIR}/$${file}.default; \
237 ${INSTALL_DATA} ${DISTDIR}/sitedrivenby.gif ${DESTDIR}${PREFIX}/share/httpd/htdocs
238 ${CHMOD} ${NONBINMODE} ${DESTDIR}${PREFIX}/libexec/cgi-bin/printenv \
239 ${DESTDIR}${PREFIX}/libexec/cgi-bin/test-cgi
241 .include "../../mk/bsd.pkg.mk"