1 2# Copyright (C) Igor Sysoev 3# Copyright (C) Valentin V. Bartenev 4# Copyright (C) NGINX, Inc. 5 6 7$echo "creating $NXT_MAKEFILE" 8 9mkdir -p $NXT_BUILD_DIR/src \ 10 $NXT_BUILD_DIR/src/test 11 12 13cat << END > $NXT_MAKEFILE 14 15CC = $CC 16 17CFLAGS = $NXT_CFLAGS $NXT_CC_OPT $CFLAGS 18 19NXT_EXEC_LINK = $NXT_EXEC_LINK $NXT_LD_OPT 20NXT_SHARED_LOCAL_LINK = $NXT_SHARED_LOCAL_LINK $NXT_LD_OPT 21NXT_MODULE_LINK = $NXT_MODULE_LINK $NXT_LD_OPT 22 23.PHONY: $NXT_DAEMON 24$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_DAEMON 25 26all: $NXT_DAEMON 27 28END 29 30 31# The include paths list. 32 33$echo -n "NXT_LIB_INCS =" >> $NXT_MAKEFILE 34 35for nxt_inc in src $NXT_BUILD_DIR 36do 37 $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE 38done 39 40$echo >> $NXT_MAKEFILE 41$echo >> $NXT_MAKEFILE 42 43 44# The include files dependences list. 45 46$echo "NXT_LIB_DEPS = \\" >> $NXT_MAKEFILE 47 48for nxt_dep in $NXT_LIB_DEPS $NXT_TEST_DEPS $NXT_AUTO_CONFIG_H 49do 50 $echo " $nxt_dep \\" >> $NXT_MAKEFILE 51done 52 53$echo >> $NXT_MAKEFILE 54$echo >> $NXT_MAKEFILE 55 56 57# Library object files list. 58 59$echo "NXT_LIB_OBJS = \\" >> $NXT_MAKEFILE 60 61for nxt_src in $NXT_LIB_SRCS 62do 63 nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"` 64 $echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE 65done 66 67$echo >> $NXT_MAKEFILE 68 69 70# Shared and static library. 71 72cat << END >> $NXT_MAKEFILE 73 74libnxt: $NXT_BUILD_DIR/$NXT_LIB_SHARED $NXT_BUILD_DIR/$NXT_LIB_STATIC 75 76$NXT_BUILD_DIR/$NXT_LIB_SHARED: \$(NXT_LIB_OBJS) 77 \$(NXT_SHARED_LOCAL_LINK) -o $NXT_BUILD_DIR/$NXT_LIB_SHARED \\ 78 \$(NXT_LIB_OBJS) \\ 79 $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 80 81$NXT_BUILD_DIR/$NXT_LIB_STATIC: \$(NXT_LIB_OBJS) 82 $NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 83 \$(NXT_LIB_OBJS) 84 85END 86 87 88# Object files. 89 90for nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS 91do 92 nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"` 93 cat << END >> $NXT_MAKEFILE 94 95$NXT_BUILD_DIR/$nxt_obj: $nxt_src \$(NXT_LIB_DEPS) 96 \$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\ 97 -o $NXT_BUILD_DIR/$nxt_obj \\ 98 $nxt_src 99END 100 101done 102 103$echo >> $NXT_MAKEFILE 104 105 106# Test object files list. 107 108$echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE 109 110for nxt_src in $NXT_TEST_SRCS 111do 112 nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"` 113 $echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE 114done 115 116 117# Test executables. 118 119cat << END >> $NXT_MAKEFILE 120 121$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\ 122 $NXT_BUILD_DIR/$NXT_LIB_STATIC \$(NXT_LIB_DEPS) 123 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\ 124 \$(CFLAGS) \$(NXT_TEST_OBJS) \\ 125 $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 126 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 127 128$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\ 129 $NXT_BUILD_DIR/$NXT_LIB_STATIC \$(NXT_LIB_DEPS) 130 \$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\ 131 -o $NXT_BUILD_DIR/utf8_file_name_test \\ 132 $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\ 133 $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 134 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS 135 136END 137 138 139NXT_MAKE_INCS="src $NXT_BUILD_DIR" 140NXT_MAKE_DEPS="\$(NXT_LIB_DEPS) $NXT_DEPS" 141NXT_MAKE_SRCS="$NXT_SRCS" 142 143 144# The include pathes list. 145 146$echo -n "NXT_INCS =" >> $NXT_MAKEFILE 147 148for nxt_inc in $NXT_MAKE_INCS 149do 150 $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE 151done 152 153$echo >> $NXT_MAKEFILE 154$echo >> $NXT_MAKEFILE 155 156 157# The include files dependences list. 158 159$echo "NXT_DEPS = \\" >> $NXT_MAKEFILE 160 161for nxt_dep in $NXT_MAKE_DEPS 162do 163 $echo " $nxt_dep \\" >> $NXT_MAKEFILE 164done 165 166$echo >> $NXT_MAKEFILE 167$echo >> $NXT_MAKEFILE 168 169 170# Object files list. 171 172$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE 173 174for nxt_src in $NXT_MAKE_SRCS 175do 176 nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"` 177 $echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE 178done 179 180$echo >> $NXT_MAKEFILE 181 182 183# unit executable. 184 185cat << END >> $NXT_MAKEFILE 186 187$NXT_BUILD_DIR/$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 188 \$(NXT_OBJS) 189 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\ 190 \$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 191 $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 192 193END 194 195 196# unit object files. 197 198for nxt_src in $NXT_MAKE_SRCS 199do 200 nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"` 201 cat << END >> $NXT_MAKEFILE 202 203$NXT_BUILD_DIR/$nxt_obj: $nxt_src \$(NXT_DEPS) 204 \$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\ 205 $NXT_LIB_AUX_CFLAGS \\ 206 -o $NXT_BUILD_DIR/$nxt_obj \\ 207 $nxt_src 208END 209 210done 211 212 213# install 214 215cat << END >> $NXT_MAKEFILE 216 217.PHONY: install ${NXT_DAEMON}-install 218 219install: ${NXT_DAEMON}-install 220 221${NXT_DAEMON}-install: $NXT_DAEMON 222 install -d \$(DESTDIR)$NXT_SBINDIR 223 install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/ 224 install -d \$(DESTDIR)$NXT_STATE 225 226 227.PHONY: uninstall ${NXT_DAEMON}-uninstall 228 229uninstall: ${NXT_DAEMON}-uninstall 230 231${NXT_DAEMON}-uninstall: 232 rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON 233 @rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true 234 235END 236 237nxt_version=`grep NXT_VERSION src/nxt_main.h | sed -e 's/.*"\(.*\)".*/\1/'` 238 239# Makefile. 240# *.dSYM is MacOSX Clang debug information. 241 242cat << END > Makefile 243 244NXT_VERSION = $nxt_version 245 246include $NXT_MAKEFILE 247 248.PHONY: tests 249tests: $NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test 250 251.PHONY: clean 252clean: 253 rm -rf $NXT_BUILD_DIR *.dSYM Makefile 254 255.PHONY: dist 256dist: 257 rm -f unit-\$(NXT_VERSION).tar.gz 258 mkdir unit-\$(NXT_VERSION) 259 cp -rp LICENSE NOTICE CHANGES README \\ 260 configure auto src test \\ 261 unit-\$(NXT_VERSION) 262 tar czf unit-\$(NXT_VERSION).tar.gz unit-\$(NXT_VERSION) 263 rm -rf unit-\$(NXT_VERSION) 264 265END 266