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