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