I am having some trouble compiling the NIST STEP Class Library (SCL).
SCL
http://www.mel.nist.gov/msid/scl/SCL.htm
download: http://www.mel.nist.gov/msid/scl/scl3-2.tar.Z
"The NIST STEP Class Library (SCL) is a set of C++ class libraries
which are capable of representing information conforming to the
EXPRESS (ISO 10303-11) data specification. The libraries may be used
to build executable C++ applications which make use of information
contained in an EXPRESS file. They contain such features as a
dictionary of EXPRESS schema information and functionality for
representing and manipulating instances of EXPRESS objects. Simple
applications, such as ones which read and write EXPRESS data in the
form of STEP Part 21 files, can be easily written and are included in
the SCL release. "
components:
* fedex_plus - parses an EXPRESS file and generates a C++ class
library representation based on the STEP Data Access Interface (SDAI)
C++ language binding (ISO 10303-23). Using the -c option fedex_plus
outputs TIE implementation objects for building an Orbix (see
Disclaimer) CORBA server based on the SDAI IDL language binding (ISO
10303-26).
* fedex_idl - translates EXPRESS into idl based on the STEP Data
Access Interface IDL language binding (ISO-10303-26).
* fedex_os - parses an EXPRESS file and generates C++ necessary
for adding persistence to the classes output from fedex_plus.
Persistence is implemented using ObjectStore OODBMS (see Disclaimer).
* mkProbe - takes an EXPRESS file and generates a Data Probe
editor/schema browser. The Data Probe is a graphical tool which allows
a user to visually browse the information contained in an EXPRESS
schema and to create and edit instances of entities defined in the
schema. It also allows input and output of files based on the EXPRESS
file which conform to the STEP Part 21 (ISO 10303-21) encoding method.
* STEP core library - library of C++ classes providing STEP
related functionality including early and late-bound attribute access,
reading and writing of STEP Part 21 files, classes implementing
EXPRESS base types, etc.
* data access interface library - library of C++ classes providing
a partial implementation of the SDAI Session Schema.
* editor library - library of C++ classes implementing the
functionality associated with an editor for instances of entities
defined in EXPRESS.
* utils library - library of C++ classes providing generic C++
functionality.
* ivfasd library - library of C++ classes providing
general-purpose InterViews user interface objects.
* probe-ui library - library of C++ classes providing InterViews
user interface objects for implementing an editor of EXPRESS
instances.
* fedex - syntax and semantic checker for EXPRESS. Based on the
NIST EXPRESS Toolkit.
* exppp - pretty printer for formatting EXPRESS. Based on the NIST
EXPRESS Pretty Printer Toolkit.
In particular, fedex_plus looks pretty interesting to me. So, I've
been trying to compile- I get the same errors with the configure and
make scripts with the ones provided, as well as the ones that automake
and autoconf generate. I suspect this is going to take some massaging
to get working, it was developed on SPARC and tested on Solaris and
SunOS but someone got it to compile on Microsoft Windows at some
point. Does anyone have some insight into the following errors and
problems? Maybe they are related to typical Solaris-to-Linux cross
platform compatibility issue goodness.
First, I get some weirdness in ./configure -- which doesn't halt the
show -- but it's still weird:
Replacing flex with it's complete path /usr/bin/flex
checking for bison... bison -y
YACC is bison -y
checking for bison... /usr/bin/bison
Replacing bison -y with it's complete path /usr/bin/bison -y
./configure: line 4773: YACC: command not found
./configure: line 4773: YACCFLAGS: command not found
./configure: line 4776: UTIL: command not found
./configure: line 4784: UTIL: command not found
./configure: line 4786: BISONTOKENS: command not found
./configure: line 4789: BISON: command not found
./configure: line 4789: YACCFLAGS: command not found
./configure: line 4791: UTIL: command not found
./configure: line 4793: BISONTOKENS: command not found
./configure: line 4795: CC: command not found
./configure: line 4795: CCFLAGS: command not found
./configure: line 4802: BISON: command not found
./configure: line 4802: YACCFLAGS: command not found
./configure: line 4804: UTIL: command not found
./configure: line 4806: BISONTOKENS: command not found
./configure: line 4808: CC: command not found
./configure: line 4808: CCFLAGS: command not found
./configure: line 4808: PROFILE: command not found
configure: WARNING: "No InterViews info specified... to use InterViews
specify the IV root directory using
--with-iv=specify-iv-root-directory-here"
./configure: line 4893: IVROOT: command not found
./configure: line 4913: IVROOT: command not found
I don't know why a configure script would be looking for YACC, CC,
etc., in all caps. Then, it goes on to try to run a program called "o"
?
Running the script: setup-arch - creates directory
/home/kanzure/local/stepcl/scl3-2/arch
Running the script: sclbuild - builds scl under
/home/kanzure/local/stepcl/scl3-2/arch
rm -f *.~*~ *.o libexpress.a expparse.tok*.h expparse.h expparse.c
expparse.tab.output expscan.c
/bin/rm -f symbol.o
/usr/bin/gcc -g -DREAL_MALLOC -DYYDEBUG -DFLEX -DHAVE_CONFIG_H -I.
-I/home/kanzure/local/stepcl/scl3-2/src/express/
-I/home/kanzure/local/stepcl/scl3-2/arch -c symbol.c
In file included from symbol.h:51,
from symbol.c:38:
basic.h:145:1: warning: "_POSIX_SOURCE" redefined
In file included from /usr/include/stdio.h:28,
from basic.h:75,
from symbol.h:51,
from symbol.c:38:
/usr/include/features.h:199:1: warning: this is the location of the
previous definition
o expparse.tab.c expparse.y
make: o: Command not found
make: [expparse.c] Error 127 (ignored)
Immediately after that:
cp /bison.errors bison.sub
cp: cannot stat `/bison.errors': No such file or directory
make: *** [expparse.c] Error 1
.. which doesn't make sense to me. Why would bison.errors be on / in
the first place? Next, I get some complaints about multiple
definitions in some header files, blah blah blah. Then some other
interesting errors:
error.c: In function 'ERRORreport':
error.c:269: warning: incompatible implicit declaration of built-in
function 'abort'
error.c:271: warning: incompatible implicit declaration of built-in
function 'exit'
error.c: In function 'ERRORreport_with_symbol':
error.c:396: warning: incompatible implicit declaration of built-in
function 'abort'
error.c:398: warning: incompatible implicit declaration of built-in
function 'exit'
error.c:414: warning: incompatible implicit declaration of built-in
function 'abort'
error.c:416: warning: incompatible implicit declaration of built-in
function 'exit'
error.c: In function 'ERRORabort':
error.c:539: warning: incompatible implicit declaration of built-in
function 'abort'
In file included from classes_wrapper.cc:9:
complexSupport.h:82: error: a class-key must be used when declaring a friend
complexSupport.h:82: error: friend declaration does not name a class or function
complexSupport.h:83: error: a class-key must be used when declaring a friend
complexSupport.h:83: error: friend declaration does not name a class or function
complexSupport.h:84: error: a class-key must be used when declaring a friend
complexSupport.h:84: error: friend declaration does not name a class or function
complexSupport.h:85: error: a class-key must be used when declaring a friend
complexSupport.h:85: error: friend declaration does not name a class or function
complexSupport.h:86: error: a class-key must be used when declaring a friend
complexSupport.h:86: error: friend declaration does not name a class or function
complexSupport.h:94: error: ISO C++ forbids declaration of
'operator==' with no type
complexSupport.h:96: error: ISO C++ forbids declaration of 'operator<'
with no type
complexSupport.h:98: error: ISO C++ forbids declaration of 'operator>'
with no type
In file included from ../../../src/clstepcore/sdaiApplication_instance.cc:17:
../../../src/clstepcore/sdai.h:358:1: error: pasting "::" and
"Application_instance" does not give a valid preprocessing token
../../../src/clstepcore/sdai.h:358:1: error: pasting "SDAI" and "::"
does not give a valid preprocessing token
../../../src/clstepcore/sdai.h:365:1: error: pasting "::" and
"Application_instance" does not give a valid preprocessing token
../../../src/clstepcore/sdai.h:365:1: error: pasting "SDAI" and "::"
does not give a valid preprocessing token
../../../src/clstepcore/sdai.h:366:1: error: pasting "::" and
"Application_instance" does not give a valid preprocessing token
../../../src/clstepcore/sdai.h:366:1: error: pasting "SDAI" and "::"
does not give a valid preprocessing token
../../../src/clstepcore/sdai.h:369:1: error: pasting "::" and
"Application_instance" does not give a valid preprocessing token
In file included from ../../../src/cleditor/instmgr.h:46,
from ../../../src/clstepcore/sdaiApplication_instance.cc:19:
../../../src/cleditor/mgrnode.h:60:1: error: pasting "::" and
"Application_instance" does not give a valid preprocessing token
../../../src/cleditor/mgrnode.h:60:1: error: pasting "SDAI" and "::"
does not give a valid preprocessing token
Any thoughts?
I should add that I am running Debian lenny/testing/unstable/volatile
with kernel 2.6.30-bpo.1-686.
Maybe it is looking for shell script variables? (Often in all upper case.)
Maybe the script was written for a different version of a shell? csh vs bash
etc.?
Possibly some other part of a path is messed up by a missing shell variable
setting? So the path gets short?
The "o" command could be a similar problem?
> error.c: In function 'ERRORreport':
> error.c:269: warning: incompatible implicit declaration of built-in
> function 'abort'
> error.c:271: warning: incompatible implicit declaration of built-in
> function 'exit'
> error.c: In function 'ERRORreport_with_symbol':
> error.c:396: warning: incompatible implicit declaration of built-in
> function 'abort'
> error.c:398: warning: incompatible implicit declaration of built-in
> function 'exit'
> error.c:414: warning: incompatible implicit declaration of built-in
> function 'abort'
> error.c:416: warning: incompatible implicit declaration of built-in
> function 'exit'
> error.c: In function 'ERRORabort':
> error.c:539: warning: incompatible implicit declaration of built-in
> function 'abort'
A porting issue with library definitions? You can probably just change the
code with some ifdefs? Probably void vs. int issues, or maybe int vs. long?
> In file included from classes_wrapper.cc:9:
> complexSupport.h:82: error: a class-key must be used when declaring a friend
> complexSupport.h:82: error: friend declaration does not name a class or function
> complexSupport.h:83: error: a class-key must be used when declaring a friend
> complexSupport.h:83: error: friend declaration does not name a class or function
> complexSupport.h:84: error: a class-key must be used when declaring a friend
> complexSupport.h:84: error: friend declaration does not name a class or function
> complexSupport.h:85: error: a class-key must be used when declaring a friend
> complexSupport.h:85: error: friend declaration does not name a class or function
> complexSupport.h:86: error: a class-key must be used when declaring a friend
> complexSupport.h:86: error: friend declaration does not name a class or function
> complexSupport.h:94: error: ISO C++ forbids declaration of
> 'operator==' with no type
> complexSupport.h:96: error: ISO C++ forbids declaration of 'operator<'
> with no type
> complexSupport.h:98: error: ISO C++ forbids declaration of 'operator>'
> with no type
More porting issues of different compiler expectations? Or maybe some
missing header file issue?
> Any thoughts?
These are all just guesses.
Seems like a great idea to be getting it to work and to be able to leverage
anything from NIST though.
If the issues is with your current Debian configuration (unstable), you
might keep a VirtualBox system around configured in stable or testing, just
to see if the issue is there.
http://www.virtualbox.org/
But, I think you'd be more likely to see linker issues then, not so much
what you outline.
--Paul Fernhout
http://www.pdfernhout.net/
====
The biggest challenge of the 21st century is the irony of technologies of
abundance in the hands of those thinking in terms of scarcity.
I just happened to find this post on google. If you're still
interested, see https://github.com/mpictor/StepClassLibrary
I hope to find people who understand STEP, EXPRESS, and the flex/bison
parser in SCL, because SCL needs some work. Hopefully this version
will compile for you. Whether it will currently work with your express
schema depends on the schema.
BRLCAD has been a source of stability for years, but their NURBS support (OpenNURBS) is minimal.
Hi Bryan,
What do you think is the limiting thing with CAD code like this? Is it all just too
much to do for small groups of people, or is there going to be a library
or modeling method that simplifies it enough that a FOSS tool will be able to
do boolean operations on 3D data that is open?
Some people say lua language is helpful. I've not looked at it,
and my favorite for scripts is python since I can read my old writings
in it, and I can't read my old perl writings.