| # 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 |