summaryrefslogblamecommitdiffhomepage
path: root/auto/make
blob: 742df11a2939cfd9afd57c29c5c95d42769d0b5f (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                    
                                                       




                                                          

                                       
 
                
 



















                                            
                                                              








































                                                                      
                                           














                                                                    
                         
 
                                           
 
                             





                                                            
                   


                           
                                          
                                                                       

                                                    













                                                                        
































                                             

                                      
                             




                                                            


                      
                  
 

                           
                                                                 
                                            
                                                                     





                                                              
                    















                                                     























                                                                      




                                           

                     

                                                                       

      
                                                     

   

# Copyright (C) Igor Sysoev
# Copyright (C) Valentin V. Bartenev
# Copyright (C) NGINX, Inc.


$echo "creating $NXT_MAKEFILE"

mkdir -p $NXT_BUILD_DIR/src \
         $NXT_BUILD_DIR/test


cat << END > $NXT_MAKEFILE

CC =			$CC

CFLAGS = 		$NXT_CFLAGS $NXT_CC_OPT $CFLAGS

NXT_EXEC_LINK =		$NXT_EXEC_LINK $NXT_LD_OPT
NXT_SHARED_LOCAL_LINK =	$NXT_SHARED_LOCAL_LINK $NXT_LD_OPT
NXT_MODULE_LINK =	$NXT_MODULE_LINK $NXT_LD_OPT

.PHONY: $NXT_DAEMON
$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_DAEMON

all: $NXT_DAEMON

END


# The include paths list.

$echo -n "NXT_LIB_INCS =" >> $NXT_MAKEFILE

for nxt_inc in src $NXT_BUILD_DIR
do
    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
done

$echo >> $NXT_MAKEFILE
$echo >> $NXT_MAKEFILE


# The include files dependences list.

$echo "NXT_LIB_DEPS = \\" >> $NXT_MAKEFILE

for nxt_dep in $NXT_LIB_DEPS $NXT_TEST_DEPS $NXT_AUTO_CONFIG_H
do
    $echo "	$nxt_dep \\" >> $NXT_MAKEFILE
done

$echo >> $NXT_MAKEFILE
$echo >> $NXT_MAKEFILE


# Library object files list.

$echo "NXT_LIB_OBJS = \\" >> $NXT_MAKEFILE

for nxt_src in $NXT_LIB_SRCS
do
    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
done

$echo >> $NXT_MAKEFILE


# Shared and static library.

cat << END >> $NXT_MAKEFILE

libnxt:	$NXT_BUILD_DIR/$NXT_LIB_SHARED $NXT_BUILD_DIR/$NXT_LIB_STATIC

$NXT_BUILD_DIR/$NXT_LIB_SHARED:	\$(NXT_LIB_OBJS)
	\$(NXT_SHARED_LOCAL_LINK) -o $NXT_BUILD_DIR/$NXT_LIB_SHARED \\
		\$(NXT_LIB_OBJS) \\
		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS

$NXT_BUILD_DIR/$NXT_LIB_STATIC:	\$(NXT_LIB_OBJS)
	$NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
		\$(NXT_LIB_OBJS)

END


# Object files.

for nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS
do
    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
    cat << END >> $NXT_MAKEFILE

$NXT_BUILD_DIR/$nxt_obj: $nxt_src \$(NXT_LIB_DEPS)
	\$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
	-o $NXT_BUILD_DIR/$nxt_obj \\
	$nxt_src
END

done

$echo >> $NXT_MAKEFILE


# Test object files list.

$echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE

for nxt_src in $NXT_TEST_SRCS
do
    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
done


# Test executables.

cat << END >> $NXT_MAKEFILE

$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\
			$NXT_BUILD_DIR/$NXT_LIB_STATIC \$(NXT_LIB_DEPS)
	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\
		\$(CFLAGS) \$(NXT_TEST_OBJS) \\
		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS

$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
			$NXT_BUILD_DIR/$NXT_LIB_STATIC \$(NXT_LIB_DEPS)
	\$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
		-o $NXT_BUILD_DIR/utf8_file_name_test \\
		$NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS

END


NXT_MAKE_INCS="src $NXT_BUILD_DIR"
NXT_MAKE_DEPS="\$(NXT_LIB_DEPS) $NXT_DEPS"
NXT_MAKE_SRCS="$NXT_SRCS"


# The include pathes list.

$echo -n "NXT_INCS =" >> $NXT_MAKEFILE

for nxt_inc in $NXT_MAKE_INCS
do
    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
done

$echo >> $NXT_MAKEFILE
$echo >> $NXT_MAKEFILE


# The include files dependences list.

$echo "NXT_DEPS = \\" >> $NXT_MAKEFILE

for nxt_dep in $NXT_MAKE_DEPS
do
    $echo "	$nxt_dep \\" >> $NXT_MAKEFILE
done

$echo >> $NXT_MAKEFILE
$echo >> $NXT_MAKEFILE


# Object files list.

$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE

for nxt_src in $NXT_MAKE_SRCS
do
    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
done

$echo >> $NXT_MAKEFILE


# unit executable.

cat << END >> $NXT_MAKEFILE

$NXT_BUILD_DIR/$NXT_DAEMON:	$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
				\$(NXT_OBJS)
	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\
		\$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS

END


# unit object files.

for nxt_src in $NXT_MAKE_SRCS
do
    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
    cat << END >> $NXT_MAKEFILE

$NXT_BUILD_DIR/$nxt_obj:	$nxt_src \$(NXT_DEPS)
	\$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\
		$NXT_LIB_AUX_CFLAGS \\
		-o $NXT_BUILD_DIR/$nxt_obj \\
		$nxt_src
END

done


# install

cat << END >> $NXT_MAKEFILE

.PHONY: install ${NXT_DAEMON}-install

install: ${NXT_DAEMON}-install

${NXT_DAEMON}-install: $NXT_DAEMON
	install -d \$(DESTDIR)$NXT_SBINDIR
	install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/


.PHONY: uninstall ${NXT_DAEMON}-uninstall

uninstall: ${NXT_DAEMON}-uninstall

${NXT_DAEMON}-uninstall:
	rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON
	@rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true

END


# Makefile.
# *.dSYM is MacOSX Clang debug information.

cat << END > Makefile

include $NXT_MAKEFILE

.PHONY:		tests
tests:		$NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test

clean:
		rm -rf $NXT_BUILD_DIR *.dSYM Makefile

END