mainBuild:
  name: polygonjs-occt.js
  bindings:
    - symbol: Adaptor2d_Curve2d
    - symbol: Adaptor3d_Curve
    - symbol: Adaptor3d_Surface
    - symbol: Bnd_Box
    - symbol: BRep_Tool
    - symbol: BRepAdaptor_CompCurve
    - symbol: BRepAdaptor_Curve
    - symbol: BRepAdaptor_Curve2d
    - symbol: BRepAlgoAPI_Algo
    - symbol: BRepAlgoAPI_BooleanOperation
    - symbol: BRepAlgoAPI_BuilderAlgo
    - symbol: BRepAlgoAPI_Common
    - symbol: BRepAlgoAPI_Cut
    - symbol: BRepAlgoAPI_Fuse
    - symbol: BRepAlgoAPI_Section
    - symbol: BRepBndLib
    - symbol: BRepBuilderAPI_Command
    - symbol: BRepBuilderAPI_Copy
    - symbol: BRepBuilderAPI_EdgeError
    - symbol: BRepBuilderAPI_MakeEdge
    - symbol: BRepBuilderAPI_MakeFace
    - symbol: BRepBuilderAPI_MakePolygon
    - symbol: BRepBuilderAPI_MakeShape
    - symbol: BRepBuilderAPI_MakeVertex
    - symbol: BRepBuilderAPI_MakeWire
    - symbol: BRepBuilderAPI_ModifyShape
    - symbol: BRepBuilderAPI_Transform
    - symbol: BRepFill_Pipe
    - symbol: BRepFill_TypeOfContact
    - symbol: BRepFilletAPI_LocalOperation
    - symbol: BRepFilletAPI_MakeChamfer
    - symbol: BRepFilletAPI_MakeFillet
    - symbol: BRepGProp
    - symbol: BRepGProp_Face
    - symbol: BRepLib
    - symbol: BRepLib_FindSurface
    - symbol: BRepLib_Command
    - symbol: BRepLib_MakeEdge2d
    - symbol: BRepLib_MakePolygon
    - symbol: BRepLib_MakeShape
    - symbol: BRepMesh_DiscretRoot
    - symbol: BRepMesh_IncrementalMesh
    - symbol: BRepOffset_Mode
    - symbol: BRepOffsetAPI_MakePipe
    - symbol: BRepOffsetAPI_MakePipeShell
    - symbol: BRepOffsetAPI_MakeOffsetShape
    - symbol: BRepOffsetAPI_MakeThickSolid
    - symbol: BRepOffsetAPI_ThruSections
    - symbol: BRepPrimAPI_MakeBox
    - symbol: BRepPrimAPI_MakeCone
    - symbol: BRepPrimAPI_MakeCylinder
    - symbol: BRepPrimAPI_MakeOneAxis
    - symbol: BRepPrimAPI_MakePrism
    - symbol: BRepPrimAPI_MakeRevolution
    - symbol: BRepPrimAPI_MakeSphere
    - symbol: BRepPrimAPI_MakeSweep
    - symbol: BRepPrimAPI_MakeTorus
    - symbol: BRepPrimAPI_MakeWedge
    - symbol: BRepTools
    - symbol: ChFi3d_FilletShape
    - symbol: ChFiDS_ChamfMode
    - symbol: Extrema_ExtAlgo
    - symbol: GC_MakeArcOfCircle
    - symbol: GC_MakeSegment
    - symbol: GC_Root
    - symbol: GCE2d_MakeArcOfCircle
    - symbol: GCE2d_MakeCircle
    - symbol: GCE2d_MakeSegment
    - symbol: GCE2d_Root
    - symbol: GCPnts_UniformAbscissa
    - symbol: Geom_BezierCurve
    - symbol: Geom_BoundedCurve
    - symbol: Geom_BoundedSurface
    - symbol: Geom_Circle
    - symbol: Geom_Conic
    - symbol: Geom_ConicalSurface
    - symbol: Geom_Curve
    - symbol: Geom_CylindricalSurface
    - symbol: Geom_ElementarySurface
    - symbol: Geom_Ellipse
    - symbol: Geom_Geometry
    - symbol: Geom_Surface
    - symbol: Geom_TrimmedCurve
    - symbol: Geom2dAdaptor_Curve
    - symbol: Geom2d_BezierCurve
    - symbol: Geom2d_BoundedCurve
    - symbol: Geom2d_Circle
    - symbol: Geom2d_Conic
    - symbol: Geom2d_Curve
    - symbol: Geom2d_Ellipse
    - symbol: Geom2d_Geometry
    - symbol: Geom2d_Line
    - symbol: Geom2d_OffsetCurve
    - symbol: Geom2d_TrimmedCurve
    - symbol: GeomAbs_CurveType
    - symbol: GeomAbs_JoinType
    - symbol: GeomAbs_Shape
    - symbol: GeomAbs_SurfaceType
    - symbol: GeomAdaptor_Curve
    - symbol: GeomAPI
    - symbol: GeomAPI_Interpolate
    - symbol: GeomLib
    - symbol: gp_Ax1
    - symbol: gp_Ax2
    - symbol: gp_Ax22d
    - symbol: gp_Ax2d
    - symbol: gp_Ax3
    - symbol: gp_Circ
    - symbol: gp_Circ2d
    - symbol: gp_Cylinder
    - symbol: gp_Dir
    - symbol: gp_Dir2d
    - symbol: gp_Elips
    - symbol: gp_Elips2d
    - symbol: gp_EulerSequence
    - symbol: gp_Pln
    - symbol: gp_Pnt
    - symbol: gp_Pnt2d
    - symbol: gp_Quaternion
    - symbol: gp_Trsf
    - symbol: gp_Trsf2d
    - symbol: gp_Vec
    - symbol: gp_Vec2d
    - symbol: gp_XY
    - symbol: gp_XYZ
    - symbol: GProp_GProps
    - symbol: Handle_Adaptor2d_Curve2d
    - symbol: Handle_Geom_BezierCurve
    - symbol: Handle_Geom_Curve
    - symbol: Handle_Geom_Surface
    - symbol: Handle_Geom_TrimmedCurve
    - symbol: Handle_Geom2d_BezierCurve
    - symbol: Handle_Geom2d_BoundedCurve
    - symbol: Handle_Geom2d_Circle
    - symbol: Handle_Geom2d_Curve
    - symbol: Handle_Geom2d_Geometry
    - symbol: Handle_Geom2d_Line
    - symbol: Handle_Geom2d_TrimmedCurve
    - symbol: Handle_Poly_PolygonOnTriangulation
    - symbol: Handle_Poly_Triangulation
    - symbol: Handle_StepData_StepModel
    - symbol: IFSelect_ReturnStatus
    - symbol: IMeshTools_Parameters
    - symbol: Interface_Static
    - symbol: Interface_TypedValue
    - symbol: IntTools_Array1OfRange
    - symbol: Message_ProgressRange
    - symbol: MoniTool_TypedValue
    - symbol: NCollection_BaseList
    - symbol: NCollection_BaseMap
    - symbol: Poly_Connect
    - symbol: Poly_PolygonOnTriangulation
    - symbol: Poly_Triangle
    - symbol: Poly_Triangulation
    - symbol: Precision
    - symbol: Standard_Transient
    - symbol: STEPControl_Reader
    - symbol: STEPControl_StepModelType
    - symbol: STEPControl_Writer
    - symbol: StdPrs_ToolTriangulatedShape
    - symbol: TColgp_Array1OfDir
    - symbol: TColgp_Array1OfPnt
    - symbol: TColgp_Array1OfPnt2d
    - symbol: TColgp_SequenceOfPnt2d
    - symbol: TopAbs_Orientation
    - symbol: TopAbs_ShapeEnum
    - symbol: TopExp
    - symbol: TopExp_Explorer
    - symbol: TopLoc_Location
    - symbol: TopoDS
    - symbol: TopoDS_Builder
    - symbol: TopoDS_Compound
    - symbol: TopoDS_CompSolid
    - symbol: TopoDS_Edge
    - symbol: TopoDS_Face
    - symbol: TopoDS_Iterator
    - symbol: TopoDS_Shape
    - symbol: TopoDS_Shell
    - symbol: TopoDS_Solid
    - symbol: TopoDS_Vertex
    - symbol: TopoDS_Wire
    - symbol: TopTools_Array1OfShape
    - symbol: TopTools_IndexedMapOfShape
    - symbol: TopTools_ListOfShape
    - symbol: XSControl_Reader
    - symbol: OCJS
    - symbol: Standard_Failure

  emccFlags:
    - -O3
    - -sEXPORT_ES6=1
    - -sUSE_ES6_IMPORT_META=0
    - -sEXPORTED_RUNTIME_METHODS=['FS']
    - -sALLOW_MEMORY_GROWTH=1

additionalCppCode: |
  typedef Handle(IMeshTools_Context) Handle_IMeshTools_Context;
  class OCJS {
  public:
    static Standard_Failure* getStandard_FailureData(intptr_t exceptionPtr) {
      return reinterpret_cast<Standard_Failure*>(exceptionPtr);
    }
  };
