From 1b67be5e5bbc2b32d95b00c2e9f9c46f9e3426c8 Mon Sep 17 00:00:00 2001 From: Kevin Wasserman Date: Thu, 30 Jun 2011 12:15:46 -0400 Subject: [PATCH] Changes to Autoconf/Automake configuration files for windows port. 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. --- acinclude.m4 | 20 ++++++++++++++++++-- configure.ac | 8 ++++++-- mech_eap/Makefile.am | 32 +++++++++++++++++++++----------- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 80c71bb..05322a1 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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= diff --git a/configure.ac b/configure.ac index a637f9a..d08a2c0 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/mech_eap/Makefile.am b/mech_eap/Makefile.am index 499f624..4ccdabe 100644 --- a/mech_eap/Makefile.am +++ b/mech_eap/Makefile.am @@ -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 -- 2.1.4