1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 <2014> 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 <2014> 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: synApps_5_7 build error on Windows 8.1 x64 |
From: | Zachary Brown <[email protected]> |
To: | Mark Rivers <[email protected]> |
Cc: | Alireza Panna <[email protected]>, "[email protected]" <[email protected]> |
Date: | Wed, 3 Sep 2014 08:23:36 -0400 |
> Unfortunately the MS Visual express 2013 does not supply the 64 bit compiler for 64bit OS.I have not used Visual Express 2013, but I find that statement very hard to believe. It certainly lists the x64 versions of the operating systems as supported.
As Ben said that problem has been fixed in later versions of the seq-2-1-XXX series. I suggest you get a later version.
> seq-2-1-13 failed here (same as when Mark compiled it):
Mark
________________________________
From: Alireza Panna [[email protected]]
Sent: Wednesday, September 03, 2014 12:43 AM
To: Mark Rivers
Cc: Benjamin Franksen; [email protected]
Subject: Re: synApps_5_7 build error on Windows 8.1 x64
Hello Mark and Benjamin,
In reference to my seq-2-1-13 compile error, I figured out what was wrong. Turns out setting the C++ compiler environment using call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat" is not correct since this is for 32bit OS building for amd64. What I need to use is vcvarsall amd64 or vcvars64.bat. Unfortunately the MS Visual express 2013 does not supply the 64 bit compiler for 64bit OS. I think one has to separately download the Microsoft SDK 64 bit toolset for visual C++.
I ended up downloading the Microsoft Visual Studios 2010 Ultimate edition and used vcvars64.bat to set the environment. Using this seq-2-1-10 compiled without any errors. seq-2-1-13 failed here (same as when Mark compiled it):
userfuncEf.c(13) : error C2016: C requires that a struct or union has at least o
ne member
../userfuncEf.st(26) : error C2059: syntax error : '}'
make[3]: *** [userfuncEf.obj] Error 2
make[3]: Leaving directory `C:/Epics/support/seq-2-1-13/test/validate/O.windows-
x64'
make[2]: *** [install.windows-x64] Error 2
make[2]: Leaving directory `C:/Epics/support/seq-2-1-13/test/validate'
make[1]: *** [validate.install] Error 2
make[1]: Leaving directory `C:/Epics/support/seq-2-1-13/test'
make: *** [test.install] Error 2
Commenting out REGRESSION_TESTS_WITHOUT_DB += userfuncEf in C:\Epics\support\seq-2-1-13\test\validate\Makefile and recompiling seq-2-1-13 worked.
Thank you for all your help.
Regards
Ali
------------------------------------------------------
Alireza Panna
University of Maryland, College Park
On Mon, Sep 1, 2014 at 10:01 AM, Mark Rivers <[email protected]<mailto:[email protected]>> wrote:From: Benjamin Franksen [[email protected]<mailto:[email protected]>]
>The offending line says:
>
> ss->timeEntered = INFINITY;
>
> I thought this is standard C?
This is what GNU says at:
http://www.gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html
***********************************************************************************
— Macro: float INFINITY
An _expression_ representing positive infinity. It is equal to the value produced by mathematical operations like 1.0 / 0.0. -INFINITY represents negative infinity.
You can test whether a floating-point value is infinite by comparing it to this macro. However, this is not recommended; you should use the isfinite macro instead. See Floating Point Classes.
This macro was introduced in the ISO C99 standard.
***********************************************************************************
The Windows VC compiler is not C99, at least not before Visual Studio 2013.
Mark
________________________________________
Sent: Monday, September 01, 2014 2:57 AMCc: [email protected]<mailto:[email protected]>; Alireza Panna
To: Mark Rivers
Subject: Re: synApps_5_7 build error on Windows 8.1 x64> re2c.exe -s -b -o lexer.c ../snl.re<http://snl.re>
On Friday 29 August 2014 14:27:55 Mark Rivers wrote:
> I just tried building the following versions of the sequencer on
> windows-x64 (Windows 7, Visual Studio 2010, GNUWin32 make).
> seq-2.1.10
> seq-2.1.13
> seq-2.2.0.1
>
>
> 2.1.10 built with no errors.
>
>
> 2.1.13 did not have the error with lemon.exe that was the subject of
> this thread. Here is the output when lemon.exe is being used:
> make -C O.windows-x64 -f ../Makefile TOP=../../.. T_A=windows-x64
> install
make[3]: Entering directory
> `J:/epics/devel/seq-2-1-13/src/snc/O.windows-x64'
> ..\\..\\..\\bin\\windows-x64\\lemon.exe o=. ../snl.lem
> 3 parsing conflicts.
> make[3]: Leaving directory
> `J:/epics/devel/seq-2-1-13/src/snc/O.windows-x64'
make[3]: Entering
> directory `J:/epics/devel/seq-2-1-13/src/snc/O.windows-x64'
> However, 2.1.13 did fail much later in the build with the following
> error:
> "converting userfuncEf.i"
> ../../../bin/windows-x64/snc.exe +m -i userfuncEf.i -o
> userfuncEf.c.tmp
perl -MExtUtils::Command -e mv userfuncEf.c.tmp
> userfuncEf.c cl -c /favor:blend /nologo /D__STDC__=0
> /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /Ox /GL
> /W3 /w44355 /MT -DEPICS_DLL_NO -I. -I..\\O.Common -I. -I..
> -I..\\..\\..\\include\\os\\WIN32 -I..\\..\\..\\include
> -IH:\\epics\\base-3.14.12.4\\include\\os\\WIN32
> -IH:\\epics\\base-3.14.12.4\\include userfuncEf.c userfuncEf.c
> userfuncEf.c(13) : error C2016: C requires that a struct or union has
> at least one member
../userfuncEf.st(26) : error C2059: syntax error
> : '}'
> make[3]: *** [userfuncEf.obj] Error 2
> make[3]: Leaving directory
> `J:/epics/devel/seq-2-1-13/test/validate/O.windows-x64'
make[2]: ***
> [install.windows-x64] Error 2
> make[2]: Leaving directory `J:/epics/devel/seq-2-1-13/test/validate'
> make[1]: *** [validate.install] Error 2
> make[1]: Leaving directory `J:/epics/devel/seq-2-1-13/test'
> make: *** [test.install] Error 2
I believe I fixed this problem in 2.1.14.
> 2.2.0.1 failed very early in the build with the following error:
>
> "Installing generic include file ../../../include/seq_prim_types.h"
> cl -c /favor:blend /nologo /D__STDC__=0
> /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /Ox /GL
> /W3 /w44355 /MT -DEPICS_DLL_NO -I. -I..\\O.Common
-I. -I..
> -I..\\..\\..\\include\\os\\WIN32 -I..\\..\\..\\include
> -IH:\\epics\\base-3.14.12.4\\include\\os\\WIN32
> -IH:\\epics\\base-3.14.12.4\\include ..\\seq_main.c seq_main.c
> ..\seq_main.c(282) : error C2124: divide or mod by zero
> make[3]: *** [seq_main.obj] Error 2
> make[3]: Leaving directory
> `J:/epics/devel/seq-2-2-0-1/src/seq/O.windows-x64'
make[2]: ***
> [install.windows-x64] Error 2
> make[2]: Leaving directory `J:/epics/devel/seq-2-2-0-1/src/seq'
> make[1]: *** [seq.install] Error 2
> make[1]: Leaving directory `J:/epics/devel/seq-2-2-0-1/src'
> make: *** [src.install] Error 2
The offending line says:
ss->timeEntered = INFINITY;
I thought this is standard C? The error message suggests that the C
compiler implementation (or rather, the standard library that comes with
it) implements INFINITY as something like 1/0. Do we need an extra
compiler switch for this compiler? How is this handled in EPICS base?
Cheers
Ben
--
"Make it so they have to reboot after every typo." ― Scott Adams
________________________________
Helmholtz-Zentrum Berlin für Materialien und Energie GmbH
Mitglied der Hermann von Helmholtz-Gemeinschaft Deutscher Forschungszentren e.V.
Aufsichtsrat: Vorsitzender Prof. Dr. Dr. h.c. mult. Joachim Treusch, stv. Vorsitzende Dr. Beatrix Vierkorn-Rudolph
Geschäftsführung: Prof. Dr. Anke Rita Kaysser-Pyzalla, Thomas Frederking
Sitz Berlin, AG Charlottenburg, 89 HRB 5583
Postadresse:
Hahn-Meitner-Platz 1
D-14109 Berlin
http://www.helmholtz-berlin.de