This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Attached patch enables compilation of libgomp and use of -fopenmp in the resulting compiler on i386-pc-mingw32 when pthreads-win32 (http://sourceware.org/pthreads-win32/) is present.
In libgomp, a new config/mingw32 directory is created to contain the windows-specific time routines (which are not very elegant, but then, is sufficient for most uses, and could be improved with better code later).
In gcc/config/i386/mingw32.h, GOMP_SELF_SPECS is defined so that -fopenmp doesn't imply -pthread.
Bootstrapped on i386-pc-mingw32, with both C and Fortran. Tested on simple C and Fortran OpenMP codes, as well as a huge quantum chemistry package.
Thanks, FX
Index: libgomp/configure.tgt =================================================================== --- libgomp/configure.tgt (revision 114263) +++ libgomp/configure.tgt (working copy) @@ -91,6 +91,10 @@ XLDFLAGS="${XLDFLAGS} -lrt" ;; + *-*-mingw32*) + config_path="mingw32 posix" + ;; + *) ;; Index: libgomp/config/mingw32/time.c =================================================================== --- libgomp/config/mingw32/time.c (revision 0) +++ libgomp/config/mingw32/time.c (revision 0) @@ -0,0 +1,49 @@ +/* Copyright (C) 2006 Free Software Foundation, Inc. + Contributed by Francois-Xavier Coudert <coudert@clipper.ens.fr> + + This file is part of the GNU OpenMP Library (libgomp). + + Libgomp 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. + + Libgomp 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 libgomp; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with other files, some + of which are compiled with GCC, to produce an executable, this library + does not by itself cause the resulting executable to be covered by the + GNU General Public License. This exception does not however invalidate + any other reasons why the executable file might be covered by the GNU + General Public License. */ + +/* This file contains timer routines for mingw32. */ + +#include "libgomp.h" +#include <unistd.h> +#include <sys/timeb.h> + +double +omp_get_wtime (void) +{ + struct _timeb timebuf; + _ftime (&timebuf); + return (timebuf.time + (long)(timebuf.millitm) / 1e3); +} + +double +omp_get_wtick (void) +{ + return 1e-3; +} + +ialias (omp_get_wtime) +ialias (omp_get_wtick) Index: gcc/config/i386/mingw32.h =================================================================== --- gcc/config/i386/mingw32.h (revision 114263) +++ gcc/config/i386/mingw32.h (working copy) @@ -108,3 +108,7 @@ /* Define as short unsigned for compatibility with MS runtime. */ #undef WINT_TYPE #define WINT_TYPE "short unsigned int" + +/* mingw32 doesn't understand the -pthread option. */ +#undef GOMP_SELF_SPECS +#define GOMP_SELF_SPECS ""
Attachment:
libgomp-mingw32.ChangeLog
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |