# Gnu makefile and libtool are required # use -D options to overrides defaults APACHE2_HOME=@APACHE2_HOME@ OS=@OS@ JAVA_HOME=@JAVA_HOME@ APACHE2_INCL=@APACHE2_INCL@ APACHE2_LIBEXEC=@APACHE2_LIBEXEC@ APACHE2_LIBDIR=@APACHE2_HOME@/lib APR_INCL=@APR_CFLAGS@ EXTRA_CFLAGS=@APXS2_CFLAGS@ EXTRA_CPPFLAGS=@APXS2_CPPFLAGS@ CC=@CC@ 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 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=${APACHE2_HOME}/build/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 -DHAS_APR @HAVE_JNI@ @HAS_PCRE@ JK_LDFLAGS=-L${APACHE2_LIBDIR} -lcrypt -lapr-0 @PCRE_LIBS@ ###### 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 ${BUILD_DIR}/jkjni.so ${BUILD_DIR}/mod_jk2.so: ${BUILD_DIR}/mod_jk2.la $(MOD_INSTALL) cp $^ `pwd`/${BUILD_DIR} ${BUILD_DIR}/jkjni.so: ${BUILD_DIR}/jkjni.la $(MOD_INSTALL) cp $^ `pwd`/${BUILD_DIR} ${BUILD_DIR}/jkjni.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} clean: rm -rf ${BUILD_DIR}/*.lo ${BUILD_DIR}/*.la ${BUILD_DIR}/*.o ${BUILD_DIR}/.libs ${BUILD_DIR}/*.so