Skip to content

Commit 3ffda7b

Browse files
authored
Merge pull request #155 from etr/simplify_crosscompile
Simplify the cross-compilation build scripts.
2 parents 28288a7 + 000d07c commit 3ffda7b

File tree

4 files changed

+53
-36
lines changed

4 files changed

+53
-36
lines changed

Makefile.am

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,20 @@ LIBTOOL_DEPS = @LIBTOOL_DEPS@
2424
AUTOMAKE_OPTIONS = foreign 1.4
2525
ACLOCAL_AMFLAGS = -I m4
2626

27-
SUBDIRS = src test
28-
DIST_SUBDIRS = src test
27+
SUBDIRS = src
28+
DIST_SUBDIRS = src
29+
30+
if !COND_CROSS_COMPILE
31+
SUBDIRS += test
32+
DIST_SUBDIRS += test
2933

3034
if BUILD_EXAMPLES
3135
SUBDIRS += examples
3236
DIST_SUBDIRS += examples
3337
endif
3438

39+
endif
40+
3541
EXTRA_DIST = libhttpserver.pc.in $(DX_CONFIG)
3642

3743
MOSTLYCLEANFILES = $(DX_CLEANFILES) *.gcda *.gcno *.gcov

configure.ac

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ AX_VALGRIND_CHECK
3737
OLD_CXXFLAGS=$CXXFLAGS
3838
LT_INIT
3939
AC_PROG_CC
40-
AC_PROG_CXX([clang++])
40+
AC_PROG_CXX()
4141
AC_PROG_LN_S
4242
CXXFLAGS=$OLD_CXXFLAGS
4343
AC_LANG([C++])
@@ -93,28 +93,48 @@ AC_CHECK_HEADER([signal.h],[],[AC_MSG_ERROR("signal.h not found")])
9393
AC_CHECK_HEADER([gnutls/gnutls.h],[have_gnutls="yes"],[AC_MSG_WARN("gnutls/gnutls.h not found. TLS will be disabled"); have_gnutls="no"])
9494

9595
# Checks for libmicrohttpd
96-
AC_CHECK_HEADER([microhttpd.h],
97-
AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
98-
[AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
99-
AC_COMPILE_IFELSE(
100-
[AC_LANG_SOURCE([
101-
#include <microhttpd.h>
102-
#if (MHD_VERSION < 0x00095102)
103-
#error needs at least version 0.9.52
104-
#endif
105-
int main () { return 0; }
106-
])],
96+
if test x"$host" = x"$build"; then
97+
AC_CHECK_HEADER([microhttpd.h],
98+
AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
99+
[AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
100+
AC_COMPILE_IFELSE(
101+
[AC_LANG_SOURCE([
102+
#include <microhttpd.h>
103+
#if (MHD_VERSION < 0x00095102)
104+
#error needs at least version 0.9.52
105+
#endif
106+
int main () { return 0; }
107+
])],
108+
[],
109+
[AC_MSG_ERROR("libmicrohttpd is too old - install libmicrohttpd >= 0.9.52")]
110+
)
111+
],
112+
[AC_MSG_ERROR(["libmicrohttpd not found"])]
113+
),
114+
[AC_MSG_ERROR(["microhttpd.h not found"])]
115+
)
116+
117+
CXXFLAGS="-std=c++11 -DHTTPSERVER_COMPILATION -D_REENTRANT $LIBMICROHTTPD_CFLAGS $CXXFLAGS"
118+
LDFLAGS="$LIBMICROHTTPD_LIBS $REGEX_LIBS $LDFLAGS"
119+
120+
cond_cross_compile="no"
121+
else
122+
AC_CHECK_HEADER([microhttpd.h],
123+
AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
107124
[],
108-
[AC_MSG_ERROR("libmicrohttpd is too old - install libmicrohttpd >= 0.9.52")]
109-
)
110-
],
111-
[AC_MSG_ERROR(["libmicrohttpd not found"])]
112-
),
113-
[AC_MSG_ERROR(["microhttpd.h not found"])]
114-
)
125+
[AC_MSG_ERROR(["libmicrohttpd not found"])]
126+
),
127+
[AC_MSG_ERROR(["microhttpd.h not found"])]
128+
)
129+
130+
CXXFLAGS="-std=c++11 -DHTTPSERVER_COMPILATION -D_REENTRANT $CXXFLAGS"
131+
LDFLAGS="$REGEX_LIBS $LDFLAGS"
132+
133+
cond_cross_compile="yes"
134+
fi
115135

116-
CXXFLAGS="-std=c++11 -DHTTPSERVER_COMPILATION -D_REENTRANT $LIBMICROHTTPD_CFLAGS $CXXFLAGS"
117-
LDFLAGS="$LIBMICROHTTPD_LIBS $REGEX_LIBS $LDFLAGS"
136+
AM_CONDITIONAL([COND_CROSS_COMPILE],[test x"$cond_cross_compile" = x"yes"])
137+
AC_SUBST(COND_CROSS_COMPILE)
118138

119139
AC_MSG_CHECKING([whether to build with TCP_FASTOPEN support])
120140
AC_ARG_ENABLE([fastopen],
@@ -292,18 +312,6 @@ AC_ARG_ENABLE([[examples]],
292312
test "x$enable_examples" = "xno" || enable_examples=yes
293313
AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$enable_examples" = "xyes"])
294314

295-
if test "$CROSS_COMPILE" == "1"; then
296-
if test "$ARM_ARCH_DIR" == "aarch64-linux-gnu"; then
297-
AM_CXXFLAGS="$AM_CXXFLAGS --prefix=${ARM_LD_PATH}/"
298-
AM_CFLAGS="$AM_CFLAGS --prefix=${ARM_LD_PATH}/"
299-
PATH="${ARM_LD_PATH}/:$PATH"
300-
CXXLINK="${ARM_LD_PATH}/ld"
301-
LINK="${ARM_LD_PATH}/ld"
302-
LD="${ARM_LD_PATH}/ld"
303-
LDFLAGS="$LDFLAGS -Wl,-rpath -Wl,/usr/lib -Wl,-rpath-link -Wl,${ARM_LD_PATH}/usr/lib -L${ARM_LD_PATH}/lib -L${ARM_LD_PATH}/usr/lib"
304-
fi
305-
fi
306-
307315
AM_CONDITIONAL([COND_GCOV],[test x"$cond_gcov" = x"yes"])
308316
AC_SUBST(COND_GCOV)
309317

libhttpserver.pc.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ includedir=@includedir@
66
Name: libhttpserver
77
Description: A C++ library for creating an embedded Rest HTTP server
88
Version: @VERSION@
9-
Requires: libmicrohttpd >= 0.9.37
9+
Requires: libmicrohttpd >= 0.9.52
1010
Conflicts:
1111
Libs: -L${libdir} -lhttpserver
1212
Libs.private: @LHT_LIBDEPS@

src/Makefile.am

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ AM_CXXFLAGS += -O0 --coverage --no-inline
3131
AM_LDFLAGS += -O0 --coverage -lgcov --no-inline
3232
endif
3333

34+
if !COND_CROSS_COMPILE
3435
libhttpserver_la_LIBADD = -lmicrohttpd
36+
endif
37+
3538
libhttpserver_la_CFLAGS = $(AM_CFLAGS)
3639
libhttpserver_la_CXXFLAGS = $(AM_CXXFLAGS)
3740
libhttpserver_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined

0 commit comments

Comments
 (0)