From b299da47a6f733c2e28fd98b8f2e19261f3b2608 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 21 Jan 2010 21:36:43 +0000 Subject: Support WindowsCE. --- compat/Makefile.am | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ compat/clock.c | 36 ++++++++++++++++++++++++++++++++++++ compat/compat.c | 36 ++++++++++++++++++++++++++++++++++++ compat/getpid.c | 29 +++++++++++++++++++++++++++++ compat/libcompat.h | 37 +++++++++++++++++++++++++++++++++++++ 5 files changed, 188 insertions(+) create mode 100644 compat/Makefile.am create mode 100644 compat/clock.c create mode 100644 compat/compat.c create mode 100644 compat/getpid.c create mode 100644 compat/libcompat.h (limited to 'compat') diff --git a/compat/Makefile.am b/compat/Makefile.am new file mode 100644 index 00000000..0e0c54a4 --- /dev/null +++ b/compat/Makefile.am @@ -0,0 +1,50 @@ +# Makefile for compat directory +# Copyright (C) 2010 Free Software Foundation, Inc. +# +# This file is part of Libgcrypt. +# +# Libgcrypt is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation; either version 2.1 of +# the License, or (at your option) any later version. +# +# Libgcrypt is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, see . + +# Process this file with automake to produce Makefile.in + +# We use this libcompat to work around problems with LIBOBJ stuff. +# For example, we need some of the compat files also in tests/ but the +# suggested way to do this (using the automake option subdir-objects) +# leads to problems with "make distclean": The distclean target in +# tests is run before the one src and it removes the deps files of the +# libobj files which are in src. Now when it comes to run make in src +# the icnluded files are gone - bummer. Instead of try to fix this +# issue it seems better not to use subdir-objects but build them all +# into a compat library and always link against that library. This +# also avoids the problem that a dependency on LTLIBOBJ is not setup +# if -- disable-static was used. + +# Need to include ../src in addition to top_srcdir because gcrypt.h is +# a built header. +AM_CPPFLAGS = -I../src -I$(top_srcdir)/src $(GPG_ERROR_CFLAGS) + +noinst_LTLIBRARIES = libcompat.la + +# We only need one file so that the library is guaranteed to have at +# least one member. +libcompat_la_SOURCES = compat.c libcompat.h +libcompat_la_DEPENDENCIES = @LTLIBOBJS@ +libcompat_la_LIBADD = @LTLIBOBJS@ + +# AC_LIBOBJ files are: +# getpid.c +# clock.c +# + + diff --git a/compat/clock.c b/compat/clock.c new file mode 100644 index 00000000..0d1a1671 --- /dev/null +++ b/compat/clock.c @@ -0,0 +1,36 @@ +/* clock.c - Replacement for WindowsCE + Copyright (C) 2010 Free Software Foundation, Inc. + + This file is free software; as a special exception the author gives + unlimited permission to copy and/or distribute it, with or without + modifications, as long as this notice is preserved. + + This file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY, to the extent permitted by law; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. */ + +#if HAVE_CONFIG_H +#include +#endif + +#ifdef HAVE_W32CE_SYSTEM +#include +#include +#include + +clock_t +_gcry_clock (void) +{ + assert (CLOCKS_PER_SEC == 1000); +#warning Replace by a correct implementaion. + /* It seems that GetProcessTimes is available in the kernel but + without a declaration. If that fails we would need to walk over + all threads and tally up the GetThreadTimes. */ + + return GetTickCount (); +} + +#else +# error No replacement function for clock known +#endif diff --git a/compat/compat.c b/compat/compat.c new file mode 100644 index 00000000..8f1d9c86 --- /dev/null +++ b/compat/compat.c @@ -0,0 +1,36 @@ +/* compat.c - Dummy file to avoid an empty library. + * Copyright (C) 2010 Free Software Foundation, Inc. + * + * This file is part of Libgcrypt. + * + * Libgcrypt is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Libgcrypt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + */ + +#include + +#include "../src/g10lib.h" + + +const char * +_gcry_compat_identification (void) +{ + static const char blurb[] = + "\n\n" + "This is Libgcrypt - The GNU Crypto Library\n" + "Copyright 2000, 2002, 2003, 2004, 2007, 2008, 2009,\n" + " 2010 Free Software Foundation, Inc.\n" + "\n\n"; + return blurb; +} + diff --git a/compat/getpid.c b/compat/getpid.c new file mode 100644 index 00000000..b93d057f --- /dev/null +++ b/compat/getpid.c @@ -0,0 +1,29 @@ +/* getpid.c - Replacement for WindowsCE + Copyright (C) 2010 Free Software Foundation, Inc. + + This file is free software; as a special exception the author gives + unlimited permission to copy and/or distribute it, with or without + modifications, as long as this notice is preserved. + + This file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY, to the extent permitted by law; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. */ + +#if HAVE_CONFIG_H +#include +#endif + +#ifdef HAVE_W32CE_SYSTEM +#include +#include + +pid_t +_gcry_getpid (void) +{ + return GetCurrentProcessId (); +} + +#else +# error No replacement function for getpid known +#endif diff --git a/compat/libcompat.h b/compat/libcompat.h new file mode 100644 index 00000000..b5a76491 --- /dev/null +++ b/compat/libcompat.h @@ -0,0 +1,37 @@ +/* libcomapt.h - Prototypes for AC_REPLACE_FUNCtions. + * Copyright (C) 2010 Free Software Foundation, Inc. + * + * This file is part of Libgcrypt. + * + * Libgcrypt is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser general Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Libgcrypt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + */ + +#ifndef GCRY_LIBCOMPAT_H +#define GCRY_LIBCOMPAT_H + +const char *_gcry_compat_identification (void); + + +#ifndef HAVE_GETPID +pid_t _gcry_getpid (void); +#define getpid() _gcry_getpid () +#endif + +#ifndef HAVE_CLOCK +clock_t _gcry_clock (void); +#define clock() _gcry_clock () +#endif + + +#endif /*GCRY_LIBCOMPAT_H*/ -- cgit v1.2.1