blob: 93dcffd913d1e1f2673d44174a82589aff4d9117 [file] [log] [blame]
# Gnu makefile and libtool are required
# use -D options to overrides defaults
CC=@CC@
CP=@CP@
prefix=@prefix@
exec_prefix=@exec_prefix@
APACHE2_HOME=@APACHE2_HOME@
OS=@OS@
JAVA_HOME=@JAVA_HOME@
APACHE2_INCL=@APACHE2_INCL@
APACHE2_LIBEXEC=@APACHE2_LIBEXEC@
APACHE2_LIBDIR=@APACHE2_LIBDIR@
APR_INCL=@APR_CFLAGS@ @APR_UTIL_INCDIR@ @APR_INCDIR@
APR_LIBS=@APR_LIBS@
APR_LIBDIR_LA=@APR_LIBDIR_LA@
EXTRA_CFLAGS=@APXS2_CFLAGS@
EXTRA_CPPFLAGS=@APXS2_CPPFLAGS@
ifneq ($(strip $(JAVA_HOME)),)
JAVA_INCL=-I ${JAVA_HOME}/include -I ${JAVA_HOME}/include/${OS}
JAVA_LIB=-L ${JAVA_HOME}/jre/lib/${ARCH} -L ${JAVA_HOME}/lib/${ARCH}/native_threads
endif
JK_DIR := ../..
BUILD_DIR = ${JK_DIR}/../build/jk2/apache2
# Extract EXTRA_CFLAGS and EXTRA_CPPFLAGS - same flags used during apache2
# compilation
#include ${APACHE2_HOME}/build/config_vars.mk
# Yes, we use the same properties file as ant
#include ../../../build.properties
LIBTOOL=@LIBTOOL@
# It doesn't hurt if we include all
INCLUDES= -I${JK_DIR}/include \
${APACHE2_INCL} \
${APR_INCL} \
${JAVA_INCL}
JK_CFLAGS=-DCHUNK_SIZE=4096 -DUSE_APACHE_MD5 @HAVE_JNI@ @HAS_PCRE@
ifdef APR_LIBDIR_LA
JK_LDFLAGS=-L${APACHE2_LIBDIR} -lcrypt @PCRE_LIBS@
else
JK_LDFLAGS=-lcrypt ${APR_LIBS} @PCRE_LIBS@
endif
###### Based on rules.mk ##########################################
ALL_CFLAGS = $(EXTRA_CFLAGS) $(NOTEST_CFLAGS) $(CFLAGS)
ALL_CPPFLAGS = $(DEFS) $(EXTRA_CPPFLAGS) $(NOTEST_CPPFLAGS) $(CPPFLAGS)
ALL_LDFLAGS = $(EXTRA_LDFLAGS) $(NOTEST_LDFLAGS) $(LDFLAGS)
ALL_LIBS = $(EXTRA_LIBS) $(NOTEST_LIBS) $(LIBS)
ALL_INCLUDES = $(INCLUDES) $(EXTRA_INCLUDES)
# Compile commands
COMPILE = $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(ALL_INCLUDES)
SH_COMPILE = $(LIBTOOL) --mode=compile $(COMPILE) $(JK_CFLAGS)
MOD_LINK = $(LIBTOOL) --mode=link $(CC) -avoid-version -module -rpath ${APACHE2_LIBEXEC} $(LT_LDFLAGS) $(ALL_LDFLAGS)
MOD_INSTALL = $(LIBTOOL) --mode=install $(CP)
#############################################################################
# ---------- File list creation --------------------
# Same behavior as ant - 'all files from a dir'.
# Excludes are not yet implemented.
COMMON_C_FILES := $(wildcard ${JK_DIR}/common/*.c )
JNI_C_FILES := $(wildcard ${JK_DIR}/jni/*.c )
A2_C_FILES := $(wildcard ${JK_DIR}/server/apache2/*.c )
H_FILES := $(wildcard ${JK_DIR}/include/*.h )
COMMON_LO_FILES := $(patsubst ${JK_DIR}/common/%, ${BUILD_DIR}/%, \
$(patsubst %c, %lo, ${COMMON_C_FILES} ))
JNI_LO_FILES := $(patsubst ${JK_DIR}/jni/%, ${BUILD_DIR}/%, \
$(patsubst %c, %lo, ${JNI_C_FILES} ))
A2_LO_FILES := $(patsubst ${JK_DIR}/server/apache2/%, ${BUILD_DIR}/%, \
$(patsubst %c, %lo, ${A2_C_FILES} ))
# ---------- Compile rules --------------------
.PHONY: all
VPATH=.:../../common
.c.lo:
${SH_COMPILE} -c $< -o $>
${BUILD_DIR}/%.lo: ${JK_DIR}/common/%.c
${SH_COMPILE} -c $< -o $@
${BUILD_DIR}/%.lo: ${JK_DIR}/jni/%.c
${SH_COMPILE} -c $< -o $@
${BUILD_DIR}/%.lo: ${JK_DIR}/server/apache2/%.c
${SH_COMPILE} -c $< -o $@
# ---------- Targets --------------------
all: prepare ${BUILD_DIR}/mod_jk2.so @JNI_BUILD@
jni-build: ${BUILD_DIR}/libjkjni.so
${BUILD_DIR}/mod_jk2.so: ${BUILD_DIR}/${APACHE2_LIBEXEC}/mod_jk2.so
$(CP) $^ $@
${BUILD_DIR}/${APACHE2_LIBEXEC}/mod_jk2.so: ${BUILD_DIR}/mod_jk2.la
$(MOD_INSTALL) $^ `pwd`/${BUILD_DIR}/${APACHE2_LIBEXEC}
${BUILD_DIR}/libjkjni.so: ${BUILD_DIR}/${APACHE2_LIBEXEC}/libjkjni.so
$(CP) $^ $@
${BUILD_DIR}/${APACHE2_LIBEXEC}/libjkjni.so: ${BUILD_DIR}/libjkjni.la
$(MOD_INSTALL) $^ `pwd`/${BUILD_DIR}/${APACHE2_LIBEXEC}
${BUILD_DIR}/libjkjni.la: ${JNI_LO_FILES} ${COMMON_LO_FILES}
$(MOD_LINK) -o $@ $(JK_LDFLAGS) $^
${BUILD_DIR}/mod_jk2.la: ${COMMON_LO_FILES} ${JNI_LO_FILES} ${A2_LO_FILES}
${MOD_LINK} -o $@ $^
${COMMON_C_FILES} ${A2_C_FILES}: ${H_FILES}
prepare:
mkdir -p ${BUILD_DIR}${APACHE2_LIBEXEC}
clean:
rm -rf ${BUILD_DIR}/*.lo ${BUILD_DIR}/*.la ${BUILD_DIR}/*.o ${BUILD_DIR}/*.a \
${BUILD_DIR}/.libs ${BUILD_DIR}/*.so ${BUILD_DIR}${APACHE2_LIBEXEC}/*.so \
${BUILD_DIR}${APACHE2_LIBEXEC}/*.la