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$echo " $NXT_BUILD_DIR/src/nxt_websocket.o \\" >> $NXT_MAKEFILE 61 62for nxt_src in $NXT_LIB_UNIT_SRCS 63do 64 nxt_obj=${nxt_src%.c}.o 65 $echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE 66done 67 68$echo >> $NXT_MAKEFILE 69 70 71# The version file. 72 73cat << END >> $NXT_MAKEFILE 74 75include version 76 77$NXT_VERSION_H: version 78 $echo '#define NXT_VERSION "\$(NXT_VERSION)"' > $NXT_VERSION_H 79 $echo '#define NXT_VERNUM \$(NXT_VERNUM)' >> $NXT_VERSION_H 80 81END 82 83 84# Shared and static library. 85 86cat << END >> $NXT_MAKEFILE 87 88libnxt: $NXT_BUILD_DIR/$NXT_LIB_SHARED $NXT_BUILD_DIR/$NXT_LIB_STATIC 89 90$NXT_BUILD_DIR/$NXT_LIB_SHARED: \$(NXT_LIB_OBJS) 91 \$(NXT_SHARED_LOCAL_LINK) -o $NXT_BUILD_DIR/$NXT_LIB_SHARED \\ 92 \$(NXT_LIB_OBJS) \\ 93 $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 94 95$NXT_BUILD_DIR/$NXT_LIB_STATIC: \$(NXT_LIB_OBJS) 96 $NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 97 \$(NXT_LIB_OBJS) 98 99$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC: \$(NXT_LIB_UNIT_OBJS) 100 $NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\ 101 \$(NXT_LIB_UNIT_OBJS) 102 103END 104 105 106# Object files. 107 108for nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS $NXT_LIB_UNIT_SRCS \ 109 src/test/nxt_unit_app_test.c \ 110 src/test/nxt_unit_websocket_chat.c \ 111 src/test/nxt_unit_websocket_echo.c 112do 113 nxt_obj=${nxt_src%.c}.o 114 nxt_dep=${nxt_src%.c}.dep 115 nxt_dep_flags=`nxt_gen_dep_flags` 116 nxt_dep_post=`nxt_gen_dep_post` 117 cat << END >> $NXT_MAKEFILE 118 119$NXT_BUILD_DIR/$nxt_obj: $nxt_src $NXT_VERSION_H 120 \$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\ 121 -o $NXT_BUILD_DIR/$nxt_obj \\ 122 $nxt_dep_flags \\ 123 $nxt_src 124 $nxt_dep_post 125 126-include $NXT_BUILD_DIR/$nxt_dep 127 128END 129 130done 131 132$echo >> $NXT_MAKEFILE 133 134 135if [ $NXT_TESTS = YES ]; then 136 137 # Test object files list. 138 139 $echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE 140 141 for nxt_src in $NXT_TEST_SRCS 142 do 143 nxt_obj=${nxt_src%.c}.o 144 $echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE 145 done 146 147 # Test executables. 148 149 cat << END >> $NXT_MAKEFILE 150 151.PHONY: tests 152tests: $NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test \\ 153 $NXT_BUILD_DIR/unit_app_test $NXT_BUILD_DIR/unit_websocket_chat \\ 154 $NXT_BUILD_DIR/unit_websocket_echo 155 156$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\ 157 $NXT_BUILD_DIR/$NXT_LIB_STATIC 158 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\ 159 \$(CFLAGS) \$(NXT_TEST_OBJS) \\ 160 $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 161 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 162 163$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\ 164 $NXT_BUILD_DIR/$NXT_LIB_STATIC 165 \$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\ 166 -o $NXT_BUILD_DIR/utf8_file_name_test \\ 167 $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\ 168 $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 169 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 170 171$NXT_BUILD_DIR/unit_app_test: $NXT_BUILD_DIR/src/test/nxt_unit_app_test.o \\ 172 $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC 173 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/unit_app_test \\ 174 \$(CFLAGS) $NXT_BUILD_DIR/src/test/nxt_unit_app_test.o \\ 175 $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\ 176 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 177 178$NXT_BUILD_DIR/unit_websocket_chat: \\ 179 $NXT_BUILD_DIR/src/test/nxt_unit_websocket_chat.o \\ 180 $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC 181 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/unit_websocket_chat \\ 182 \$(CFLAGS) $NXT_BUILD_DIR/src/test/nxt_unit_websocket_chat.o \\ 183 $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\ 184 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 185 186$NXT_BUILD_DIR/unit_websocket_echo: \\ 187 $NXT_BUILD_DIR/src/test/nxt_unit_websocket_echo.o \\ 188 $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC 189 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/unit_websocket_echo \\ 190 \$(CFLAGS) $NXT_BUILD_DIR/src/test/nxt_unit_websocket_echo.o \\ 191 $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\ 192 $NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 193 194END 195 196else 197 198 cat << END >> $NXT_MAKEFILE 199 200.PHONY: tests 201tests: 202 @(echo; \\ 203 echo "error: to make tests you need to configure --tests option."; \\ 204 echo; \\ 205 exit 1) 206 207END 208 209fi 210 211 212NXT_MAKE_INCS="src $NXT_BUILD_DIR" 213NXT_MAKE_SRCS="$NXT_SRCS" 214 215 216# The include paths list. 217 218$echo -n "NXT_INCS =" >> $NXT_MAKEFILE 219 220for nxt_inc in $NXT_MAKE_INCS 221do 222 $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE 223done 224 225$echo >> $NXT_MAKEFILE 226$echo >> $NXT_MAKEFILE 227 228 229# Object files list. 230 231$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE 232 233for nxt_src in $NXT_MAKE_SRCS 234do 235 nxt_obj=${nxt_src%.c}.o 236 $echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE 237done 238 239$echo >> $NXT_MAKEFILE 240 241 242# unit executable. 243 244cat << END >> $NXT_MAKEFILE 245 246$NXT_BUILD_DIR/$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 247 \$(NXT_OBJS) 248 \$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\ 249 \$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\ 250 $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS 251 252END 253 254 255# unit object files. 256 257for nxt_src in $NXT_MAKE_SRCS 258do 259 nxt_obj=${nxt_src%.c}.o 260 nxt_dep=${nxt_src%.c}.dep 261 nxt_dep_flags=`nxt_gen_dep_flags` 262 nxt_dep_post=`nxt_gen_dep_post` 263 cat << END >> $NXT_MAKEFILE 264 265$NXT_BUILD_DIR/$nxt_obj: $nxt_src $NXT_VERSION_H 266 \$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\ 267 $NXT_LIB_AUX_CFLAGS \\ 268 -o $NXT_BUILD_DIR/$nxt_obj \\ 269 $nxt_dep_flags \\ 270 $nxt_src 271 $nxt_dep_post 272 273-include $NXT_BUILD_DIR/$nxt_dep 274 275END 276 277done 278 279 280# install 281 282cat << END >> $NXT_MAKEFILE 283 284.PHONY: install ${NXT_DAEMON}-install install-check 285 286install: ${NXT_DAEMON}-install 287 288install-check: 289 @test -n "\$(DESTDIR)$NXT_PREFIX" \\ 290 || (echo; \\ 291 echo "error: to make install you need either"; \\ 292 echo " to configure --prefix option"; \\ 293 echo " or to set DESTDIR environment variable."; \\ 294 echo; \\ 295 exit 1) 296 297${NXT_DAEMON}-install: $NXT_DAEMON install-check 298 install -d \$(DESTDIR)$NXT_SBINDIR 299 install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/ 300 install -d \$(DESTDIR)$NXT_STATE 301 302 303.PHONY: uninstall ${NXT_DAEMON}-uninstall 304 305uninstall: ${NXT_DAEMON}-uninstall 306 307${NXT_DAEMON}-uninstall: 308 rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON 309 @rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true 310 311END 312 313cat << END >> $NXT_MAKEFILE 314 315.PHONY: libunit-install libunit-uninstall 316 317libunit-install: $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC 318 install -d \$(DESTDIR)$NXT_LIBDIR 319 install -p -m u=rw,go=r $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \ 320 \$(DESTDIR)$NXT_LIBDIR/ 321 install -d \$(DESTDIR)$NXT_INCDIR 322 install -p -m u=rw,go=r src/nxt_unit.h \ 323 src/nxt_unit_field.h \ 324 src/nxt_unit_request.h \ 325 src/nxt_unit_response.h \ 326 src/nxt_unit_sptr.h \ 327 src/nxt_unit_typedefs.h \ 328 src/nxt_unit_websocket.h \ 329 $NXT_BUILD_DIR/nxt_version.h \ 330 src/nxt_websocket_header.h \ 331 \$(DESTDIR)$NXT_INCDIR/ 332 333libunit-uninstall: 334 rm -f \$(DESTDIR)$NXT_LIBDIR/$NXT_LIB_UNIT_STATIC 335 @rmdir -p \$(DESTDIR)$NXT_LIBDIR 2>/dev/null || true 336 rm -f \$(DESTDIR)$NXT_INCDIR/nxt_unit.h \ 337 \$(DESTDIR)$NXT_INCDIR/nxt_unit_field.h \ 338 \$(DESTDIR)$NXT_INCDIR/nxt_unit_request.h \ 339 \$(DESTDIR)$NXT_INCDIR/nxt_unit_response.h \ 340 \$(DESTDIR)$NXT_INCDIR/nxt_unit_sptr.h \ 341 \$(DESTDIR)$NXT_INCDIR/nxt_unit_typedefs.h \ 342 \$(DESTDIR)$NXT_INCDIR/nxt_unit_websocket.h \ 343 \$(DESTDIR)$NXT_INCDIR/nxt_version.h \ 344 \$(DESTDIR)$NXT_INCDIR/nxt_websocket_header.h 345 @rmdir -p \$(DESTDIR)$NXT_INCDIR 2>/dev/null || true 346 347END 348 349# Makefile. 350# *.dSYM is MacOSX Clang debug information. 351 352cat << END > Makefile 353 354include $NXT_MAKEFILE 355 356.PHONY: clean 357clean: 358 rm -rf $NXT_BUILD_DIR *.dSYM Makefile 359 360END 361