1f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# rules to build a program 2f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# based on FreeBSD's bsd.prog.mk 3f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 4f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# Copyright 2008 Roy Marples <roy@marples.name> 5f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 6f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectinclude ${MK}/cc.mk 7f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 8f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source ProjectOBJS+= ${SRCS:.c=.o} 9f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 10f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# If building for /, ensure we use the libc in / if different from 11f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# the default one in /usr/lib 12f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source ProjectLINK_RPATH?= -Wl,-rpath 13f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project_RPATH_SH= if test "${PREFIX}" = "" -o "${PREIX}" = "/"; then \ 14f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project echo "${LINK_RPATH}=${PREFIX}/${LIBNAME}"; \ 15f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project else \ 16f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project echo ""; \ 17f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project fi 18f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project_RPATH!= ${_RPATH_SH} 19f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source ProjectLDFLAGS+= ${_RPATH}$(shell ${_RPATH_SH}) 20f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 21f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# If building for /, ensure we use the linker in /libexec if different from 22f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# the default one in /usr/libexec 23f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project_DYNLINK_SH= if test "${PREFIX}" = "" -o "${PREFIX}" = "/" && test -e /libexec/ld.elf_so; then \ 24f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project echo "-Wl,-dynamic-linker=/libexec/ld.elf_so"; \ 25f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project else \ 26f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project echo ""; \ 27f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project fi 28f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project_DYNLINK!= ${_DYNLINK_SH} 29f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source ProjectLDFLAGS+= ${_DYNLINK}$(shell ${_DYNLINK_SH}) 30f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 31f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectall: ${PROG} ${SCRIPTS} _man 32f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 33f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project.c.o: 34f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project ${CC} ${CFLAGS} ${CPPFLAGS} -c $< -o $@ 35f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 36f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project${PROG}: ${OBJS} 37f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project ${CC} ${LDFLAGS} -o $@ ${OBJS} ${LDADD} 38f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 39f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# We could save about 600 bytes by building it like this 40f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project# instead of the more traditional method above 41f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectsmall: ${SRCS} 42f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project echo "" > _${PROG}.c 43f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project for src in ${SRCS}; do echo "#include \"$$src\"" >> _${PROG}.c; done 44f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project ${CC} ${CFLAGS} ${CPPFLAGS} -c _${PROG}.c -o _${PROG}.o 45f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project ${CC} ${LDFLAGS} -o ${PROG} _${PROG}.o ${LDADD} 46f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 47f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project_proginstall: ${PROG} 48f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project ${INSTALL} -d ${DESTDIR}${BINDIR} 49f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project ${INSTALL} -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR} 50f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project ${INSTALL} -d ${DESTDIR}${DBDIR} 51f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 52f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectinclude ${MK}/depend.mk 53f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectinclude ${MK}/files.mk 54f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectinclude ${MK}/scripts.mk 55f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectinclude ${MK}/man.mk 56f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectinclude ${MK}/dist.mk 57f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 58f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectinstall: _proginstall _scriptsinstall _filesinstall _maninstall 59f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done 60f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 61f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectclean: 62f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project rm -f ${OBJS} ${PROG} _${PROG}.c _${PROG}.o ${PROG}.core ${CLEANFILES} 63f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 64f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source ProjectLINTFLAGS?= -hx 65f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source ProjectLINTFLAGS+= -X 159,247,352 66f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 67f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectlint: ${SRCS:.c=.c} 68f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} $^ ${.ALLSRC} 69