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