2
0
Fork 0

add autobuild; remove build-date from binary

This commit is contained in:
Stefan Bühler 2015-06-21 21:49:18 +02:00
parent 7da292b242
commit 8f2147e429
9 changed files with 174 additions and 27 deletions

11
.gitignore vendored
View File

@ -2,5 +2,14 @@
.lock-wscript
.DS_Store
*~
build
*build
weighttp
Makefile.in
aclocal.m4
compile
configure
depcomp
install-sh
missing
autom4te.cache/
config.h.in

2
Makefile.am Normal file
View File

@ -0,0 +1,2 @@
EXTRA_DIST=autogen.sh
SUBDIRS=src

48
README
View File

@ -3,11 +3,36 @@ weighttp - a lightweight and simple webserver benchmarking tool
Please see http://weighttp.lighttpd.net/ for current info.
DEPENDENCIES
============
BUILD
Requires libev; can be found in your distro's repository or at
http://software.schmorp.de/pkg/libev.html
BUILD (autobuild)
=====
Make sure you have libev* and python (for waf) installed, then:
When running from git (should not be necessary when building from tar),
requires automake, autoconf and friends:
$ ./autogen.sh
Then:
$ ./configure
$ make
INSTALL (autobuild)
=======
$ make install
or
$ sudo make install
BUILD (waf)
=====
Make sure you have python installed, then:
$ ./waf configure
$ ./waf build
@ -15,7 +40,7 @@ $ ./waf build
See ./waf --help for available configure options and other commands available.
INSTALL
INSTALL (waf)
=======
$ ./waf install
@ -27,20 +52,3 @@ USAGE
=====
$ weighttp -h
UNINSTALL
=========
$ ./waf uninstall
or
$ sudo ./waf uninstall
You can also chain commands:
$ ./waf configure clean build install
----
* libev can be found in your distro's repository or at http://software.schmorp.de/pkg/libev.html

12
autogen.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
set -e
if [ ! -f configure.ac -o ! -f COPYING ]; then
echo "Doesn't look like you're in the source directory" >&2
exit 1
fi
autoreconf --force --install
echo "Now type './configure ...' and 'make' to compile."

101
configure.ac Normal file
View File

@ -0,0 +1,101 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
AC_INIT([weighttp],[0.3])
AC_CONFIG_SRCDIR([src/weighttp.c])
AC_CONFIG_HEADER([src/config.h])
AM_INIT_AUTOMAKE([-Wall -Werror foreign dist-xz no-dist-gzip])
# Checks for programs.
AC_PROG_CC
dnl @synopsis TRY_CFLAGS [compiler flags]
dnl @summary check whether C compiler supports given flags and adds them to CFLAGS
AC_DEFUN([TRY_CFLAGS],
[dnl
AC_MSG_CHECKING([if $CC supports $1])
AC_LANG_PUSH([C])
ac_try_cflags_saved_cflags="${CFLAGS}"
CFLAGS="${CFLAGS} $1"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
[AC_MSG_RESULT([yes])],
[
AC_MSG_ERROR([no])
# options not supported, remove them:
CFLAGS="${ac_try_cflags_saved_cflags}"
]
)
AC_LANG_POP([C])
])
## solaris needs -lsocket
AC_SEARCH_LIBS([socket],[socket])
## pthread
AC_MSG_CHECKING([for pthread support])
AC_SEARCH_LIBS([pthread_create], [pthread], [
CFLAGS="-pthread ${CFLAGS}"
LDFLAGS="-pthread ${LDFLAGS}"
])
## libev
AC_MSG_CHECKING([for libev support])
AC_ARG_WITH([libev],
[AS_HELP_STRING([--with-libev@<:@=PATH@:>@],[Search for libev in PATH/include and PATH/lib])],
[WITH_LIBEV=$withval],[WITH_LIBEV=yes])
LIBEV_CFLAGS=""
LIBEV_LIBS=""
PKG_CHECK_MODULES([LIBEV], [libev], [], [
# no pkg-config for libev, searching manually:
if test "$WITH_LIBEV" != "yes"; then
LIBEV_CFLAGS="-I$WITH_LIBEV/include"
LIBEV_LIBS="-L$WITH_LIBEV/lib -lev"
else
AC_CHECK_HEADERS([ev.h],[
AC_CHECK_LIB([ev], [ev_time], [
LIBEV_LIBS="-lev"
],[
AC_MSG_ERROR([libev not found])
]
)],[
AC_MSG_ERROR([libev not found])
]
)
fi
])
AC_SUBST([LIBEV_CFLAGS])
AC_SUBST([LIBEV_LIBS])
# libev has (compiler warning) problems with strict aliasing... - just disable it
TRY_CFLAGS([-fno-strict-aliasing])
TRY_CFLAGS([-fPIC])
# check for extra compiler options (warning options)
if test "${GCC}" = "yes"; then
TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
TRY_CFLAGS([-std=gnu99])
fi
AC_ARG_ENABLE(extra-warnings,
AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
[case "${enableval}" in
yes) extrawarnings=true ;;
no) extrawarnings=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
esac],[extrawarnings=false])
if test x$extrawarnings = xtrue; then
TRY_CFLAGS([-g -O2 -g2 -Wall -Wmissing-declarations -Wdeclaration-after-statement -Wcast-align -Winline -Wsign-compare -Wnested-externs -Wpointer-arith -Wl,--as-needed -D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security])
fi
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT

13
src/Makefile.am Normal file
View File

@ -0,0 +1,13 @@
bin_PROGRAMS=weighttp
weighttp_SOURCES=\
client.c \
weighttp.c \
worker.c
weighttp_CPPFLAGS=$(LIBEV_CFLAGS)
weighttp_LDADD=$(LIBEV_LIBS)
EXTRA_DIST=\
client.h \
weighttp.h \
worker.h

View File

@ -164,7 +164,7 @@ static char *forge_request(char *url, char keep_alive, char **host, uint16_t *po
}
if (!have_user_agent)
len += strlen("User-Agent: weighttp/" VERSION "\r\n");
len += strlen("User-Agent: weighttp/" PACKAGE_VERSION "\r\n");
req = W_MALLOC(char, len);
@ -182,7 +182,7 @@ static char *forge_request(char *url, char keep_alive, char **host, uint16_t *po
strcat(req, "\r\n");
if (!have_user_agent)
sprintf(req + strlen(req), "User-Agent: weighttp/" VERSION "\r\n");
sprintf(req + strlen(req), "User-Agent: weighttp/" PACKAGE_VERSION "\r\n");
for (i = 0; i < headers_num; i++) {
if (strncmp(headers[i], "Host:", sizeof("Host:")-1) == 0)
@ -235,7 +235,7 @@ int main(int argc, char *argv[]) {
char **headers;
uint8_t headers_num;
printf("weighttp - a lightweight and simple webserver benchmarking tool\n\n");
printf("weighttp " PACKAGE_VERSION " - a lightweight and simple webserver benchmarking tool\n\n");
headers = NULL;
headers_num = 0;
@ -253,8 +253,6 @@ int main(int argc, char *argv[]) {
show_help();
return 0;
case 'v':
printf("version: " VERSION "\n");
printf("build-date: " __DATE__ " " __TIME__ "\n\n");
return 0;
case '6':
use_ipv6 = 1;

View File

@ -11,6 +11,10 @@
#ifndef WEIGHTTP_H
#define WEIGHTTP_H 1
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

View File

@ -61,7 +61,7 @@ def build(bld):
bld.new_task_gen(
features = 'cc cprogram',
source = ['src/client.c', 'src/weighttp.c', 'src/worker.c'],
defines = ['HAVE_CONFIG_H=1', 'VERSION="' + VERSION + '"'],
defines = ['PACKAGE_VERSION="' + VERSION + '"'],
includes = '.',
uselib = 'ev pthread',
target = 'weighttp'