Changes to Autoconf/Automake configuration files for windows port.
authorKevin Wasserman <kevin.wasserman@painless-security.com>
Thu, 30 Jun 2011 16:15:46 +0000 (12:15 -0400)
committerSam Hartman <hartmans@debian.org>
Fri, 1 Jul 2011 10:20:21 +0000 (06:20 -0400)
Added AX_CHECK_WINDOWS macro to specify TARGET_WINDOWS when windows.h exists.
Special handling for krb5: hard-code include and lib paths relative
to the --with-krb5 directory.
Add -Zi compile flag and -debug link flags on windows;
remove -Werror -Wall -Wunused-paramater; I should find and add msvc equivalents
use -DCONFIG_WIN32_DEFAULTS -DUSE_INTERNAL_CRYPTO instead of myriad -DEAP_FOO.

moonshot/acinclude.m4
moonshot/configure.ac
moonshot/mech_eap/Makefile.am

index 80c71bb..05322a1 100644 (file)
@@ -9,7 +9,14 @@ AC_ARG_WITH(krb5,
        [Use krb5 (in specified installation directory)]),
     [check_krb5_dir="$withval"],
     [check_krb5_dir=])
-for dir in $check_krb5_dir $prefix /usr /usr/local ; do
+AM_COND_IF(TARGET_WINDOWS,[
+   found_krb5="yes"
+   krb5dir=$check_krb5_dir
+   KRB5_CFLAGS=-I"$check_krb5_dir/include"
+   KRB5_LIBS="-L$check_krb5_dir/lib/ -lkrb5_32 -lgssapi32"
+   COMPILE_ET=
+],
+[for dir in $check_krb5_dir $prefix /usr /usr/local ; do
    krb5dir="$dir"
    if test -x "$dir/bin/krb5-config"; then
      found_krb5="yes";
@@ -18,7 +25,7 @@ for dir in $check_krb5_dir $prefix /usr /usr/local ; do
      COMPILE_ET="$dir/bin/compile_et";
      break;
    fi
-done
+done])
 AC_MSG_RESULT($found_krb5)
 if test x_$found_krb5 != x_yes; then
    AC_MSG_ERROR([
@@ -183,6 +190,15 @@ else
 fi
 ])dnl
 
+AC_DEFUN([AX_CHECK_WINDOWS],
+[AC_MSG_CHECKING(for windows)
+target_windows="no"
+AC_CHECK_HEADER(windows.h,[target_windows="yes"],[target_windows="no"])
+AC_MSG_RESULT($target_windows)
+AM_CONDITIONAL(TARGET_WINDOWS,test "x$target_windows" == "xyes")
+])dnl
+
+
 AC_DEFUN([AX_CHECK_RADSEC],
 [AC_MSG_CHECKING(for radsec)
 RADSEC_DIR=
index a637f9a..d08a2c0 100644 (file)
@@ -5,13 +5,16 @@ dnl AM_INIT_AUTOMAKE([silent-rules])
 AC_USE_SYSTEM_EXTENSIONS
 AC_GNU_SOURCE
 AM_INIT_AUTOMAKE
+AM_PROG_CC_C_O
 AM_MAINTAINER_MODE()
 LT_PREREQ([2.2])
 LT_INIT([dlopen disable-static win32-dll])
 
-AC_PROG_CC
+dnl AC_PROG_CC
 AC_PROG_CXX
 AC_CONFIG_HEADERS([config.h])
+AC_CHECK_HEADERS(stdarg.h stdio.h stdint.h sys/param.h)
+AC_REPLACE_FUNCS(vasprintf)
 
 dnl Check if we're on Solaris and set CFLAGS accordingly
 dnl AC_CANONICAL_TARGET
@@ -66,7 +69,8 @@ AM_CONDITIONAL(GSSEAP_ENABLE_ACCEPTOR, test "x$acceptor" != "xno")
 
 AC_SUBST(TARGET_CFLAGS)
 AC_SUBST(TARGET_LDFLAGS)
-dnl AX_CHECK_KRB5
+AX_CHECK_WINDOWS
+AX_CHECK_KRB5
 AM_CONDITIONAL(HEIMDAL, test "x$heimdal" != "xno")
 dnl AX_CHECK_EAP
 if test "x$acceptor" = "xyes" ; then
index 499f624..4ccdabe 100644 (file)
@@ -4,23 +4,30 @@ gssincludedir = $(includedir)/gssapi
 gssinclude_HEADERS = gssapi_eap.h
 
 EAP_CFLAGS = -I$(srcdir)/../libeap/src -I$(srcdir)/../libeap/src/common -I$(srcdir)/../libeap/src/eap_common  \
-       -I$(srcdir)/../libeap/src/utils \
-       -DEAP_TLS -DEAP_PEAP -DEAP_TTLS -DEAP_MD5 -DEAP_MSCHAPv2 -DEAP_GTC -DEAP_OTP -DEAP_LEAP -DEAP_PSK -DEAP_PAX -DEAP_SAKE -DEAP_GPSK -DEAP_GPSK_SHA256 -DEAP_SERVER_IDENTITY -DEAP_SERVER_TLS -DEAP_SERVER_PEAP -DEAP_SERVER_TTLS -DEAP_SERVER_MD5 -DEAP_SERVER_MSCHAPV2 -DEAP_SERVER_GTC -DEAP_SERVER_PSK -DEAP_SERVER_PAX -DEAP_SERVER_SAKE -DEAP_SERVER_GPSK -DEAP_SERVER_GPSK_SHA256 -DIEEE8021X_EAPOL
+       -I$(srcdir)/../libeap/src/utils
 
 gssdir = $(libdir)/gss
 gss_LTLIBRARIES = mech_eap.la
+if TARGET_WINDOWS
+EAP_CFLAGS += -DCONFIG_WIN32_DEFAULTS -DUSE_INTERNAL_CRYPTO
+OS_LIBS = -lshell32 -ladvapi32 -lws2_32 -lcomerr32
+mech_eap_la_CFLAGS   = -Zi
+mech_eap_la_CXXFLAGS = -Zi
+else
+EAP_CFLAGS += -DEAP_TLS -DEAP_PEAP -DEAP_TTLS -DEAP_MD5 -DEAP_MSCHAPv2 -DEAP_GTC -DEAP_OTP -DEAP_LEAP -DEAP_PSK -DEAP_PAX -DEAP_SAKE -DEAP_GPSK -DEAP_GPSK_SHA256 -DEAP_SERVER_IDENTITY -DEAP_SERVER_TLS -DEAP_SERVER_PEAP -DEAP_SERVER_TTLS -DEAP_SERVER_MD5 -DEAP_SERVER_MSCHAPV2 -DEAP_SERVER_GTC -DEAP_SERVER_PSK -DEAP_SERVER_PAX -DEAP_SERVER_SAKE -DEAP_SERVER_GPSK -DEAP_SERVER_GPSK_SHA256 -DIEEE8021X_EAPOL
+OS_LIBS =
+mech_eap_la_CFLAGS   = -Werror -Wall -Wunused-parameter
+mech_eap_la_CXXFLAGS = -Werror -Wall -Wunused-parameter
+endif
 
 mech_eap_la_CPPFLAGS = -DBUILD_GSSEAP_LIB -DSYSCONFDIR=\"${sysconfdir}\" -DDATAROOTDIR=\"${datarootdir}\"
-mech_eap_la_CFLAGS   = -Werror -Wall -Wunused-parameter \
-                       @KRB5_CFLAGS@  @RADSEC_CFLAGS@ @TARGET_CFLAGS@ $(EAP_CFLAGS)
-mech_eap_la_CXXFLAGS = -Werror -Wall -Wunused-parameter \
-                       @KRB5_CFLAGS@  @RADSEC_CFLAGS@ \
-                       @SHIBRESOLVER_CXXFLAGS@ @SHIBSP_CXXFLAGS@ @TARGET_CFLAGS@ $(EAP_CFLAGS)
+mech_eap_la_CFLAGS   += @KRB5_CFLAGS@ @RADSEC_CFLAGS@ @TARGET_CFLAGS@ $(EAP_CFLAGS)
+mech_eap_la_CXXFLAGS += @KRB5_CFLAGS@ @RADSEC_CFLAGS@ @SHIBRESOLVER_CXXFLAGS@ @SHIBSP_CXXFLAGS@ @TARGET_CFLAGS@ $(EAP_CFLAGS)
 mech_eap_la_LDFLAGS  = -avoid-version -module \
                        -export-symbols $(srcdir)/mech_eap.exports -no-undefined \
                        @RADSEC_LDFLAGS@ @TARGET_LDFLAGS@
 mech_eap_la_LIBADD   = @KRB5_LIBS@ ../libeap/libeap.la @RADSEC_LIBS@ \
-                      @SHIBRESOLVER_LIBS@ @SHIBSP_LIBS@ @JANSSON_LIBS@
+                      @SHIBRESOLVER_LIBS@ @SHIBSP_LIBS@ @JANSSON_LIBS@ $(OS_LIBS) $(LTLIBOBJS)
 
 mech_eap_la_SOURCES =                          \
        accept_sec_context.c                    \
@@ -87,6 +94,7 @@ mech_eap_la_SOURCES =                         \
        util_oid.c                              \
        util_ordering.c                         \
        util_sm.c                               \
+       util_tld.c                              \
        util_token.c                            \
        verify_mic.c                            \
        wrap.c                                  \
@@ -97,7 +105,7 @@ mech_eap_la_SOURCES =                        \
 BUILT_SOURCES = gsseap_err.c radsec_err.c
 
 if GSSEAP_ENABLE_ACCEPTOR
-mech_eap_la_SOURCES += util_attr.c util_json.c util_radius.c util_shib.c util_saml.c
+mech_eap_la_SOURCES += util_attr.cpp util_json.cpp util_radius.cpp util_shib.cpp util_saml.cpp
 endif
 
 if GSSEAP_ENABLE_REAUTH
@@ -116,7 +124,9 @@ radius_ad_la_SOURCES = util_adshim.c
 endif
 endif
 
-
+if TARGET_WINDOWS
+mech_eap_la_LDFLAGS += -debug
+else
 gsseap_err.h gsseap_err.c: gsseap_err.et
        $(COMPILE_ET) $<
 
@@ -127,4 +137,4 @@ radsec_err.c: radsec_err.h
 
 clean-generic:
        rm -f gsseap_err.[ch] radsec_err.[ch]
-
+endif