head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.26 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.24 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.22 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.20 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.18 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.16 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.14 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.12 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.10 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.8 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.6 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.4 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.2 pkgsrc-2023Q1-base:1.1; locks; strict; comment @// @; 1.1 date 2023.02.12.14.42.25; author tnn; state Exp; branches; next ; commitid 7m6AtdU6jrzsifdE; desc @@ 1.1 log @cad/occt: import Open CASCADE Technology Development platform providing services for 3D surface and solid modeling, CAD data exchange, and visualization. Most of OCCT functionality is available in the form of C++ libraries. OCCT can be best applied in development of software dealing with 3D modeling (CAD), manufacturing / measuring (CAM) or numerical simulation (CAE). @ text @$NetBSD$ From cad/oce: Define SIGFPE macros on SunOS. Avoid overlapping reference in case statements. Respect the reality as CMake found it, there might not be libsunmath. 1.1 2017/01/20 11:00:50 fhajny --- src/OSD/OSD_signal.cxx.orig 2022-11-11 22:19:44.000000000 +0000 +++ src/OSD/OSD_signal.cxx @@@@ -20,6 +20,18 @@@@ #include +#if defined(__sun) +# include +# include +# define FPE_FLTDIV_TRAP FPE_FLTDIV +# define FPE_INTDIV_TRAP FPE_INTDIV +# define FPE_FLTOVF_TRAP FPE_FLTOVF +# define FPE_INTOVF_TRAP FPE_INTOVF +# define FPE_FLTUND_TRAP FPE_FLTUND +# define FPE_FLTRES_TRAP FPE_FLTRES +# define FPE_FLTINV_TRAP FPE_FLTINV +#endif + static OSD_SignalMode OSD_WasSetSignal = OSD_SignalMode_AsIs; static Standard_Integer OSD_SignalStackTraceLength = 0; @@@@ -846,6 +858,7 @@@@ static void Handler (const int theSignal break; #endif case SIGFPE: + { sigaddset(&set, SIGFPE); sigprocmask(SIG_UNBLOCK, &set, NULL) ; #ifdef __linux__ @@@@ -856,6 +869,7 @@@@ static void Handler (const int theSignal break; #else // Reste SOLARIS + siginfo_t * aSigInfo = NULL; if (aSigInfo) { switch(aSigInfo->si_code) { case FPE_FLTDIV_TRAP : @@@@ -888,6 +902,7 @@@@ static void Handler (const int theSignal } #endif break; + } default: #ifdef OCCT_DEBUG std::cout << "Unexpected signal " << theSignal << std::endl ; @@@@ -984,7 +999,7 @@@@ void OSD::SetFloatingSignal (Standard_Bo { fedisableexcept (_OSD_FPX); } -#elif defined (__sun) || defined (SOLARIS) +#elif (defined (__sun) || defined (SOLARIS)) && HAVE_SUNMATH int aSunStat = 0; sigfpe_handler_type anFpeHandler = (theFloatingSignal ? (sigfpe_handler_type)Handler : NULL); aSunStat = ieee_handler ("set", "invalid", anFpeHandler); @