From: srn Date: Tue, 30 Aug 2005 05:19:22 +0000 (+0000) Subject: Created a new signals/execptions handler X-Git-Tag: V_3_0_2~6 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=a071fd7a8a2c13d7d2806790bb96f5dd188e8fbc;p=modules%2Fkernel.git Created a new signals/execptions handler --- diff --git a/src/CASCatch/CASCatch_CatchSignals.cxx b/src/CASCatch/CASCatch_CatchSignals.cxx new file mode 100644 index 000000000..955743f00 --- /dev/null +++ b/src/CASCatch/CASCatch_CatchSignals.cxx @@ -0,0 +1,314 @@ +#include "CASCatch_CatchSignals.hxx" + +#include "CASCatch_Failure.hxx" +#include "CASCatch_ErrorHandler.hxx" +#include + +#define MAX_HANDLER_NUMBER 6 + + +//================================================================================ +/*! Public - + * \brief creates a CASCatch_CatchSignals + */ +//================================================================================ +CASCatch_CatchSignals::CASCatch_CatchSignals() + :myIsActivated(Standard_False) +{ + + Standard_Integer i = 0; + for(; i<=MAX_HANDLER_NUMBER; i++) + mySigStates[i] = NULL; +} + +#ifndef WNT + +//================================ UNIX part ================================================== + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef LIN +#include +#endif + +//============================== +typedef void (ACT_SIGIO_HANDLER)(void) ; + +ACT_SIGIO_HANDLER *ADR_ACT_SIGIO_HANDLER = NULL ; + +typedef void (* SIG_PFV) (int); + +#ifdef SUN +# include +#endif + +#ifdef SOLARIS +# include +# include +# include +# include +#endif + +#include +#include + +#ifdef LIN +# include +# include +#else +# ifdef SA_SIGINFO +# ifndef AIX +# include +# endif +# endif +#endif + + +#ifdef IRIX +# include +# include +#endif + + +//================================================================================ +/*! Private - + * \brief universal handler for signals + */ +//================================================================================ +static void Handler(const OSD_Signals theSig, const OSD_Signals) +{ + sigset_t set; + sigemptyset(&set); + sigaddset(&set, theSig); + sigprocmask(SIG_UNBLOCK, &set, NULL) ; + + TCollection_AsciiString aMessage(theSig); + aMessage+=" signal detected"; + + CASCatch_Failure::Raise(aMessage.ToCString()); +} + + +#ifdef SA_SIGINFO +//================================================================================ +/*! Private - + * \brief handler for SIGSEGV signal + */ +//================================================================================ +static void SegvHandler(const OSD_Signals, const Standard_Address, const Standard_Address) +{ + sigset_t set; + sigemptyset(&set); + sigaddset(&set, SIGSEGV); + sigprocmask (SIG_UNBLOCK, &set, NULL); + + CASCatch_Failure::Raise("SIGSEGV detected"); +} +#endif + + +//================================================================================ +/*! Public - + * \brief activates a signals handling + */ +//================================================================================ +void CASCatch_CatchSignals::Activate() +{ + if(myIsActivated) return; + + struct sigaction act; + + Standard_Integer i = 0; + for(; i<=MAX_HANDLER_NUMBER; i++) + mySigStates[i] = new struct sigaction(); //Initialize structures + + int stat; + act.sa_handler = (SIG_PFV) &Handler ; + sigemptyset(&act.sa_mask) ; + + + stat = sigaction(SIGHUP,&act,(struct sigaction*)mySigStates[0]); // ...... hangup + stat = sigaction(SIGFPE,&act,(struct sigaction*) mySigStates[1]); // ...... floating point exception + stat = sigaction(SIGINT,&act,(struct sigaction*)mySigStates[2]); // ...... interrupt + stat = sigaction(SIGQUIT,&act,(struct sigaction*)mySigStates[3]); // ...... quit + stat = sigaction(SIGBUS,&act,(struct sigaction*)mySigStates[4]); // ...... bus error + stat = sigaction(SIGILL,&act,(struct sigaction*)mySigStates[5]); // ...... illegal instruction + +#ifdef SA_RESTART + act.sa_flags = SA_RESTART ; +#else + act.sa_flags = 0 ; +#endif + act.sa_handler = (SIG_PFV) &SegvHandler ; + +#ifdef SA_SIGINFO // OSF,SOLARIS,IRIX + act.sa_flags = act.sa_flags | SA_SIGINFO ; +# ifdef SOLARIS + act.sa_sigaction = (void(*)(int, siginfo_t *, void*)) &SegvHandler ; +# endif +#endif + + stat = sigaction( SIGSEGV , &act , (struct sigaction*)mySigStates[6]); // ...... segmentation violation + + myIsActivated = Standard_True; +} + + +//================================================================================ +/*! Public - + * \brief deactivates a signals handling + */ +//================================================================================ +void CASCatch_CatchSignals::Deactivate() +{ + if(!myIsActivated) return; + + struct sigaction oact; + int stat; + + stat = sigaction(SIGHUP,(struct sigaction*)mySigStates[0],&oact); // ...... hangup + stat = sigaction(SIGFPE,(struct sigaction*)mySigStates[1],&oact); // ...... floating point exception + stat = sigaction(SIGINT,(struct sigaction*)mySigStates[2],&oact); // ...... interrupt + stat = sigaction(SIGQUIT,(struct sigaction*)mySigStates[3],&oact); // ...... quit + stat = sigaction(SIGBUS,(struct sigaction*)mySigStates[4],&oact); // ...... bus error + stat = sigaction(SIGILL,(struct sigaction*)mySigStates[5],&oact); // ...... illegal instruction + stat = sigaction(SIGSEGV,(struct sigaction*)mySigStates[6],&oact); // ...... segmentation violation + + + Standard_Integer i = 0; + for(; i<=MAX_HANDLER_NUMBER; i++) + delete (struct sigaction*)mySigStates[i]; + + myIsActivated = Standard_False; +} + + + +#else +//====================================== WNT part ==================================================== +#include + +#include +#include +#include + +#define _OSD_FPX ( _EM_DENORMAL | _EM_INEXACT | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_OVERFLOW) //Mask these exceptions + +//================================================================================ +/*! Private - + * \brief handler for unexpected exceptions + */ +//================================================================================ +static Standard_Integer WntHandler(const Standard_Address theExceptionInfo) +{ + LPEXCEPTION_POINTERS lpXP = ( LPEXCEPTION_POINTERS )theExceptionInfo; + DWORD dwExceptionCode = lpXP -> ExceptionRecord -> ExceptionCode; + + TCollection_AsciiString aMessage((Standard_Integer)dwExceptionCode); + aMessage+=" Exception code - unexpected exception"; + + CASCatch_Failure::Raise(aMessage.ToCString()); + + return EXCEPTION_EXECUTE_HANDLER; +} + +void SIGWntHandler(int , int ) ; +static void (*SIGWNTHANDLER)(int) = ( void (*)(int) ) ( &SIGWntHandler ) ; + + +//================================================================================ +/*! Private - + * \brief handler for signals + */ +//================================================================================ +static void SIGWntHandler(const int signum , const int theCode) +{ + + void (*OLDSIGWNTHANDLER)(int) ; + switch( signum ) { + case SIGFPE : + _fpreset() ; + _clearfp() ; + _controlfp ( _OSD_FPX, _MCW_EM ); + OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER ); + + if(theCode == _FPE_UNDERFLOW || theCode == _FPE_INEXACT) return; + CASCatch_Failure::Raise ("Floating point error"); + break; + case SIGSEGV : + OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER ); + CASCatch_Failure::Raise("Access violation"); + break; + case SIGILL : + OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER ); + CASCatch_Failure::Raise("Illegal instruction" ); + break; + } +} + + +//================================================================================ +/*! Public - + * \brief activates a signals handling + */ +//================================================================================ +void CASCatch_CatchSignals::Activate() +{ + if(myIsActivated) return; + + mySigStates[0] = SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )&WntHandler); + + myFloatOpWord = _controlfp(0, 0); + _controlfp ( _OSD_FPX, _MCW_EM ); //Enable floating point exceptions + + mySigStates[1] = signal( SIGSEGV , SIGWNTHANDLER ); + mySigStates[2] = signal( SIGFPE , SIGWNTHANDLER ); + mySigStates[3] = signal( SIGILL , SIGWNTHANDLER ); + + myIsActivated = Standard_True; +} + +//================================================================================ +/*! Public - + * \brief deactivates a signals handling + */ +//================================================================================ +void CASCatch_CatchSignals::Deactivate() +{ + if(!myIsActivated) return; + + SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )mySigStates[0]); + + _controlfp ( myFloatOpWord, _MCW_EM ); + + signal( SIGSEGV , ( void (*)(int) )mySigStates[1]); + signal( SIGFPE , ( void (*)(int) )mySigStates[2]); + signal( SIGILL , ( void (*)(int) )mySigStates[3]); + + Standard_Integer i = 0; + for(; i<=MAX_HANDLER_NUMBER; i++) + mySigStates[i] = NULL; + + myIsActivated = Standard_False; +} + +#endif + +//================================================================================ +/*! Private - + * \brief deactivates a signals handling + */ +//================================================================================ +void CASCatch_CatchSignals::Destroy() +{ + if(myIsActivated) Deactivate(); +} + diff --git a/src/CASCatch/CASCatch_CatchSignals.hxx b/src/CASCatch/CASCatch_CatchSignals.hxx new file mode 100644 index 000000000..27134aa52 --- /dev/null +++ b/src/CASCatch/CASCatch_CatchSignals.hxx @@ -0,0 +1,44 @@ + +#ifndef _CASCatch_CatchSignals_HeaderFile +#define _CASCatch_CatchSignals_HeaderFile + +#include + +/*! + * \class CASCatch_CatchSignals + * \brief This class controls an exception handling + * + */ +class CASCatch_CatchSignals { + +public: + + // Methods PUBLIC + // +Standard_EXPORT CASCatch_CatchSignals(); +Standard_EXPORT void Destroy() ; +~CASCatch_CatchSignals() { Destroy(); } +Standard_EXPORT void Activate() ; +Standard_EXPORT void Deactivate() ; + +private: + +/*!\var mySigStates[7], private + * \brief stores signals' handler functions + */ +Standard_Address mySigStates[7]; + +/*!\var myFloatOpWord + * \brief stores a float operation word, private + */ +Standard_Integer myFloatOpWord; + +/*!\var myIsActivated + * \brief stores a flag whether a catcher is activated, private] + */ +Standard_Boolean myIsActivated; + +}; + + +#endif diff --git a/src/CASCatch/CASCatch_ErrorHandler.cxx b/src/CASCatch/CASCatch_ErrorHandler.cxx new file mode 100644 index 000000000..a8784301e --- /dev/null +++ b/src/CASCatch/CASCatch_ErrorHandler.cxx @@ -0,0 +1,103 @@ + +#ifdef NO_CXX_EXCEPTION + +#include "CASCatch_ErrorHandler.hxx" + +// During setjmp()/longjmp() K_SETJMP_CASCatch is non zero (try) +// So if there is an abort request and if K_SETJMP_CASCatch is non zero, the abort +// request will be ignored. If the abort request do a raise during a setjmp +// or a longjmp, there will be a "terminating SEGV" impossible to handle. + + +Standard_EXPORT int K_SETJMP_CASCatch = 0 ; + +static Handle(CASCatch_Failure) GlbError; //Last caught Error, Null if there is no error + +static CASCatch_ErrorHandler* Top = 0; //The top of the Errors Stack + +//======================================================================= +//function : CASCatch_ErrorHandler +//purpose : Constructor +//======================================================================= +CASCatch_ErrorHandler::CASCatch_ErrorHandler () +{ + Previous = Top; + Top = this; + CaughtError.Nullify(); + GlbError.Nullify(); +} + +//======================================================================= +//function : ~CASCatch_ErrorHandler +//purpose : Destructor : Delete the ErrorHandler and Abort if there is a 'Error'. +//======================================================================= +CASCatch_ErrorHandler::~CASCatch_ErrorHandler() +{ + Top = Top->Previous; + if( !GlbError.IsNull() ) Abort(); +} + +//======================================================================= +//function : Abort: make a longjmp to the saved Context. +//purpose : Abort if there is a non null 'Error' +//======================================================================= +void CASCatch_ErrorHandler::Abort () +{ + //==== Check if can do the "longjmp" ======================================= + if(Top == NULL || Top->Label == NULL) { + cout << "*** Abort *** an exception was raised, but no catch was found." << endl; + cout << "\t... The exception is:" << GlbError; + exit(1); + } + +#ifdef DO_ABORT + if ( K_SETJMP_CASCatch ) + cout << "Recursive abort ===> Terminating SEGV ..." << endl ; + K_SETJMP_CASCatch = 1 ; +#endif + + longjmp(Top->Label, Standard_True); +} + +//======================================================================= +//function : Catches +//purpose : If there is a 'Error', and it is in good type +// returns True and clean 'Error', else returns False. +//======================================================================= +Standard_Boolean CASCatch_ErrorHandler::Catches + (const Handle(Standard_Type)& AType) +{ +#ifdef DO_ABORT + K_SETJMP_CASCatch = 0 ; +#endif + if(GlbError.IsNull()) + return Standard_False; + + if(GlbError->IsKind(AType)){ + CaughtError = GlbError; + GlbError.Nullify(); + return Standard_True; + } else { + return Standard_False; + } +} + +//======================================================================= +//function : LastCaughtError +//purpose : +//======================================================================= +Handle(CASCatch_Failure) CASCatch_ErrorHandler::LastCaughtError() +{ + return Top->CaughtError; +} + +//======================================================================= +//function : Error +//purpose : +//======================================================================= +void CASCatch_ErrorHandler::Error(const Handle(CASCatch_Failure)& aError) +{ + GlbError = aError; +} + +#endif diff --git a/src/CASCatch/CASCatch_ErrorHandler.hxx b/src/CASCatch/CASCatch_ErrorHandler.hxx new file mode 100644 index 000000000..e5b417157 --- /dev/null +++ b/src/CASCatch/CASCatch_ErrorHandler.hxx @@ -0,0 +1,73 @@ + +#ifndef _CASCatch_ErrorHandler_HeaderFile +#define _CASCatch_ErrorHandler_HeaderFile + +#include "CASCatch_Failure.hxx" + +#include +#include + + +extern int K_SETJMP_CASCatch ; + +/*! + * \class CASCatch_ErrorHandler + * \brief This class is an exception handler, private + * + */ +class CASCatch_ErrorHandler +{ + friend class CASCatch_Failure; // To execute the raise exception. + + public: + + Standard_EXPORT CASCatch_ErrorHandler(); + Standard_EXPORT ~CASCatch_ErrorHandler(); + Standard_EXPORT Standard_Boolean Catches (const Handle(Standard_Type)&); + + private: + Standard_EXPORT static void Abort(); + Standard_EXPORT static void Error(const Handle(CASCatch_Failure)&); + Standard_EXPORT static Handle(CASCatch_Failure) LastCaughtError(); + + //==== The fields =========================================================== + private: + CASCatch_ErrorHandler* Previous; + Handle(CASCatch_Failure) CaughtError; + + public: + jmp_buf Label; + +}; + +#undef CASCatch_TRY +#define CASCatch_TRY try + +#undef CASCatch_CATCH +#define CASCatch_CATCH catch + + +#ifdef NO_CXX_EXCEPTION +# undef CASCatch_TRY +# undef CASCatch_CATCH + +# if defined(DO_ABORT) + +# define DoesNotAbort_CASCatch(aHandler) !(K_SETJMP_CASCatch = setjmp(aHandler.Label)) + +# define CASCatch_TRY CASCatch_ErrorHandler _Function; \ + K_SETJMP_CASCatch = 1 ; \ + if(DoesNotAbort_CASCatch(_Function)) + +# else //If DO_ABORT is not defined +# define DoesNotAbort_CASCatch(aHandler) !setjmp(aHandler.Label) + +# define CASCatch_TRY CASCatch_ErrorHandler _Function; \ + if(DoesNotAbort_CASCatch(_Function)) +# endif //DO_ABORT + + +# define CASCatch_CATCH(Error) else if(_Function.Catches(STANDARD_TYPE(Error))) +#endif //NO_CXX_EXCEPTION + +#endif //_CASCatch_ErrorHandler_HeaderFile diff --git a/src/CASCatch/CASCatch_Failure.cxx b/src/CASCatch/CASCatch_Failure.cxx new file mode 100644 index 000000000..70eb8a7b8 --- /dev/null +++ b/src/CASCatch/CASCatch_Failure.cxx @@ -0,0 +1,107 @@ +#include "CASCatch_Failure.hxx" +#include "CASCatch_ErrorHandler.hxx" +#include +#include +#include + +IMPLEMENT_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient ) +IMPLEMENT_STANDARD_RTTIEXT( CASCatch_Failure, Standard_Transient ) + + +#ifndef NO_CXX_EXCEPTION +static Handle(CASCatch_Failure) RaisedError; +#endif + +//================================================================================ +/*! Public - + * \brief creates a CASCatch_Failure + */ +//================================================================================ +CASCatch_Failure::CASCatch_Failure () { myMessage = "Signal detected";} + + +//================================================================================ +/*! Public - + * \brief creates a CASCatch_Failure with a message + * \param an exception message + */ +//================================================================================ +CASCatch_Failure::CASCatch_Failure (const Standard_CString AString) +{ + if(AString) { + myMessage = new Standard_Character[strlen(AString) + 1]; + strcpy(myMessage,AString); + } +} + +//================================================================================ +/*! Public - + * \brief returns the last caught exception + */ +//================================================================================ +Handle(CASCatch_Failure) CASCatch_Failure::Caught() +{ +#ifdef NO_CXX_EXCEPTION + return CASCatch_ErrorHandler::LastCaughtError(); +#else + return RaisedError ; +#endif +} + +//================================================================================ +/*! Public - + * \brief raises a CASCatch_Failure exception + * \param an exception message + */ +//================================================================================ +void CASCatch_Failure::Raise (const Standard_CString AString) +{ + Handle(CASCatch_Failure) E = new CASCatch_Failure() ; + E->Reraise (AString) ; +} + + +//================================================================================ +/*! Public - + * \brief re-raises a CASCatch_Failure exception + * \param an exception message + */ +//================================================================================ +void CASCatch_Failure::Reraise (const Standard_CString AString) +{ + if(AString){ + myMessage = new Standard_Character[strlen(AString) + 1]; + strcpy(myMessage,AString); + } + +#ifdef NO_CXX_EXCEPTION + CASCatch_ErrorHandler::Error(this) ; + CASCatch_ErrorHandler::Abort(); +#else + RaisedError = this ; + Throw() ; +#endif +} + +//================================================================================ +/*! Public - + * \brief returns an exception message + */ +//================================================================================ +Standard_CString CASCatch_Failure::GetError() const +{ + return myMessage; +} + +//================================================================================ +/*! Public - + * \brief Is called when using standard C++ exceptions + */ +//================================================================================ +void CASCatch_Failure::Throw() const +{ +#ifndef NO_CXX_EXCEPTION + throw CASCatch_Failure() ; +#endif +} + diff --git a/src/CASCatch/CASCatch_Failure.hxx b/src/CASCatch/CASCatch_Failure.hxx new file mode 100644 index 000000000..9da57013c --- /dev/null +++ b/src/CASCatch/CASCatch_Failure.hxx @@ -0,0 +1,41 @@ +#ifndef _CASCATCH_FAILURE_HeaderFile +#define _CASCATCH_FAILURE_HeaderFile + +#include +#include +DEFINE_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient ) + +#include + +/*! + * \class CASCatch_Failure + * \brief This class presents an exception to be thrown + * + */ +class CASCatch_Failure : public Standard_Transient +{ + +public: + +Standard_EXPORT CASCatch_Failure(); +Standard_EXPORT CASCatch_Failure(const Standard_CString aString); +Standard_EXPORT void Reraise(const Standard_CString aMessage) ; +Standard_EXPORT Standard_CString GetError() const; +Standard_EXPORT static Handle_CASCatch_Failure Caught() ; +Standard_EXPORT static void Raise(const Standard_CString aMessage = "") ; +Standard_EXPORT virtual void Throw() const;public: + +public: + +DEFINE_STANDARD_RTTI( CASCatch_Failure ) + +private: +/*!\var myMessage + * \brief stores an exception message + */ +Standard_CString myMessage; + +}; + + +#endif diff --git a/src/CASCatch/CASCatch_SignalsHandler.cxx b/src/CASCatch/CASCatch_SignalsHandler.cxx deleted file mode 100644 index fd8cb5a0e..000000000 --- a/src/CASCatch/CASCatch_SignalsHandler.cxx +++ /dev/null @@ -1,29 +0,0 @@ -// KERNEL Utils : common utils for KERNEL -// Copyright (C) 2003 CEA -// -// This library 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. -// - -// This library 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 library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org - - -#include "CASCatch_SignalsHandler.h" -#include - - -CASCatch_SignalsHandler::CASCatch_SignalsHandler(bool theFloatingSignal) -{ - OSD::SetSignal(theFloatingSignal); -} diff --git a/src/CASCatch/CASCatch_SignalsHandler.h b/src/CASCatch/CASCatch_SignalsHandler.h deleted file mode 100644 index 4d6c0abab..000000000 --- a/src/CASCatch/CASCatch_SignalsHandler.h +++ /dev/null @@ -1,34 +0,0 @@ -// KERNEL Utils : common utils for KERNEL -// Copyright (C) 2003 CEA -// -// This library 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. -// - -// This library 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 library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org - -#ifndef _CASCATCH_SIGNALSHANDLER_H_ -#define _CASCATCH_SIGNALSHANDLER_H_ - - -#include "Utils_SignalsHandler.h" -#include - -class Standard_EXPORT CASCatch_SignalsHandler: private Utils_SignalsHandler{ - public: - CASCatch_SignalsHandler(bool theFloatingSignal = true); -}; - - -#endif diff --git a/src/CASCatch/Makefile.in b/src/CASCatch/Makefile.in index 838e3e086..f6e17c1e8 100644 --- a/src/CASCatch/Makefile.in +++ b/src/CASCatch/Makefile.in @@ -1,45 +1,26 @@ -# SALOME Utils : general SALOME's definitions and tools -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library 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. -# -# This library 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 library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# # File : Makefile.in -# Author : Marc Tajchman (CEA) +# Author : Sergey RUIN (OCN) # Module : SALOME -# $Header$ top_srcdir=@top_srcdir@ top_builddir=../.. srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl +VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl @COMMENCE@ # header files -EXPORT_HEADERS= CASCatch_SignalsHandler.h +EXPORT_HEADERS= CASCatch_Failure.hxx \ + CASCatch_CatchSignals.hxx \ + CASCatch_ErrorHandler.hxx # Libraries targets LIB = libCASCatch.la -LIB_SRC = CASCatch_SignalsHandler.cxx + +LIB_SRC = CASCatch_Failure.cxx \ + CASCatch_ErrorHandler.cxx \ + CASCatch_CatchSignals.cxx CPPFLAGS += $(OCC_INCLUDES) CXXFLAGS += $(OCC_CXXFLAGS)