On Wed, Sep 3, 2014 at 8:14 AM, Mark Rivers <[email protected]> wrote:
> 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.
> seq-2-1-13 failed here (same as when Mark compiled it):
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.
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:
>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
________________________________________
From: Benjamin Franksen [[email protected]<mailto:[email protected]>]
Sent: Monday, September 01, 2014 2:57 AM
To: Mark Rivers
Cc: [email protected]<mailto:[email protected]>; Alireza Panna
Subject: Re: synApps_5_7 build error on Windows 8.1 x64
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.
> re2c.exe -s -b -o lexer.c ../snl.re<http://snl.re>
> 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