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 24all: $NXT_DAEMON 25 26.PHONY: $NXT_DAEMON 27$NXT_DAEMON: $NXT_BUILD_DIR/$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$echo "NXT_LIB_UNIT_OBJS = \\" >> $NXT_MAKEFILE 58$echo " $NXT_BUILD_DIR/src/nxt_lvlhsh.o \\" >> $NXT_MAKEFILE 59$echo " $NXT_BUILD_DIR/src/nxt_murmur_hash.o \\" >> $NXT_MAKEFILE 60 61for nxt_src in $NXT_LIB_UNIT_SRCS 62do 63 nxt_obj=${nxt_src%.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 85$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC: \$(NXT_LIB_UNIT_OBJS) 86 $NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\ 87 \$(NXT_LIB_UNIT_OBJS) 88 89END 90 91 92# Object files. 93 94for nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS $NXT_LIB_UNIT_SRCS \ 95 src/test/nxt_unit_app_test.c 96do 97 nxt_obj=${nxt_src%.c}.o 98 nxt_dep=${nxt_src%.c}.dep 99 nxt_dep_flags=`nxt_gen_dep_flags` 100 nxt_dep_post=`nxt_gen_dep_post` 101 cat << END >> $NXT_MAKEFILE 102 103$NXT_BUILD_DIR/$nxt_obj: $nxt_src 104 \$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\ 105 -o $NXT_BUILD_DIR/$nxt_obj \\ 106 $nxt_dep_flags \\ 107 $nxt_src 108 $nxt_dep_post 109 110-include $NXT_BUILD_DIR/$nxt_dep 111 112END 113 114done 115 116$echo >> $NXT_MAKEFILE 117 118 119# Test object files list. 120 121$echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE 122 123for nxt_src in $NXT_TEST_SRCS 124do 125 nxt_obj=${nxt_src%.c}.o 126 $echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE 127done 128 129 130# Test executables. 131 132cat << END >> $NXT_MAKEFILE 133 134$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\ 135 $NXT_BUILD_DIR/$NXT_LIB_STATIC 136 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\ 137 \$(CFLAGS) \$(NXT_TEST_OBJS) \\ 138 $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 139 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 140 141$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\ 142 $NXT_BUILD_DIR/$NXT_LIB_STATIC 143 \$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\ 144 -o $NXT_BUILD_DIR/utf8_file_name_test \\ 145 $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\ 146 $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 147 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS 148 149$NXT_BUILD_DIR/unit_app_test: $NXT_BUILD_DIR/src/test/nxt_unit_app_test.o \\ 150 $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC 151 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/unit_app_test \\ 152 \$(CFLAGS) $NXT_BUILD_DIR/src/test/nxt_unit_app_test.o \\ 153 $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\ 154 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 155 156END 157 158 159NXT_MAKE_INCS="src $NXT_BUILD_DIR" 160NXT_MAKE_SRCS="$NXT_SRCS" 161 162 163# The include pathes list. 164 165$echo -n "NXT_INCS =" >> $NXT_MAKEFILE 166 167for nxt_inc in $NXT_MAKE_INCS 168do 169 $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE 170done 171 172$echo >> $NXT_MAKEFILE 173$echo >> $NXT_MAKEFILE 174 175 176# Object files list. 177 178$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE 179 180for nxt_src in $NXT_MAKE_SRCS 181do 182 nxt_obj=${nxt_src%.c}.o 183 $echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE 184done 185 186$echo >> $NXT_MAKEFILE 187 188 189# unit executable. 190 191cat << END >> $NXT_MAKEFILE 192 193$NXT_BUILD_DIR/$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 194 \$(NXT_OBJS) 195 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\ 196 \$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 197 $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 198 199END 200 201 202# unit object files. 203 204for nxt_src in $NXT_MAKE_SRCS 205do 206 nxt_obj=${nxt_src%.c}.o 207 nxt_dep=${nxt_src%.c}.dep 208 nxt_dep_flags=`nxt_gen_dep_flags` 209 nxt_dep_post=`nxt_gen_dep_post` 210 cat << END >> $NXT_MAKEFILE 211 212$NXT_BUILD_DIR/$nxt_obj: $nxt_src 213 \$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\ 214 $NXT_LIB_AUX_CFLAGS \\ 215 -o $NXT_BUILD_DIR/$nxt_obj \\ 216 $nxt_dep_flags \\ 217 $nxt_src 218 $nxt_dep_post 219 220-include $NXT_BUILD_DIR/$nxt_dep 221 222END 223 224done 225 226 227# install 228 229cat << END >> $NXT_MAKEFILE 230 231.PHONY: install ${NXT_DAEMON}-install install-check 232 233install: ${NXT_DAEMON}-install 234 235install-check: 236 @test -n "\$(DESTDIR)$NXT_PREFIX" \\ 237 || (echo; \\ 238 echo "error: to make install you need either"; \\ 239 echo " to configure --prefix option"; \\ 240 echo " or to set DESTDIR environment variable."; \\ 241 echo; \\ 242 exit 1) 243 244${NXT_DAEMON}-install: $NXT_DAEMON install-check 245 install -d \$(DESTDIR)$NXT_SBINDIR 246 install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/ 247 install -d \$(DESTDIR)$NXT_STATE 248 249 250.PHONY: uninstall ${NXT_DAEMON}-uninstall 251 252uninstall: ${NXT_DAEMON}-uninstall 253 254${NXT_DAEMON}-uninstall: 255 rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON 256 @rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true 257 258END 259 260# Makefile. 261# *.dSYM is MacOSX Clang debug information. 262 263cat << END > Makefile 264 265include $NXT_MAKEFILE 266 267.PHONY: tests 268tests: $NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test \\ 269 $NXT_BUILD_DIR/unit_app_test 270 271.PHONY: clean 272clean: 273 rm -rf $NXT_BUILD_DIR *.dSYM Makefile 274 275END 276