update Tue Jun 22 06:37:08 PDT 2010
[pkgsrc.git] / www / apache / Makefile
1 # $NetBSD: Makefile,v 1.199 2010/02/09 07:22:06 dholland Exp $
2 #
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).
5
6 DISTNAME=               apache_1.3.42
7 PKGNAME=                ${DISTNAME:S/_/-/}
8 CATEGORIES=             www
9 MASTER_SITES=           ${MASTER_SITE_APACHE:=httpd/} \
10                         ${MASTER_SITE_APACHE:=httpd/old/}
11 DISTFILES=              ${DISTNAME}${EXTRACT_SUFX} ${NETBSD_LOGO} ${MODSSL_DIST}
12
13 MAINTAINER=             pkgsrc-users@NetBSD.org
14 HOMEPAGE=               http://httpd.apache.org/
15 COMMENT=                Apache HTTP (Web) server
16
17 PKG_DESTDIR_SUPPORT=    user-destdir
18
19 NETBSD_LOGO=            sitedrivenby.gif
20 SITES.${NETBSD_LOGO}=   http://www.NetBSD.org/images/logos/
21
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/
29
30 CONFLICTS=              apache-*ssl-[0-9]* apache6-[0-9]*
31
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.
36 USE_LANGUAGES=          c c++
37 HAS_CONFIGURE=          YES
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                              \
43                         --disable-module=ssl
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}
52
53 .include "../../mk/bsd.prefs.mk"
54
55 .if empty(STRIPFLAG)
56 CONFIGURE_ARGS+=        --without-execstrip
57 .endif
58
59 PKG_SYSCONFSUBDIR?=     httpd
60 USE_TOOLS+=             perl
61
62 APACHE_USER?=           www
63 APACHE_GROUP?=          www
64 PKG_USERS_VARS+=        APACHE_USER
65 PKG_GROUPS_VARS+=       APACHE_GROUP
66
67 CONFIGURE_ARGS+=        --server-uid=${APACHE_USER:Q}
68 CONFIGURE_ARGS+=        --server-gid=${APACHE_GROUP:Q}
69
70 PKG_OPTIONS_VAR=        PKG_OPTIONS.apache
71 PKG_SUPPORTED_OPTIONS=  perf-tuning suexec
72
73 .include "../../mk/bsd.options.mk"
74
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
86 .endif
87
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).
91 #
92 .if !defined(NOPIC)
93 CONFIGURE_ARGS+=        --enable-module=so      # requires dlopen()
94 _ENABLE_MOD=            --enable-shared
95 PLIST_SRC+=             ${PKGDIR}/PLIST.shared
96 .else
97 _ENABLE_MOD=            --enable-module
98 .endif
99 PLIST_SRC+=             ${PKGDIR}/PLIST
100
101 CONFIGURE_ARGS+=        ${_ENABLE_MOD}=proxy
102 CONFIGURE_ARGS+=        ${_ENABLE_MOD}=define   # from mod_ssl pkg.addon
103
104 APACHE_CUSTOM_CFLAGS?=  # empty
105
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}
110 .endif
111
112 # Explicitly turn on large file support
113 APACHE_CUSTOM_CFLAGS+=  -D_LARGEFILE_SOURCE
114 APACHE_CUSTOM_CFLAGS+=  -D_FILE_OFFSET_BITS=64
115
116 .include "../../mk/compiler.mk"
117
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.
121 #
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}
126 #
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.
129 #
130 .    if !empty(CC_VERSION:Mgcc-3*)
131 LINK_LIBGCC_LDFLAGS+=   -lgcc_s
132 .    endif
133 .  endif
134 .endif
135
136 BUILD_DEFS+=            APACHE_CUSTOM_CFLAGS APACHE_USER APACHE_GROUP
137
138 EGDIR=          ${PREFIX}/share/examples/httpd
139
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
143 RCD_SCRIPTS=    apache
144
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
151
152 #
153 # Fix paths in the apache manpages.
154 #
155 SUBST_CLASSES+=         man
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,'
164
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
171
172 .include "../../mk/bdb.buildlink3.mk"
173 SUBST_CLASSES+=         db
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'
180 .else
181 SUBST_SED.db+=          -e 's,@DB_CFLAGS@,,g'
182 .endif
183
184 REPLACE_PERL+=                  cgi-bin/printenv
185 CHECK_INTERPRETER_SKIP+=        lib/httpd/httpd.exp
186
187 PKG_GROUPS=             ${APACHE_GROUP}
188 PKG_USERS=              ${APACHE_USER}:${APACHE_GROUP}
189
190 MAKE_ENV+=              CHMOD=${CHMOD:Q} CHOWN=${CHOWN:Q} XARGS=${XARGS:Q}
191 MAKE_ENV+=              FIND=${FIND:Q} CHGRP=${CHGRP:Q}
192
193 .include "../../devel/libmm/buildlink3.mk"
194 .include "../../textproc/expat/buildlink3.mk"
195 .include "../../mk/dlopen.buildlink3.mk"
196
197 post-extract:
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}
204
205 pre-patch:
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
217
218 post-patch:
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
223
224 pre-install:
225         ${FIND} ${WRKSRC}/htdocs -name '*.orig' -print | ${XARGS} ${RM} -f
226
227 post-install:
228 .if !defined(NOPIC)
229         cd ${DESTDIR}${PREFIX}/lib/httpd; ${MV} libproxy.so mod_proxy.so
230 .endif
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;  \
236         done
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
240
241 .include "../../mk/bsd.pkg.mk"