From bad68e8523dd95f587af04222674841a5b6129b7 Mon Sep 17 00:00:00 2001 From: inv Date: Fri, 4 Nov 2022 12:48:03 +0300 Subject: [PATCH] Update --- .tgitconfig | 6 +- adm/CMPLRS | 36 +- adm/MODULES | 14 +- adm/RESOURCES | 24 +- adm/SAMPLES_RESOURCES | 4 +- adm/TOOLS | 6 +- adm/cmake/3rdparty_macro.cmake | 730 +- adm/cmake/bison.cmake | 50 +- adm/cmake/cotire.cmake | 8424 +++++------ adm/cmake/doxygen.cmake | 124 +- adm/cmake/draco.cmake | 192 +- adm/cmake/egl.cmake | 6 +- adm/cmake/eigen.cmake | 174 +- adm/cmake/ffmpeg.cmake | 484 +- adm/cmake/flex.cmake | 66 +- adm/cmake/freeimage.cmake | 6 +- adm/cmake/freetype.cmake | 768 +- adm/cmake/gles2.cmake | 6 +- adm/cmake/glx.cmake | 8 +- adm/cmake/occt_csf.cmake | 300 +- adm/cmake/occt_defs_flags.cmake | 318 +- adm/cmake/occt_macros.cmake | 1268 +- adm/cmake/occt_resources.cmake | 156 +- adm/cmake/occt_toolkit.cmake | 1000 +- adm/cmake/occt_toolkit_prepare_sample.cmake | 36 +- adm/cmake/occt_toolkit_prepare_tool.cmake | 26 +- adm/cmake/opencl.cmake | 52 +- adm/cmake/openvr.cmake | 10 +- adm/cmake/qt.cmake | 82 +- adm/cmake/qt_macro.cmake | 234 +- adm/cmake/rapidjson.cmake | 172 +- adm/cmake/tbb.cmake | 480 +- adm/cmake/tcl.cmake | 562 +- adm/cmake/tk.cmake | 572 +- adm/cmake/vardescr.cmake | 430 +- adm/cmake/vtk.cmake | 614 +- adm/qmake/OccCppConfig.pri | 330 +- adm/qmake/OccModule.pri | 84 +- adm/qmake/OccModule.pro.in | 4 +- adm/qmake/OccToolkit.pri | 332 +- adm/qmake/OccToolkit.pro.in | 4 +- adm/qmake/Occt.pro | 90 +- adm/qmake/OcctHeaderLink.hxx.in | 2 +- adm/qmake/custom.pri.template | 34 +- adm/qmake/qtcreator-occt-cpp.xml | 78 +- adm/scripts/android_custom.bat.template | 66 +- adm/scripts/cmake_custom.bat.template | 96 +- adm/scripts/cmake_custom.sh.template | 86 +- adm/scripts/ios_custom.sh.template | 60 +- adm/scripts/macos_custom.sh.template | 62 +- adm/scripts/mingw_custom.bat.template | 58 +- adm/scripts/wasm_custom.bat.template | 58 +- adm/scripts/wasm_custom.sh.template | 32 +- ...CASCADECompileDefinitionsAndFlags.cmake.in | 28 +- adm/templates/OpenCASCADEConfig.cmake.in | 188 +- adm/templates/android.toolchain.config.cmake | 16 +- adm/templates/custom.bat.main | 10 +- adm/templates/custom.build.bat.in | 92 +- adm/templates/custom.build.sh.in | 72 +- adm/templates/custom.install.bat.in | 76 +- adm/templates/custom.install.sh.in | 66 +- adm/templates/custom.sh.main | 8 +- adm/templates/env.bat.in | 390 +- adm/templates/env.build.sh.in | 274 +- adm/templates/env.install.sh.in | 278 +- adm/templates/env.samples.bat.in | 64 +- adm/templates/env.samples.sh.in | 48 +- adm/templates/header.in | 2 +- adm/templates/occt_toolkit.rc.in | 60 +- adm/templates/template.vc10 | 556 +- adm/templates/template.vc10x | 518 +- adm/templates/template.vc7 | 320 +- adm/templates/template.vc7x | 304 +- adm/templates/template.vc8 | 856 +- adm/templates/template.vc8x | 826 +- adm/templates/template.vc9 | 838 +- adm/templates/template.vc9x | 800 +- adm/templates/template.xcscheme | 116 +- adm/templates/uwp.toolchain.config.cmake | 10 +- adm/templates/vcproj.user.vc9x | 82 +- adm/templates/vcxproj.user.vc10x | 44 +- adm/upgrade_sample_orig.dat | 134 +- data/occ/MAT.pnt | 12564 ++++++++-------- data/occ/SurfaceFromPoints/sol1.dat | 26 +- data/occ/SurfaceFromPoints/sol2.dat | 72 +- dox/DoxygenLayout.xml | 376 +- dox/resources/occt_pdf_template.tex | 302 +- dox/resources/occt_rm.doxyfile | 92 +- dox/resources/occt_ug_html.doxyfile | 118 +- dox/resources/occt_ug_pdf.doxyfile | 104 +- genconf | 30 +- gendoc | 38 +- genproj | 94 +- samples/CSharp/WPF_D3D/About.xaml | 34 +- samples/CSharp/WPF_D3D/App.xaml | 28 +- samples/CSharp/WPF_D3D/MainWindow.xaml | 354 +- samples/CSharp/WPF_D3D/MaterialDlg.xaml | 38 +- .../WPF_D3D/Properties/Settings.settings | 12 +- samples/CSharp/WPF_D3D/Simple Styles.xaml | 2268 +-- samples/CSharp/WPF_D3D/app.config | 6 +- samples/CSharp/WPF_WinForms/About.xaml | 34 +- samples/CSharp/WPF_WinForms/App.xaml | 28 +- samples/CSharp/WPF_WinForms/MainWindow.xaml | 338 +- samples/CSharp/WPF_WinForms/MaterialDlg.xaml | 38 +- .../WPF_WinForms/Properties/Settings.settings | 12 +- .../CSharp/WPF_WinForms/Simple Styles.xaml | 2268 +-- samples/CSharp/WPF_WinForms/app.config | 6 +- samples/CSharp/WinForms/app.config | 76 +- samples/OCCTOverview/code/DataExchange.xml | 32 +- samples/OCCTOverview/code/Geometry.xml | 182 +- samples/OCCTOverview/code/Ocaf.xml | 40 +- samples/OCCTOverview/code/Samples.qrc | 22 +- samples/OCCTOverview/code/Topology.xml | 100 +- samples/OCCTOverview/code/Triangulation.xml | 14 +- samples/OCCTOverview/code/Viewer2d.xml | 38 +- samples/OCCTOverview/code/Viewer3d.xml | 60 +- samples/glfw/adm/cmake/FindOpenCASCADE.cmake | 314 +- .../UIKitSample.xcodeproj/project.pbxproj | 1130 +- .../contents.xcworkspacedata | 14 +- .../AppIcon.appiconset/Contents.json | 122 +- .../Base.lproj/LaunchScreen.storyboard | 54 +- .../UIKitSample/UIKitSample/ViewController.m | 84 +- .../app/src/main/AndroidManifest.xml | 70 +- .../jniviewer/app/src/main/res/values/id.xml | 34 +- .../app/src/main/res/values/strings.xml | 70 +- .../java/jniviewer/gradle.properties.template | 10 +- samples/qt/AndroidQt/AndroidQt.pro | 68 +- samples/qt/AndroidQt/AndroidQt0.pro | 10 +- samples/qt/AndroidQt/Deployment.pri | 54 +- samples/qt/AndroidQt/OCCT.pri | 118 +- .../qt/AndroidQt/android/AndroidManifest.xml | 164 +- .../AndroidQt/android/res/values/strings.xml | 8 +- samples/qt/AndroidQt/res/qml/main.qml | 170 +- samples/qt/AndroidQt/src/AndroidQt.qrc | 16 +- samples/qt/Common/src/Common-icon.ts | 292 +- samples/qt/Common/src/Common-string.ts | 916 +- samples/qt/FuncDemo/FuncDemo.pro | 164 +- samples/qt/FuncDemo/FuncDemo0.pro | 10 +- samples/qt/IESample/IESample.pro | 216 +- samples/qt/IESample/IESample0.pro | 10 +- samples/qt/IESample/custom.sh.template | 10 +- samples/qt/Interface/src/Interface-string.ts | 412 +- samples/qt/OCCTOverview/OCCTOverview.pro | 180 +- samples/qt/OCCTOverview/OCCTOverview0.pro | 10 +- samples/qt/OCCTOverview/custom.sh.template | 18 +- samples/qt/OCCTOverview/src/OCCTOverview.qrc | 58 +- samples/qt/Tutorial/Tutorial.pro | 216 +- samples/qt/Tutorial/Tutorial0.pro | 10 +- samples/qt/Tutorial/custom.sh.template | 10 +- samples/qt/Tutorial/src/Tutorial-icon.ts | 20 +- samples/qt/Tutorial/src/Tutorial-string.ts | 52 +- samples/xaml/App.xaml | 14 +- samples/xaml/MainPage.xaml | 94 +- samples/xaml/Package.appxmanifest | 96 +- src/BOPAlgo/BOPAlgo.msg | 258 +- src/DrawResources/DrawDefault | 254 +- src/DrawResources/DrawPlugin | 112 +- .../occt_existed_step_entities.lst | 1884 +-- src/SHMessage/SHAPE.fr | 534 +- src/SHMessage/SHAPE.us | 534 +- src/StdResource/Plugin | 104 +- src/StdResource/Standard | 50 +- src/StdResource/StandardLite | 44 +- src/StdResource/TObj | 34 +- src/StdResource/XCAF | 100 +- src/TObj/TObj.msg | 170 +- src/UnitsAPI/CurrentUnits | 148 +- src/UnitsAPI/MDTVBaseUnits | 140 +- src/UnitsAPI/MDTVCurrentUnits | 148 +- src/UnitsAPI/Units.dat | 962 +- src/XRResources/occtvr_actions.json | 450 +- src/XRResources/occtvr_bindings_generic.json | 174 +- .../occtvr_bindings_holographic_hmd.json | 36 +- .../occtvr_bindings_index_hmd.json | 36 +- src/XRResources/occtvr_bindings_rift.json | 36 +- src/XRResources/occtvr_bindings_touch.json | 320 +- src/XRResources/occtvr_bindings_vive.json | 36 +- .../occtvr_bindings_vive_controller.json | 278 +- .../occtvr_bindings_vive_cosmos.json | 36 +- src/XRResources/occtvr_bindings_vive_pro.json | 36 +- src/XSMessage/XSTEP.fr | 2052 +-- src/XSMessage/XSTEP.us | 2046 +-- src/XSTEPResource/IGES | 130 +- src/XSTEPResource/STEP | 136 +- src/XmlOcafResource/XmlOcaf.xsd | 262 +- src/XmlOcafResource/XmlOcaf_SmallTypes.xsd | 434 +- src/XmlOcafResource/XmlOcaf_TDF.xsd | 66 +- src/XmlOcafResource/XmlOcaf_TDataStd.xsd | 460 +- src/XmlOcafResource/XmlOcaf_TDataStd_Name.xsd | 74 +- src/XmlOcafResource/XmlOcaf_TDocStd.xsd | 74 +- src/XmlOcafResource/XmlOcaf_TFunction.xsd | 76 +- src/XmlOcafResource/XmlOcaf_TNaming.xsd | 256 +- .../XmlOcaf_TNaming_NamedShape.xsd | 194 +- src/XmlOcafResource/XmlOcaf_TPrsStd.xsd | 84 +- src/XmlOcafResource/XmlXcaf.xsd | 218 +- tests/chamfer/data/complex/A1 | 10 +- tests/chamfer/data/complex/A2 | 10 +- tests/chamfer/data/complex/A3 | 26 +- tests/chamfer/data/complex/A4 | 10 +- tests/chamfer/data/complex/A5 | 34 +- tests/chamfer/data/complex/A6 | 10 +- tests/chamfer/data/complex/A7 | 10 +- tests/chamfer/data/complex/A8 | 10 +- tests/chamfer/data/complex/A9 | 10 +- tests/chamfer/data/complex/B1 | 10 +- tests/chamfer/data/complex/B2 | 10 +- tests/chamfer/data/complex/B3 | 10 +- tests/chamfer/data/complex/B4 | 18 +- tests/chamfer/data/complex/B5 | 42 +- tests/chamfer/data/complex/B6 | 42 +- tests/chamfer/data/complex/B7 | 40 +- tests/chamfer/data/complex/B8 | 16 +- tests/chamfer/data/complex/B9 | 88 +- tests/chamfer/data/complex/C1 | 20 +- tests/chamfer/data/complex/C2 | 10 +- tests/chamfer/data/complex/C3 | 10 +- tests/chamfer/data/complex/C4 | 22 +- tests/chamfer/data/simple/A1 | 16 +- tests/chamfer/data/simple/A2 | 10 +- tests/chamfer/data/simple/A3 | 10 +- tests/chamfer/data/simple/A4 | 10 +- tests/chamfer/data/simple/A5 | 10 +- tests/chamfer/data/simple/A6 | 10 +- tests/chamfer/data/simple/A7 | 10 +- tests/chamfer/data/simple/A8 | 10 +- tests/chamfer/data/simple/A9 | 10 +- tests/chamfer/data/simple/B1 | 10 +- tests/chamfer/data/simple/B2 | 10 +- tests/chamfer/data/simple/B3 | 10 +- tests/chamfer/data/simple/B4 | 10 +- tests/chamfer/data/simple/B5 | 10 +- tests/chamfer/data/simple/B6 | 10 +- tests/chamfer/data/simple/B7 | 10 +- tests/chamfer/data/simple/B8 | 10 +- tests/chamfer/data/simple/B9 | 10 +- tests/chamfer/data/simple/C1 | 10 +- tests/chamfer/data/simple/C2 | 10 +- tests/chamfer/data/simple/C3 | 10 +- tests/chamfer/data/simple/C4 | 10 +- tests/chamfer/data/simple/C5 | 10 +- tests/chamfer/data/simple/C6 | 10 +- tests/chamfer/data/simple/C7 | 10 +- tests/chamfer/data/simple/C8 | 10 +- tests/chamfer/data/simple/C9 | 10 +- tests/chamfer/data/simple/D1 | 10 +- tests/chamfer/data/simple/D2 | 10 +- tests/chamfer/data/simple/D3 | 10 +- tests/chamfer/data/simple/D4 | 10 +- tests/chamfer/data/simple/D5 | 10 +- tests/chamfer/data/simple/D6 | 10 +- tests/chamfer/data/simple/D7 | 10 +- tests/chamfer/data/simple/D8 | 10 +- tests/chamfer/data/simple/D9 | 10 +- tests/chamfer/data/simple/E1 | 10 +- tests/chamfer/data/simple/E2 | 10 +- tests/chamfer/data/simple/E3 | 10 +- tests/chamfer/data/simple/E4 | 10 +- tests/chamfer/data/simple/E5 | 10 +- tests/chamfer/data/simple/E6 | 12 +- tests/chamfer/data/simple/E7 | 12 +- tests/chamfer/data/simple/E8 | 12 +- tests/chamfer/data/simple/E9 | 12 +- tests/chamfer/data/simple/F1 | 12 +- tests/chamfer/data/simple/F2 | 24 +- tests/chamfer/data/simple/F3 | 22 +- tests/chamfer/data/simple/F4 | 22 +- tests/demo/testsystem/data/file2.empty | 2 +- tests/demo/testsystem/data/subdir/file6.empty | 2 +- .../testsystem/tests_data/demo/file3.empty | 2 +- .../tests_data/demo/testsystem/file5.empty | 2 +- tests/demo/testsystem/tests_data/file4.empty | 2 +- tests/heal/data/advanced/A1 | 4 +- tests/heal/data/advanced/A2 | 16 +- tests/heal/data/advanced/A3 | 4 +- tests/heal/data/advanced/A4 | 4 +- tests/heal/data/advanced/A5 | 10 +- tests/heal/data/advanced/A6 | 4 +- tests/heal/data/advanced/A7 | 4 +- tests/heal/data/advanced/A8 | 4 +- tests/heal/data/advanced/A9 | 4 +- tests/heal/data/advanced/B1 | 4 +- tests/heal/data/advanced/B2 | 4 +- tests/heal/data/advanced/B3 | 4 +- tests/heal/data/advanced/B4 | 4 +- tests/heal/data/advanced/B5 | 4 +- tests/heal/data/advanced/B6 | 4 +- tests/heal/data/advanced/B7 | 4 +- tests/heal/data/advanced/B8 | 4 +- tests/heal/data/advanced/B9 | 4 +- tests/heal/data/advanced/C1 | 4 +- tests/heal/data/advanced/C2 | 4 +- tests/heal/data/advanced/C3 | 4 +- tests/heal/data/advanced/C4 | 4 +- tests/heal/data/advanced/C5 | 10 +- tests/heal/data/advanced/C6 | 8 +- tests/heal/data/advanced/C7 | 4 +- tests/heal/data/advanced/C8 | 8 +- tests/heal/data/advanced/C9 | 4 +- tests/heal/data/advanced/D1 | 4 +- tests/heal/data/advanced/D2 | 8 +- tests/heal/data/advanced/D3 | 4 +- tests/heal/data/advanced/D4 | 4 +- tests/heal/data/advanced/D5 | 4 +- tests/heal/data/advanced/D6 | 4 +- tests/heal/data/advanced/D7 | 4 +- tests/heal/data/advanced/D8 | 4 +- tests/heal/data/advanced/D9 | 4 +- tests/heal/data/advanced/E1 | 4 +- tests/heal/data/advanced/E2 | 4 +- tests/heal/data/advanced/E3 | 10 +- tests/heal/data/advanced/E4 | 4 +- tests/heal/data/advanced/E5 | 4 +- tests/heal/data/advanced/E6 | 4 +- tests/heal/data/advanced/E7 | 4 +- tests/heal/data/advanced/E8 | 10 +- tests/heal/data/advanced/E9 | 4 +- tests/heal/data/advanced/F1 | 20 +- tests/heal/data/advanced/F2 | 18 +- tests/heal/data/advanced/F3 | 26 +- tests/heal/data/advanced/F4 | 10 +- tests/heal/data/advanced/F5 | 4 +- tests/heal/data/advanced/F6 | 10 +- tests/heal/data/advanced/F7 | 4 +- tests/heal/data/advanced/F8 | 4 +- tests/heal/data/advanced/F9 | 4 +- tests/heal/data/advanced/G1 | 4 +- tests/heal/data/advanced/G2 | 4 +- tests/heal/data/advanced/G3 | 4 +- tests/heal/data/advanced/G4 | 4 +- tests/heal/data/advanced/G5 | 4 +- tests/heal/data/advanced/G6 | 4 +- tests/heal/data/advanced/G7 | 4 +- tests/heal/data/advanced/G8 | 4 +- tests/heal/data/advanced/G9 | 4 +- tests/heal/data/advanced/H1 | 4 +- tests/heal/data/advanced/H2 | 4 +- tests/heal/data/advanced/H3 | 4 +- tests/heal/data/advanced/H4 | 4 +- tests/heal/data/advanced/H5 | 18 +- tests/heal/data/advanced/H6 | 4 +- tests/heal/data/advanced/H7 | 4 +- tests/heal/data/advanced/H8 | 4 +- tests/heal/data/advanced/H9 | 4 +- tests/heal/data/advanced/I1 | 4 +- tests/heal/data/advanced/I2 | 4 +- tests/heal/data/advanced/I3 | 4 +- tests/heal/data/advanced/I4 | 4 +- tests/heal/data/advanced/I5 | 4 +- tests/heal/data/advanced/I6 | 4 +- tests/heal/data/advanced/I7 | 4 +- tests/heal/data/advanced/I8 | 4 +- tests/heal/data/advanced/I9 | 4 +- tests/heal/data/advanced/J1 | 4 +- tests/heal/data/advanced/J2 | 4 +- tests/heal/data/advanced/J3 | 4 +- tests/heal/data/advanced/J4 | 4 +- tests/heal/data/advanced/J5 | 4 +- tests/heal/data/advanced/J6 | 4 +- tests/heal/data/advanced/J7 | 4 +- tests/heal/data/advanced/J8 | 4 +- tests/heal/data/advanced/J9 | 4 +- tests/heal/data/advanced/K1 | 4 +- tests/heal/data/advanced/K2 | 10 +- tests/heal/data/advanced/K3 | 4 +- tests/heal/data/advanced/K4 | 8 +- tests/heal/data/advanced/K5 | 4 +- tests/heal/data/advanced/K6 | 4 +- tests/heal/data/advanced/K7 | 4 +- tests/heal/data/advanced/K8 | 4 +- tests/heal/data/advanced/K9 | 4 +- tests/heal/data/advanced/L1 | 4 +- tests/heal/data/advanced/L2 | 4 +- tests/heal/data/advanced/L3 | 4 +- tests/heal/data/advanced/L4 | 4 +- tests/heal/data/advanced/L5 | 4 +- tests/heal/data/advanced/L6 | 4 +- tests/heal/data/advanced/L7 | 4 +- tests/heal/data/advanced/L8 | 4 +- tests/heal/data/advanced/L9 | 4 +- tests/heal/data/advanced/M1 | 4 +- tests/heal/data/advanced/M2 | 4 +- tests/heal/data/advanced/M3 | 4 +- tests/heal/data/advanced/M4 | 4 +- tests/heal/data/advanced/M5 | 4 +- tests/heal/data/advanced/M6 | 4 +- tests/heal/data/advanced/M7 | 4 +- tests/heal/data/advanced/M8 | 4 +- tests/heal/data/advanced/M9 | 4 +- tests/heal/data/advanced/N1 | 4 +- tests/heal/data/advanced/N2 | 4 +- tests/heal/data/advanced/N3 | 4 +- tests/heal/data/advanced/N4 | 4 +- tests/heal/data/advanced/N5 | 4 +- tests/heal/data/advanced/N6 | 4 +- tests/heal/data/advanced/N7 | 4 +- tests/heal/data/advanced/N8 | 4 +- tests/heal/data/advanced/N9 | 4 +- tests/heal/data/advanced/O1 | 4 +- tests/heal/data/advanced/O2 | 10 +- tests/heal/data/advanced/O3 | 10 +- tests/heal/data/advanced/O4 | 4 +- tests/heal/data/advanced/O5 | 4 +- tests/heal/data/advanced/O6 | 10 +- tests/heal/data/advanced/O7 | 10 +- tests/heal/data/advanced/O8 | 10 +- tests/heal/data/advanced/O9 | 10 +- tests/heal/data/advanced/P1 | 4 +- tests/heal/data/advanced/P2 | 10 +- tests/heal/data/advanced/P3 | 10 +- tests/heal/data/advanced/P4 | 4 +- tests/heal/data/advanced/P5 | 10 +- tests/heal/data/advanced/P6 | 10 +- tests/heal/data/advanced/P7 | 4 +- tests/heal/data/advanced/P8 | 10 +- tests/heal/data/advanced/P9 | 10 +- tests/heal/data/advanced/Q1 | 4 +- tests/heal/data/advanced/Q2 | 10 +- tests/heal/data/advanced/Q3 | 10 +- tests/heal/data/advanced/Q4 | 10 +- tests/heal/data/advanced/Q5 | 10 +- tests/heal/data/advanced/Q6 | 10 +- tests/heal/data/advanced/Q7 | 10 +- tests/heal/data/advanced/Q8 | 10 +- tests/heal/data/advanced/Q9 | 4 +- tests/heal/data/advanced/R1 | 10 +- tests/heal/data/advanced/R2 | 10 +- tests/heal/data/advanced/R3 | 4 +- tests/heal/data/advanced/R4 | 4 +- tests/heal/data/advanced/R5 | 4 +- tests/heal/data/advanced/R6 | 4 +- tests/heal/data/advanced/R7 | 6 +- tests/heal/data/advanced/R8 | 4 +- tests/heal/data/advanced/R9 | 4 +- tests/heal/data/advanced/S1 | 4 +- tests/heal/data/advanced/S2 | 4 +- tests/heal/data/advanced/S3 | 4 +- tests/heal/data/advanced/S4 | 4 +- tests/heal/data/advanced/S5 | 10 +- tests/heal/data/advanced/S6 | 4 +- tests/heal/data/advanced/S7 | 18 +- tests/heal/data/advanced/S8 | 12 +- tests/heal/data/advanced/S9 | 4 +- tests/heal/data/advanced/T1 | 4 +- tests/heal/data/advanced/T2 | 4 +- tests/heal/data/advanced/T3 | 4 +- tests/heal/data/advanced/T4 | 4 +- tests/heal/data/advanced/T5 | 4 +- tests/heal/data/advanced/T6 | 12 +- tests/heal/data/advanced/T7 | 4 +- tests/heal/data/advanced/T8 | 4 +- tests/heal/data/advanced/T9 | 10 +- tests/heal/data/advanced/U1 | 4 +- tests/heal/data/advanced/U2 | 4 +- tests/heal/data/advanced/U3 | 10 +- tests/heal/data/advanced/U4 | 4 +- tests/heal/data/advanced/U5 | 4 +- tests/heal/data/advanced/U6 | 4 +- tests/heal/data/advanced/U7 | 4 +- tests/heal/data/advanced/U8 | 4 +- tests/heal/data/advanced/U9 | 16 +- tests/heal/data/advanced/V1 | 4 +- tests/heal/data/advanced/V2 | 10 +- tests/heal/data/advanced/V3 | 26 +- tests/heal/data/advanced/V4 | 22 +- tests/heal/data/advanced/V5 | 16 +- tests/heal/data/advanced/V6 | 4 +- tests/heal/data/advanced/V7 | 10 +- tests/heal/data/advanced/V8 | 4 +- tests/heal/data/advanced/V9 | 4 +- tests/heal/data/advanced/W1 | 4 +- tests/heal/data/advanced/W2 | 4 +- tests/heal/data/advanced/W3 | 4 +- tests/heal/data/advanced/W4 | 4 +- tests/heal/data/advanced/W5 | 10 +- tests/heal/data/advanced/W6 | 10 +- tests/heal/data/advanced/W7 | 10 +- tests/heal/data/advanced/W8 | 12 +- tests/heal/data/advanced/W9 | 10 +- tests/heal/data/advanced/X1 | 6 +- tests/heal/data/advanced/X2 | 4 +- tests/heal/data/advanced/X3 | 4 +- tests/heal/data/advanced/X4 | 4 +- tests/heal/data/advanced/X5 | 4 +- tests/heal/data/advanced/X6 | 10 +- tests/heal/data/advanced/X7 | 4 +- tests/heal/data/advanced/X8 | 4 +- tests/heal/data/advanced/X9 | 4 +- tests/heal/data/advanced/Y1 | 4 +- tests/heal/data/advanced/Y2 | 10 +- tests/heal/data/advanced/Y3 | 10 +- tests/heal/data/advanced/Y4 | 4 +- tests/heal/data/advanced/Y5 | 10 +- tests/heal/data/advanced/Y6 | 12 +- tests/heal/data/advanced/Y7 | 4 +- tests/heal/data/advanced/Y8 | 4 +- tests/heal/data/advanced/Y9 | 10 +- tests/heal/data/advanced/Z1 | 10 +- tests/heal/data/advanced/Z2 | 4 +- tests/heal/data/advanced/Z3 | 10 +- tests/heal/data/advanced/Z4 | 4 +- tests/heal/data/advanced/Z5 | 4 +- tests/heal/data/advanced/Z6 | 18 +- tests/heal/data/advanced/Z7 | 10 +- tests/heal/data/advanced/Z8 | 10 +- tests/heal/data/advanced/Z9 | 10 +- tests/heal/data/advanced/ZA1 | 10 +- tests/heal/data/advanced/ZA2 | 4 +- tests/heal/data/advanced/ZA3 | 4 +- tests/heal/data/advanced/ZA4 | 4 +- tests/heal/data/advanced/ZA5 | 10 +- tests/heal/data/advanced/ZA6 | 10 +- tests/heal/data/advanced/ZA7 | 4 +- tests/heal/data/advanced/ZA8 | 10 +- tests/heal/data/advanced/ZA9 | 10 +- tests/heal/data/advanced/ZB1 | 10 +- tests/heal/data/advanced/ZB2 | 10 +- tests/heal/data/advanced/ZB3 | 4 +- tests/heal/data/advanced/ZB4 | 10 +- tests/heal/data/advanced/ZB5 | 10 +- tests/heal/data/advanced/ZB6 | 10 +- tests/heal/data/advanced/ZB7 | 4 +- tests/heal/data/advanced/ZB8 | 10 +- tests/heal/data/advanced/ZB9 | 10 +- tests/heal/data/advanced/ZC1 | 10 +- tests/heal/data/advanced/ZC2 | 4 +- tests/heal/data/advanced/ZC3 | 10 +- tests/heal/data/advanced/ZC4 | 4 +- tests/heal/data/advanced/ZC5 | 4 +- tests/heal/data/advanced/ZC6 | 10 +- tests/heal/data/advanced/ZC7 | 10 +- tests/heal/data/advanced/ZC8 | 4 +- tests/heal/data/advanced/ZC9 | 4 +- tests/heal/data/advanced/ZD1 | 10 +- tests/heal/data/advanced/ZD2 | 4 +- tests/heal/data/advanced/ZD3 | 10 +- tests/heal/data/advanced/ZD4 | 4 +- tests/heal/data/advanced/ZD5 | 4 +- tests/heal/data/advanced/ZD6 | 10 +- tests/heal/data/advanced/ZD7 | 10 +- tests/heal/data/advanced/ZD8 | 4 +- tests/heal/data/advanced/ZD9 | 4 +- tests/heal/data/advanced/ZE1 | 4 +- tests/heal/data/advanced/ZE2 | 4 +- tests/heal/data/advanced/ZE3 | 10 +- tests/heal/data/advanced/ZE4 | 4 +- tests/heal/data/advanced/ZE5 | 10 +- tests/heal/data/advanced/ZE6 | 10 +- tests/heal/data/advanced/ZE7 | 10 +- tests/heal/data/advanced/ZE8 | 12 +- tests/heal/data/advanced/ZE9 | 12 +- tests/heal/data/advanced/ZF1 | 2 +- tests/heal/data/advanced/ZF2 | 4 +- tests/heal/data/advanced/ZF3 | 4 +- tests/heal/data/advanced/ZF4 | 4 +- tests/heal/data/advanced/ZF5 | 4 +- tests/heal/data/advanced/ZF6 | 4 +- tests/heal/data/advanced/ZF7 | 4 +- tests/heal/data/advanced/ZF8 | 4 +- tests/heal/data/advanced/ZF9 | 4 +- tests/heal/data/advanced/ZG1 | 4 +- tests/heal/data/standard/A1 | 4 +- tests/heal/data/standard/A2 | 4 +- tests/heal/data/standard/A3 | 4 +- tests/heal/data/standard/A4 | 4 +- tests/heal/data/standard/A5 | 6 +- tests/heal/data/standard/A6 | 4 +- tests/heal/data/standard/A7 | 4 +- tests/heal/data/standard/A8 | 4 +- tests/heal/data/standard/A9 | 4 +- tests/heal/data/standard/B1 | 4 +- tests/heal/data/standard/B2 | 4 +- tests/heal/data/standard/B3 | 10 +- tests/heal/data/standard/B4 | 4 +- tests/heal/data/standard/B5 | 10 +- tests/heal/data/standard/B6 | 4 +- tests/heal/data/standard/B7 | 4 +- tests/heal/data/standard/B8 | 4 +- tests/heal/data/standard/B9 | 4 +- tests/heal/data/standard/C1 | 10 +- tests/heal/data/standard/C2 | 10 +- tests/heal/data/standard/C3 | 4 +- tests/heal/data/standard/C4 | 10 +- tests/heal/data/standard/C5 | 10 +- tests/heal/data/standard/C6 | 4 +- tests/heal/data/standard/C7 | 4 +- tests/heal/data/standard/C8 | 10 +- tests/heal/data/standard/C9 | 4 +- tests/heal/data/standard/D1 | 4 +- tests/heal/data/standard/D2 | 4 +- tests/heal/data/standard/D3 | 4 +- tests/heal/data/standard/D4 | 4 +- tests/heal/data/standard/D5 | 12 +- tests/heal/data/standard/D6 | 10 +- tests/heal/data/standard/D7 | 4 +- tests/heal/data/standard/D8 | 4 +- tests/heal/data/standard/D9 | 4 +- tests/heal/data/standard/E1 | 4 +- tests/heal/data/standard/E2 | 4 +- tests/heal/data/standard/E3 | 4 +- tests/heal/data/standard/E4 | 4 +- tests/heal/data/standard/E5 | 10 +- tests/heal/data/standard/E6 | 2 +- tests/heal/data/standard/E7 | 4 +- tests/heal/data/standard/E8 | 4 +- tests/heal/data/standard/E9 | 4 +- tests/heal/data/standard/F1 | 4 +- tests/heal/data/standard/F2 | 4 +- tests/heal/data/standard/F3 | 4 +- tests/heal/data/standard/F4 | 4 +- tests/heal/data/standard/F5 | 4 +- tests/heal/data/standard/F6 | 4 +- tests/heal/data/standard/F7 | 4 +- tests/heal/data/standard/F8 | 4 +- tests/heal/data/standard/F9 | 4 +- tests/heal/data/standard/G1 | 4 +- tests/heal/data/standard/G2 | 4 +- tests/heal/data/standard/G3 | 4 +- tests/heal/data/standard/G4 | 4 +- tests/heal/data/standard/G5 | 4 +- tests/heal/data/standard/G6 | 4 +- tests/heal/data/standard/G7 | 4 +- tests/heal/data/standard/G8 | 4 +- tests/heal/data/standard/G9 | 4 +- tests/heal/data/standard/H1 | 4 +- tests/heal/data/standard/H2 | 4 +- tests/heal/data/standard/H3 | 4 +- tests/heal/data/standard/H4 | 4 +- tests/heal/data/standard/H5 | 4 +- tests/heal/data/standard/H6 | 4 +- tests/heal/data/standard/H7 | 4 +- tests/heal/data/standard/H8 | 4 +- tests/heal/data/standard/H9 | 4 +- tests/heal/data/standard/I1 | 4 +- tests/heal/data/standard/I2 | 4 +- tests/heal/data/standard/I3 | 4 +- tests/heal/data/standard/I4 | 4 +- tests/heal/data/standard/I5 | 4 +- tests/heal/data/standard/I6 | 4 +- tests/heal/data/standard/I7 | 4 +- tests/heal/data/standard/I8 | 4 +- tests/heal/data/standard/I9 | 4 +- tests/heal/data/standard/J1 | 4 +- tests/heal/data/standard/J2 | 4 +- tests/heal/data/standard/J3 | 4 +- tests/heal/data/standard/J4 | 4 +- tests/heal/data/standard/J5 | 4 +- tests/heal/data/standard/J6 | 4 +- tests/heal/data/standard/J7 | 4 +- tests/heal/data/standard/J8 | 4 +- tests/heal/data/standard/J9 | 4 +- tests/heal/data/standard/K1 | 4 +- tests/heal/data/standard/K2 | 4 +- tests/heal/data/standard/K3 | 4 +- tests/heal/data/standard/K4 | 4 +- tests/heal/data/standard/K5 | 4 +- tests/heal/data/standard/K6 | 4 +- tests/heal/data/standard/K7 | 4 +- tests/heal/data/standard/K8 | 4 +- tests/heal/data/standard/K9 | 4 +- tests/heal/data/standard/L1 | 4 +- tests/heal/data/standard/L2 | 4 +- tests/heal/data/standard/L3 | 4 +- tests/heal/data/standard/L4 | 4 +- tests/heal/data/standard/L5 | 4 +- tests/heal/data/standard/L6 | 4 +- tests/heal/data/standard/L7 | 4 +- tests/heal/data/standard/L8 | 4 +- tests/heal/data/standard/L9 | 4 +- tests/heal/data/standard/M1 | 4 +- tests/heal/data/standard/M2 | 4 +- tests/heal/data/standard/M3 | 4 +- tests/heal/data/standard/M4 | 4 +- tests/heal/data/standard/M5 | 4 +- tests/heal/data/standard/M6 | 4 +- tests/heal/data/standard/M7 | 4 +- tests/heal/data/standard/M8 | 4 +- tests/heal/data/standard/M9 | 4 +- tests/heal/data/standard/N1 | 4 +- tests/heal/data/standard/N2 | 4 +- tests/heal/data/standard/N3 | 4 +- tests/heal/data/standard/N4 | 4 +- tests/heal/data/standard/N5 | 4 +- tests/heal/data/standard/N6 | 4 +- tests/heal/data/standard/N7 | 4 +- tests/heal/data/standard/N8 | 4 +- tests/heal/data/standard/N9 | 4 +- tests/heal/data/standard/O1 | 4 +- tests/heal/data/standard/O2 | 4 +- tests/heal/data/standard/O3 | 4 +- tests/heal/data/standard/O4 | 4 +- tests/heal/data/standard/O5 | 4 +- tests/heal/data/standard/O6 | 4 +- tests/heal/data/standard/O7 | 4 +- tests/heal/data/standard/O8 | 4 +- tests/heal/data/standard/O9 | 4 +- tests/heal/data/standard/P1 | 4 +- tests/heal/data/standard/P2 | 4 +- tests/heal/data/standard/P3 | 4 +- tests/heal/data/standard/P4 | 4 +- tests/heal/data/standard/P5 | 4 +- tests/heal/data/standard/P6 | 4 +- tests/heal/data/standard/P7 | 4 +- tests/heal/data/standard/P8 | 4 +- tests/heal/data/standard/P9 | 4 +- tests/heal/data/standard/Q1 | 4 +- tests/heal/data/standard/Q2 | 4 +- tests/heal/data/standard/Q3 | 4 +- tests/heal/data/standard/Q4 | 4 +- tests/heal/data/standard/Q5 | 4 +- tests/heal/data/standard/Q6 | 4 +- tests/heal/data/standard/Q7 | 4 +- tests/heal/data/standard/Q8 | 4 +- tests/heal/data/standard/Q9 | 4 +- tests/heal/data/standard/R1 | 4 +- tests/heal/data/standard/R2 | 4 +- tests/heal/data/standard/R3 | 4 +- tests/heal/data/standard/R4 | 4 +- tests/heal/data/standard/R5 | 16 +- tests/heal/data/standard/R6 | 4 +- tests/heal/data/standard/R7 | 4 +- tests/heal/data/standard/R8 | 4 +- tests/heal/data/standard/R9 | 4 +- tests/heal/data/standard/S1 | 4 +- tests/heal/data/standard/S2 | 4 +- tests/heal/data/standard/S3 | 4 +- tests/heal/data/standard/S4 | 4 +- tests/heal/data/standard/S5 | 4 +- tests/heal/data/standard/S6 | 4 +- tests/heal/data/standard/S7 | 4 +- tests/heal/data/standard/S8 | 4 +- tests/heal/data/standard/S9 | 4 +- tests/heal/data/standard/T1 | 4 +- tests/heal/data/standard/T2 | 4 +- tests/heal/data/standard/T3 | 4 +- tests/heal/data/standard/T4 | 4 +- tests/heal/data/standard/T5 | 4 +- tests/heal/data/standard/T6 | 4 +- tests/heal/data/standard/T7 | 4 +- tests/heal/data/standard/T8 | 4 +- tests/heal/data/standard/T9 | 4 +- tests/heal/data/standard/U1 | 4 +- tests/heal/data/standard/U2 | 4 +- tests/heal/data/standard/U3 | 4 +- tests/heal/data/standard/U4 | 4 +- tests/heal/data/standard/U5 | 4 +- tests/heal/data/standard/U6 | 4 +- tests/heal/data/standard/U7 | 4 +- tests/heal/data/standard/U8 | 4 +- tests/heal/data/standard/U9 | 4 +- tests/heal/data/standard/V1 | 4 +- tests/heal/data/standard/V2 | 4 +- tests/heal/data/standard/V3 | 4 +- tests/heal/data/standard/V4 | 4 +- tests/heal/data/standard/V5 | 4 +- tests/heal/data/standard/V6 | 4 +- tests/heal/data/standard/V7 | 4 +- tests/heal/data/standard/V8 | 4 +- tests/heal/data/standard/V9 | 4 +- tests/heal/data/standard/W1 | 4 +- tests/heal/data/standard/W2 | 4 +- tests/heal/data/standard/W3 | 4 +- tests/heal/data/standard/W4 | 4 +- tests/heal/data/standard/W5 | 4 +- tests/heal/data/standard/W6 | 4 +- tests/heal/data/standard/W7 | 4 +- tests/heal/data/standard/W8 | 4 +- tests/heal/data/standard/W9 | 4 +- tests/heal/data/standard/X1 | 4 +- tests/heal/data/standard/X2 | 4 +- tests/heal/data/standard/X3 | 4 +- tests/heal/data/standard/X4 | 4 +- tests/heal/data/standard/X5 | 4 +- tests/heal/data/standard/X6 | 4 +- tests/heal/data/standard/X7 | 4 +- tests/heal/data/standard/X8 | 4 +- tests/heal/data/standard/X9 | 4 +- tests/heal/data/standard/Y1 | 4 +- tests/heal/data/standard/Y2 | 4 +- tests/heal/data/standard/Y3 | 4 +- tests/heal/data/standard/Y4 | 4 +- tests/heal/data/standard/Y5 | 4 +- tests/heal/data/standard/Y6 | 4 +- tests/heal/data/standard/Y7 | 4 +- tests/heal/data/standard/Y8 | 4 +- tests/heal/data/standard/Y9 | 4 +- tests/heal/data/standard/Z1 | 4 +- tests/heal/data/standard/Z2 | 4 +- tests/heal/data/standard/Z3 | 4 +- tests/heal/data/standard/Z4 | 4 +- tests/heal/data/standard/Z5 | 4 +- tests/heal/data/standard/Z6 | 4 +- tests/heal/data/standard/Z7 | 4 +- tests/heal/data/standard/Z8 | 4 +- tests/heal/data/standard/Z9 | 4 +- tests/heal/data/standard/ZA1 | 4 +- tests/heal/data/standard/ZA2 | 4 +- tests/heal/data/standard/ZA3 | 4 +- tests/heal/data/standard/ZA4 | 4 +- tests/heal/data/standard/ZA5 | 4 +- tests/heal/data/standard/ZA6 | 4 +- tests/heal/data/standard/ZA7 | 4 +- tests/heal/data/standard/ZA8 | 4 +- tests/heal/data/standard/ZA9 | 4 +- tests/heal/data/standard/ZB1 | 4 +- tests/heal/data/standard/ZB2 | 4 +- tests/heal/data/standard/ZB3 | 4 +- tests/heal/data/standard/ZB4 | 4 +- tests/heal/data/standard/ZB5 | 4 +- tests/heal/data/standard/ZB6 | 4 +- tests/heal/data/standard/ZB7 | 4 +- tests/heal/data/standard/ZB8 | 4 +- tests/heal/data/standard/ZB9 | 4 +- tests/heal/data/standard/ZC1 | 4 +- tests/heal/data/standard/ZC2 | 4 +- tests/heal/data/standard/ZC3 | 4 +- tests/heal/data/standard/ZC4 | 4 +- tests/heal/data/standard/ZC5 | 4 +- tests/heal/data/standard/ZC6 | 4 +- tests/heal/data/standard/ZC7 | 4 +- tests/heal/data/standard/ZC8 | 4 +- tests/heal/data/standard/ZC9 | 4 +- tests/heal/data/standard/ZD1 | 4 +- tests/heal/data/standard/ZD2 | 4 +- tests/heal/data/standard/ZD3 | 4 +- tests/heal/data/standard/ZD4 | 4 +- tests/heal/data/standard/ZD5 | 4 +- tests/heal/data/standard/ZD6 | 4 +- tests/heal/data/standard/ZD7 | 4 +- tests/heal/data/standard/ZD8 | 4 +- tests/heal/data/standard/ZD9 | 4 +- tests/heal/data/standard/ZE1 | 4 +- tests/heal/data/standard/ZE2 | 4 +- tests/heal/data/standard/ZE3 | 4 +- tests/heal/data/standard/ZE4 | 4 +- tests/heal/data/standard/ZE5 | 4 +- tests/heal/data/standard/ZE6 | 4 +- tests/heal/data/standard/ZE7 | 4 +- tests/heal/data/standard/ZE8 | 4 +- tests/heal/data/standard/ZE9 | 4 +- tests/heal/data/standard/ZF1 | 4 +- tests/heal/data/standard/ZF2 | 4 +- tests/heal/data/standard/ZF3 | 4 +- tests/heal/data/standard/ZF4 | 4 +- tests/heal/data/standard/ZF5 | 4 +- tests/heal/data/standard/ZF6 | 4 +- tests/heal/data/standard/ZF7 | 4 +- tests/heal/data/standard/ZF8 | 4 +- tests/heal/data/standard/ZF9 | 4 +- tests/heal/data/standard/ZG1 | 4 +- tests/heal/data/standard/ZG2 | 4 +- tests/heal/data/standard/ZG3 | 4 +- tests/heal/data/standard/ZG4 | 4 +- tests/heal/data/standard/ZG5 | 4 +- tests/heal/data/standard/ZG6 | 4 +- tests/heal/data/standard/ZG7 | 4 +- tests/heal/data/standard/ZG8 | 4 +- tests/heal/data/standard/ZG9 | 4 +- tests/heal/data/standard/ZH1 | 4 +- tests/heal/data/standard/ZH2 | 4 +- tests/heal/data/standard/ZH3 | 4 +- tests/heal/data/standard/ZH4 | 4 +- tests/heal/data/standard/ZH5 | 4 +- tests/heal/data/standard/ZH6 | 4 +- tests/heal/data/standard/ZH7 | 4 +- tests/heal/data/standard/ZH8 | 4 +- tests/heal/data/standard/ZH9 | 4 +- tests/heal/data/standard/ZI1 | 4 +- tests/heal/data/standard/ZI2 | 4 +- tests/heal/data/standard/ZI3 | 4 +- tests/heal/data/standard/ZI4 | 4 +- tests/heal/data/standard/ZI5 | 4 +- tests/heal/data/standard/ZI6 | 4 +- tests/heal/data/standard/ZI7 | 4 +- tests/heal/data/standard/ZI8 | 4 +- tests/heal/data/standard/ZI9 | 4 +- tests/heal/data/standard/ZJ1 | 4 +- tests/heal/data/standard/ZJ2 | 4 +- tests/heal/data/standard/ZJ3 | 4 +- tests/heal/data/standard/ZJ4 | 4 +- tests/heal/data/standard/ZJ5 | 4 +- tests/heal/data/standard/ZJ6 | 4 +- tests/heal/data/standard/ZJ7 | 4 +- tests/heal/data/standard/ZJ8 | 4 +- tests/heal/data/standard/ZJ9 | 4 +- tests/heal/data/standard/ZK1 | 4 +- tests/heal/data/standard/ZK2 | 4 +- tests/heal/data/standard/ZK3 | 4 +- tests/heal/data/standard/ZK4 | 4 +- tests/heal/data/standard/ZK5 | 4 +- tests/heal/data/standard/ZK6 | 4 +- tests/heal/data/standard/ZK7 | 4 +- tests/heal/data/standard/ZK8 | 4 +- tests/heal/data/standard/ZK9 | 4 +- tests/heal/data/standard/ZL1 | 4 +- tests/heal/data/standard/ZL2 | 4 +- tests/heal/data/standard/ZL3 | 4 +- tests/heal/data/standard/ZL4 | 4 +- tests/heal/data/standard/ZL5 | 4 +- tests/heal/data/standard/ZL6 | 4 +- tests/heal/data/standard/ZL7 | 4 +- tests/heal/data/standard/ZL8 | 4 +- tests/heal/data/standard/ZL9 | 4 +- tests/heal/data/standard/ZM1 | 4 +- tests/heal/data/standard/ZM2 | 4 +- tests/heal/data/standard/ZM3 | 4 +- tests/heal/data/standard/ZM4 | 4 +- tests/heal/data/standard/ZM5 | 4 +- tests/heal/data/standard/ZM6 | 4 +- tests/heal/data/standard/ZM7 | 4 +- tests/heal/data/standard/ZM8 | 4 +- tests/heal/data/standard/ZM9 | 4 +- tests/heal/data/standard/ZN1 | 4 +- tests/heal/data/standard/ZN2 | 4 +- tests/heal/data/standard/ZN3 | 4 +- tests/heal/data/standard/ZN4 | 4 +- tests/heal/data/standard/ZN5 | 4 +- tests/heal/data/standard/ZN6 | 4 +- tests/heal/data/standard/ZN7 | 4 +- tests/heal/data/standard/ZN8 | 4 +- tests/heal/data/standard/ZN9 | 4 +- tests/heal/data/standard/ZO1 | 4 +- tests/heal/data/standard/ZO2 | 4 +- tests/heal/data/standard/ZO3 | 4 +- tests/heal/data/standard/ZO4 | 4 +- tests/heal/data/standard/ZO5 | 4 +- tests/heal/data/standard/ZO6 | 4 +- tests/heal/data/standard/ZO7 | 4 +- tests/heal/data/standard/ZO8 | 4 +- tests/heal/data/standard/ZO9 | 4 +- tests/heal/data/standard/ZP1 | 4 +- tests/heal/data/standard/ZP2 | 4 +- tests/heal/data/standard/ZP3 | 4 +- tests/heal/data/standard/ZP4 | 4 +- tests/heal/data/standard/ZP5 | 4 +- tests/heal/data/standard/ZP6 | 4 +- tests/heal/data/standard/ZP7 | 4 +- tests/heal/data/standard/ZP8 | 4 +- tests/heal/data/standard/ZP9 | 4 +- tests/heal/data/standard/ZQ1 | 4 +- tests/heal/data/standard/ZQ2 | 4 +- tests/heal/data/standard/ZQ3 | 4 +- tests/heal/data/standard/ZQ4 | 4 +- tests/heal/data/standard/ZQ5 | 4 +- tests/heal/data/standard/ZQ6 | 4 +- tests/heal/data/standard/ZQ7 | 4 +- tests/heal/data/standard/ZQ8 | 4 +- tests/heal/data/standard/ZQ9 | 4 +- tests/heal/data/standard/ZR1 | 4 +- tests/heal/data/standard/ZR2 | 4 +- tests/heal/data/standard/ZR3 | 4 +- tests/heal/data/standard/ZR4 | 4 +- tests/heal/data/standard/ZR5 | 4 +- tests/heal/data/standard/ZR6 | 10 +- tests/heal/data/standard/ZR7 | 12 +- tests/heal/data/standard/ZR8 | 4 +- tests/heal/data/standard/ZR9 | 4 +- tests/heal/data/standard/ZS1 | 4 +- tests/heal/data/standard/ZS2 | 4 +- tests/heal/data/standard/ZS3 | 4 +- tests/heal/data/standard/ZS4 | 4 +- tests/heal/data/standard/ZS5 | 4 +- tests/heal/data/standard/ZS6 | 4 +- tests/heal/data/standard/ZS7 | 4 +- tests/heal/data/standard/ZS8 | 4 +- tests/heal/data/standard/ZS9 | 4 +- tests/heal/data/standard/ZT1 | 4 +- tests/heal/data/standard/ZT2 | 4 +- tests/heal/data/standard/ZT3 | 4 +- tests/heal/data/standard/ZT4 | 4 +- tests/heal/data/standard/ZT5 | 4 +- tests/heal/data/standard/ZT6 | 4 +- tests/heal/data/standard/ZT7 | 4 +- tests/heal/data/standard/ZT8 | 4 +- tests/heal/data/standard/ZT9 | 4 +- tests/heal/data/standard/ZU1 | 4 +- tests/heal/data/standard/ZU2 | 4 +- tests/heal/data/standard/ZU3 | 4 +- tests/heal/data/standard/ZU4 | 4 +- tests/heal/data/standard/ZU5 | 4 +- tests/heal/data/standard/ZU6 | 10 +- tests/heal/data/standard/ZU7 | 10 +- tests/heal/data/standard/ZU8 | 10 +- tests/heal/data/standard/ZU9 | 10 +- tests/heal/data/standard/ZV1 | 4 +- tests/heal/data/standard/ZV2 | 4 +- tests/heal/data/standard/ZV3 | 4 +- tests/heal/data/standard/ZV4 | 4 +- tests/heal/data/standard/ZV5 | 4 +- tests/heal/data/standard/ZV6 | 4 +- tests/heal/data/standard/ZV7 | 14 +- tests/heal/data/standard/ZV8 | 4 +- tests/heal/data/standard/ZV9 | 4 +- tests/heal/data/standard/ZW1 | 22 +- tests/heal/data/standard/ZW2 | 4 +- tests/heal/data/standard/ZW3 | 4 +- tests/heal/data/standard/ZW4 | 10 +- tests/heal/data/standard/ZW5 | 10 +- tests/heal/data/standard/ZW6 | 4 +- tests/heal/data/standard/ZW7 | 4 +- tests/heal/data/standard/ZW8 | 4 +- tests/heal/data/standard/ZW9 | 4 +- tests/heal/data/standard/ZX1 | 4 +- tests/heal/data/standard/ZX2 | 4 +- tests/heal/data/standard/ZX3 | 4 +- tests/heal/data/standard/ZX4 | 4 +- tests/heal/data/standard/ZX5 | 4 +- tests/heal/data/standard/ZX6 | 10 +- tests/heal/data/standard/ZX7 | 4 +- tests/heal/data/standard/ZX8 | 4 +- tests/heal/data/standard/ZX9 | 4 +- tests/heal/data/standard/ZY1 | 10 +- tests/heal/data/standard/ZY2 | 10 +- tests/heal/data/standard/ZY3 | 4 +- tests/heal/data/standard/ZY4 | 4 +- tests/heal/data/standard/ZY5 | 4 +- tests/heal/data/standard/ZY6 | 4 +- tests/heal/data/standard/ZY7 | 4 +- tests/heal/data/standard/ZY8 | 4 +- tests/heal/data/standard/ZY9 | 4 +- tests/heal/data/standard/ZZ1 | 4 +- tests/heal/data/standard/ZZ2 | 4 +- tests/heal/data/standard/ZZ3 | 4 +- tests/heal/data/standard/ZZ4 | 10 +- tests/heal/data/standard/ZZ5 | 4 +- tests/mesh/data/advanced/A1 | 36 +- tests/mesh/data/advanced/A2 | 2 +- tests/mesh/data/advanced/A3 | 2 +- tests/mesh/data/advanced/A4 | 2 +- tests/mesh/data/advanced/A5 | 2 +- tests/mesh/data/advanced/A6 | 18 +- tests/mesh/data/advanced/A7 | 14 +- tests/mesh/data/advanced/A8 | 2 +- tests/mesh/data/advanced/A9 | 18 +- tests/mesh/data/advanced/B1 | 22 +- tests/mesh/data/advanced/B2 | 18 +- tests/mesh/data/advanced/B3 | 18 +- tests/mesh/data/advanced/B4 | 14 +- tests/mesh/data/advanced/B5 | 4 +- tests/mesh/data/advanced/B6 | 16 +- tests/mesh/data/advanced/B7 | 20 +- tests/mesh/data/advanced/B8 | 12 +- tests/mesh/data/advanced/B9 | 2 +- tests/mesh/data/advanced/C1 | 6 +- tests/mesh/data/advanced/C2 | 2 +- tests/mesh/data/advanced/C3 | 6 +- tests/mesh/data/standard/A1 | 2 +- tests/mesh/data/standard/A2 | 2 +- tests/mesh/data/standard/A3 | 2 +- tests/mesh/data/standard/A4 | 6 +- tests/mesh/data/standard/A5 | 2 +- tests/mesh/data/standard/A6 | 2 +- tests/mesh/data/standard/A7 | 2 +- tests/mesh/data/standard/A8 | 2 +- tests/mesh/data/standard/A9 | 2 +- tests/mesh/data/standard/B1 | 2 +- tests/mesh/data/standard/B2 | 2 +- tests/mesh/data/standard/B3 | 20 +- tests/mesh/data/standard/B4 | 2 +- tests/mesh/data/standard/B5 | 14 +- tests/mesh/data/standard/B6 | 2 +- tests/mesh/data/standard/B7 | 2 +- tests/mesh/data/standard/B8 | 2 +- tests/mesh/data/standard/B9 | 40 +- tests/mesh/data/standard/C1 | 2 +- tests/mesh/data/standard/C2 | 2 +- tests/mesh/data/standard/C3 | 2 +- tests/mesh/data/standard/C4 | 2 +- tests/mesh/data/standard/C5 | 2 +- tests/mesh/data/standard/C6 | 2 +- tests/mesh/data/standard/C7 | 18 +- tests/mesh/data/standard/C8 | 2 +- tests/mesh/data/standard/C9 | 20 +- tests/mesh/data/standard/D1 | 2 +- tests/mesh/data/standard/D2 | 2 +- tests/mesh/data/standard/D3 | 2 +- tests/mesh/data/standard/D4 | 2 +- tests/mesh/data/standard/D5 | 2 +- tests/mesh/data/standard/D6 | 2 +- tests/mesh/data/standard/D7 | 2 +- tests/mesh/data/standard/D8 | 2 +- tests/mesh/data/standard/D9 | 2 +- tests/mesh/data/standard/E1 | 2 +- tests/mesh/data/standard/E2 | 2 +- tests/mesh/data/standard/E3 | 2 +- tests/mesh/data/standard/E4 | 2 +- tests/mesh/data/standard/E5 | 2 +- tests/mesh/data/standard/E6 | 2 +- tests/mesh/data/standard/E7 | 2 +- tests/mesh/data/standard/E8 | 2 +- tests/mesh/data/standard/E9 | 2 +- tests/mesh/data/standard/F1 | 2 +- tests/mesh/data/standard/F2 | 2 +- tests/mesh/data/standard/F3 | 2 +- tests/mesh/data/standard/F4 | 2 +- tests/mesh/data/standard/F5 | 2 +- tests/mesh/data/standard/F6 | 2 +- tests/mesh/data/standard/F7 | 2 +- tests/mesh/data/standard/F8 | 2 +- tests/mesh/data/standard/F9 | 2 +- tests/mesh/data/standard/G1 | 26 +- tests/mesh/data/standard/G2 | 2 +- tests/mesh/data/standard/G3 | 2 +- tests/mesh/data/standard/G4 | 2 +- tests/mesh/data/standard/G5 | 2 +- tests/mesh/data/standard/G6 | 2 +- tests/mesh/data/standard/G7 | 2 +- tests/mesh/data/standard/G8 | 2 +- tests/mesh/data/standard/G9 | 2 +- tests/mesh/data/standard/H1 | 2 +- tests/mesh/data/standard/H2 | 2 +- tests/mesh/data/standard/H3 | 2 +- tests/mesh/data/standard/H4 | 2 +- tests/mesh/data/standard/H5 | 6 +- tests/mesh/data/standard/H6 | 2 +- tests/mesh/data/standard/H7 | 2 +- tests/mesh/data/standard/H8 | 2 +- tests/mesh/data/standard/H9 | 2 +- tests/mesh/data/standard/I1 | 2 +- tests/mesh/data/standard/I2 | 2 +- tests/mesh/data/standard/I3 | 2 +- tests/mesh/data/standard/I4 | 2 +- tests/mesh/data/standard/I5 | 2 +- tests/mesh/data/standard/I6 | 2 +- tests/mesh/data/standard/I7 | 2 +- tests/mesh/data/standard/I8 | 2 +- tests/mesh/data/standard/I9 | 2 +- tests/mesh/data/standard/J1 | 6 +- tests/mesh/data/standard/J2 | 2 +- tests/mesh/data/standard/J3 | 2 +- tests/mesh/data/standard/J4 | 6 +- tests/mesh/data/standard/J5 | 2 +- tests/mesh/data/standard/J6 | 2 +- tests/mesh/data/standard/J7 | 2 +- tests/mesh/data/standard/J8 | 12 +- tests/mesh/data/standard/J9 | 2 +- tests/mesh/data/standard/K1 | 2 +- tests/mesh/data/standard/K2 | 8 +- tests/mesh/data/standard/K3 | 2 +- tests/mesh/data/standard/K4 | 14 +- tests/mesh/data/standard/K5 | 2 +- tests/mesh/data/standard/K6 | 2 +- tests/mesh/data/standard/K7 | 2 +- tests/mesh/data/standard/K8 | 2 +- tests/mesh/data/standard/K9 | 6 +- tests/mesh/data/standard/L1 | 2 +- tests/mesh/data/standard/L2 | 10 +- tests/mesh/data/standard/L3 | 10 +- tests/mesh/data/standard/L4 | 8 +- tests/mesh/data/standard/L5 | 2 +- tests/mesh/data/standard/L6 | 16 +- tests/mesh/data/standard/L7 | 4 +- tests/mesh/data/standard/L8 | 2 +- tests/mesh/data/standard/L9 | 2 +- tests/mesh/data/standard/M1 | 16 +- tests/mesh/data/standard/M2 | 2 +- tests/mesh/data/standard/M3 | 14 +- tests/mesh/data/standard/M4 | 16 +- tests/mesh/data/standard/M5 | 2 +- tests/mesh/data/standard/M6 | 2 +- tests/mesh/data/standard/M7 | 2 +- tests/mesh/data/standard/M8 | 18 +- tests/mesh/data/standard/M9 | 2 +- tests/mesh/data/standard/N1 | 2 +- tests/mesh/data/standard/N2 | 2 +- tests/mesh/data/standard/N3 | 2 +- tests/mesh/data/standard/N4 | 2 +- tests/mesh/data/standard/N5 | 2 +- tests/mesh/data/standard/N6 | 2 +- tests/mesh/data/standard/N7 | 2 +- tests/mesh/data/standard/N8 | 2 +- tests/mesh/data/standard/N9 | 2 +- tests/mesh/data/standard/O1 | 2 +- tests/mesh/data/standard/O2 | 2 +- tests/mesh/data/standard/O3 | 2 +- tests/mesh/data/standard/O4 | 2 +- tests/mesh/data/standard/O5 | 12 +- tests/mesh/data/standard/O6 | 2 +- tests/mesh/data/standard/O7 | 2 +- tests/mesh/data/standard/O8 | 2 +- tests/mesh/data/standard/O9 | 2 +- tests/mesh/data/standard/P1 | 2 +- tests/mesh/data/standard/P2 | 16 +- tests/mesh/data/standard/P3 | 2 +- tests/mesh/data/standard/P4 | 2 +- tests/mesh/data/standard/P5 | 2 +- tests/mesh/data/standard/P6 | 2 +- tests/mesh/data/standard/P7 | 2 +- tests/mesh/data/standard/P8 | 6 +- tests/mesh/data/standard/P9 | 2 +- tests/mesh/data/standard/Q1 | 2 +- tests/mesh/data/standard/Q2 | 2 +- tests/mesh/data/standard/Q3 | 10 +- tests/mesh/data/standard/Q4 | 2 +- tests/mesh/data/standard/Q5 | 10 +- tests/mesh/data/standard/Q6 | 18 +- tests/mesh/data/standard/Q7 | 14 +- tests/mesh/data/standard/Q8 | 2 +- tests/mesh/data/standard/Q9 | 2 +- tests/mesh/data/standard/R1 | 2 +- tests/mesh/data/standard/R2 | 2 +- tests/mesh/data/standard/R3 | 8 +- tests/mesh/data/standard/R4 | 2 +- tests/mesh/data/standard/R5 | 2 +- tests/mesh/data/standard/R6 | 2 +- tests/mesh/data/standard/R7 | 2 +- tests/mesh/data/standard/R8 | 2 +- tests/mesh/data/standard/R9 | 2 +- tests/mesh/data/standard/S1 | 2 +- tests/mesh/data/standard/S2 | 2 +- tests/mesh/data/standard/S3 | 2 +- tests/mesh/data/standard/S4 | 2 +- tests/mesh/data/standard/S5 | 2 +- tests/mesh/data/standard/S6 | 2 +- tests/mesh/data/standard/S7 | 2 +- tests/mesh/data/standard/S8 | 6 +- tests/mesh/data/standard/S9 | 2 +- tests/mesh/data/standard/T1 | 2 +- tests/mesh/data/standard/T2 | 2 +- tests/mesh/data/standard/T3 | 2 +- tests/mesh/data/standard/T4 | 2 +- tests/mesh/data/standard/T5 | 2 +- tests/mesh/data/standard/T6 | 2 +- tests/mesh/data/standard/T7 | 2 +- tests/mesh/data/standard/T8 | 2 +- tests/mesh/data/standard/T9 | 2 +- tests/mesh/data/standard/U1 | 2 +- tests/mesh/data/standard/U2 | 40 +- tests/mesh/data/standard/U3 | 2 +- tests/mesh/data/standard/U4 | 26 +- tests/mesh/data/standard/U5 | 20 +- tests/mesh/data/standard/U6 | 26 +- tests/mesh/data/standard/U7 | 62 +- tests/mesh/data/standard/U8 | 2 +- tests/mesh/data/standard/U9 | 2 +- tests/mesh/data/standard/V1 | 2 +- tests/mesh/data/standard/V2 | 18 +- tests/mesh/data/standard/V3 | 6 +- tests/mesh/data/standard/V4 | 28 +- tests/mesh/data/standard/V5 | 10 +- tests/mesh/data/standard/V6 | 12 +- tests/mesh/data/standard/V7 | 42 +- tests/mesh/data/standard/V8 | 2 +- tests/mesh/data/standard/V9 | 6 +- tests/mesh/data/standard/W1 | 10 +- tests/mesh/data/standard/W2 | 10 +- tests/mesh/data/standard/W3 | 2 +- tests/mesh/data/standard/W4 | 36 +- tests/mesh/data/standard/W5 | 44 +- tests/mesh/data/standard/W6 | 18 +- tests/mesh/data/standard/W7 | 22 +- tests/mesh/data/standard/W8 | 2 +- tests/mesh/data/standard/W9 | 26 +- tests/mesh/data/standard/X1 | 26 +- tests/mesh/data/standard/X2 | 34 +- tests/mesh/data/standard/X3 | 26 +- tests/mesh/data/standard/X4 | 68 +- tests/mesh/data/standard/X5 | 6 +- tests/opengl/data/background/bug1188 | 24 +- tests/opengl/data/background/bug21747 | 150 +- tests/opengl/data/background/bug23102 | 56 +- tests/opengl/data/background/bug23363 | 38 +- tests/opengl/data/background/bug25475 | 48 +- tests/opengl/data/background/bug25775 | 38 +- tests/opengl/data/background/bug26599 | 44 +- tests/opengl/data/background/bug27836 | 48 +- tests/opengl/data/background/elliptical | 20 +- tests/opengl/data/background/skydome | 86 +- tests/opengl/data/background/srgb | 28 +- tests/opengl/data/clipping/bug22906 | 86 +- tests/opengl/data/clipping/bug23484_2 | 42 +- tests/opengl/data/clipping/bug24224 | 102 +- tests/opengl/data/clipping/bug24522 | 32 +- tests/opengl/data/clipping/bug24717 | 46 +- tests/opengl/data/clipping/bug24901 | 46 +- tests/opengl/data/clipping/bug24902_1 | 60 +- tests/opengl/data/clipping/bug24902_2 | 58 +- tests/opengl/data/clipping/bug25052 | 94 +- tests/opengl/data/clipping/bug25060 | 42 +- tests/opengl/data/clipping/bug25132 | 64 +- tests/opengl/data/clipping/bug25229 | 44 +- tests/opengl/data/clipping/bug25778 | 62 +- tests/opengl/data/clipping/bug26940 | 56 +- tests/opengl/data/clipping/bug27751_capping | 152 +- tests/opengl/data/clipping/bug27945 | 144 +- tests/opengl/data/clipping/bug29768 | 48 +- tests/opengl/data/clipping/bug29874 | 46 +- tests/opengl/data/clipping/bug30756 | 38 +- tests/opengl/data/clipping/clipping1 | 190 +- tests/opengl/data/general/bndbox1 | 34 +- tests/opengl/data/general/bug25679 | 66 +- tests/opengl/data/general/bug32722 | 38 +- tests/opengl/data/general/culldist | 68 +- tests/opengl/data/general/cullface | 84 +- tests/opengl/data/general/cullsize | 114 +- tests/opengl/data/general/depthprepass | 56 +- tests/opengl/data/general/double_precision | 108 +- tests/opengl/data/general/light_off | 44 +- tests/opengl/data/general/msaa | 68 +- tests/opengl/data/general/multiview1 | 68 +- tests/opengl/data/general/multiview1ssaa | 72 +- tests/opengl/data/general/multiview2 | 80 +- tests/opengl/data/general/multiview3 | 64 +- tests/opengl/data/general/multiview4 | 52 +- tests/opengl/data/general/multiview5 | 52 +- tests/opengl/data/general/multiview6 | 106 +- tests/opengl/data/general/rendscale | 82 +- tests/opengl/data/general/stereo | 90 +- tests/opengl/data/general/tiles | 170 +- tests/opengl/data/geom/geom1 | 118 +- tests/opengl/data/geom/interior1 | 144 +- tests/opengl/data/geom/interior2 | 138 +- tests/opengl/data/geom/tess1 | 158 +- tests/opengl/data/hatch/bug28107 | 26 +- tests/opengl/data/hatch/bug28306 | 30 +- tests/opengl/data/hatch/bug31702 | 46 +- tests/opengl/data/lines/bug26790 | 32 +- tests/opengl/data/lines/bug30713 | 36 +- tests/opengl/data/lines/stipple_line1 | 36 +- tests/opengl/data/lines/stipple_line2 | 30 +- .../data/markers/bug23654_MarkersRecompute | 46 +- .../data/markers/bug24131_markers_bitmap | 16 +- .../opengl/data/markers/bug24131_markers_core | 16 +- .../opengl/data/markers/bug24131_markers_glsl | 16 +- .../data/markers/bug24131_markers_sprites | 16 +- tests/opengl/data/markers/bug31315 | 40 +- tests/opengl/data/raytrace/bug24130 | 114 +- tests/opengl/data/raytrace/bug24819 | 148 +- tests/opengl/data/raytrace/bug25201 | 106 +- tests/opengl/data/raytrace/bug25221 | 140 +- tests/opengl/data/raytrace/bug25833 | 92 +- tests/opengl/data/raytrace/bug26070 | 138 +- tests/opengl/data/raytrace/bug26404 | 60 +- tests/opengl/data/raytrace/bug26617 | 76 +- tests/opengl/data/raytrace/bug26676 | 56 +- tests/opengl/data/raytrace/bug26975 | 38 +- tests/opengl/data/raytrace/bug27083 | 36 +- tests/opengl/data/raytrace/bug27130 | 32 +- tests/opengl/data/raytrace/bug27337 | 36 +- tests/opengl/data/raytrace/bug29395 | 46 +- tests/opengl/data/raytrace/bug31279 | 36 +- tests/opengl/data/raytrace/connected | 66 +- tests/opengl/data/raytrace/dof_mono | 20 +- tests/opengl/data/raytrace/dof_stereo | 32 +- tests/opengl/data/raytrace/helmet | 50 +- tests/opengl/data/raytrace/msaa | 54 +- tests/opengl/data/raytrace/normal_map | 68 +- tests/opengl/data/raytrace/pbr_spheres | 86 +- tests/opengl/data/raytrace/plastic | 72 +- tests/opengl/data/raytrace/refraction | 154 +- tests/opengl/data/raytrace/sample_ball | 14 +- tests/opengl/data/raytrace/sample_ball_alpha | 26 +- tests/opengl/data/raytrace/sample_ball_iss | 40 +- tests/opengl/data/raytrace/sample_ball_wood | 26 +- tests/opengl/data/raytrace/sample_cube | 16 +- tests/opengl/data/raytrace/sample_cube_clamp | 44 +- .../opengl/data/raytrace/sample_cube_twosided | 38 +- tests/opengl/data/raytrace/sample_materials | 14 +- tests/opengl/data/raytrace/textures | 160 +- tests/opengl/data/raytrace/tiles | 166 +- tests/opengl/data/raytrace/tone_mapping | 28 +- tests/opengl/data/shaderprog/phong_box | 58 +- tests/opengl/data/shaderprog/phong_couple | 66 +- tests/opengl/data/shaderprog/phong_fuse | 62 +- tests/opengl/data/shaderprog/phong_fuse2 | 74 +- tests/opengl/data/shaderprog/phong_plastic | 64 +- tests/opengl/data/shaderprog/phong_sides | 68 +- tests/opengl/data/shaderprog/phong_views | 60 +- tests/opengl/data/shaderprog/texture_multi1 | 84 +- tests/opengl/data/shading/bug30102 | 26 +- tests/opengl/data/shading/distinguish_off | 74 +- tests/opengl/data/shading/flat_fuse1 | 44 +- tests/opengl/data/shading/gouraud_dir1 | 40 +- tests/opengl/data/shading/gouraud_dir2 | 48 +- tests/opengl/data/shading/gouraud_pos1 | 90 +- tests/opengl/data/shading/gouraud_spot1 | 90 +- tests/opengl/data/shading/pbr_attenuation | 146 +- tests/opengl/data/shading/pbr_spheres | 68 +- tests/opengl/data/shading/phong_dir1 | 44 +- tests/opengl/data/shading/phong_dir2 | 52 +- tests/opengl/data/shading/phong_pos1 | 108 +- tests/opengl/data/shading/phong_pos2 | 88 +- tests/opengl/data/shading/phong_pos3 | 92 +- tests/opengl/data/shading/phong_pos4 | 72 +- tests/opengl/data/shading/phong_spot1 | 106 +- tests/opengl/data/shading/shading_models | 136 +- tests/opengl/data/shading/vert_color | 152 +- tests/opengl/data/shadows/buggy | 64 +- tests/opengl/data/shadows/dir1 | 64 +- tests/opengl/data/shadows/dir2 | 72 +- tests/opengl/data/shadows/dir3 | 68 +- tests/opengl/data/shadows/dirhead | 66 +- tests/opengl/data/shadows/double_precision | 46 +- tests/opengl/data/shadows/spotlight | 78 +- tests/opengl/data/shadows/trsfpers | 42 +- tests/opengl/data/silhouette/outline1 | 48 +- tests/opengl/data/silhouette/outline2 | 62 +- tests/opengl/data/text/A1 | 24 +- tests/opengl/data/text/A2 | 168 +- tests/opengl/data/text/A3 | 52 +- tests/opengl/data/text/A4 | 82 +- tests/opengl/data/text/A5 | 88 +- tests/opengl/data/text/A6 | 90 +- tests/opengl/data/text/A7 | 76 +- tests/opengl/data/text/A8 | 154 +- tests/opengl/data/text/C1 | 52 +- tests/opengl/data/text/C2 | 74 +- tests/opengl/data/text/C3 | 58 +- tests/opengl/data/text/C4 | 52 +- tests/opengl/data/text/D1 | 62 +- tests/opengl/data/text/bug22149 | 36 +- tests/opengl/data/text/bug22796_1 | 24 +- tests/opengl/data/text/bug22796_2 | 24 +- tests/opengl/data/text/bug24555 | 58 +- tests/opengl/data/text/bug25121 | 50 +- tests/opengl/data/text/bug25732_1 | 54 +- tests/opengl/data/text/bug25732_2 | 46 +- tests/opengl/data/text/bug27624 | 24 +- tests/opengl/data/text/bug28099_text_core | 64 +- tests/opengl/data/text/bug30922 | 34 +- tests/opengl/data/text/bug31193 | 38 +- tests/opengl/data/text/tabs | 56 +- tests/opengl/data/text/text_wrapped | 72 +- tests/opengl/data/textures/alpha_mask | 80 +- tests/opengl/data/textures/bug23385 | 44 +- tests/opengl/data/textures/bug23747_1 | 58 +- tests/opengl/data/textures/bug23747_2 | 94 +- tests/opengl/data/textures/bug23804 | 46 +- tests/opengl/data/textures/bug23813 | 52 +- tests/opengl/data/textures/bug24376 | 46 +- tests/opengl/data/textures/bug24725 | 60 +- tests/opengl/data/textures/bug24930 | 128 +- .../opengl/data/textures/bug25544_graytexture | 48 +- tests/opengl/data/textures/bug26434 | 74 +- tests/opengl/data/textures/bug29651 | 30 +- tests/opengl/data/textures/bug30946 | 28 +- tests/opengl/data/textures/bug9517 | 30 +- tests/opengl/data/textures/cubemap_1x6 | 50 +- tests/opengl/data/textures/cubemap_2x3 | 42 +- tests/opengl/data/textures/cubemap_3x2 | 42 +- tests/opengl/data/textures/cubemap_6x1 | 32 +- tests/opengl/data/textures/cubemap_dds | 72 +- tests/opengl/data/textures/cubemap_ibl | 50 +- tests/opengl/data/textures/cubemap_jpg | 46 +- tests/opengl/data/textures/pbr_tangent_normal | 62 +- tests/opengl/data/textures/texture_3d | 120 +- tests/opengl/data/textures/texture_trsf | 80 +- tests/opengl/data/textures/texture_trsf2 | 86 +- tests/opengl/data/textures/texture_trsf3 | 96 +- tests/opengl/data/transparency/blend | 84 +- tests/opengl/data/transparency/bug28127 | 58 +- tests/opengl/data/transparency/bug32143 | 50 +- tests/opengl/data/transparency/highlight | 36 +- tests/opengl/data/transparency/ior | 102 +- tests/opengl/data/transparency/oit | 130 +- .../opengl/data/transparency/oit_osdtext_bug | 52 +- tests/opengl/data/transparency/transp1 | 140 +- tests/perf/de/bug29830_dir/script | 216 +- tests/xml/data/ocaf/A1 | 48 +- tests/xml/data/ocaf/A2 | 50 +- tests/xml/data/ocaf/A3 | 88 +- tests/xml/data/ocaf/A4 | 90 +- tests/xml/data/ocaf/A5 | 52 +- tests/xml/data/ocaf/A6 | 52 +- tests/xml/data/ocaf/A7 | 98 +- tests/xml/data/ocaf/A8 | 106 +- tests/xml/data/ocaf/A9 | 122 +- tests/xml/data/ocaf/B1 | 60 +- tests/xml/data/ocaf/B2 | 88 +- tests/xml/data/ocaf/B3 | 104 +- tests/xml/data/ocaf/B4 | 110 +- tests/xml/data/ocaf/B5 | 122 +- tests/xml/data/ocaf/B6 | 74 +- tests/xml/data/ocaf/B7 | 158 +- tests/xml/data/ocaf/B8 | 70 +- tests/xml/data/ocaf/B9 | 52 +- tests/xml/data/ocaf/C1 | 90 +- tests/xml/data/ocaf/C2 | 134 +- tests/xml/data/ocaf/C3 | 84 +- tests/xml/data/ocaf/C4 | 72 +- tests/xml/data/ocaf/C5 | 124 +- tests/xml/data/ocaf/C6 | 74 +- tests/xml/data/ocaf/C7 | 64 +- tests/xml/data/ocaf/C8 | 92 +- tests/xml/data/ocaf/C9 | 76 +- tests/xml/data/ocaf/D1 | 82 +- tests/xml/data/ocaf/D2 | 114 +- tests/xml/data/ocaf/D3 | 92 +- tests/xml/data/ocaf/D4 | 92 +- tests/xml/data/ocaf/D5 | 94 +- tests/xml/data/ocaf/D6 | 82 +- tests/xml/data/ocaf/D7 | 24 +- tests/xml/data/xcaf/A1 | 66 +- tests/xml/data/xcaf/A2 | 34 +- tests/xml/data/xcaf/A3 | 26 +- tests/xml/data/xcaf/A4 | 52 +- tests/xml/data/xcaf/A5 | 50 +- tests/xml/data/xcaf/A6 | 82 +- tests/xml/data/xcaf/A7 | 58 +- tests/xml/data/xcaf/A8 | 60 +- tests/xml/data/xcaf/A9 | 66 +- tools/DFBrowser/DFBrowser.qrc | 36 +- tools/MessageModel/MessageModel.qrc | 12 +- tools/ShapeView/ShapeView.qrc | 12 +- tools/TInspector/TInspector.qrc | 14 +- tools/TreeModel/TreeModel.qrc | 12 +- tools/VInspector/VInspector.qrc | 14 +- tools/View/View.qrc | 26 +- .../adm/cmake/occt_toolkit_prepare_tool.cmake | 10 +- 1508 files changed, 44084 insertions(+), 44084 deletions(-) diff --git a/.tgitconfig b/.tgitconfig index 36c3a07660..57c3705ec0 100644 --- a/.tgitconfig +++ b/.tgitconfig @@ -1,3 +1,3 @@ -[bugtraq] - url = https://tracker.dev.opencascade.org/view.php?id=%BUGID% - logregex = "(\\s)(00|#)\\d+(?!\\w)\n(\\d+)" +[bugtraq] + url = https://tracker.dev.opencascade.org/view.php?id=%BUGID% + logregex = "(\\s)(00|#)\\d+(?!\\w)\n(\\d+)" diff --git a/adm/CMPLRS b/adm/CMPLRS index cc38dddbc2..9d2f0c6a64 100644 --- a/adm/CMPLRS +++ b/adm/CMPLRS @@ -1,18 +1,18 @@ -wnt WOKSteps_exec_link DRAWEXE #WOKStep_EXELink(exec.tks) -lin WOKSteps_exec_link DRAWEXE #WOKStep_EXELink(exec.tks) - -wnt cmplrs_cxx f -D_CRT_SECURE_NO_DEPRECATE -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL -wnt cmplrs_cxx b -D_CRT_SECURE_NO_DEPRECATE -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL -wnt cmplrs_cxx Aspect (wnt cmplrs_cxx b) -D_AFXDLL -wnt cmplrs_cxx (wnt cmplrs_cxx b) -D_AFXDLL -D_AFXDLL - -wnt cmplrs_c f -D_CRT_SECURE_NO_DEPRECATE -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL -wnt cmplrs_c b -D_CRT_SECURE_NO_DEPRECATE -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL -wnt cmplrs_c NIS (wnt cmplrs_c b) -DSILGL -DSILGL_VRS=50 - -lin cmplrs_cxx f -DOCC_CONVERT_SIGNALS -D_GNU_SOURCE=1 -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL -lin cmplrs_cxx b -DOCC_CONVERT_SIGNALS -D_GNU_SOURCE=1 -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL - -lin cmplrs_c f -D_GNU_SOURCE=1 -fexceptions -lin cmplrs_c b -D_GNU_SOURCE=1 -fexceptions - +wnt WOKSteps_exec_link DRAWEXE #WOKStep_EXELink(exec.tks) +lin WOKSteps_exec_link DRAWEXE #WOKStep_EXELink(exec.tks) + +wnt cmplrs_cxx f -D_CRT_SECURE_NO_DEPRECATE -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL +wnt cmplrs_cxx b -D_CRT_SECURE_NO_DEPRECATE -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL +wnt cmplrs_cxx Aspect (wnt cmplrs_cxx b) -D_AFXDLL +wnt cmplrs_cxx (wnt cmplrs_cxx b) -D_AFXDLL -D_AFXDLL + +wnt cmplrs_c f -D_CRT_SECURE_NO_DEPRECATE -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL +wnt cmplrs_c b -D_CRT_SECURE_NO_DEPRECATE -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL +wnt cmplrs_c NIS (wnt cmplrs_c b) -DSILGL -DSILGL_VRS=50 + +lin cmplrs_cxx f -DOCC_CONVERT_SIGNALS -D_GNU_SOURCE=1 -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL +lin cmplrs_cxx b -DOCC_CONVERT_SIGNALS -D_GNU_SOURCE=1 -DHAVE_FREEIMAGE -DHAVE_TBB -DHAVE_OPENCL + +lin cmplrs_c f -D_GNU_SOURCE=1 -fexceptions +lin cmplrs_c b -D_GNU_SOURCE=1 -fexceptions + diff --git a/adm/MODULES b/adm/MODULES index f471f8dc8d..20c4abeef8 100644 --- a/adm/MODULES +++ b/adm/MODULES @@ -1,7 +1,7 @@ -FoundationClasses TKernel TKMath -ModelingData TKG2d TKG3d TKGeomBase TKBRep -ModelingAlgorithms TKGeomAlgo TKTopAlgo TKPrim TKBO TKBool TKHLR TKFillet TKOffset TKFeat TKMesh TKXMesh TKShHealing -Visualization TKService TKV3d TKOpenGl TKOpenGles TKMeshVS TKIVtk TKD3DHost -ApplicationFramework TKCDF TKLCAF TKCAF TKBinL TKXmlL TKBin TKXml TKStdL TKStd TKTObj TKBinTObj TKXmlTObj TKVCAF -DataExchange TKXDE TKXSBase TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP TKIGES TKXCAF TKXDEIGES TKXDESTEP TKSTL TKVRML TKXmlXCAF TKBinXCAF TKRWMesh TKXDECascade TKExpress ExpToCasExe -Draw TKDraw TKTopTest TKOpenGlTest TKOpenGlesTest TKD3DHostTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw TKIVtkDraw DRAWEXE +FoundationClasses TKernel TKMath +ModelingData TKG2d TKG3d TKGeomBase TKBRep +ModelingAlgorithms TKGeomAlgo TKTopAlgo TKPrim TKBO TKBool TKHLR TKFillet TKOffset TKFeat TKMesh TKXMesh TKShHealing +Visualization TKService TKV3d TKOpenGl TKOpenGles TKMeshVS TKIVtk TKD3DHost +ApplicationFramework TKCDF TKLCAF TKCAF TKBinL TKXmlL TKBin TKXml TKStdL TKStd TKTObj TKBinTObj TKXmlTObj TKVCAF +DataExchange TKXDE TKXSBase TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP TKIGES TKXCAF TKXDEIGES TKXDESTEP TKSTL TKVRML TKXmlXCAF TKBinXCAF TKRWMesh TKXDECascade TKExpress ExpToCasExe +Draw TKDraw TKTopTest TKOpenGlTest TKOpenGlesTest TKD3DHostTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw TKIVtkDraw DRAWEXE diff --git a/adm/RESOURCES b/adm/RESOURCES index a0dd9bf5be..5bbead05e2 100644 --- a/adm/RESOURCES +++ b/adm/RESOURCES @@ -1,12 +1,12 @@ -DrawResources -StdResource -SHMessage -Textures -Shaders -XRResources -XSMessage -XSTEPResource -XmlOcafResource -UnitsAPI/Units.dat -TObj/TObj.msg -BOPAlgo/BOPAlgo.msg +DrawResources +StdResource +SHMessage +Textures +Shaders +XRResources +XSMessage +XSTEPResource +XmlOcafResource +UnitsAPI/Units.dat +TObj/TObj.msg +BOPAlgo/BOPAlgo.msg diff --git a/adm/SAMPLES_RESOURCES b/adm/SAMPLES_RESOURCES index 42b0dea440..09612ef4a1 100644 --- a/adm/SAMPLES_RESOURCES +++ b/adm/SAMPLES_RESOURCES @@ -1,3 +1,3 @@ -qt/Common/res/ -qt/Tutorial/res/ +qt/Common/res/ +qt/Tutorial/res/ qt/OCCTOverview/res/ \ No newline at end of file diff --git a/adm/TOOLS b/adm/TOOLS index 57ddcfcc64..87af4ba0d0 100644 --- a/adm/TOOLS +++ b/adm/TOOLS @@ -1,4 +1,4 @@ -TModelingData TKShapeView TKMessageModel TKMessageView -TVisualization TKView TKVInspector -TApplicationFramework TKTreeModel TKTInspectorAPI TKDFBrowser +TModelingData TKShapeView TKMessageModel TKMessageView +TVisualization TKView TKVInspector +TApplicationFramework TKTreeModel TKTInspectorAPI TKDFBrowser TTool TKTInspector TKToolsDraw TInspectorEXE \ No newline at end of file diff --git a/adm/cmake/3rdparty_macro.cmake b/adm/cmake/3rdparty_macro.cmake index a3621f7621..2186aa510e 100644 --- a/adm/cmake/3rdparty_macro.cmake +++ b/adm/cmake/3rdparty_macro.cmake @@ -1,365 +1,365 @@ -## - -if(3RDPARTY_MACRO_ALREADY_INCLUDED) - return() -endif() -set(3RDPARTY_MACRO_ALREADY_INCLUDED 1) - - -macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME_DEBUG_SUFFIX) - - if (NOT DEFINED INSTALL_${PRODUCT_NAME} AND BUILD_SHARED_LIBS) - set (INSTALL_${PRODUCT_NAME} OFF CACHE BOOL "${INSTALL_${PRODUCT_NAME}_DESCR}") - endif() - - if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DIR) - set (3RDPARTY_${PRODUCT_NAME}_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME}") - endif() - - # include occt macros. compiler_bitness, os_wiht_bit, compiler - OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") - - # specify product folder in connectin with 3RDPARTY_DIR - if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - #CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_DIR 3RDPARTY_${PRODUCT_NAME}_DIR PATH "The directory containing ${PRODUCT_NAME}") - - if (NOT 3RDPARTY_${PRODUCT_NAME}_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") - FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" ${PRODUCT_NAME} ${PRODUCT_NAME}_DIR_NAME) - if (${PRODUCT_NAME}_DIR_NAME) - set (3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_DIR}/${${PRODUCT_NAME}_DIR_NAME}" CACHE PATH "The directory containing ${PRODUCT_NAME}" FORCE) - endif() - endif() - else() - #set (3RDPARTY_${PRODUCT_NAME}_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME}" FORCE) - endif() - - if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR) - set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" CACHE PATH "the path of ${HEADER_NAME}") - endif() - - separate_arguments (${LIBRARY_CSF_NAME}) - foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) - string (REPLACE "." "" LIBRARY_NAME "${LIBRARY_NAME}") - if (BUILD_SHARED_LIBS) - if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME} OR NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}") - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - endif() - - if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}) - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") - endif() - - if (WIN32) - if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} OR NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}") - set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} "" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) - endif() - endif() - - if (WIN32) - if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}) - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") - endif() - endif() - endif() - - # check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR - if (3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR PATH "the path to ${PRODUCT_NAME}") - if (BUILD_SHARED_LIBS) - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME} FILEPATH "the path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") - - if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}}") - get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}}" PATH) - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - else() - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") - endif() - - if (WIN32) - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} FILEPATH "the path to ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") - - if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}}") - get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}}" PATH) - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) - else() - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") - endif() - endif() - endif() - endif() - endforeach() - # header - if (NOT 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}") - - # set 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR - set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "the path to ${HEADER_NAME}" FORCE) - - if (3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") - find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR NAMES ${HEADER_NAME} - PATHS ${3RDPARTY_${PRODUCT_NAME}_DIR} - PATH_SUFFIXES include inc headers - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR NAMES ${HEADER_NAME} - PATH_SUFFIXES include inc headers - CMAKE_FIND_ROOT_PATH_BOTH) - endif() - endif() - - if (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}") - else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR) - - set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" CACHE FILEPATH "The path to ${HEADER_NAME}" FORCE) - endif() - - foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) - string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") -# if (BUILD_SHARED_LIBS) - # library - if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}") - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a) - - set (${PRODUCT_NAME}_PATH_SUFFIXES lib) - if (WIN32) - set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} win${COMPILER_BITNESS}/${COMPILER}/lib) - set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} lib/win${COMPILER_BITNESS}) - endif() - if (ANDROID) - set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} libs/${ANDROID_ABI}) - endif() - if(UNIX AND NOT APPLE AND NOT ANDROID) - set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} lib/linux${COMPILER_BITNESS}) - endif() - - # set 3RDPARTY_${PRODUCT_NAME}_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_LIBRARY - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} "3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - - if ((3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") OR (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}")) - find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} - PATHS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}" "${3RDPARTY_${PRODUCT_NAME}_DIR}" - PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - if ("${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}-NOTFOUND") - # find directory recursive - FIND_SUBDIRECTORY (${3RDPARTY_${PRODUCT_NAME}_DIR} "${${PRODUCT_NAME}_PATH_SUFFIXES}" SUBDIR_NAME) - if (NOT "${SUBDIR_NAME}" STREQUAL "") - find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME_SUFFIX} - PATHS "${SUBDIR_NAME}" - PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - endif() - endif() - else() - find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} - PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH) - endif() - - if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}") - get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}" PATH) - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - else() - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - endif() - endif() - - if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") - else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}) - - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} "" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - endif() - - # shared library - if (WIN32) - if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}") - - set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) - - # set 3RDPARTY_${PRODUCT_NAME}_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_DLL - set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} "3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) - - if ((3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") OR (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}")) - find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} - PATHS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}" "${3RDPARTY_${PRODUCT_NAME}_DIR}" - PATH_SUFFIXES bin win${COMPILER_BITNESS}/${COMPILER}/bin bin/win${COMPILER_BITNESS} - NO_DEFAULT_PATH) - if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} STREQUAL "3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}-NOTFOUND") - # find directory recursive - FIND_SUBDIRECTORY (${3RDPARTY_${PRODUCT_NAME}_DIR} bin SUBDIR_NAME) - if (NOT "${SUBDIR_NAME}" STREQUAL "") - find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME_SUFFIX} - PATHS "${SUBDIR_NAME}" - PATH_SUFFIXES bin - NO_DEFAULT_PATH) - endif() - endif() - else() - find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} PATH_SUFFIXES bin) - endif() - - if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}") - get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" PATH) - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - else() - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) - - set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} "" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) - endif() - endif() - - if (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} OR EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}") - list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}") - else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}) - endif() - endif() - - if (WIN32) - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIRS "") - else() - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "") - endif() - - foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) - string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") - if (WIN32) - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}};${3RDPARTY_${PRODUCT_NAME}_DLL_DIRS}") - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") - else() - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}:${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS}") - endif() - endforeach() - - set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "") - - if (INSTALL_${PRODUCT_NAME}) - OCCT_MAKE_OS_WITH_BITNESS() - OCCT_MAKE_COMPILER_SHORT_NAME() - set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "") - - if (WIN32) - if (SINGLE_GENERATOR) - install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" DESTINATION "${INSTALL_DIR_BIN}") - else() - install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_BIN}") - install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_BIN}i") - install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_BIN}d") - endif() - else() - get_filename_component(ABS_PATH ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}} REALPATH) - - if ("${PRODUCT_NAME}" STREQUAL "FREEIMAGE") - get_filename_component(FREEIMLIB ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}} NAME) - - if (SINGLE_GENERATOR) - install (FILES "${ABS_PATH}" DESTINATION "${INSTALL_DIR_LIB}" RENAME ${FREEIMLIB}.3) - else() - install (FILES "${ABS_PATH}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_LIB}" - RENAME ${FREEIMLIB}.3) - install (FILES "${ABS_PATH}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_LIB}i" - RENAME ${FREEIMLIB}.3) - install (FILES "${ABS_PATH}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_LIB}d" - RENAME ${FREEIMLIB}.3) - endif() - endif() - - endif() - else() - # the library directory for using by the executable - foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) - string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") - if (WIN32) - set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}};${USED_3RDPARTY_${PRODUCT_NAME}_DIRS}") - else() - set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}:${USED_3RDPARTY_${PRODUCT_NAME}_DIRS}") - endif() - endforeach() - if (WIN32) - set (USED_3RDPARTY_${PRODUCT_NAME}_DIR ${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}) - endif() - endif() - - mark_as_advanced (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}) -# endif() - endforeach() -endmacro() - -macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME) - if (3RDPARTY_${LIBNAME}_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_DIR}") - # include dir - set (DOES_PATH_CONTAIN FALSE) - if (3RDPARTY_${LIBNAME}_INCLUDE_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}") - string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}") - endif() - if (NOT DOES_PATH_CONTAIN) - set (3RDPARTY_${LIBNAME}_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of ${LIBNAME}" FORCE) - endif() - - if (BUILD_SHARED_LIBS) - # library dir - set (DOES_PATH_CONTAIN FALSE) - if (3RDPARTY_${LIBNAME}_LIBRARY_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}") - string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}") - endif() - if (NOT DOES_PATH_CONTAIN) - set (3RDPARTY_${LIBNAME}_LIBRARY_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} library" FORCE) - endif() - - # shared library dir - if (WIN32) - set (DOES_PATH_CONTAIN FALSE) - if (3RDPARTY_${LIBNAME}_DLL_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_DLL_DIR}") - string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_DLL_DIR}") - endif() - if (NOT DOES_PATH_CONTAIN) - set (3RDPARTY_${LIBNAME}_DLL_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} shared library" FORCE) - endif() - endif() - endif() - endif() - - if (BUILD_SHARED_LIBS) - # check library - set (DOES_PATH_CONTAIN FALSE) - if (3RDPARTY_${LIBNAME}_LIBRARY_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}") - if (3RDPARTY_${LIBNAME}_LIBRARY AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY}") - string (REGEX MATCH "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_LIBRARY}") - endif() - endif() - if (NOT DOES_PATH_CONTAIN) - set (3RDPARTY_${LIBNAME}_LIBRARY "" CACHE FILEPATH "${LIBNAME} library" FORCE) - endif() - - # check shared library - if (WIN32) - set (DOES_PATH_CONTAIN FALSE) - if (3RDPARTY_${LIBNAME}_DLL_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_DLL_DIR}") - if (3RDPARTY_${LIBNAME}_DLL AND EXISTS "${3RDPARTY_${LIBNAME}_DLL}") - string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DLL_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_DLL}") - endif() - endif() - if (NOT DOES_PATH_CONTAIN) - set (3RDPARTY_${LIBNAME}_DLL "" CACHE FILEPATH "${LIBNAME} shared library" FORCE) - endif() - endif() - endif() -endmacro() +## + +if(3RDPARTY_MACRO_ALREADY_INCLUDED) + return() +endif() +set(3RDPARTY_MACRO_ALREADY_INCLUDED 1) + + +macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME_DEBUG_SUFFIX) + + if (NOT DEFINED INSTALL_${PRODUCT_NAME} AND BUILD_SHARED_LIBS) + set (INSTALL_${PRODUCT_NAME} OFF CACHE BOOL "${INSTALL_${PRODUCT_NAME}_DESCR}") + endif() + + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DIR) + set (3RDPARTY_${PRODUCT_NAME}_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME}") + endif() + + # include occt macros. compiler_bitness, os_wiht_bit, compiler + OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") + + # specify product folder in connectin with 3RDPARTY_DIR + if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") + #CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_DIR 3RDPARTY_${PRODUCT_NAME}_DIR PATH "The directory containing ${PRODUCT_NAME}") + + if (NOT 3RDPARTY_${PRODUCT_NAME}_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") + FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" ${PRODUCT_NAME} ${PRODUCT_NAME}_DIR_NAME) + if (${PRODUCT_NAME}_DIR_NAME) + set (3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_DIR}/${${PRODUCT_NAME}_DIR_NAME}" CACHE PATH "The directory containing ${PRODUCT_NAME}" FORCE) + endif() + endif() + else() + #set (3RDPARTY_${PRODUCT_NAME}_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME}" FORCE) + endif() + + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR) + set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" CACHE PATH "the path of ${HEADER_NAME}") + endif() + + separate_arguments (${LIBRARY_CSF_NAME}) + foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) + string (REPLACE "." "" LIBRARY_NAME "${LIBRARY_NAME}") + if (BUILD_SHARED_LIBS) + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME} OR NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}") + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + endif() + + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}) + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") + endif() + + if (WIN32) + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} OR NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}") + set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} "" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + endif() + endif() + + if (WIN32) + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") + endif() + endif() + endif() + + # check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR + if (3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR PATH "the path to ${PRODUCT_NAME}") + if (BUILD_SHARED_LIBS) + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME} FILEPATH "the path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") + + if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}}") + get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}}" PATH) + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + else() + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") + endif() + + if (WIN32) + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} FILEPATH "the path to ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") + + if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}}") + get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}}" PATH) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + else() + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") + endif() + endif() + endif() + endif() + endforeach() + # header + if (NOT 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}") + + # set 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR + set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "the path to ${HEADER_NAME}" FORCE) + + if (3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") + find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR NAMES ${HEADER_NAME} + PATHS ${3RDPARTY_${PRODUCT_NAME}_DIR} + PATH_SUFFIXES include inc headers + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + else() + find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR NAMES ${HEADER_NAME} + PATH_SUFFIXES include inc headers + CMAKE_FIND_ROOT_PATH_BOTH) + endif() + endif() + + if (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}") + else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR) + + set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" CACHE FILEPATH "The path to ${HEADER_NAME}" FORCE) + endif() + + foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) + string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") +# if (BUILD_SHARED_LIBS) + # library + if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}") + set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a) + + set (${PRODUCT_NAME}_PATH_SUFFIXES lib) + if (WIN32) + set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} win${COMPILER_BITNESS}/${COMPILER}/lib) + set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} lib/win${COMPILER_BITNESS}) + endif() + if (ANDROID) + set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} libs/${ANDROID_ABI}) + endif() + if(UNIX AND NOT APPLE AND NOT ANDROID) + set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} lib/linux${COMPILER_BITNESS}) + endif() + + # set 3RDPARTY_${PRODUCT_NAME}_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_LIBRARY + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} "3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + + if ((3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") OR (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}")) + find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} + PATHS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}" "${3RDPARTY_${PRODUCT_NAME}_DIR}" + PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + if ("${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}-NOTFOUND") + # find directory recursive + FIND_SUBDIRECTORY (${3RDPARTY_${PRODUCT_NAME}_DIR} "${${PRODUCT_NAME}_PATH_SUFFIXES}" SUBDIR_NAME) + if (NOT "${SUBDIR_NAME}" STREQUAL "") + find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME_SUFFIX} + PATHS "${SUBDIR_NAME}" + PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + endif() + endif() + else() + find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} + PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH) + endif() + + if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}") + get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}" PATH) + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + else() + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + endif() + endif() + + if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}) + + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} "" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + endif() + + # shared library + if (WIN32) + if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}") + + set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) + + # set 3RDPARTY_${PRODUCT_NAME}_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_DLL + set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} "3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + + if ((3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") OR (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}")) + find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} + PATHS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}" "${3RDPARTY_${PRODUCT_NAME}_DIR}" + PATH_SUFFIXES bin win${COMPILER_BITNESS}/${COMPILER}/bin bin/win${COMPILER_BITNESS} + NO_DEFAULT_PATH) + if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} STREQUAL "3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}-NOTFOUND") + # find directory recursive + FIND_SUBDIRECTORY (${3RDPARTY_${PRODUCT_NAME}_DIR} bin SUBDIR_NAME) + if (NOT "${SUBDIR_NAME}" STREQUAL "") + find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME_SUFFIX} + PATHS "${SUBDIR_NAME}" + PATH_SUFFIXES bin + NO_DEFAULT_PATH) + endif() + endif() + else() + find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} PATH_SUFFIXES bin) + endif() + + if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}") + get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" PATH) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + else() + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + + set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} "" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + endif() + endif() + + if (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} OR EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}") + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}") + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}) + endif() + endif() + + if (WIN32) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIRS "") + else() + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "") + endif() + + foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) + string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") + if (WIN32) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}};${3RDPARTY_${PRODUCT_NAME}_DLL_DIRS}") + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") + else() + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}:${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS}") + endif() + endforeach() + + set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "") + + if (INSTALL_${PRODUCT_NAME}) + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "") + + if (WIN32) + if (SINGLE_GENERATOR) + install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" DESTINATION "${INSTALL_DIR_BIN}") + else() + install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_BIN}") + install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_BIN}i") + install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_BIN}d") + endif() + else() + get_filename_component(ABS_PATH ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}} REALPATH) + + if ("${PRODUCT_NAME}" STREQUAL "FREEIMAGE") + get_filename_component(FREEIMLIB ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}} NAME) + + if (SINGLE_GENERATOR) + install (FILES "${ABS_PATH}" DESTINATION "${INSTALL_DIR_LIB}" RENAME ${FREEIMLIB}.3) + else() + install (FILES "${ABS_PATH}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_LIB}" + RENAME ${FREEIMLIB}.3) + install (FILES "${ABS_PATH}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_LIB}i" + RENAME ${FREEIMLIB}.3) + install (FILES "${ABS_PATH}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_LIB}d" + RENAME ${FREEIMLIB}.3) + endif() + endif() + + endif() + else() + # the library directory for using by the executable + foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) + string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") + if (WIN32) + set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}};${USED_3RDPARTY_${PRODUCT_NAME}_DIRS}") + else() + set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}:${USED_3RDPARTY_${PRODUCT_NAME}_DIRS}") + endif() + endforeach() + if (WIN32) + set (USED_3RDPARTY_${PRODUCT_NAME}_DIR ${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}) + endif() + endif() + + mark_as_advanced (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}) +# endif() + endforeach() +endmacro() + +macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME) + if (3RDPARTY_${LIBNAME}_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_DIR}") + # include dir + set (DOES_PATH_CONTAIN FALSE) + if (3RDPARTY_${LIBNAME}_INCLUDE_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}") + string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}") + endif() + if (NOT DOES_PATH_CONTAIN) + set (3RDPARTY_${LIBNAME}_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of ${LIBNAME}" FORCE) + endif() + + if (BUILD_SHARED_LIBS) + # library dir + set (DOES_PATH_CONTAIN FALSE) + if (3RDPARTY_${LIBNAME}_LIBRARY_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}") + string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}") + endif() + if (NOT DOES_PATH_CONTAIN) + set (3RDPARTY_${LIBNAME}_LIBRARY_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} library" FORCE) + endif() + + # shared library dir + if (WIN32) + set (DOES_PATH_CONTAIN FALSE) + if (3RDPARTY_${LIBNAME}_DLL_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_DLL_DIR}") + string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_DLL_DIR}") + endif() + if (NOT DOES_PATH_CONTAIN) + set (3RDPARTY_${LIBNAME}_DLL_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} shared library" FORCE) + endif() + endif() + endif() + endif() + + if (BUILD_SHARED_LIBS) + # check library + set (DOES_PATH_CONTAIN FALSE) + if (3RDPARTY_${LIBNAME}_LIBRARY_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}") + if (3RDPARTY_${LIBNAME}_LIBRARY AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY}") + string (REGEX MATCH "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_LIBRARY}") + endif() + endif() + if (NOT DOES_PATH_CONTAIN) + set (3RDPARTY_${LIBNAME}_LIBRARY "" CACHE FILEPATH "${LIBNAME} library" FORCE) + endif() + + # check shared library + if (WIN32) + set (DOES_PATH_CONTAIN FALSE) + if (3RDPARTY_${LIBNAME}_DLL_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_DLL_DIR}") + if (3RDPARTY_${LIBNAME}_DLL AND EXISTS "${3RDPARTY_${LIBNAME}_DLL}") + string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DLL_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_DLL}") + endif() + endif() + if (NOT DOES_PATH_CONTAIN) + set (3RDPARTY_${LIBNAME}_DLL "" CACHE FILEPATH "${LIBNAME} shared library" FORCE) + endif() + endif() + endif() +endmacro() diff --git a/adm/cmake/bison.cmake b/adm/cmake/bison.cmake index 83d8da5466..33ed941962 100644 --- a/adm/cmake/bison.cmake +++ b/adm/cmake/bison.cmake @@ -1,25 +1,25 @@ -# bison - -# execute FindBISON script by "find_package (Bison)" is required to define BISON_TARGET macro - -# delete obsolete 3RDPARTY_BISON_EXECUTABLE cache variable (not used anymore) -unset (3RDPARTY_BISON_EXECUTABLE CACHE) - -# delete BISON_EXECUTABLE cache variable if it is empty, otherwise find_package will fail -# without reasonable diagnostic -if (NOT BISON_EXECUTABLE OR NOT EXISTS "${BISON_EXECUTABLE}") - unset (BISON_EXECUTABLE CACHE) -endif() - -# Add paths to 3rdparty subfolders containing name "bison" to CMAKE_PROGRAM_PATH variable to make -# these paths searhed by find_package -if (3RDPARTY_DIR) - file (GLOB BISON_PATHS LIST_DIRECTORIES true "${3RDPARTY_DIR}/*bison*/") - foreach (candidate_path ${BISON_PATHS}) - if (IS_DIRECTORY ${candidate_path}) - list (APPEND CMAKE_PROGRAM_PATH ${candidate_path}) - endif() - endforeach() -endif() - -find_package (BISON 3.7.4) +# bison + +# execute FindBISON script by "find_package (Bison)" is required to define BISON_TARGET macro + +# delete obsolete 3RDPARTY_BISON_EXECUTABLE cache variable (not used anymore) +unset (3RDPARTY_BISON_EXECUTABLE CACHE) + +# delete BISON_EXECUTABLE cache variable if it is empty, otherwise find_package will fail +# without reasonable diagnostic +if (NOT BISON_EXECUTABLE OR NOT EXISTS "${BISON_EXECUTABLE}") + unset (BISON_EXECUTABLE CACHE) +endif() + +# Add paths to 3rdparty subfolders containing name "bison" to CMAKE_PROGRAM_PATH variable to make +# these paths searhed by find_package +if (3RDPARTY_DIR) + file (GLOB BISON_PATHS LIST_DIRECTORIES true "${3RDPARTY_DIR}/*bison*/") + foreach (candidate_path ${BISON_PATHS}) + if (IS_DIRECTORY ${candidate_path}) + list (APPEND CMAKE_PROGRAM_PATH ${candidate_path}) + endif() + endforeach() +endif() + +find_package (BISON 3.7.4) diff --git a/adm/cmake/cotire.cmake b/adm/cmake/cotire.cmake index acdca71a9f..09e5db4a9a 100644 --- a/adm/cmake/cotire.cmake +++ b/adm/cmake/cotire.cmake @@ -1,4212 +1,4212 @@ -# - cotire (compile time reducer) -# -# See the cotire manual for usage hints. -# -#============================================================================= -# Copyright 2012-2018 Sascha Kratky -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -#============================================================================= - -if(__COTIRE_INCLUDED) - return() -endif() -set(__COTIRE_INCLUDED TRUE) - -# call cmake_minimum_required, but prevent modification of the CMake policy stack in include mode -# cmake_minimum_required also sets the policy version as a side effect, which we have to avoid -if (NOT CMAKE_SCRIPT_MODE_FILE) - cmake_policy(PUSH) -endif() -cmake_minimum_required(VERSION 2.8.12) -if (NOT CMAKE_SCRIPT_MODE_FILE) - cmake_policy(POP) -endif() - -set (COTIRE_CMAKE_MODULE_FILE "${CMAKE_CURRENT_LIST_FILE}") -set (COTIRE_CMAKE_MODULE_VERSION "1.8.1") - -# activate select policies -if (POLICY CMP0025) - # Compiler id for Apple Clang is now AppleClang - cmake_policy(SET CMP0025 NEW) -endif() - -if (POLICY CMP0026) - # disallow use of the LOCATION target property - cmake_policy(SET CMP0026 NEW) -endif() - -if (POLICY CMP0038) - # targets may not link directly to themselves - cmake_policy(SET CMP0038 NEW) -endif() - -if (POLICY CMP0039) - # utility targets may not have link dependencies - cmake_policy(SET CMP0039 NEW) -endif() - -if (POLICY CMP0040) - # target in the TARGET signature of add_custom_command() must exist - cmake_policy(SET CMP0040 NEW) -endif() - -if (POLICY CMP0045) - # error on non-existent target in get_target_property - cmake_policy(SET CMP0045 NEW) -endif() - -if (POLICY CMP0046) - # error on non-existent dependency in add_dependencies - cmake_policy(SET CMP0046 NEW) -endif() - -if (POLICY CMP0049) - # do not expand variables in target source entries - cmake_policy(SET CMP0049 NEW) -endif() - -if (POLICY CMP0050) - # disallow add_custom_command SOURCE signatures - cmake_policy(SET CMP0050 NEW) -endif() - -if (POLICY CMP0051) - # include TARGET_OBJECTS expressions in a target's SOURCES property - cmake_policy(SET CMP0051 NEW) -endif() - -if (POLICY CMP0053) - # simplify variable reference and escape sequence evaluation - cmake_policy(SET CMP0053 NEW) -endif() - -if (POLICY CMP0054) - # only interpret if() arguments as variables or keywords when unquoted - cmake_policy(SET CMP0054 NEW) -endif() - -if (POLICY CMP0055) - # strict checking for break() command - cmake_policy(SET CMP0055 NEW) -endif() - -include(CMakeParseArguments) -include(ProcessorCount) - -function (cotire_get_configuration_types _configsVar) - set (_configs "") - if (CMAKE_CONFIGURATION_TYPES) - list (APPEND _configs ${CMAKE_CONFIGURATION_TYPES}) - endif() - if (CMAKE_BUILD_TYPE) - list (APPEND _configs "${CMAKE_BUILD_TYPE}") - endif() - if (_configs) - list (REMOVE_DUPLICATES _configs) - set (${_configsVar} ${_configs} PARENT_SCOPE) - else() - set (${_configsVar} "None" PARENT_SCOPE) - endif() -endfunction() - -function (cotire_get_source_file_extension _sourceFile _extVar) - # get_filename_component returns extension from first occurrence of . in file name - # this function computes the extension from last occurrence of . in file name - string (FIND "${_sourceFile}" "." _index REVERSE) - if (_index GREATER -1) - math (EXPR _index "${_index} + 1") - string (SUBSTRING "${_sourceFile}" ${_index} -1 _sourceExt) - else() - set (_sourceExt "") - endif() - set (${_extVar} "${_sourceExt}" PARENT_SCOPE) -endfunction() - -macro (cotire_check_is_path_relative_to _path _isRelativeVar) - set (${_isRelativeVar} FALSE) - if (IS_ABSOLUTE "${_path}") - foreach (_dir ${ARGN}) - file (RELATIVE_PATH _relPath "${_dir}" "${_path}") - if (NOT _relPath OR (NOT IS_ABSOLUTE "${_relPath}" AND NOT "${_relPath}" MATCHES "^\\.\\.")) - set (${_isRelativeVar} TRUE) - break() - endif() - endforeach() - endif() -endmacro() - -function (cotire_filter_language_source_files _language _target _sourceFilesVar _excludedSourceFilesVar _cotiredSourceFilesVar) - if (CMAKE_${_language}_SOURCE_FILE_EXTENSIONS) - set (_languageExtensions "${CMAKE_${_language}_SOURCE_FILE_EXTENSIONS}") - else() - set (_languageExtensions "") - endif() - if (CMAKE_${_language}_IGNORE_EXTENSIONS) - set (_ignoreExtensions "${CMAKE_${_language}_IGNORE_EXTENSIONS}") - else() - set (_ignoreExtensions "") - endif() - if (COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS) - set (_excludeExtensions "${COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS}") - else() - set (_excludeExtensions "") - endif() - if (COTIRE_DEBUG AND _languageExtensions) - message (STATUS "${_language} source file extensions: ${_languageExtensions}") - endif() - if (COTIRE_DEBUG AND _ignoreExtensions) - message (STATUS "${_language} ignore extensions: ${_ignoreExtensions}") - endif() - if (COTIRE_DEBUG AND _excludeExtensions) - message (STATUS "${_language} exclude extensions: ${_excludeExtensions}") - endif() - if (CMAKE_VERSION VERSION_LESS "3.1.0") - set (_allSourceFiles ${ARGN}) - else() - # as of CMake 3.1 target sources may contain generator expressions - # since we cannot obtain required property information about source files added - # through generator expressions at configure time, we filter them out - string (GENEX_STRIP "${ARGN}" _allSourceFiles) - endif() - set (_filteredSourceFiles "") - set (_excludedSourceFiles "") - foreach (_sourceFile ${_allSourceFiles}) - get_source_file_property(_sourceIsHeaderOnly "${_sourceFile}" HEADER_FILE_ONLY) - get_source_file_property(_sourceIsExternal "${_sourceFile}" EXTERNAL_OBJECT) - get_source_file_property(_sourceIsSymbolic "${_sourceFile}" SYMBOLIC) - if (NOT _sourceIsHeaderOnly AND NOT _sourceIsExternal AND NOT _sourceIsSymbolic) - cotire_get_source_file_extension("${_sourceFile}" _sourceExt) - if (_sourceExt) - list (FIND _ignoreExtensions "${_sourceExt}" _ignoreIndex) - if (_ignoreIndex LESS 0) - list (FIND _excludeExtensions "${_sourceExt}" _excludeIndex) - if (_excludeIndex GREATER -1) - list (APPEND _excludedSourceFiles "${_sourceFile}") - else() - list (FIND _languageExtensions "${_sourceExt}" _sourceIndex) - if (_sourceIndex GREATER -1) - # consider source file unless it is excluded explicitly - get_source_file_property(_sourceIsExcluded "${_sourceFile}" COTIRE_EXCLUDED) - if (_sourceIsExcluded) - list (APPEND _excludedSourceFiles "${_sourceFile}") - else() - list (APPEND _filteredSourceFiles "${_sourceFile}") - endif() - else() - get_source_file_property(_sourceLanguage "${_sourceFile}" LANGUAGE) - if ("${_sourceLanguage}" STREQUAL "${_language}") - # add to excluded sources, if file is not ignored and has correct language without having the correct extension - list (APPEND _excludedSourceFiles "${_sourceFile}") - endif() - endif() - endif() - endif() - endif() - endif() - endforeach() - # separate filtered source files from already cotired ones - # the COTIRE_TARGET property of a source file may be set while a target is being processed by cotire - set (_sourceFiles "") - set (_cotiredSourceFiles "") - foreach (_sourceFile ${_filteredSourceFiles}) - get_source_file_property(_sourceIsCotired "${_sourceFile}" COTIRE_TARGET) - if (_sourceIsCotired) - list (APPEND _cotiredSourceFiles "${_sourceFile}") - else() - get_source_file_property(_sourceCompileFlags "${_sourceFile}" COMPILE_FLAGS) - if (_sourceCompileFlags) - # add to excluded sources, if file has custom compile flags - list (APPEND _excludedSourceFiles "${_sourceFile}") - else() - get_source_file_property(_sourceCompileOptions "${_sourceFile}" COMPILE_OPTIONS) - if (_sourceCompileOptions) - # add to excluded sources, if file has list of custom compile options - list (APPEND _excludedSourceFiles "${_sourceFile}") - else() - list (APPEND _sourceFiles "${_sourceFile}") - endif() - endif() - endif() - endforeach() - if (COTIRE_DEBUG) - if (_sourceFiles) - message (STATUS "Filtered ${_target} ${_language} sources: ${_sourceFiles}") - endif() - if (_excludedSourceFiles) - message (STATUS "Excluded ${_target} ${_language} sources: ${_excludedSourceFiles}") - endif() - if (_cotiredSourceFiles) - message (STATUS "Cotired ${_target} ${_language} sources: ${_cotiredSourceFiles}") - endif() - endif() - set (${_sourceFilesVar} ${_sourceFiles} PARENT_SCOPE) - set (${_excludedSourceFilesVar} ${_excludedSourceFiles} PARENT_SCOPE) - set (${_cotiredSourceFilesVar} ${_cotiredSourceFiles} PARENT_SCOPE) -endfunction() - -function (cotire_get_objects_with_property_on _filteredObjectsVar _property _type) - set (_filteredObjects "") - foreach (_object ${ARGN}) - get_property(_isSet ${_type} "${_object}" PROPERTY ${_property} SET) - if (_isSet) - get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) - if (_propertyValue) - list (APPEND _filteredObjects "${_object}") - endif() - endif() - endforeach() - set (${_filteredObjectsVar} ${_filteredObjects} PARENT_SCOPE) -endfunction() - -function (cotire_get_objects_with_property_off _filteredObjectsVar _property _type) - set (_filteredObjects "") - foreach (_object ${ARGN}) - get_property(_isSet ${_type} "${_object}" PROPERTY ${_property} SET) - if (_isSet) - get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) - if (NOT _propertyValue) - list (APPEND _filteredObjects "${_object}") - endif() - endif() - endforeach() - set (${_filteredObjectsVar} ${_filteredObjects} PARENT_SCOPE) -endfunction() - -function (cotire_get_source_file_property_values _valuesVar _property) - set (_values "") - foreach (_sourceFile ${ARGN}) - get_source_file_property(_propertyValue "${_sourceFile}" ${_property}) - if (_propertyValue) - list (APPEND _values "${_propertyValue}") - endif() - endforeach() - set (${_valuesVar} ${_values} PARENT_SCOPE) -endfunction() - -function (cotire_resolve_config_properties _configurations _propertiesVar) - set (_properties "") - foreach (_property ${ARGN}) - if ("${_property}" MATCHES "") - foreach (_config ${_configurations}) - string (TOUPPER "${_config}" _upperConfig) - string (REPLACE "" "${_upperConfig}" _configProperty "${_property}") - list (APPEND _properties ${_configProperty}) - endforeach() - else() - list (APPEND _properties ${_property}) - endif() - endforeach() - set (${_propertiesVar} ${_properties} PARENT_SCOPE) -endfunction() - -function (cotire_copy_set_properties _configurations _type _source _target) - cotire_resolve_config_properties("${_configurations}" _properties ${ARGN}) - foreach (_property ${_properties}) - get_property(_isSet ${_type} ${_source} PROPERTY ${_property} SET) - if (_isSet) - get_property(_propertyValue ${_type} ${_source} PROPERTY ${_property}) - set_property(${_type} ${_target} PROPERTY ${_property} "${_propertyValue}") - endif() - endforeach() -endfunction() - -function (cotire_get_target_usage_requirements _target _config _targetRequirementsVar) - set (_targetRequirements "") - get_target_property(_librariesToProcess ${_target} LINK_LIBRARIES) - while (_librariesToProcess) - # remove from head - list (GET _librariesToProcess 0 _library) - list (REMOVE_AT _librariesToProcess 0) - if (_library MATCHES "^\\$<\\$:([A-Za-z0-9_:-]+)>$") - set (_library "${CMAKE_MATCH_1}") - elseif (_config STREQUAL "None" AND _library MATCHES "^\\$<\\$:([A-Za-z0-9_:-]+)>$") - set (_library "${CMAKE_MATCH_1}") - endif() - if (TARGET ${_library}) - list (FIND _targetRequirements ${_library} _index) - if (_index LESS 0) - list (APPEND _targetRequirements ${_library}) - # BFS traversal of transitive libraries - get_target_property(_libraries ${_library} INTERFACE_LINK_LIBRARIES) - if (_libraries) - list (APPEND _librariesToProcess ${_libraries}) - list (REMOVE_DUPLICATES _librariesToProcess) - endif() - endif() - endif() - endwhile() - set (${_targetRequirementsVar} ${_targetRequirements} PARENT_SCOPE) -endfunction() - -function (cotire_filter_compile_flags _language _flagFilter _matchedOptionsVar _unmatchedOptionsVar) - if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") - set (_flagPrefix "[/-]") - else() - set (_flagPrefix "--?") - endif() - set (_optionFlag "") - set (_matchedOptions "") - set (_unmatchedOptions "") - foreach (_compileFlag ${ARGN}) - if (_compileFlag) - if (_optionFlag AND NOT "${_compileFlag}" MATCHES "^${_flagPrefix}") - # option with separate argument - list (APPEND _matchedOptions "${_compileFlag}") - set (_optionFlag "") - elseif ("${_compileFlag}" MATCHES "^(${_flagPrefix})(${_flagFilter})$") - # remember option - set (_optionFlag "${CMAKE_MATCH_2}") - elseif ("${_compileFlag}" MATCHES "^(${_flagPrefix})(${_flagFilter})(.+)$") - # option with joined argument - list (APPEND _matchedOptions "${CMAKE_MATCH_3}") - set (_optionFlag "") - else() - # flush remembered option - if (_optionFlag) - list (APPEND _matchedOptions "${_optionFlag}") - set (_optionFlag "") - endif() - # add to unfiltered options - list (APPEND _unmatchedOptions "${_compileFlag}") - endif() - endif() - endforeach() - if (_optionFlag) - list (APPEND _matchedOptions "${_optionFlag}") - endif() - if (COTIRE_DEBUG AND _matchedOptions) - message (STATUS "Filter ${_flagFilter} matched: ${_matchedOptions}") - endif() - if (COTIRE_DEBUG AND _unmatchedOptions) - message (STATUS "Filter ${_flagFilter} unmatched: ${_unmatchedOptions}") - endif() - set (${_matchedOptionsVar} ${_matchedOptions} PARENT_SCOPE) - set (${_unmatchedOptionsVar} ${_unmatchedOptions} PARENT_SCOPE) -endfunction() - -function (cotire_is_target_supported _target _isSupportedVar) - if (NOT TARGET "${_target}") - set (${_isSupportedVar} FALSE PARENT_SCOPE) - return() - endif() - get_target_property(_imported ${_target} IMPORTED) - if (_imported) - set (${_isSupportedVar} FALSE PARENT_SCOPE) - return() - endif() - get_target_property(_targetType ${_target} TYPE) - if (NOT _targetType MATCHES "EXECUTABLE|(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") - set (${_isSupportedVar} FALSE PARENT_SCOPE) - return() - endif() - set (${_isSupportedVar} TRUE PARENT_SCOPE) -endfunction() - -function (cotire_get_target_compile_flags _config _language _target _flagsVar) - string (TOUPPER "${_config}" _upperConfig) - # collect options from CMake language variables - set (_compileFlags "") - if (CMAKE_${_language}_FLAGS) - set (_compileFlags "${_compileFlags} ${CMAKE_${_language}_FLAGS}") - endif() - if (CMAKE_${_language}_FLAGS_${_upperConfig}) - set (_compileFlags "${_compileFlags} ${CMAKE_${_language}_FLAGS_${_upperConfig}}") - endif() - if (_target) - # add target compile flags - get_target_property(_targetflags ${_target} COMPILE_FLAGS) - if (_targetflags) - set (_compileFlags "${_compileFlags} ${_targetflags}") - endif() - endif() - if (UNIX) - separate_arguments(_compileFlags UNIX_COMMAND "${_compileFlags}") - elseif(WIN32) - separate_arguments(_compileFlags WINDOWS_COMMAND "${_compileFlags}") - else() - separate_arguments(_compileFlags) - endif() - # target compile options - if (_target) - get_target_property(_targetOptions ${_target} COMPILE_OPTIONS) - if (_targetOptions) - list (APPEND _compileFlags ${_targetOptions}) - endif() - endif() - # interface compile options from linked library targets - if (_target) - set (_linkedTargets "") - cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) - foreach (_linkedTarget ${_linkedTargets}) - get_target_property(_targetOptions ${_linkedTarget} INTERFACE_COMPILE_OPTIONS) - if (_targetOptions) - list (APPEND _compileFlags ${_targetOptions}) - endif() - endforeach() - endif() - # handle language standard properties - if (CMAKE_${_language}_STANDARD_DEFAULT) - # used compiler supports language standard levels - if (_target) - get_target_property(_targetLanguageStandard ${_target} ${_language}_STANDARD) - if (_targetLanguageStandard) - set (_type "EXTENSION") - get_property(_isSet TARGET ${_target} PROPERTY ${_language}_EXTENSIONS SET) - if (_isSet) - get_target_property(_targetUseLanguageExtensions ${_target} ${_language}_EXTENSIONS) - if (NOT _targetUseLanguageExtensions) - set (_type "STANDARD") - endif() - endif() - if (CMAKE_${_language}${_targetLanguageStandard}_${_type}_COMPILE_OPTION) - list (APPEND _compileFlags "${CMAKE_${_language}${_targetLanguageStandard}_${_type}_COMPILE_OPTION}") - endif() - endif() - endif() - endif() - # handle the POSITION_INDEPENDENT_CODE target property - if (_target) - get_target_property(_targetPIC ${_target} POSITION_INDEPENDENT_CODE) - if (_targetPIC) - get_target_property(_targetType ${_target} TYPE) - if (_targetType STREQUAL "EXECUTABLE" AND CMAKE_${_language}_COMPILE_OPTIONS_PIE) - list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_PIE}") - elseif (CMAKE_${_language}_COMPILE_OPTIONS_PIC) - list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_PIC}") - endif() - endif() - endif() - # handle visibility target properties - if (_target) - get_target_property(_targetVisibility ${_target} ${_language}_VISIBILITY_PRESET) - if (_targetVisibility AND CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY) - list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY}${_targetVisibility}") - endif() - get_target_property(_targetVisibilityInlines ${_target} VISIBILITY_INLINES_HIDDEN) - if (_targetVisibilityInlines AND CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN) - list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN}") - endif() - endif() - # platform specific flags - if (APPLE) - get_target_property(_architectures ${_target} OSX_ARCHITECTURES_${_upperConfig}) - if (NOT _architectures) - get_target_property(_architectures ${_target} OSX_ARCHITECTURES) - endif() - if (_architectures) - foreach (_arch ${_architectures}) - list (APPEND _compileFlags "-arch" "${_arch}") - endforeach() - endif() - if (CMAKE_OSX_SYSROOT) - if (CMAKE_${_language}_SYSROOT_FLAG) - list (APPEND _compileFlags "${CMAKE_${_language}_SYSROOT_FLAG}" "${CMAKE_OSX_SYSROOT}") - else() - list (APPEND _compileFlags "-isysroot" "${CMAKE_OSX_SYSROOT}") - endif() - endif() - if (CMAKE_OSX_DEPLOYMENT_TARGET) - if (CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG) - list (APPEND _compileFlags "${CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG}${CMAKE_OSX_DEPLOYMENT_TARGET}") - else() - list (APPEND _compileFlags "-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") - endif() - endif() - endif() - if (COTIRE_DEBUG AND _compileFlags) - message (STATUS "Target ${_target} compile flags: ${_compileFlags}") - endif() - set (${_flagsVar} ${_compileFlags} PARENT_SCOPE) -endfunction() - -function (cotire_get_target_include_directories _config _language _target _includeDirsVar _systemIncludeDirsVar) - set (_includeDirs "") - set (_systemIncludeDirs "") - # default include dirs - if (CMAKE_INCLUDE_CURRENT_DIR) - list (APPEND _includeDirs "${CMAKE_CURRENT_BINARY_DIR}") - list (APPEND _includeDirs "${CMAKE_CURRENT_SOURCE_DIR}") - endif() - set (_targetFlags "") - cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) - # parse additional include directories from target compile flags - if (CMAKE_INCLUDE_FLAG_${_language}) - string (STRIP "${CMAKE_INCLUDE_FLAG_${_language}}" _includeFlag) - string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") - if (_includeFlag) - set (_dirs "") - cotire_filter_compile_flags("${_language}" "${_includeFlag}" _dirs _ignore ${_targetFlags}) - if (_dirs) - list (APPEND _includeDirs ${_dirs}) - endif() - endif() - endif() - # parse additional system include directories from target compile flags - if (CMAKE_INCLUDE_SYSTEM_FLAG_${_language}) - string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" _includeFlag) - string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") - if (_includeFlag) - set (_dirs "") - cotire_filter_compile_flags("${_language}" "${_includeFlag}" _dirs _ignore ${_targetFlags}) - if (_dirs) - list (APPEND _systemIncludeDirs ${_dirs}) - endif() - endif() - endif() - # target include directories - get_directory_property(_dirs DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" INCLUDE_DIRECTORIES) - if (_target) - get_target_property(_targetDirs ${_target} INCLUDE_DIRECTORIES) - if (_targetDirs) - list (APPEND _dirs ${_targetDirs}) - endif() - get_target_property(_targetDirs ${_target} INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) - if (_targetDirs) - list (APPEND _systemIncludeDirs ${_targetDirs}) - endif() - endif() - # interface include directories from linked library targets - if (_target) - set (_linkedTargets "") - cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) - foreach (_linkedTarget ${_linkedTargets}) - get_target_property(_linkedTargetType ${_linkedTarget} TYPE) - if (CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE AND NOT CMAKE_VERSION VERSION_LESS "3.4.0" AND - _linkedTargetType MATCHES "(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") - # CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE refers to CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR - # at the time, when the target was created. These correspond to the target properties BINARY_DIR and SOURCE_DIR - # which are only available with CMake 3.4 or later. - get_target_property(_targetDirs ${_linkedTarget} BINARY_DIR) - if (_targetDirs) - list (APPEND _dirs ${_targetDirs}) - endif() - get_target_property(_targetDirs ${_linkedTarget} SOURCE_DIR) - if (_targetDirs) - list (APPEND _dirs ${_targetDirs}) - endif() - endif() - get_target_property(_targetDirs ${_linkedTarget} INTERFACE_INCLUDE_DIRECTORIES) - if (_targetDirs) - list (APPEND _dirs ${_targetDirs}) - endif() - get_target_property(_targetDirs ${_linkedTarget} INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) - if (_targetDirs) - list (APPEND _systemIncludeDirs ${_targetDirs}) - endif() - endforeach() - endif() - if (dirs) - list (REMOVE_DUPLICATES _dirs) - endif() - list (LENGTH _includeDirs _projectInsertIndex) - foreach (_dir ${_dirs}) - if (CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE) - cotire_check_is_path_relative_to("${_dir}" _isRelative "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}") - if (_isRelative) - list (LENGTH _includeDirs _len) - if (_len EQUAL _projectInsertIndex) - list (APPEND _includeDirs "${_dir}") - else() - list (INSERT _includeDirs _projectInsertIndex "${_dir}") - endif() - math (EXPR _projectInsertIndex "${_projectInsertIndex} + 1") - else() - list (APPEND _includeDirs "${_dir}") - endif() - else() - list (APPEND _includeDirs "${_dir}") - endif() - endforeach() - list (REMOVE_DUPLICATES _includeDirs) - list (REMOVE_DUPLICATES _systemIncludeDirs) - if (CMAKE_${_language}_IMPLICIT_INCLUDE_DIRECTORIES) - list (REMOVE_ITEM _includeDirs ${CMAKE_${_language}_IMPLICIT_INCLUDE_DIRECTORIES}) - endif() - if (WIN32 AND NOT MINGW) - # convert Windows paths in include directories to CMake paths - if (_includeDirs) - set (_paths "") - foreach (_dir ${_includeDirs}) - file (TO_CMAKE_PATH "${_dir}" _path) - list (APPEND _paths "${_path}") - endforeach() - set (_includeDirs ${_paths}) - endif() - if (_systemIncludeDirs) - set (_paths "") - foreach (_dir ${_systemIncludeDirs}) - file (TO_CMAKE_PATH "${_dir}" _path) - list (APPEND _paths "${_path}") - endforeach() - set (_systemIncludeDirs ${_paths}) - endif() - endif() - if (COTIRE_DEBUG AND _includeDirs) - message (STATUS "Target ${_target} include dirs: ${_includeDirs}") - endif() - set (${_includeDirsVar} ${_includeDirs} PARENT_SCOPE) - if (COTIRE_DEBUG AND _systemIncludeDirs) - message (STATUS "Target ${_target} system include dirs: ${_systemIncludeDirs}") - endif() - set (${_systemIncludeDirsVar} ${_systemIncludeDirs} PARENT_SCOPE) -endfunction() - -function (cotire_get_target_export_symbol _target _exportSymbolVar) - set (_exportSymbol "") - get_target_property(_targetType ${_target} TYPE) - get_target_property(_enableExports ${_target} ENABLE_EXPORTS) - if (_targetType MATCHES "(SHARED|MODULE)_LIBRARY" OR - (_targetType STREQUAL "EXECUTABLE" AND _enableExports)) - get_target_property(_exportSymbol ${_target} DEFINE_SYMBOL) - if (NOT _exportSymbol) - set (_exportSymbol "${_target}_EXPORTS") - endif() - string (MAKE_C_IDENTIFIER "${_exportSymbol}" _exportSymbol) - endif() - set (${_exportSymbolVar} ${_exportSymbol} PARENT_SCOPE) -endfunction() - -function (cotire_get_target_compile_definitions _config _language _target _definitionsVar) - string (TOUPPER "${_config}" _upperConfig) - set (_configDefinitions "") - # CMAKE_INTDIR for multi-configuration build systems - if (NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".") - list (APPEND _configDefinitions "CMAKE_INTDIR=\"${_config}\"") - endif() - # target export define symbol - cotire_get_target_export_symbol("${_target}" _defineSymbol) - if (_defineSymbol) - list (APPEND _configDefinitions "${_defineSymbol}") - endif() - # directory compile definitions - get_directory_property(_definitions DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMPILE_DEFINITIONS) - if (_definitions) - list (APPEND _configDefinitions ${_definitions}) - endif() - get_directory_property(_definitions DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMPILE_DEFINITIONS_${_upperConfig}) - if (_definitions) - list (APPEND _configDefinitions ${_definitions}) - endif() - # target compile definitions - get_target_property(_definitions ${_target} COMPILE_DEFINITIONS) - if (_definitions) - list (APPEND _configDefinitions ${_definitions}) - endif() - get_target_property(_definitions ${_target} COMPILE_DEFINITIONS_${_upperConfig}) - if (_definitions) - list (APPEND _configDefinitions ${_definitions}) - endif() - # interface compile definitions from linked library targets - set (_linkedTargets "") - cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) - foreach (_linkedTarget ${_linkedTargets}) - get_target_property(_definitions ${_linkedTarget} INTERFACE_COMPILE_DEFINITIONS) - if (_definitions) - list (APPEND _configDefinitions ${_definitions}) - endif() - endforeach() - # parse additional compile definitions from target compile flags - # and do not look at directory compile definitions, which we already handled - set (_targetFlags "") - cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) - cotire_filter_compile_flags("${_language}" "D" _definitions _ignore ${_targetFlags}) - if (_definitions) - list (APPEND _configDefinitions ${_definitions}) - endif() - list (REMOVE_DUPLICATES _configDefinitions) - if (COTIRE_DEBUG AND _configDefinitions) - message (STATUS "Target ${_target} compile definitions: ${_configDefinitions}") - endif() - set (${_definitionsVar} ${_configDefinitions} PARENT_SCOPE) -endfunction() - -function (cotire_get_target_compiler_flags _config _language _target _compilerFlagsVar) - # parse target compile flags omitting compile definitions and include directives - set (_targetFlags "") - cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) - set (_flagFilter "D") - if (CMAKE_INCLUDE_FLAG_${_language}) - string (STRIP "${CMAKE_INCLUDE_FLAG_${_language}}" _includeFlag) - string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") - if (_includeFlag) - set (_flagFilter "${_flagFilter}|${_includeFlag}") - endif() - endif() - if (CMAKE_INCLUDE_SYSTEM_FLAG_${_language}) - string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" _includeFlag) - string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") - if (_includeFlag) - set (_flagFilter "${_flagFilter}|${_includeFlag}") - endif() - endif() - set (_compilerFlags "") - cotire_filter_compile_flags("${_language}" "${_flagFilter}" _ignore _compilerFlags ${_targetFlags}) - if (COTIRE_DEBUG AND _compilerFlags) - message (STATUS "Target ${_target} compiler flags: ${_compilerFlags}") - endif() - set (${_compilerFlagsVar} ${_compilerFlags} PARENT_SCOPE) -endfunction() - -function (cotire_add_sys_root_paths _pathsVar) - if (APPLE) - if (CMAKE_OSX_SYSROOT AND CMAKE_${_language}_HAS_ISYSROOT) - foreach (_path IN LISTS ${_pathsVar}) - if (IS_ABSOLUTE "${_path}") - get_filename_component(_path "${CMAKE_OSX_SYSROOT}/${_path}" ABSOLUTE) - if (EXISTS "${_path}") - list (APPEND ${_pathsVar} "${_path}") - endif() - endif() - endforeach() - endif() - endif() - set (${_pathsVar} ${${_pathsVar}} PARENT_SCOPE) -endfunction() - -function (cotire_get_source_extra_properties _sourceFile _pattern _resultVar) - set (_extraProperties ${ARGN}) - set (_result "") - if (_extraProperties) - list (FIND _extraProperties "${_sourceFile}" _index) - if (_index GREATER -1) - math (EXPR _index "${_index} + 1") - list (LENGTH _extraProperties _len) - math (EXPR _len "${_len} - 1") - foreach (_index RANGE ${_index} ${_len}) - list (GET _extraProperties ${_index} _value) - if (_value MATCHES "${_pattern}") - list (APPEND _result "${_value}") - else() - break() - endif() - endforeach() - endif() - endif() - set (${_resultVar} ${_result} PARENT_SCOPE) -endfunction() - -function (cotire_get_source_compile_definitions _config _language _sourceFile _definitionsVar) - set (_compileDefinitions "") - if (NOT CMAKE_SCRIPT_MODE_FILE) - string (TOUPPER "${_config}" _upperConfig) - get_source_file_property(_definitions "${_sourceFile}" COMPILE_DEFINITIONS) - if (_definitions) - list (APPEND _compileDefinitions ${_definitions}) - endif() - get_source_file_property(_definitions "${_sourceFile}" COMPILE_DEFINITIONS_${_upperConfig}) - if (_definitions) - list (APPEND _compileDefinitions ${_definitions}) - endif() - endif() - cotire_get_source_extra_properties("${_sourceFile}" "^[a-zA-Z0-9_]+(=.*)?$" _definitions ${ARGN}) - if (_definitions) - list (APPEND _compileDefinitions ${_definitions}) - endif() - if (COTIRE_DEBUG AND _compileDefinitions) - message (STATUS "Source ${_sourceFile} compile definitions: ${_compileDefinitions}") - endif() - set (${_definitionsVar} ${_compileDefinitions} PARENT_SCOPE) -endfunction() - -function (cotire_get_source_files_compile_definitions _config _language _definitionsVar) - set (_configDefinitions "") - foreach (_sourceFile ${ARGN}) - cotire_get_source_compile_definitions("${_config}" "${_language}" "${_sourceFile}" _sourceDefinitions) - if (_sourceDefinitions) - list (APPEND _configDefinitions "${_sourceFile}" ${_sourceDefinitions} "-") - endif() - endforeach() - set (${_definitionsVar} ${_configDefinitions} PARENT_SCOPE) -endfunction() - -function (cotire_get_source_undefs _sourceFile _property _sourceUndefsVar) - set (_sourceUndefs "") - if (NOT CMAKE_SCRIPT_MODE_FILE) - get_source_file_property(_undefs "${_sourceFile}" ${_property}) - if (_undefs) - list (APPEND _sourceUndefs ${_undefs}) - endif() - endif() - cotire_get_source_extra_properties("${_sourceFile}" "^[a-zA-Z0-9_]+$" _undefs ${ARGN}) - if (_undefs) - list (APPEND _sourceUndefs ${_undefs}) - endif() - if (COTIRE_DEBUG AND _sourceUndefs) - message (STATUS "Source ${_sourceFile} ${_property} undefs: ${_sourceUndefs}") - endif() - set (${_sourceUndefsVar} ${_sourceUndefs} PARENT_SCOPE) -endfunction() - -function (cotire_get_source_files_undefs _property _sourceUndefsVar) - set (_sourceUndefs "") - foreach (_sourceFile ${ARGN}) - cotire_get_source_undefs("${_sourceFile}" ${_property} _undefs) - if (_undefs) - list (APPEND _sourceUndefs "${_sourceFile}" ${_undefs} "-") - endif() - endforeach() - set (${_sourceUndefsVar} ${_sourceUndefs} PARENT_SCOPE) -endfunction() - -macro (cotire_set_cmd_to_prologue _cmdVar) - set (${_cmdVar} "${CMAKE_COMMAND}") - if (COTIRE_DEBUG) - list (APPEND ${_cmdVar} "--warn-uninitialized") - endif() - list (APPEND ${_cmdVar} "-DCOTIRE_BUILD_TYPE:STRING=$") - if (XCODE) - list (APPEND ${_cmdVar} "-DXCODE:BOOL=TRUE") - endif() - if (COTIRE_VERBOSE) - list (APPEND ${_cmdVar} "-DCOTIRE_VERBOSE:BOOL=ON") - elseif("${CMAKE_GENERATOR}" MATCHES "Makefiles") - list (APPEND ${_cmdVar} "-DCOTIRE_VERBOSE:BOOL=$(VERBOSE)") - endif() -endmacro() - -function (cotire_init_compile_cmd _cmdVar _language _compilerLauncher _compilerExe _compilerArg1) - if (NOT _compilerLauncher) - set (_compilerLauncher ${CMAKE_${_language}_COMPILER_LAUNCHER}) - endif() - if (NOT _compilerExe) - set (_compilerExe "${CMAKE_${_language}_COMPILER}") - endif() - if (NOT _compilerArg1) - set (_compilerArg1 ${CMAKE_${_language}_COMPILER_ARG1}) - endif() - if (WIN32) - file (TO_NATIVE_PATH "${_compilerExe}" _compilerExe) - endif() - string (STRIP "${_compilerArg1}" _compilerArg1) - if ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") - # compiler launcher is only supported for Makefile and Ninja - set (${_cmdVar} ${_compilerLauncher} "${_compilerExe}" ${_compilerArg1} PARENT_SCOPE) - else() - set (${_cmdVar} "${_compilerExe}" ${_compilerArg1} PARENT_SCOPE) - endif() -endfunction() - -macro (cotire_add_definitions_to_cmd _cmdVar _language) - foreach (_definition ${ARGN}) - if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") - list (APPEND ${_cmdVar} "/D${_definition}") - else() - list (APPEND ${_cmdVar} "-D${_definition}") - endif() - endforeach() -endmacro() - -function (cotire_add_includes_to_cmd _cmdVar _language _includesVar _systemIncludesVar) - set (_includeDirs ${${_includesVar}} ${${_systemIncludesVar}}) - if (_includeDirs) - list (REMOVE_DUPLICATES _includeDirs) - foreach (_include ${_includeDirs}) - if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") - file (TO_NATIVE_PATH "${_include}" _include) - list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") - else() - set (_index -1) - if ("${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" MATCHES ".+") - list (FIND ${_systemIncludesVar} "${_include}" _index) - endif() - if (_index GREATER -1) - list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") - else() - list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") - endif() - endif() - endforeach() - endif() - set (${_cmdVar} ${${_cmdVar}} PARENT_SCOPE) -endfunction() - -function (cotire_add_frameworks_to_cmd _cmdVar _language _includesVar _systemIncludesVar) - if (APPLE) - set (_frameworkDirs "") - foreach (_include ${${_includesVar}}) - if (IS_ABSOLUTE "${_include}" AND _include MATCHES "\\.framework$") - get_filename_component(_frameworkDir "${_include}" DIRECTORY) - list (APPEND _frameworkDirs "${_frameworkDir}") - endif() - endforeach() - set (_systemFrameworkDirs "") - foreach (_include ${${_systemIncludesVar}}) - if (IS_ABSOLUTE "${_include}" AND _include MATCHES "\\.framework$") - get_filename_component(_frameworkDir "${_include}" DIRECTORY) - list (APPEND _systemFrameworkDirs "${_frameworkDir}") - endif() - endforeach() - if (_systemFrameworkDirs) - list (APPEND _frameworkDirs ${_systemFrameworkDirs}) - endif() - if (_frameworkDirs) - list (REMOVE_DUPLICATES _frameworkDirs) - foreach (_frameworkDir ${_frameworkDirs}) - set (_index -1) - if ("${CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG}" MATCHES ".+") - list (FIND _systemFrameworkDirs "${_frameworkDir}" _index) - endif() - if (_index GREATER -1) - list (APPEND ${_cmdVar} "${CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG}${_frameworkDir}") - else() - list (APPEND ${_cmdVar} "${CMAKE_${_language}_FRAMEWORK_SEARCH_FLAG}${_frameworkDir}") - endif() - endforeach() - endif() - endif() - set (${_cmdVar} ${${_cmdVar}} PARENT_SCOPE) -endfunction() - -macro (cotire_add_compile_flags_to_cmd _cmdVar) - foreach (_flag ${ARGN}) - list (APPEND ${_cmdVar} "${_flag}") - endforeach() -endmacro() - -function (cotire_check_file_up_to_date _fileIsUpToDateVar _file) - if (EXISTS "${_file}") - set (_triggerFile "") - foreach (_dependencyFile ${ARGN}) - if (EXISTS "${_dependencyFile}") - # IS_NEWER_THAN returns TRUE if both files have the same timestamp - # thus we do the comparison in both directions to exclude ties - if ("${_dependencyFile}" IS_NEWER_THAN "${_file}" AND - NOT "${_file}" IS_NEWER_THAN "${_dependencyFile}") - set (_triggerFile "${_dependencyFile}") - break() - endif() - endif() - endforeach() - if (_triggerFile) - if (COTIRE_VERBOSE) - get_filename_component(_fileName "${_file}" NAME) - message (STATUS "${_fileName} update triggered by ${_triggerFile} change.") - endif() - set (${_fileIsUpToDateVar} FALSE PARENT_SCOPE) - else() - if (COTIRE_VERBOSE) - get_filename_component(_fileName "${_file}" NAME) - message (STATUS "${_fileName} is up-to-date.") - endif() - set (${_fileIsUpToDateVar} TRUE PARENT_SCOPE) - endif() - else() - if (COTIRE_VERBOSE) - get_filename_component(_fileName "${_file}" NAME) - message (STATUS "${_fileName} does not exist yet.") - endif() - set (${_fileIsUpToDateVar} FALSE PARENT_SCOPE) - endif() -endfunction() - -macro (cotire_find_closest_relative_path _headerFile _includeDirs _relPathVar) - set (${_relPathVar} "") - foreach (_includeDir ${_includeDirs}) - if (IS_DIRECTORY "${_includeDir}") - file (RELATIVE_PATH _relPath "${_includeDir}" "${_headerFile}") - if (NOT IS_ABSOLUTE "${_relPath}" AND NOT "${_relPath}" MATCHES "^\\.\\.") - string (LENGTH "${${_relPathVar}}" _closestLen) - string (LENGTH "${_relPath}" _relLen) - if (_closestLen EQUAL 0 OR _relLen LESS _closestLen) - set (${_relPathVar} "${_relPath}") - endif() - endif() - elseif ("${_includeDir}" STREQUAL "${_headerFile}") - # if path matches exactly, return short non-empty string - set (${_relPathVar} "1") - break() - endif() - endforeach() -endmacro() - -macro (cotire_check_header_file_location _headerFile _insideIncludeDirs _outsideIncludeDirs _headerIsInside) - # check header path against ignored and honored include directories - cotire_find_closest_relative_path("${_headerFile}" "${_insideIncludeDirs}" _insideRelPath) - if (_insideRelPath) - # header is inside, but could be become outside if there is a shorter outside match - cotire_find_closest_relative_path("${_headerFile}" "${_outsideIncludeDirs}" _outsideRelPath) - if (_outsideRelPath) - string (LENGTH "${_insideRelPath}" _insideRelPathLen) - string (LENGTH "${_outsideRelPath}" _outsideRelPathLen) - if (_outsideRelPathLen LESS _insideRelPathLen) - set (${_headerIsInside} FALSE) - else() - set (${_headerIsInside} TRUE) - endif() - else() - set (${_headerIsInside} TRUE) - endif() - else() - # header is outside - set (${_headerIsInside} FALSE) - endif() -endmacro() - -macro (cotire_check_ignore_header_file_path _headerFile _headerIsIgnoredVar) - if (NOT EXISTS "${_headerFile}") - set (${_headerIsIgnoredVar} TRUE) - elseif (IS_DIRECTORY "${_headerFile}") - set (${_headerIsIgnoredVar} TRUE) - elseif ("${_headerFile}" MATCHES "\\.\\.|[_-]fixed") - # heuristic: ignore headers with embedded parent directory references or "-fixed" or "_fixed" in path - # these often stem from using GCC #include_next tricks, which may break the precompiled header compilation - # with the error message "error: no include path in which to search for header" - set (${_headerIsIgnoredVar} TRUE) - else() - set (${_headerIsIgnoredVar} FALSE) - endif() -endmacro() - -macro (cotire_check_ignore_header_file_ext _headerFile _ignoreExtensionsVar _headerIsIgnoredVar) - # check header file extension - cotire_get_source_file_extension("${_headerFile}" _headerFileExt) - set (${_headerIsIgnoredVar} FALSE) - if (_headerFileExt) - list (FIND ${_ignoreExtensionsVar} "${_headerFileExt}" _index) - if (_index GREATER -1) - set (${_headerIsIgnoredVar} TRUE) - endif() - endif() -endmacro() - -macro (cotire_parse_line _line _headerFileVar _headerDepthVar) - if (MSVC) - # cl.exe /showIncludes produces different output, depending on the language pack used, e.g.: - # English: "Note: including file: C:\directory\file" - # German: "Hinweis: Einlesen der Datei: C:\directory\file" - # We use a very general regular expression, relying on the presence of the : characters - if (_line MATCHES "( +)([a-zA-Z]:[^:]+)$") - string (LENGTH "${CMAKE_MATCH_1}" ${_headerDepthVar}) - get_filename_component(${_headerFileVar} "${CMAKE_MATCH_2}" ABSOLUTE) - else() - set (${_headerFileVar} "") - set (${_headerDepthVar} 0) - endif() - else() - if (_line MATCHES "^(\\.+) (.*)$") - # GCC like output - string (LENGTH "${CMAKE_MATCH_1}" ${_headerDepthVar}) - if (IS_ABSOLUTE "${CMAKE_MATCH_2}") - set (${_headerFileVar} "${CMAKE_MATCH_2}") - else() - get_filename_component(${_headerFileVar} "${CMAKE_MATCH_2}" REALPATH) - endif() - else() - set (${_headerFileVar} "") - set (${_headerDepthVar} 0) - endif() - endif() -endmacro() - -function (cotire_parse_includes _language _scanOutput _ignoredIncludeDirs _honoredIncludeDirs _ignoredExtensions _selectedIncludesVar _unparsedLinesVar) - if (WIN32) - # prevent CMake macro invocation errors due to backslash characters in Windows paths - string (REPLACE "\\" "/" _scanOutput "${_scanOutput}") - endif() - # canonize slashes - string (REPLACE "//" "/" _scanOutput "${_scanOutput}") - # prevent semicolon from being interpreted as a line separator - string (REPLACE ";" "\\;" _scanOutput "${_scanOutput}") - # then separate lines - string (REGEX REPLACE "\n" ";" _scanOutput "${_scanOutput}") - list (LENGTH _scanOutput _len) - # remove duplicate lines to speed up parsing - list (REMOVE_DUPLICATES _scanOutput) - list (LENGTH _scanOutput _uniqueLen) - if (COTIRE_VERBOSE OR COTIRE_DEBUG) - message (STATUS "Scanning ${_uniqueLen} unique lines of ${_len} for includes") - if (_ignoredExtensions) - message (STATUS "Ignored extensions: ${_ignoredExtensions}") - endif() - if (_ignoredIncludeDirs) - message (STATUS "Ignored paths: ${_ignoredIncludeDirs}") - endif() - if (_honoredIncludeDirs) - message (STATUS "Included paths: ${_honoredIncludeDirs}") - endif() - endif() - set (_sourceFiles ${ARGN}) - set (_selectedIncludes "") - set (_unparsedLines "") - # stack keeps track of inside/outside project status of processed header files - set (_headerIsInsideStack "") - foreach (_line IN LISTS _scanOutput) - if (_line) - cotire_parse_line("${_line}" _headerFile _headerDepth) - if (_headerFile) - cotire_check_header_file_location("${_headerFile}" "${_ignoredIncludeDirs}" "${_honoredIncludeDirs}" _headerIsInside) - if (COTIRE_DEBUG) - message (STATUS "${_headerDepth}: ${_headerFile} ${_headerIsInside}") - endif() - # update stack - list (LENGTH _headerIsInsideStack _stackLen) - if (_headerDepth GREATER _stackLen) - math (EXPR _stackLen "${_stackLen} + 1") - foreach (_index RANGE ${_stackLen} ${_headerDepth}) - list (APPEND _headerIsInsideStack ${_headerIsInside}) - endforeach() - else() - foreach (_index RANGE ${_headerDepth} ${_stackLen}) - list (REMOVE_AT _headerIsInsideStack -1) - endforeach() - list (APPEND _headerIsInsideStack ${_headerIsInside}) - endif() - if (COTIRE_DEBUG) - message (STATUS "${_headerIsInsideStack}") - endif() - # header is a candidate if it is outside project - if (NOT _headerIsInside) - # get parent header file's inside/outside status - if (_headerDepth GREATER 1) - math (EXPR _index "${_headerDepth} - 2") - list (GET _headerIsInsideStack ${_index} _parentHeaderIsInside) - else() - set (_parentHeaderIsInside TRUE) - endif() - # select header file if parent header file is inside project - # (e.g., a project header file that includes a standard header file) - if (_parentHeaderIsInside) - cotire_check_ignore_header_file_path("${_headerFile}" _headerIsIgnored) - if (NOT _headerIsIgnored) - cotire_check_ignore_header_file_ext("${_headerFile}" _ignoredExtensions _headerIsIgnored) - if (NOT _headerIsIgnored) - list (APPEND _selectedIncludes "${_headerFile}") - else() - # fix header's inside status on stack, it is ignored by extension now - list (REMOVE_AT _headerIsInsideStack -1) - list (APPEND _headerIsInsideStack TRUE) - endif() - endif() - if (COTIRE_DEBUG) - message (STATUS "${_headerFile} ${_ignoredExtensions} ${_headerIsIgnored}") - endif() - endif() - endif() - else() - if (MSVC) - # for cl.exe do not keep unparsed lines which solely consist of a source file name - string (FIND "${_sourceFiles}" "${_line}" _index) - if (_index LESS 0) - list (APPEND _unparsedLines "${_line}") - endif() - else() - list (APPEND _unparsedLines "${_line}") - endif() - endif() - endif() - endforeach() - list (REMOVE_DUPLICATES _selectedIncludes) - set (${_selectedIncludesVar} ${_selectedIncludes} PARENT_SCOPE) - set (${_unparsedLinesVar} ${_unparsedLines} PARENT_SCOPE) -endfunction() - -function (cotire_scan_includes _includesVar) - set(_options "") - set(_oneValueArgs COMPILER_ID COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_VERSION LANGUAGE UNPARSED_LINES SCAN_RESULT) - set(_multiValueArgs COMPILE_DEFINITIONS COMPILE_FLAGS INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES - IGNORE_PATH INCLUDE_PATH IGNORE_EXTENSIONS INCLUDE_PRIORITY_PATH COMPILER_LAUNCHER) - cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) - set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) - if (NOT _option_LANGUAGE) - set (_option_LANGUAGE "CXX") - endif() - if (NOT _option_COMPILER_ID) - set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") - endif() - if (NOT _option_COMPILER_VERSION) - set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") - endif() - cotire_init_compile_cmd(_cmd "${_option_LANGUAGE}" "${_option_COMPILER_LAUNCHER}" "${_option_COMPILER_EXECUTABLE}" "${_option_COMPILER_ARG1}") - cotire_add_definitions_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_COMPILE_DEFINITIONS}) - cotire_add_compile_flags_to_cmd(_cmd ${_option_COMPILE_FLAGS}) - cotire_add_includes_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) - cotire_add_frameworks_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) - cotire_add_makedep_flags("${_option_LANGUAGE}" "${_option_COMPILER_ID}" "${_option_COMPILER_VERSION}" _cmd) - # only consider existing source files for scanning - set (_existingSourceFiles "") - foreach (_sourceFile ${_sourceFiles}) - if (EXISTS "${_sourceFile}") - list (APPEND _existingSourceFiles "${_sourceFile}") - endif() - endforeach() - if (NOT _existingSourceFiles) - set (${_includesVar} "" PARENT_SCOPE) - return() - endif() - # add source files to be scanned - if (WIN32) - foreach (_sourceFile ${_existingSourceFiles}) - file (TO_NATIVE_PATH "${_sourceFile}" _sourceFileNative) - list (APPEND _cmd "${_sourceFileNative}") - endforeach() - else() - list (APPEND _cmd ${_existingSourceFiles}) - endif() - if (COTIRE_VERBOSE) - message (STATUS "execute_process: ${_cmd}") - endif() - if (MSVC_IDE OR _option_COMPILER_ID MATCHES "MSVC") - # cl.exe messes with the output streams unless the environment variable VS_UNICODE_OUTPUT is cleared - unset (ENV{VS_UNICODE_OUTPUT}) - endif() - execute_process( - COMMAND ${_cmd} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - RESULT_VARIABLE _result - OUTPUT_QUIET - ERROR_VARIABLE _output) - if (_result) - message (STATUS "Result ${_result} scanning includes of ${_existingSourceFiles}.") - endif() - cotire_parse_includes( - "${_option_LANGUAGE}" "${_output}" - "${_option_IGNORE_PATH}" "${_option_INCLUDE_PATH}" - "${_option_IGNORE_EXTENSIONS}" - _includes _unparsedLines - ${_sourceFiles}) - if (_option_INCLUDE_PRIORITY_PATH) - set (_sortedIncludes "") - foreach (_priorityPath ${_option_INCLUDE_PRIORITY_PATH}) - foreach (_include ${_includes}) - string (FIND ${_include} ${_priorityPath} _position) - if (_position GREATER -1) - list (APPEND _sortedIncludes ${_include}) - endif() - endforeach() - endforeach() - if (_sortedIncludes) - list (INSERT _includes 0 ${_sortedIncludes}) - list (REMOVE_DUPLICATES _includes) - endif() - endif() - set (${_includesVar} ${_includes} PARENT_SCOPE) - if (_option_UNPARSED_LINES) - set (${_option_UNPARSED_LINES} ${_unparsedLines} PARENT_SCOPE) - endif() - if (_option_SCAN_RESULT) - set (${_option_SCAN_RESULT} ${_result} PARENT_SCOPE) - endif() -endfunction() - -macro (cotire_append_undefs _contentsVar) - set (_undefs ${ARGN}) - if (_undefs) - list (REMOVE_DUPLICATES _undefs) - foreach (_definition ${_undefs}) - list (APPEND ${_contentsVar} "#undef ${_definition}") - endforeach() - endif() -endmacro() - -macro (cotire_comment_str _language _commentText _commentVar) - if ("${_language}" STREQUAL "CMAKE") - set (${_commentVar} "# ${_commentText}") - else() - set (${_commentVar} "/* ${_commentText} */") - endif() -endmacro() - -function (cotire_write_file _language _file _contents _force) - get_filename_component(_moduleName "${COTIRE_CMAKE_MODULE_FILE}" NAME) - cotire_comment_str("${_language}" "${_moduleName} ${COTIRE_CMAKE_MODULE_VERSION} generated file" _header1) - cotire_comment_str("${_language}" "${_file}" _header2) - set (_contents "${_header1}\n${_header2}\n${_contents}") - if (COTIRE_DEBUG) - message (STATUS "${_contents}") - endif() - if (_force OR NOT EXISTS "${_file}") - file (WRITE "${_file}" "${_contents}") - else() - file (READ "${_file}" _oldContents) - if (NOT "${_oldContents}" STREQUAL "${_contents}") - file (WRITE "${_file}" "${_contents}") - else() - if (COTIRE_DEBUG) - message (STATUS "${_file} unchanged") - endif() - endif() - endif() -endfunction() - -function (cotire_generate_unity_source _unityFile) - set(_options "") - set(_oneValueArgs LANGUAGE) - set(_multiValueArgs - DEPENDS SOURCES_COMPILE_DEFINITIONS - PRE_UNDEFS SOURCES_PRE_UNDEFS POST_UNDEFS SOURCES_POST_UNDEFS PROLOGUE EPILOGUE) - cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) - if (_option_DEPENDS) - cotire_check_file_up_to_date(_unityFileIsUpToDate "${_unityFile}" ${_option_DEPENDS}) - if (_unityFileIsUpToDate) - return() - endif() - endif() - set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) - if (NOT _option_PRE_UNDEFS) - set (_option_PRE_UNDEFS "") - endif() - if (NOT _option_SOURCES_PRE_UNDEFS) - set (_option_SOURCES_PRE_UNDEFS "") - endif() - if (NOT _option_POST_UNDEFS) - set (_option_POST_UNDEFS "") - endif() - if (NOT _option_SOURCES_POST_UNDEFS) - set (_option_SOURCES_POST_UNDEFS "") - endif() - set (_contents "") - if (_option_PROLOGUE) - list (APPEND _contents ${_option_PROLOGUE}) - endif() - if (_option_LANGUAGE AND _sourceFiles) - if ("${_option_LANGUAGE}" STREQUAL "CXX") - list (APPEND _contents "#ifdef __cplusplus") - elseif ("${_option_LANGUAGE}" STREQUAL "C") - list (APPEND _contents "#ifndef __cplusplus") - endif() - endif() - set (_compileUndefinitions "") - foreach (_sourceFile ${_sourceFiles}) - cotire_get_source_compile_definitions( - "${_option_CONFIGURATION}" "${_option_LANGUAGE}" "${_sourceFile}" _compileDefinitions - ${_option_SOURCES_COMPILE_DEFINITIONS}) - cotire_get_source_undefs("${_sourceFile}" COTIRE_UNITY_SOURCE_PRE_UNDEFS _sourcePreUndefs ${_option_SOURCES_PRE_UNDEFS}) - cotire_get_source_undefs("${_sourceFile}" COTIRE_UNITY_SOURCE_POST_UNDEFS _sourcePostUndefs ${_option_SOURCES_POST_UNDEFS}) - if (_option_PRE_UNDEFS) - list (APPEND _compileUndefinitions ${_option_PRE_UNDEFS}) - endif() - if (_sourcePreUndefs) - list (APPEND _compileUndefinitions ${_sourcePreUndefs}) - endif() - if (_compileUndefinitions) - cotire_append_undefs(_contents ${_compileUndefinitions}) - set (_compileUndefinitions "") - endif() - if (_sourcePostUndefs) - list (APPEND _compileUndefinitions ${_sourcePostUndefs}) - endif() - if (_option_POST_UNDEFS) - list (APPEND _compileUndefinitions ${_option_POST_UNDEFS}) - endif() - foreach (_definition ${_compileDefinitions}) - if (_definition MATCHES "^([a-zA-Z0-9_]+)=(.+)$") - list (APPEND _contents "#define ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}") - list (INSERT _compileUndefinitions 0 "${CMAKE_MATCH_1}") - else() - list (APPEND _contents "#define ${_definition}") - list (INSERT _compileUndefinitions 0 "${_definition}") - endif() - endforeach() - # use absolute path as source file location - get_filename_component(_sourceFileLocation "${_sourceFile}" ABSOLUTE) - if (WIN32) - file (TO_NATIVE_PATH "${_sourceFileLocation}" _sourceFileLocation) - endif() - list (APPEND _contents "#include \"${_sourceFileLocation}\"") - endforeach() - if (_compileUndefinitions) - cotire_append_undefs(_contents ${_compileUndefinitions}) - set (_compileUndefinitions "") - endif() - if (_option_LANGUAGE AND _sourceFiles) - list (APPEND _contents "#endif") - endif() - if (_option_EPILOGUE) - list (APPEND _contents ${_option_EPILOGUE}) - endif() - list (APPEND _contents "") - string (REPLACE ";" "\n" _contents "${_contents}") - if (COTIRE_VERBOSE) - message ("${_contents}") - endif() - cotire_write_file("${_option_LANGUAGE}" "${_unityFile}" "${_contents}" TRUE) -endfunction() - -function (cotire_generate_prefix_header _prefixFile) - set(_options "") - set(_oneValueArgs LANGUAGE COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_ID COMPILER_VERSION) - set(_multiValueArgs DEPENDS COMPILE_DEFINITIONS COMPILE_FLAGS - INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES IGNORE_PATH INCLUDE_PATH - IGNORE_EXTENSIONS INCLUDE_PRIORITY_PATH COMPILER_LAUNCHER) - cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) - if (NOT _option_COMPILER_ID) - set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") - endif() - if (NOT _option_COMPILER_VERSION) - set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") - endif() - if (_option_DEPENDS) - cotire_check_file_up_to_date(_prefixFileIsUpToDate "${_prefixFile}" ${_option_DEPENDS}) - if (_prefixFileIsUpToDate) - # create empty log file - set (_unparsedLinesFile "${_prefixFile}.log") - file (WRITE "${_unparsedLinesFile}" "") - return() - endif() - endif() - set (_prologue "") - set (_epilogue "") - if (_option_COMPILER_ID MATCHES "Clang") - set (_prologue "#pragma clang system_header") - elseif (_option_COMPILER_ID MATCHES "GNU") - set (_prologue "#pragma GCC system_header") - elseif (_option_COMPILER_ID MATCHES "MSVC") - set (_prologue "#pragma warning(push, 0)") - set (_epilogue "#pragma warning(pop)") - elseif (_option_COMPILER_ID MATCHES "Intel") - # Intel compiler requires hdrstop pragma to stop generating PCH file - set (_epilogue "#pragma hdrstop") - endif() - set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) - cotire_scan_includes(_selectedHeaders ${_sourceFiles} - LANGUAGE "${_option_LANGUAGE}" - COMPILER_LAUNCHER "${_option_COMPILER_LAUNCHER}" - COMPILER_EXECUTABLE "${_option_COMPILER_EXECUTABLE}" - COMPILER_ARG1 "${_option_COMPILER_ARG1}" - COMPILER_ID "${_option_COMPILER_ID}" - COMPILER_VERSION "${_option_COMPILER_VERSION}" - COMPILE_DEFINITIONS ${_option_COMPILE_DEFINITIONS} - COMPILE_FLAGS ${_option_COMPILE_FLAGS} - INCLUDE_DIRECTORIES ${_option_INCLUDE_DIRECTORIES} - SYSTEM_INCLUDE_DIRECTORIES ${_option_SYSTEM_INCLUDE_DIRECTORIES} - IGNORE_PATH ${_option_IGNORE_PATH} - INCLUDE_PATH ${_option_INCLUDE_PATH} - IGNORE_EXTENSIONS ${_option_IGNORE_EXTENSIONS} - INCLUDE_PRIORITY_PATH ${_option_INCLUDE_PRIORITY_PATH} - UNPARSED_LINES _unparsedLines - SCAN_RESULT _scanResult) - cotire_generate_unity_source("${_prefixFile}" - PROLOGUE ${_prologue} EPILOGUE ${_epilogue} LANGUAGE "${_option_LANGUAGE}" ${_selectedHeaders}) - set (_unparsedLinesFile "${_prefixFile}.log") - if (_unparsedLines) - if (COTIRE_VERBOSE OR _scanResult OR NOT _selectedHeaders) - list (LENGTH _unparsedLines _skippedLineCount) - if (WIN32) - file (TO_NATIVE_PATH "${_unparsedLinesFile}" _unparsedLinesLogPath) - else() - set (_unparsedLinesLogPath "${_unparsedLinesFile}") - endif() - message (STATUS "${_skippedLineCount} line(s) skipped, see ${_unparsedLinesLogPath}") - endif() - string (REPLACE ";" "\n" _unparsedLines "${_unparsedLines}") - endif() - file (WRITE "${_unparsedLinesFile}" "${_unparsedLines}\n") -endfunction() - -function (cotire_add_makedep_flags _language _compilerID _compilerVersion _flagsVar) - set (_flags ${${_flagsVar}}) - if (_compilerID MATCHES "MSVC") - # cl.exe options used - # /nologo suppresses display of sign-on banner - # /TC treat all files named on the command line as C source files - # /TP treat all files named on the command line as C++ source files - # /EP preprocess to stdout without #line directives - # /showIncludes list include files - set (_sourceFileTypeC "/TC") - set (_sourceFileTypeCXX "/TP") - if (_flags) - # append to list - list (APPEND _flags /nologo "${_sourceFileType${_language}}" /EP /showIncludes) - else() - # return as a flag string - set (_flags "${_sourceFileType${_language}} /EP /showIncludes") - endif() - elseif (_compilerID MATCHES "GNU") - # GCC options used - # -H print the name of each header file used - # -E invoke preprocessor - # -fdirectives-only do not expand macros, requires GCC >= 4.3 - if (_flags) - # append to list - list (APPEND _flags -H -E) - if (NOT "${_compilerVersion}" VERSION_LESS "4.3.0") - list (APPEND _flags -fdirectives-only) - endif() - else() - # return as a flag string - set (_flags "-H -E") - if (NOT "${_compilerVersion}" VERSION_LESS "4.3.0") - set (_flags "${_flags} -fdirectives-only") - endif() - endif() - elseif (_compilerID MATCHES "Clang") - if (UNIX) - # Clang options used - # -H print the name of each header file used - # -E invoke preprocessor - # -fno-color-diagnostics do not print diagnostics in color - # -Eonly just run preprocessor, no output - if (_flags) - # append to list - list (APPEND _flags -H -E -fno-color-diagnostics -Xclang -Eonly) - else() - # return as a flag string - set (_flags "-H -E -fno-color-diagnostics -Xclang -Eonly") - endif() - elseif (WIN32) - # Clang-cl.exe options used - # /TC treat all files named on the command line as C source files - # /TP treat all files named on the command line as C++ source files - # /EP preprocess to stdout without #line directives - # -H print the name of each header file used - # -fno-color-diagnostics do not print diagnostics in color - # -Eonly just run preprocessor, no output - set (_sourceFileTypeC "/TC") - set (_sourceFileTypeCXX "/TP") - if (_flags) - # append to list - list (APPEND _flags "${_sourceFileType${_language}}" /EP -fno-color-diagnostics -Xclang -H -Xclang -Eonly) - else() - # return as a flag string - set (_flags "${_sourceFileType${_language}} /EP -fno-color-diagnostics -Xclang -H -Xclang -Eonly") - endif() - endif() - elseif (_compilerID MATCHES "Intel") - if (WIN32) - # Windows Intel options used - # /nologo do not display compiler version information - # /QH display the include file order - # /EP preprocess to stdout, omitting #line directives - # /TC process all source or unrecognized file types as C source files - # /TP process all source or unrecognized file types as C++ source files - set (_sourceFileTypeC "/TC") - set (_sourceFileTypeCXX "/TP") - if (_flags) - # append to list - list (APPEND _flags /nologo "${_sourceFileType${_language}}" /EP /QH) - else() - # return as a flag string - set (_flags "${_sourceFileType${_language}} /EP /QH") - endif() - else() - # Linux / Mac OS X Intel options used - # -H print the name of each header file used - # -EP preprocess to stdout, omitting #line directives - # -Kc++ process all source or unrecognized file types as C++ source files - if (_flags) - # append to list - if ("${_language}" STREQUAL "CXX") - list (APPEND _flags -Kc++) - endif() - list (APPEND _flags -H -EP) - else() - # return as a flag string - if ("${_language}" STREQUAL "CXX") - set (_flags "-Kc++ ") - endif() - set (_flags "${_flags}-H -EP") - endif() - endif() - else() - message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") - endif() - set (${_flagsVar} ${_flags} PARENT_SCOPE) -endfunction() - -function (cotire_add_pch_compilation_flags _language _compilerID _compilerVersion _prefixFile _pchFile _hostFile _flagsVar) - set (_flags ${${_flagsVar}}) - if (_compilerID MATCHES "MSVC") - file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) - file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) - file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) - # cl.exe options used - # /Yc creates a precompiled header file - # /Fp specifies precompiled header binary file name - # /FI forces inclusion of file - # /TC treat all files named on the command line as C source files - # /TP treat all files named on the command line as C++ source files - # /Zs syntax check only - # /Zm precompiled header memory allocation scaling factor - set (_sourceFileTypeC "/TC") - set (_sourceFileTypeCXX "/TP") - if (_flags) - # append to list - list (APPEND _flags /nologo "${_sourceFileType${_language}}" - "/Yc${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") - if (COTIRE_PCH_MEMORY_SCALING_FACTOR) - list (APPEND _flags "/Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") - endif() - else() - # return as a flag string - set (_flags "/Yc\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") - if (COTIRE_PCH_MEMORY_SCALING_FACTOR) - set (_flags "${_flags} /Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") - endif() - endif() - elseif (_compilerID MATCHES "GNU") - # GCC options used - # -x specify the source language - # -c compile but do not link - # -o place output in file - # note that we cannot use -w to suppress all warnings upon pre-compiling, because turning off a warning may - # alter compile flags as a side effect (e.g., -Wwrite-string implies -fconst-strings) - set (_xLanguage_C "c-header") - set (_xLanguage_CXX "c++-header") - if (_flags) - # append to list - list (APPEND _flags -x "${_xLanguage_${_language}}" -c "${_prefixFile}" -o "${_pchFile}") - else() - # return as a flag string - set (_flags "-x ${_xLanguage_${_language}} -c \"${_prefixFile}\" -o \"${_pchFile}\"") - endif() - elseif (_compilerID MATCHES "Clang") - if (UNIX) - # Clang options used - # -x specify the source language - # -c compile but do not link - # -o place output in file - # -fno-pch-timestamp disable inclusion of timestamp in precompiled headers (clang 4.0.0+) - set (_xLanguage_C "c-header") - set (_xLanguage_CXX "c++-header") - if (_flags) - # append to list - list (APPEND _flags -x "${_xLanguage_${_language}}" -c "${_prefixFile}" -o "${_pchFile}") - if (NOT "${_compilerVersion}" VERSION_LESS "4.0.0") - list (APPEND _flags -Xclang -fno-pch-timestamp) - endif() - else() - # return as a flag string - set (_flags "-x ${_xLanguage_${_language}} -c \"${_prefixFile}\" -o \"${_pchFile}\"") - if (NOT "${_compilerVersion}" VERSION_LESS "4.0.0") - set (_flags "${_flags} -Xclang -fno-pch-timestamp") - endif() - endif() - elseif (WIN32) - file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) - file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) - file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) - # Clang-cl.exe options used - # /Yc creates a precompiled header file - # /Fp specifies precompiled header binary file name - # /FI forces inclusion of file - # /Zs syntax check only - # /TC treat all files named on the command line as C source files - # /TP treat all files named on the command line as C++ source files - set (_sourceFileTypeC "/TC") - set (_sourceFileTypeCXX "/TP") - if (_flags) - # append to list - list (APPEND _flags "${_sourceFileType${_language}}" - "/Yc${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") - else() - # return as a flag string - set (_flags "/Yc\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") - endif() - endif() - elseif (_compilerID MATCHES "Intel") - if (WIN32) - file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) - file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) - file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) - # Windows Intel options used - # /nologo do not display compiler version information - # /Yc create a precompiled header (PCH) file - # /Fp specify a path or file name for precompiled header files - # /FI tells the preprocessor to include a specified file name as the header file - # /TC process all source or unrecognized file types as C source files - # /TP process all source or unrecognized file types as C++ source files - # /Zs syntax check only - # /Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) - set (_sourceFileTypeC "/TC") - set (_sourceFileTypeCXX "/TP") - if (_flags) - # append to list - list (APPEND _flags /nologo "${_sourceFileType${_language}}" - "/Yc" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") - if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") - list (APPEND _flags "/Wpch-messages") - endif() - else() - # return as a flag string - set (_flags "/Yc /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") - if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") - set (_flags "${_flags} /Wpch-messages") - endif() - endif() - else() - # Linux / Mac OS X Intel options used - # -pch-dir location for precompiled header files - # -pch-create name of the precompiled header (PCH) to create - # -Kc++ process all source or unrecognized file types as C++ source files - # -fsyntax-only check only for correct syntax - # -Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) - get_filename_component(_pchDir "${_pchFile}" DIRECTORY) - get_filename_component(_pchName "${_pchFile}" NAME) - set (_xLanguage_C "c-header") - set (_xLanguage_CXX "c++-header") - set (_pchSuppressMessages FALSE) - if ("${CMAKE_${_language}_FLAGS}" MATCHES ".*-Wno-pch-messages.*") - set(_pchSuppressMessages TRUE) - endif() - if (_flags) - # append to list - if ("${_language}" STREQUAL "CXX") - list (APPEND _flags -Kc++) - endif() - list (APPEND _flags -include "${_prefixFile}" -pch-dir "${_pchDir}" -pch-create "${_pchName}" -fsyntax-only "${_hostFile}") - if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") - if (NOT _pchSuppressMessages) - list (APPEND _flags -Wpch-messages) - endif() - endif() - else() - # return as a flag string - set (_flags "-include \"${_prefixFile}\" -pch-dir \"${_pchDir}\" -pch-create \"${_pchName}\"") - if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") - if (NOT _pchSuppressMessages) - set (_flags "${_flags} -Wpch-messages") - endif() - endif() - endif() - endif() - else() - message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") - endif() - set (${_flagsVar} ${_flags} PARENT_SCOPE) -endfunction() - -function (cotire_add_prefix_pch_inclusion_flags _language _compilerID _compilerVersion _prefixFile _pchFile _flagsVar) - set (_flags ${${_flagsVar}}) - if (_compilerID MATCHES "MSVC") - file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) - # cl.exe options used - # /Yu uses a precompiled header file during build - # /Fp specifies precompiled header binary file name - # /FI forces inclusion of file - # /Zm precompiled header memory allocation scaling factor - if (_pchFile) - file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) - if (_flags) - # append to list - list (APPEND _flags "/Yu${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") - if (COTIRE_PCH_MEMORY_SCALING_FACTOR) - list (APPEND _flags "/Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") - endif() - else() - # return as a flag string - set (_flags "/Yu\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") - if (COTIRE_PCH_MEMORY_SCALING_FACTOR) - set (_flags "${_flags} /Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") - endif() - endif() - else() - # no precompiled header, force inclusion of prefix header - if (_flags) - # append to list - list (APPEND _flags "/FI${_prefixFileNative}") - else() - # return as a flag string - set (_flags "/FI\"${_prefixFileNative}\"") - endif() - endif() - elseif (_compilerID MATCHES "GNU") - # GCC options used - # -include process include file as the first line of the primary source file - # -Winvalid-pch warns if precompiled header is found but cannot be used - # note: ccache requires the -include flag to be used in order to process precompiled header correctly - if (_flags) - # append to list - list (APPEND _flags -Winvalid-pch -include "${_prefixFile}") - else() - # return as a flag string - set (_flags "-Winvalid-pch -include \"${_prefixFile}\"") - endif() - elseif (_compilerID MATCHES "Clang") - if (UNIX) - # Clang options used - # -include process include file as the first line of the primary source file - # note: ccache requires the -include flag to be used in order to process precompiled header correctly - if (_flags) - # append to list - list (APPEND _flags -include "${_prefixFile}") - else() - # return as a flag string - set (_flags "-include \"${_prefixFile}\"") - endif() - elseif (WIN32) - file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) - # Clang-cl.exe options used - # /Yu uses a precompiled header file during build - # /Fp specifies precompiled header binary file name - # /FI forces inclusion of file - if (_pchFile) - file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) - if (_flags) - # append to list - list (APPEND _flags "/Yu${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") - else() - # return as a flag string - set (_flags "/Yu\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") - endif() - else() - # no precompiled header, force inclusion of prefix header - if (_flags) - # append to list - list (APPEND _flags "/FI${_prefixFileNative}") - else() - # return as a flag string - set (_flags "/FI\"${_prefixFileNative}\"") - endif() - endif() - endif() - elseif (_compilerID MATCHES "Intel") - if (WIN32) - file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) - # Windows Intel options used - # /Yu use a precompiled header (PCH) file - # /Fp specify a path or file name for precompiled header files - # /FI tells the preprocessor to include a specified file name as the header file - # /Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) - if (_pchFile) - file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) - if (_flags) - # append to list - list (APPEND _flags "/Yu" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") - if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") - list (APPEND _flags "/Wpch-messages") - endif() - else() - # return as a flag string - set (_flags "/Yu /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") - if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") - set (_flags "${_flags} /Wpch-messages") - endif() - endif() - else() - # no precompiled header, force inclusion of prefix header - if (_flags) - # append to list - list (APPEND _flags "/FI${_prefixFileNative}") - else() - # return as a flag string - set (_flags "/FI\"${_prefixFileNative}\"") - endif() - endif() - else() - # Linux / Mac OS X Intel options used - # -pch-dir location for precompiled header files - # -pch-use name of the precompiled header (PCH) to use - # -include process include file as the first line of the primary source file - # -Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) - if (_pchFile) - get_filename_component(_pchDir "${_pchFile}" DIRECTORY) - get_filename_component(_pchName "${_pchFile}" NAME) - set (_pchSuppressMessages FALSE) - if ("${CMAKE_${_language}_FLAGS}" MATCHES ".*-Wno-pch-messages.*") - set(_pchSuppressMessages TRUE) - endif() - if (_flags) - # append to list - list (APPEND _flags -include "${_prefixFile}" -pch-dir "${_pchDir}" -pch-use "${_pchName}") - if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") - if (NOT _pchSuppressMessages) - list (APPEND _flags -Wpch-messages) - endif() - endif() - else() - # return as a flag string - set (_flags "-include \"${_prefixFile}\" -pch-dir \"${_pchDir}\" -pch-use \"${_pchName}\"") - if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") - if (NOT _pchSuppressMessages) - set (_flags "${_flags} -Wpch-messages") - endif() - endif() - endif() - else() - # no precompiled header, force inclusion of prefix header - if (_flags) - # append to list - list (APPEND _flags -include "${_prefixFile}") - else() - # return as a flag string - set (_flags "-include \"${_prefixFile}\"") - endif() - endif() - endif() - else() - message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") - endif() - set (${_flagsVar} ${_flags} PARENT_SCOPE) -endfunction() - -function (cotire_precompile_prefix_header _prefixFile _pchFile _hostFile) - set(_options "") - set(_oneValueArgs COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_ID COMPILER_VERSION LANGUAGE) - set(_multiValueArgs COMPILE_DEFINITIONS COMPILE_FLAGS INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES SYS COMPILER_LAUNCHER) - cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) - if (NOT _option_LANGUAGE) - set (_option_LANGUAGE "CXX") - endif() - if (NOT _option_COMPILER_ID) - set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") - endif() - if (NOT _option_COMPILER_VERSION) - set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") - endif() - cotire_init_compile_cmd(_cmd "${_option_LANGUAGE}" "${_option_COMPILER_LAUNCHER}" "${_option_COMPILER_EXECUTABLE}" "${_option_COMPILER_ARG1}") - cotire_add_definitions_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_COMPILE_DEFINITIONS}) - cotire_add_compile_flags_to_cmd(_cmd ${_option_COMPILE_FLAGS}) - cotire_add_includes_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) - cotire_add_frameworks_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) - cotire_add_pch_compilation_flags( - "${_option_LANGUAGE}" "${_option_COMPILER_ID}" "${_option_COMPILER_VERSION}" - "${_prefixFile}" "${_pchFile}" "${_hostFile}" _cmd) - if (COTIRE_VERBOSE) - message (STATUS "execute_process: ${_cmd}") - endif() - if (MSVC_IDE OR _option_COMPILER_ID MATCHES "MSVC") - # cl.exe messes with the output streams unless the environment variable VS_UNICODE_OUTPUT is cleared - unset (ENV{VS_UNICODE_OUTPUT}) - elseif (_option_COMPILER_ID MATCHES "Clang" AND _option_COMPILER_VERSION VERSION_LESS "4.0.0") - if (_option_COMPILER_LAUNCHER MATCHES "ccache" OR - _option_COMPILER_EXECUTABLE MATCHES "ccache") - # Newer versions of Clang embed a compilation timestamp into the precompiled header binary, - # which results in "file has been modified since the precompiled header was built" errors if ccache is used. - # We work around the problem by disabling ccache upon pre-compiling the prefix header. - set (ENV{CCACHE_DISABLE} "true") - endif() - endif() - execute_process( - COMMAND ${_cmd} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - RESULT_VARIABLE _result) - if (_result) - message (FATAL_ERROR "cotire: error ${_result} precompiling ${_prefixFile}.") - endif() -endfunction() - -function (cotire_check_precompiled_header_support _language _target _msgVar) - set (_unsupportedCompiler - "Precompiled headers not supported for ${_language} compiler ${CMAKE_${_language}_COMPILER_ID}") - if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC") - # PCH supported since Visual Studio C++ 6.0 - # and CMake does not support an earlier version - set (${_msgVar} "" PARENT_SCOPE) - elseif (CMAKE_${_language}_COMPILER_ID MATCHES "GNU") - # GCC PCH support requires version >= 3.4 - if ("${CMAKE_${_language}_COMPILER_VERSION}" VERSION_LESS "3.4.0") - set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}." PARENT_SCOPE) - else() - set (${_msgVar} "" PARENT_SCOPE) - endif() - elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Clang") - if (UNIX) - # all Unix Clang versions have PCH support - set (${_msgVar} "" PARENT_SCOPE) - elseif (WIN32) - # only clang-cl is supported under Windows - get_filename_component(_compilerName "${CMAKE_${_language}_COMPILER}" NAME_WE) - if (NOT _compilerName MATCHES "cl$") - set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}. Use clang-cl instead." PARENT_SCOPE) - endif() - endif() - elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Intel") - # Intel PCH support requires version >= 8.0.0 - if ("${CMAKE_${_language}_COMPILER_VERSION}" VERSION_LESS "8.0.0") - set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}." PARENT_SCOPE) - else() - set (${_msgVar} "" PARENT_SCOPE) - endif() - else() - set (${_msgVar} "${_unsupportedCompiler}." PARENT_SCOPE) - endif() - # check if ccache is used as a compiler launcher - get_target_property(_launcher ${_target} ${_language}_COMPILER_LAUNCHER) - get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" REALPATH) - if (_realCompilerExe MATCHES "ccache" OR _launcher MATCHES "ccache") - # verify that ccache configuration is compatible with precompiled headers - # always check environment variable CCACHE_SLOPPINESS, because earlier versions of ccache - # do not report the "sloppiness" setting correctly upon printing ccache configuration - if (DEFINED ENV{CCACHE_SLOPPINESS}) - if (NOT "$ENV{CCACHE_SLOPPINESS}" MATCHES "pch_defines" OR - NOT "$ENV{CCACHE_SLOPPINESS}" MATCHES "time_macros") - set (${_msgVar} - "ccache requires the environment variable CCACHE_SLOPPINESS to be set to \"pch_defines,time_macros\"." - PARENT_SCOPE) - endif() - else() - if (_realCompilerExe MATCHES "ccache") - set (_ccacheExe "${_realCompilerExe}") - else() - set (_ccacheExe "${_launcher}") - endif() - # ccache 3.7.0 replaced --print-config with --show-config - # use -p instead, which seems to work for all version for now, sigh - execute_process( - COMMAND "${_ccacheExe}" "-p" - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" - RESULT_VARIABLE _result - OUTPUT_VARIABLE _ccacheConfig OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET) - if (_result) - set (${_msgVar} "ccache configuration cannot be determined." PARENT_SCOPE) - elseif (NOT _ccacheConfig MATCHES "sloppiness.*=.*time_macros" OR - NOT _ccacheConfig MATCHES "sloppiness.*=.*pch_defines") - set (${_msgVar} - "ccache requires configuration setting \"sloppiness\" to be set to \"pch_defines,time_macros\"." - PARENT_SCOPE) - endif() - endif() - endif() - if (APPLE) - # PCH compilation not supported by GCC / Clang for multi-architecture builds (e.g., i386, x86_64) - cotire_get_configuration_types(_configs) - foreach (_config ${_configs}) - set (_targetFlags "") - cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) - cotire_filter_compile_flags("${_language}" "arch" _architectures _ignore ${_targetFlags}) - list (LENGTH _architectures _numberOfArchitectures) - if (_numberOfArchitectures GREATER 1) - string (REPLACE ";" ", " _architectureStr "${_architectures}") - set (${_msgVar} - "Precompiled headers not supported on Darwin for multi-architecture builds (${_architectureStr})." - PARENT_SCOPE) - break() - endif() - endforeach() - endif() -endfunction() - -macro (cotire_get_intermediate_dir _cotireDir) - # ${CMAKE_CFG_INTDIR} may reference a build-time variable when using a generator which supports configuration types - get_filename_component(${_cotireDir} "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${COTIRE_INTDIR}" ABSOLUTE) -endmacro() - -macro (cotire_setup_file_extension_variables) - set (_unityFileExt_C ".c") - set (_unityFileExt_CXX ".cxx") - set (_prefixFileExt_C ".h") - set (_prefixFileExt_CXX ".hxx") - set (_prefixSourceFileExt_C ".c") - set (_prefixSourceFileExt_CXX ".cxx") -endmacro() - -function (cotire_make_single_unity_source_file_path _language _target _unityFileVar) - cotire_setup_file_extension_variables() - if (NOT DEFINED _unityFileExt_${_language}) - set (${_unityFileVar} "" PARENT_SCOPE) - return() - endif() - set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") - set (_unityFileName "${_unityFileBaseName}${_unityFileExt_${_language}}") - cotire_get_intermediate_dir(_baseDir) - set (_unityFile "${_baseDir}/${_unityFileName}") - set (${_unityFileVar} "${_unityFile}" PARENT_SCOPE) -endfunction() - -function (cotire_make_unity_source_file_paths _language _target _maxIncludes _unityFilesVar) - cotire_setup_file_extension_variables() - if (NOT DEFINED _unityFileExt_${_language}) - set (${_unityFileVar} "" PARENT_SCOPE) - return() - endif() - set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") - cotire_get_intermediate_dir(_baseDir) - set (_startIndex 0) - set (_index 0) - set (_unityFiles "") - set (_sourceFiles ${ARGN}) - foreach (_sourceFile ${_sourceFiles}) - get_source_file_property(_startNew "${_sourceFile}" COTIRE_START_NEW_UNITY_SOURCE) - math (EXPR _unityFileCount "${_index} - ${_startIndex}") - if (_startNew OR (_maxIncludes GREATER 0 AND NOT _unityFileCount LESS _maxIncludes)) - if (_index GREATER 0) - # start new unity file segment - math (EXPR _endIndex "${_index} - 1") - set (_unityFileName "${_unityFileBaseName}_${_startIndex}_${_endIndex}${_unityFileExt_${_language}}") - list (APPEND _unityFiles "${_baseDir}/${_unityFileName}") - endif() - set (_startIndex ${_index}) - endif() - math (EXPR _index "${_index} + 1") - endforeach() - list (LENGTH _sourceFiles _numberOfSources) - if (_startIndex EQUAL 0) - # there is only a single unity file - cotire_make_single_unity_source_file_path(${_language} ${_target} _unityFiles) - elseif (_startIndex LESS _numberOfSources) - # end with final unity file segment - math (EXPR _endIndex "${_index} - 1") - set (_unityFileName "${_unityFileBaseName}_${_startIndex}_${_endIndex}${_unityFileExt_${_language}}") - list (APPEND _unityFiles "${_baseDir}/${_unityFileName}") - endif() - set (${_unityFilesVar} ${_unityFiles} PARENT_SCOPE) - if (COTIRE_DEBUG AND _unityFiles) - message (STATUS "unity files: ${_unityFiles}") - endif() -endfunction() - -function (cotire_unity_to_prefix_file_path _language _target _unityFile _prefixFileVar) - cotire_setup_file_extension_variables() - if (NOT DEFINED _unityFileExt_${_language}) - set (${_prefixFileVar} "" PARENT_SCOPE) - return() - endif() - set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") - set (_prefixFileBaseName "${_target}_${_language}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") - string (REPLACE "${_unityFileBaseName}" "${_prefixFileBaseName}" _prefixFile "${_unityFile}") - string (REGEX REPLACE "${_unityFileExt_${_language}}$" "${_prefixFileExt_${_language}}" _prefixFile "${_prefixFile}") - set (${_prefixFileVar} "${_prefixFile}" PARENT_SCOPE) -endfunction() - -function (cotire_prefix_header_to_source_file_path _language _prefixHeaderFile _prefixSourceFileVar) - cotire_setup_file_extension_variables() - if (NOT DEFINED _prefixSourceFileExt_${_language}) - set (${_prefixSourceFileVar} "" PARENT_SCOPE) - return() - endif() - string (REGEX REPLACE "${_prefixFileExt_${_language}}$" "${_prefixSourceFileExt_${_language}}" _prefixSourceFile "${_prefixHeaderFile}") - set (${_prefixSourceFileVar} "${_prefixSourceFile}" PARENT_SCOPE) -endfunction() - -function (cotire_make_prefix_file_name _language _target _prefixFileBaseNameVar _prefixFileNameVar) - cotire_setup_file_extension_variables() - if (NOT _language) - set (_prefixFileBaseName "${_target}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") - set (_prefixFileName "${_prefixFileBaseName}${_prefixFileExt_C}") - elseif (DEFINED _prefixFileExt_${_language}) - set (_prefixFileBaseName "${_target}_${_language}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") - set (_prefixFileName "${_prefixFileBaseName}${_prefixFileExt_${_language}}") - else() - set (_prefixFileBaseName "") - set (_prefixFileName "") - endif() - set (${_prefixFileBaseNameVar} "${_prefixFileBaseName}" PARENT_SCOPE) - set (${_prefixFileNameVar} "${_prefixFileName}" PARENT_SCOPE) -endfunction() - -function (cotire_make_prefix_file_path _language _target _prefixFileVar) - cotire_make_prefix_file_name("${_language}" "${_target}" _prefixFileBaseName _prefixFileName) - set (${_prefixFileVar} "" PARENT_SCOPE) - if (_prefixFileName) - if (NOT _language) - set (_language "C") - endif() - if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang|Intel|MSVC") - cotire_get_intermediate_dir(_baseDir) - set (${_prefixFileVar} "${_baseDir}/${_prefixFileName}" PARENT_SCOPE) - endif() - endif() -endfunction() - -function (cotire_make_pch_file_path _language _target _pchFileVar) - cotire_make_prefix_file_name("${_language}" "${_target}" _prefixFileBaseName _prefixFileName) - set (${_pchFileVar} "" PARENT_SCOPE) - if (_prefixFileBaseName AND _prefixFileName) - cotire_check_precompiled_header_support("${_language}" "${_target}" _msg) - if (NOT _msg) - if (XCODE) - # For Xcode, we completely hand off the compilation of the prefix header to the IDE - return() - endif() - cotire_get_intermediate_dir(_baseDir) - if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC") - # MSVC uses the extension .pch added to the prefix header base name - set (${_pchFileVar} "${_baseDir}/${_prefixFileBaseName}.pch" PARENT_SCOPE) - elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Clang") - # Clang looks for a precompiled header corresponding to the prefix header with the extension .pch appended - set (${_pchFileVar} "${_baseDir}/${_prefixFileName}.pch" PARENT_SCOPE) - elseif (CMAKE_${_language}_COMPILER_ID MATCHES "GNU") - # GCC looks for a precompiled header corresponding to the prefix header with the extension .gch appended - set (${_pchFileVar} "${_baseDir}/${_prefixFileName}.gch" PARENT_SCOPE) - elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Intel") - # Intel uses the extension .pchi added to the prefix header base name - set (${_pchFileVar} "${_baseDir}/${_prefixFileBaseName}.pchi" PARENT_SCOPE) - endif() - endif() - endif() -endfunction() - -function (cotire_select_unity_source_files _unityFile _sourcesVar) - set (_sourceFiles ${ARGN}) - if (_sourceFiles AND "${_unityFile}" MATCHES "${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}_([0-9]+)_([0-9]+)") - set (_startIndex ${CMAKE_MATCH_1}) - set (_endIndex ${CMAKE_MATCH_2}) - list (LENGTH _sourceFiles _numberOfSources) - if (NOT _startIndex LESS _numberOfSources) - math (EXPR _startIndex "${_numberOfSources} - 1") - endif() - if (NOT _endIndex LESS _numberOfSources) - math (EXPR _endIndex "${_numberOfSources} - 1") - endif() - set (_files "") - foreach (_index RANGE ${_startIndex} ${_endIndex}) - list (GET _sourceFiles ${_index} _file) - list (APPEND _files "${_file}") - endforeach() - else() - set (_files ${_sourceFiles}) - endif() - set (${_sourcesVar} ${_files} PARENT_SCOPE) -endfunction() - -function (cotire_get_unity_source_dependencies _language _target _dependencySourcesVar) - set (_dependencySources "") - # depend on target's generated source files - get_target_property(_targetSourceFiles ${_target} SOURCES) - cotire_get_objects_with_property_on(_generatedSources GENERATED SOURCE ${_targetSourceFiles}) - if (_generatedSources) - # but omit all generated source files that have the COTIRE_EXCLUDED property set to true - cotire_get_objects_with_property_on(_excludedGeneratedSources COTIRE_EXCLUDED SOURCE ${_generatedSources}) - if (_excludedGeneratedSources) - list (REMOVE_ITEM _generatedSources ${_excludedGeneratedSources}) - endif() - # and omit all generated source files that have the COTIRE_DEPENDENCY property set to false explicitly - cotire_get_objects_with_property_off(_excludedNonDependencySources COTIRE_DEPENDENCY SOURCE ${_generatedSources}) - if (_excludedNonDependencySources) - list (REMOVE_ITEM _generatedSources ${_excludedNonDependencySources}) - endif() - if (_generatedSources) - list (APPEND _dependencySources ${_generatedSources}) - endif() - endif() - if (COTIRE_DEBUG AND _dependencySources) - message (STATUS "${_language} ${_target} unity source dependencies: ${_dependencySources}") - endif() - set (${_dependencySourcesVar} ${_dependencySources} PARENT_SCOPE) -endfunction() - -function (cotire_get_prefix_header_dependencies _language _target _dependencySourcesVar) - set (_dependencySources "") - # depend on target source files marked with custom COTIRE_DEPENDENCY property - get_target_property(_targetSourceFiles ${_target} SOURCES) - cotire_get_objects_with_property_on(_dependencySources COTIRE_DEPENDENCY SOURCE ${_targetSourceFiles}) - if (COTIRE_DEBUG AND _dependencySources) - message (STATUS "${_language} ${_target} prefix header dependencies: ${_dependencySources}") - endif() - set (${_dependencySourcesVar} ${_dependencySources} PARENT_SCOPE) -endfunction() - -function (cotire_generate_target_script _language _configurations _target _targetScriptVar _targetConfigScriptVar) - set (_targetSources ${ARGN}) - cotire_get_prefix_header_dependencies(${_language} ${_target} COTIRE_TARGET_PREFIX_DEPENDS ${_targetSources}) - cotire_get_unity_source_dependencies(${_language} ${_target} COTIRE_TARGET_UNITY_DEPENDS ${_targetSources}) - # set up variables to be configured - set (COTIRE_TARGET_LANGUAGE "${_language}") - get_target_property(COTIRE_TARGET_IGNORE_PATH ${_target} COTIRE_PREFIX_HEADER_IGNORE_PATH) - cotire_add_sys_root_paths(COTIRE_TARGET_IGNORE_PATH) - get_target_property(COTIRE_TARGET_INCLUDE_PATH ${_target} COTIRE_PREFIX_HEADER_INCLUDE_PATH) - cotire_add_sys_root_paths(COTIRE_TARGET_INCLUDE_PATH) - get_target_property(COTIRE_TARGET_PRE_UNDEFS ${_target} COTIRE_UNITY_SOURCE_PRE_UNDEFS) - get_target_property(COTIRE_TARGET_POST_UNDEFS ${_target} COTIRE_UNITY_SOURCE_POST_UNDEFS) - get_target_property(COTIRE_TARGET_MAXIMUM_NUMBER_OF_INCLUDES ${_target} COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES) - get_target_property(COTIRE_TARGET_INCLUDE_PRIORITY_PATH ${_target} COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH) - cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_PRE_UNDEFS COTIRE_TARGET_SOURCES_PRE_UNDEFS ${_targetSources}) - cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_POST_UNDEFS COTIRE_TARGET_SOURCES_POST_UNDEFS ${_targetSources}) - set (COTIRE_TARGET_CONFIGURATION_TYPES "${_configurations}") - foreach (_config ${_configurations}) - string (TOUPPER "${_config}" _upperConfig) - cotire_get_target_include_directories( - "${_config}" "${_language}" "${_target}" COTIRE_TARGET_INCLUDE_DIRECTORIES_${_upperConfig} COTIRE_TARGET_SYSTEM_INCLUDE_DIRECTORIES_${_upperConfig}) - cotire_get_target_compile_definitions( - "${_config}" "${_language}" "${_target}" COTIRE_TARGET_COMPILE_DEFINITIONS_${_upperConfig}) - cotire_get_target_compiler_flags( - "${_config}" "${_language}" "${_target}" COTIRE_TARGET_COMPILE_FLAGS_${_upperConfig}) - cotire_get_source_files_compile_definitions( - "${_config}" "${_language}" COTIRE_TARGET_SOURCES_COMPILE_DEFINITIONS_${_upperConfig} ${_targetSources}) - endforeach() - get_target_property(COTIRE_TARGET_${_language}_COMPILER_LAUNCHER ${_target} ${_language}_COMPILER_LAUNCHER) - # set up COTIRE_TARGET_SOURCES - set (COTIRE_TARGET_SOURCES "") - foreach (_sourceFile ${_targetSources}) - get_source_file_property(_generated "${_sourceFile}" GENERATED) - if (_generated) - # use absolute paths for generated files only, retrieving the LOCATION property is an expensive operation - get_source_file_property(_sourceLocation "${_sourceFile}" LOCATION) - list (APPEND COTIRE_TARGET_SOURCES "${_sourceLocation}") - else() - list (APPEND COTIRE_TARGET_SOURCES "${_sourceFile}") - endif() - endforeach() - # copy variable definitions to cotire target script - get_cmake_property(_vars VARIABLES) - string (REGEX MATCHALL "COTIRE_[A-Za-z0-9_]+" _matchVars "${_vars}") - # omit COTIRE_*_INIT variables - string (REGEX MATCHALL "COTIRE_[A-Za-z0-9_]+_INIT" _initVars "${_matchVars}") - if (_initVars) - list (REMOVE_ITEM _matchVars ${_initVars}) - endif() - # omit COTIRE_VERBOSE which is passed as a CMake define on command line - list (REMOVE_ITEM _matchVars COTIRE_VERBOSE) - set (_contents "") - set (_contentsHasGeneratorExpressions FALSE) - foreach (_var IN LISTS _matchVars ITEMS - XCODE MSVC CMAKE_GENERATOR CMAKE_BUILD_TYPE CMAKE_CONFIGURATION_TYPES - CMAKE_${_language}_COMPILER_ID CMAKE_${_language}_COMPILER_VERSION - CMAKE_${_language}_COMPILER_LAUNCHER CMAKE_${_language}_COMPILER CMAKE_${_language}_COMPILER_ARG1 - CMAKE_INCLUDE_FLAG_${_language} CMAKE_INCLUDE_FLAG_SEP_${_language} - CMAKE_INCLUDE_SYSTEM_FLAG_${_language} - CMAKE_${_language}_FRAMEWORK_SEARCH_FLAG - CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG - CMAKE_${_language}_SOURCE_FILE_EXTENSIONS) - if (DEFINED ${_var}) - string (REPLACE "\"" "\\\"" _value "${${_var}}") - set (_contents "${_contents}set (${_var} \"${_value}\")\n") - if (NOT _contentsHasGeneratorExpressions) - if ("${_value}" MATCHES "\\$<.*>") - set (_contentsHasGeneratorExpressions TRUE) - endif() - endif() - endif() - endforeach() - # generate target script file - get_filename_component(_moduleName "${COTIRE_CMAKE_MODULE_FILE}" NAME) - set (_targetCotireScript "${CMAKE_CURRENT_BINARY_DIR}/${_target}_${_language}_${_moduleName}") - cotire_write_file("CMAKE" "${_targetCotireScript}" "${_contents}" FALSE) - if (_contentsHasGeneratorExpressions) - # use file(GENERATE ...) to expand generator expressions in the target script at CMake generate-time - set (_configNameOrNoneGeneratorExpression "$<$:None>$<$>:$>") - set (_targetCotireConfigScript "${CMAKE_CURRENT_BINARY_DIR}/${_target}_${_language}_${_configNameOrNoneGeneratorExpression}_${_moduleName}") - file (GENERATE OUTPUT "${_targetCotireConfigScript}" INPUT "${_targetCotireScript}") - else() - set (_targetCotireConfigScript "${_targetCotireScript}") - endif() - set (${_targetScriptVar} "${_targetCotireScript}" PARENT_SCOPE) - set (${_targetConfigScriptVar} "${_targetCotireConfigScript}" PARENT_SCOPE) -endfunction() - -function (cotire_setup_pch_file_compilation _language _target _targetScript _prefixFile _pchFile _hostFile) - set (_sourceFiles ${ARGN}) - if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" OR - (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) - # for MSVC, Intel and Clang-cl, we attach the precompiled header compilation to the host file - # the remaining files include the precompiled header, see cotire_setup_pch_file_inclusion - if (_sourceFiles) - set (_flags "") - cotire_add_pch_compilation_flags( - "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" - "${_prefixFile}" "${_pchFile}" "${_hostFile}" _flags) - set_property (SOURCE ${_hostFile} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") - if (COTIRE_DEBUG) - message (STATUS "set_property: SOURCE ${_hostFile} APPEND_STRING COMPILE_FLAGS ${_flags}") - endif() - set_property (SOURCE ${_hostFile} APPEND PROPERTY OBJECT_OUTPUTS "${_pchFile}") - # make object file generated from host file depend on prefix header - set_property (SOURCE ${_hostFile} APPEND PROPERTY OBJECT_DEPENDS "${_prefixFile}") - # mark host file as cotired to prevent it from being used in another cotired target - set_property (SOURCE ${_hostFile} PROPERTY COTIRE_TARGET "${_target}") - endif() - elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") - # for makefile based generator, we add a custom command to precompile the prefix header - if (_targetScript) - cotire_set_cmd_to_prologue(_cmds) - list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "precompile" "${_targetScript}" "${_prefixFile}" "${_pchFile}" "${_hostFile}") - if (MSVC_IDE) - file (TO_NATIVE_PATH "${_pchFile}" _pchFileLogPath) - else() - file (RELATIVE_PATH _pchFileLogPath "${CMAKE_BINARY_DIR}" "${_pchFile}") - endif() - # make precompiled header compilation depend on the actual compiler executable used to force - # re-compilation when the compiler executable is updated. This prevents "created by a different GCC executable" - # warnings when the precompiled header is included. - get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" ABSOLUTE) - if (COTIRE_DEBUG) - message (STATUS "add_custom_command: OUTPUT ${_pchFile} ${_cmds} DEPENDS ${_prefixFile} ${_realCompilerExe} IMPLICIT_DEPENDS ${_language} ${_prefixFile}") - endif() - set_property (SOURCE "${_pchFile}" PROPERTY GENERATED TRUE) - add_custom_command( - OUTPUT "${_pchFile}" - COMMAND ${_cmds} - DEPENDS "${_prefixFile}" "${_realCompilerExe}" - IMPLICIT_DEPENDS ${_language} "${_prefixFile}" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - COMMENT "Building ${_language} precompiled header ${_pchFileLogPath}" - VERBATIM) - endif() - endif() -endfunction() - -function (cotire_setup_pch_file_inclusion _language _target _wholeTarget _prefixFile _pchFile _hostFile) - if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" OR - (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) - # for MSVC, Intel and clang-cl, we include the precompiled header in all but the host file - # the host file does the precompiled header compilation, see cotire_setup_pch_file_compilation - set (_sourceFiles ${ARGN}) - list (LENGTH _sourceFiles _numberOfSourceFiles) - if (_numberOfSourceFiles GREATER 0) - # mark sources as cotired to prevent them from being used in another cotired target - set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") - set (_flags "") - cotire_add_prefix_pch_inclusion_flags( - "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" - "${_prefixFile}" "${_pchFile}" _flags) - set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") - if (COTIRE_DEBUG) - message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") - endif() - # make object files generated from source files depend on precompiled header - set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_pchFile}") - endif() - elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") - set (_sourceFiles ${_hostFile} ${ARGN}) - if (NOT _wholeTarget) - # for makefile based generator, we force the inclusion of the prefix header for a subset - # of the source files, if this is a multi-language target or has excluded files - set (_flags "") - cotire_add_prefix_pch_inclusion_flags( - "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" - "${_prefixFile}" "${_pchFile}" _flags) - set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") - if (COTIRE_DEBUG) - message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") - endif() - # mark sources as cotired to prevent them from being used in another cotired target - set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") - endif() - # make object files generated from source files depend on precompiled header - set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_pchFile}") - endif() -endfunction() - -function (cotire_setup_prefix_file_inclusion _language _target _prefixFile) - set (_sourceFiles ${ARGN}) - # force the inclusion of the prefix header for the given source files - set (_flags "") - set (_pchFile "") - cotire_add_prefix_pch_inclusion_flags( - "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" - "${_prefixFile}" "${_pchFile}" _flags) - set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") - if (COTIRE_DEBUG) - message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") - endif() - # mark sources as cotired to prevent them from being used in another cotired target - set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") - # make object files generated from source files depend on prefix header - set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_prefixFile}") -endfunction() - -function (cotire_get_first_set_property_value _propertyValueVar _type _object) - set (_properties ${ARGN}) - foreach (_property ${_properties}) - get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) - if (_propertyValue) - set (${_propertyValueVar} ${_propertyValue} PARENT_SCOPE) - return() - endif() - endforeach() - set (${_propertyValueVar} "" PARENT_SCOPE) -endfunction() - -function (cotire_setup_combine_command _language _targetScript _joinedFile _cmdsVar) - set (_files ${ARGN}) - set (_filesPaths "") - foreach (_file ${_files}) - get_filename_component(_filePath "${_file}" ABSOLUTE) - list (APPEND _filesPaths "${_filePath}") - endforeach() - cotire_set_cmd_to_prologue(_prefixCmd) - list (APPEND _prefixCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "combine") - if (_targetScript) - list (APPEND _prefixCmd "${_targetScript}") - endif() - list (APPEND _prefixCmd "${_joinedFile}" ${_filesPaths}) - if (COTIRE_DEBUG) - message (STATUS "add_custom_command: OUTPUT ${_joinedFile} COMMAND ${_prefixCmd} DEPENDS ${_files}") - endif() - set_property (SOURCE "${_joinedFile}" PROPERTY GENERATED TRUE) - if (MSVC_IDE) - file (TO_NATIVE_PATH "${_joinedFile}" _joinedFileLogPath) - else() - file (RELATIVE_PATH _joinedFileLogPath "${CMAKE_BINARY_DIR}" "${_joinedFile}") - endif() - get_filename_component(_joinedFileBaseName "${_joinedFile}" NAME_WE) - get_filename_component(_joinedFileExt "${_joinedFile}" EXT) - if (_language AND _joinedFileBaseName MATCHES "${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}$") - set (_comment "Generating ${_language} unity source ${_joinedFileLogPath}") - elseif (_language AND _joinedFileBaseName MATCHES "${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}$") - if (_joinedFileExt MATCHES "^\\.c") - set (_comment "Generating ${_language} prefix source ${_joinedFileLogPath}") - else() - set (_comment "Generating ${_language} prefix header ${_joinedFileLogPath}") - endif() - else() - set (_comment "Generating ${_joinedFileLogPath}") - endif() - add_custom_command( - OUTPUT "${_joinedFile}" - COMMAND ${_prefixCmd} - DEPENDS ${_files} - COMMENT "${_comment}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" - VERBATIM) - list (APPEND ${_cmdsVar} COMMAND ${_prefixCmd}) - set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) -endfunction() - -function (cotire_setup_target_pch_usage _languages _target _wholeTarget) - if (XCODE) - # for Xcode, we attach a pre-build action to generate the unity sources and prefix headers - set (_prefixFiles "") - foreach (_language ${_languages}) - get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) - if (_prefixFile) - list (APPEND _prefixFiles "${_prefixFile}") - endif() - endforeach() - set (_cmds ${ARGN}) - list (LENGTH _prefixFiles _numberOfPrefixFiles) - if (_numberOfPrefixFiles GREATER 1) - # we also generate a generic, single prefix header which includes all language specific prefix headers - set (_language "") - set (_targetScript "") - cotire_make_prefix_file_path("${_language}" ${_target} _prefixHeader) - cotire_setup_combine_command("${_language}" "${_targetScript}" "${_prefixHeader}" _cmds ${_prefixFiles}) - else() - set (_prefixHeader "${_prefixFiles}") - endif() - if (COTIRE_DEBUG) - message (STATUS "add_custom_command: TARGET ${_target} PRE_BUILD ${_cmds}") - endif() - # because CMake PRE_BUILD command does not support dependencies, - # we check dependencies explicity in cotire script mode when the pre-build action is run - add_custom_command( - TARGET "${_target}" - PRE_BUILD ${_cmds} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - COMMENT "Updating target ${_target} prefix headers" - VERBATIM) - # make Xcode precompile the generated prefix header with ProcessPCH and ProcessPCH++ - set_target_properties(${_target} PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES") - set_target_properties(${_target} PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${_prefixHeader}") - elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") - # for makefile based generator, we force inclusion of the prefix header for all target source files - # if this is a single-language target without any excluded files - if (_wholeTarget) - set (_language "${_languages}") - # for MSVC, Intel and clang-cl, precompiled header inclusion is always done on the source file level - # see cotire_setup_pch_file_inclusion - if (NOT CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" AND NOT - (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) - get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) - if (_prefixFile) - get_property(_pchFile TARGET ${_target} PROPERTY COTIRE_${_language}_PRECOMPILED_HEADER) - set (_options COMPILE_OPTIONS) - cotire_add_prefix_pch_inclusion_flags( - "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" - "${_prefixFile}" "${_pchFile}" _options) - set_property(TARGET ${_target} APPEND PROPERTY ${_options}) - if (COTIRE_DEBUG) - message (STATUS "set_property: TARGET ${_target} APPEND PROPERTY ${_options}") - endif() - endif() - endif() - endif() - endif() -endfunction() - -function (cotire_setup_unity_generation_commands _language _target _targetScript _targetConfigScript _unityFiles _cmdsVar) - set (_dependencySources "") - cotire_get_unity_source_dependencies(${_language} ${_target} _dependencySources ${ARGN}) - foreach (_unityFile ${_unityFiles}) - set_property (SOURCE "${_unityFile}" PROPERTY GENERATED TRUE) - # set up compiled unity source dependencies via OBJECT_DEPENDS - # this ensures that missing source files are generated before the unity file is compiled - if (COTIRE_DEBUG AND _dependencySources) - message (STATUS "${_unityFile} OBJECT_DEPENDS ${_dependencySources}") - endif() - if (_dependencySources) - # the OBJECT_DEPENDS property requires a list of full paths - set (_objectDependsPaths "") - foreach (_sourceFile ${_dependencySources}) - get_source_file_property(_sourceLocation "${_sourceFile}" LOCATION) - list (APPEND _objectDependsPaths "${_sourceLocation}") - endforeach() - set_property (SOURCE "${_unityFile}" PROPERTY OBJECT_DEPENDS ${_objectDependsPaths}) - endif() - if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") - # unity file compilation results in potentially huge object file, - # thus use /bigobj by default unter cl.exe and Windows Intel - set_property (SOURCE "${_unityFile}" APPEND_STRING PROPERTY COMPILE_FLAGS "/bigobj") - endif() - cotire_set_cmd_to_prologue(_unityCmd) - list (APPEND _unityCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "unity" "${_targetConfigScript}" "${_unityFile}") - if (CMAKE_VERSION VERSION_LESS "3.1.0") - set (_unityCmdDepends "${_targetScript}") - else() - # CMake 3.1.0 supports generator expressions in arguments to DEPENDS - set (_unityCmdDepends "${_targetConfigScript}") - endif() - if (MSVC_IDE) - file (TO_NATIVE_PATH "${_unityFile}" _unityFileLogPath) - else() - file (RELATIVE_PATH _unityFileLogPath "${CMAKE_BINARY_DIR}" "${_unityFile}") - endif() - if (COTIRE_DEBUG) - message (STATUS "add_custom_command: OUTPUT ${_unityFile} COMMAND ${_unityCmd} DEPENDS ${_unityCmdDepends}") - endif() - add_custom_command( - OUTPUT "${_unityFile}" - COMMAND ${_unityCmd} - DEPENDS ${_unityCmdDepends} - COMMENT "Generating ${_language} unity source ${_unityFileLogPath}" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - VERBATIM) - list (APPEND ${_cmdsVar} COMMAND ${_unityCmd}) - endforeach() - set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) -endfunction() - -function (cotire_setup_prefix_generation_command _language _target _targetScript _prefixFile _unityFiles _cmdsVar) - set (_sourceFiles ${ARGN}) - set (_dependencySources "") - cotire_get_prefix_header_dependencies(${_language} ${_target} _dependencySources ${_sourceFiles}) - cotire_set_cmd_to_prologue(_prefixCmd) - list (APPEND _prefixCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "prefix" "${_targetScript}" "${_prefixFile}" ${_unityFiles}) - set_property (SOURCE "${_prefixFile}" PROPERTY GENERATED TRUE) - # make prefix header generation depend on the actual compiler executable used to force - # re-generation when the compiler executable is updated. This prevents "file not found" - # errors for compiler version specific system header files. - get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" ABSOLUTE) - if (COTIRE_DEBUG) - message (STATUS "add_custom_command: OUTPUT ${_prefixFile} COMMAND ${_prefixCmd} DEPENDS ${_unityFile} ${_dependencySources} ${_realCompilerExe}") - endif() - if (MSVC_IDE) - file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileLogPath) - else() - file (RELATIVE_PATH _prefixFileLogPath "${CMAKE_BINARY_DIR}" "${_prefixFile}") - endif() - get_filename_component(_prefixFileExt "${_prefixFile}" EXT) - if (_prefixFileExt MATCHES "^\\.c") - set (_comment "Generating ${_language} prefix source ${_prefixFileLogPath}") - else() - set (_comment "Generating ${_language} prefix header ${_prefixFileLogPath}") - endif() - # prevent pre-processing errors upon generating the prefix header when a target's generated include file does not yet exist - # we do not add a file-level dependency for the target's generated files though, because we only want to depend on their existence - # thus we make the prefix header generation depend on a custom helper target which triggers the generation of the files - set (_preTargetName "${_target}${COTIRE_PCH_TARGET_SUFFIX}_pre") - if (TARGET ${_preTargetName}) - # custom helper target has already been generated while processing a different language - list (APPEND _dependencySources ${_preTargetName}) - else() - get_target_property(_targetSourceFiles ${_target} SOURCES) - cotire_get_objects_with_property_on(_generatedSources GENERATED SOURCE ${_targetSourceFiles}) - if (_generatedSources) - add_custom_target("${_preTargetName}" DEPENDS ${_generatedSources}) - cotire_init_target("${_preTargetName}") - list (APPEND _dependencySources ${_preTargetName}) - endif() - endif() - add_custom_command( - OUTPUT "${_prefixFile}" "${_prefixFile}.log" - COMMAND ${_prefixCmd} - DEPENDS ${_unityFiles} ${_dependencySources} "${_realCompilerExe}" - COMMENT "${_comment}" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - VERBATIM) - list (APPEND ${_cmdsVar} COMMAND ${_prefixCmd}) - set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) -endfunction() - -function (cotire_setup_prefix_generation_from_unity_command _language _target _targetScript _prefixFile _unityFiles _cmdsVar) - set (_sourceFiles ${ARGN}) - if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") - # GNU and Clang require indirect compilation of the prefix header to make them honor the system_header pragma - cotire_prefix_header_to_source_file_path(${_language} "${_prefixFile}" _prefixSourceFile) - else() - set (_prefixSourceFile "${_prefixFile}") - endif() - cotire_setup_prefix_generation_command( - ${_language} ${_target} "${_targetScript}" - "${_prefixSourceFile}" "${_unityFiles}" ${_cmdsVar} ${_sourceFiles}) - if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") - # set up generation of a prefix source file which includes the prefix header - cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixFile}" _cmds ${_prefixSourceFile}) - endif() - set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) -endfunction() - -function (cotire_setup_prefix_generation_from_provided_command _language _target _targetScript _prefixFile _cmdsVar) - set (_prefixHeaderFiles ${ARGN}) - if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") - # GNU and Clang require indirect compilation of the prefix header to make them honor the system_header pragma - cotire_prefix_header_to_source_file_path(${_language} "${_prefixFile}" _prefixSourceFile) - else() - set (_prefixSourceFile "${_prefixFile}") - endif() - cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixSourceFile}" _cmds ${_prefixHeaderFiles}) - if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") - # set up generation of a prefix source file which includes the prefix header - cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixFile}" _cmds ${_prefixSourceFile}) - endif() - set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) -endfunction() - -function (cotire_init_cotire_target_properties _target) - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER TRUE) - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD TRUE) - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ADD_CLEAN SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_ADD_CLEAN FALSE) - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH "${CMAKE_SOURCE_DIR}") - cotire_check_is_path_relative_to("${CMAKE_BINARY_DIR}" _isRelative "${CMAKE_SOURCE_DIR}") - if (NOT _isRelative) - set_property(TARGET ${_target} APPEND PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH "${CMAKE_BINARY_DIR}") - endif() - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH "") - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH "") - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS "") - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_POST_UNDEFS SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_POST_UNDEFS "") - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_LINK_LIBRARIES_INIT SET) - if (NOT _isSet) - set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_LINK_LIBRARIES_INIT "COPY_UNITY") - endif() - get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES SET) - if (NOT _isSet) - if (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES) - set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES "${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES}") - else() - set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES "") - endif() - endif() -endfunction() - -function (cotire_make_target_message _target _languages _disableMsg _targetMsgVar) - get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) - get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) - string (REPLACE ";" " " _languagesStr "${_languages}") - math (EXPR _numberOfExcludedFiles "${ARGC} - 4") - if (_numberOfExcludedFiles EQUAL 0) - set (_excludedStr "") - elseif (COTIRE_VERBOSE OR _numberOfExcludedFiles LESS 4) - string (REPLACE ";" ", " _excludedStr "excluding ${ARGN}") - else() - set (_excludedStr "excluding ${_numberOfExcludedFiles} files") - endif() - set (_targetMsg "") - if (NOT _languages) - set (_targetMsg "Target ${_target} cannot be cotired.") - if (_disableMsg) - set (_targetMsg "${_targetMsg} ${_disableMsg}") - endif() - elseif (NOT _targetUsePCH AND NOT _targetAddSCU) - set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build and precompiled header.") - if (_disableMsg) - set (_targetMsg "${_targetMsg} ${_disableMsg}") - endif() - elseif (NOT _targetUsePCH) - if (_excludedStr) - set (_targetMsg "${_languagesStr} target ${_target} cotired without precompiled header ${_excludedStr}.") - else() - set (_targetMsg "${_languagesStr} target ${_target} cotired without precompiled header.") - endif() - if (_disableMsg) - set (_targetMsg "${_targetMsg} ${_disableMsg}") - endif() - elseif (NOT _targetAddSCU) - if (_excludedStr) - set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build ${_excludedStr}.") - else() - set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build.") - endif() - if (_disableMsg) - set (_targetMsg "${_targetMsg} ${_disableMsg}") - endif() - else() - if (_excludedStr) - set (_targetMsg "${_languagesStr} target ${_target} cotired ${_excludedStr}.") - else() - set (_targetMsg "${_languagesStr} target ${_target} cotired.") - endif() - endif() - set (${_targetMsgVar} "${_targetMsg}" PARENT_SCOPE) -endfunction() - -function (cotire_choose_target_languages _target _targetLanguagesVar _wholeTargetVar) - set (_languages ${ARGN}) - set (_allSourceFiles "") - set (_allExcludedSourceFiles "") - set (_allCotiredSourceFiles "") - set (_targetLanguages "") - set (_pchEligibleTargetLanguages "") - get_target_property(_targetType ${_target} TYPE) - get_target_property(_targetSourceFiles ${_target} SOURCES) - get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) - get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) - set (_disableMsg "") - foreach (_language ${_languages}) - get_target_property(_prefixHeader ${_target} COTIRE_${_language}_PREFIX_HEADER) - get_target_property(_unityBuildFile ${_target} COTIRE_${_language}_UNITY_SOURCE) - if (_prefixHeader OR _unityBuildFile) - message (STATUS "cotire: target ${_target} has already been cotired.") - set (${_targetLanguagesVar} "" PARENT_SCOPE) - return() - endif() - if (_targetUsePCH AND "${_language}" MATCHES "^C|CXX$" AND DEFINED CMAKE_${_language}_COMPILER_ID) - if (CMAKE_${_language}_COMPILER_ID) - cotire_check_precompiled_header_support("${_language}" "${_target}" _disableMsg) - if (_disableMsg) - set (_targetUsePCH FALSE) - endif() - endif() - endif() - set (_sourceFiles "") - set (_excludedSources "") - set (_cotiredSources "") - cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) - if (_sourceFiles OR _excludedSources OR _cotiredSources) - list (APPEND _targetLanguages ${_language}) - endif() - if (_sourceFiles) - list (APPEND _allSourceFiles ${_sourceFiles}) - endif() - list (LENGTH _sourceFiles _numberOfSources) - if (NOT _numberOfSources LESS ${COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES}) - list (APPEND _pchEligibleTargetLanguages ${_language}) - endif() - if (_excludedSources) - list (APPEND _allExcludedSourceFiles ${_excludedSources}) - endif() - if (_cotiredSources) - list (APPEND _allCotiredSourceFiles ${_cotiredSources}) - endif() - endforeach() - set (_targetMsgLevel STATUS) - if (NOT _targetLanguages) - string (REPLACE ";" " or " _languagesStr "${_languages}") - set (_disableMsg "No ${_languagesStr} source files.") - set (_targetUsePCH FALSE) - set (_targetAddSCU FALSE) - endif() - if (_targetUsePCH) - if (_allCotiredSourceFiles) - cotire_get_source_file_property_values(_cotireTargets COTIRE_TARGET ${_allCotiredSourceFiles}) - list (REMOVE_DUPLICATES _cotireTargets) - string (REPLACE ";" ", " _cotireTargetsStr "${_cotireTargets}") - set (_disableMsg "Target sources already include a precompiled header for target(s) ${_cotireTargets}.") - set (_disableMsg "${_disableMsg} Set target property COTIRE_ENABLE_PRECOMPILED_HEADER to FALSE for targets ${_target},") - set (_disableMsg "${_disableMsg} ${_cotireTargetsStr} to get a workable build system.") - set (_targetMsgLevel SEND_ERROR) - set (_targetUsePCH FALSE) - elseif (NOT _pchEligibleTargetLanguages) - set (_disableMsg "Too few applicable sources.") - set (_targetUsePCH FALSE) - elseif (XCODE AND _allExcludedSourceFiles) - # for Xcode, we cannot apply the precompiled header to individual sources, only to the whole target - set (_disableMsg "Exclusion of source files not supported for generator Xcode.") - set (_targetUsePCH FALSE) - elseif (XCODE AND "${_targetType}" STREQUAL "OBJECT_LIBRARY") - # for Xcode, we cannot apply the required PRE_BUILD action to generate the prefix header to an OBJECT_LIBRARY target - set (_disableMsg "Required PRE_BUILD action not supported for OBJECT_LIBRARY targets for generator Xcode.") - set (_targetUsePCH FALSE) - endif() - endif() - if (_targetAddSCU) - # disable unity builds if automatic Qt processing is used - get_target_property(_targetAutoMoc ${_target} AUTOMOC) - get_target_property(_targetAutoUic ${_target} AUTOUIC) - get_target_property(_targetAutoRcc ${_target} AUTORCC) - if (_targetAutoMoc OR _targetAutoUic OR _targetAutoRcc) - if (_disableMsg) - set (_disableMsg "${_disableMsg} Target uses automatic CMake Qt processing.") - else() - set (_disableMsg "Target uses automatic CMake Qt processing.") - endif() - set (_targetAddSCU FALSE) - endif() - endif() - set_property(TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER ${_targetUsePCH}) - set_property(TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD ${_targetAddSCU}) - cotire_make_target_message(${_target} "${_targetLanguages}" "${_disableMsg}" _targetMsg ${_allExcludedSourceFiles}) - if (_targetMsg) - if (NOT DEFINED COTIREMSG_${_target}) - set (COTIREMSG_${_target} "") - endif() - if (COTIRE_VERBOSE OR NOT "${_targetMsgLevel}" STREQUAL "STATUS" OR - NOT "${COTIREMSG_${_target}}" STREQUAL "${_targetMsg}") - # cache message to avoid redundant messages on re-configure - set (COTIREMSG_${_target} "${_targetMsg}" CACHE INTERNAL "${_target} cotire message.") - message (${_targetMsgLevel} "${_targetMsg}") - endif() - endif() - list (LENGTH _targetLanguages _numberOfLanguages) - if (_numberOfLanguages GREATER 1 OR _allExcludedSourceFiles) - set (${_wholeTargetVar} FALSE PARENT_SCOPE) - else() - set (${_wholeTargetVar} TRUE PARENT_SCOPE) - endif() - set (${_targetLanguagesVar} ${_targetLanguages} PARENT_SCOPE) -endfunction() - -function (cotire_compute_unity_max_number_of_includes _target _maxIncludesVar) - set (_sourceFiles ${ARGN}) - get_target_property(_maxIncludes ${_target} COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES) - if (_maxIncludes MATCHES "(-j|--parallel|--jobs) ?([0-9]*)") - if (DEFINED CMAKE_MATCH_2) - set (_numberOfThreads "${CMAKE_MATCH_2}") - else() - set (_numberOfThreads "") - endif() - if (NOT _numberOfThreads) - # use all available cores - ProcessorCount(_numberOfThreads) - endif() - list (LENGTH _sourceFiles _numberOfSources) - math (EXPR _maxIncludes "(${_numberOfSources} + ${_numberOfThreads} - 1) / ${_numberOfThreads}") - elseif (NOT _maxIncludes MATCHES "[0-9]+") - set (_maxIncludes 0) - endif() - if (COTIRE_DEBUG) - message (STATUS "${_target} unity source max includes: ${_maxIncludes}") - endif() - set (${_maxIncludesVar} ${_maxIncludes} PARENT_SCOPE) -endfunction() - -function (cotire_process_target_language _language _configurations _target _wholeTarget _cmdsVar) - set (${_cmdsVar} "" PARENT_SCOPE) - get_target_property(_targetSourceFiles ${_target} SOURCES) - set (_sourceFiles "") - set (_excludedSources "") - set (_cotiredSources "") - cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) - if (NOT _sourceFiles AND NOT _cotiredSources) - return() - endif() - set (_cmds "") - # check for user provided unity source file list - get_property(_unitySourceFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE_INIT) - if (NOT _unitySourceFiles) - set (_unitySourceFiles ${_sourceFiles} ${_cotiredSources}) - endif() - cotire_generate_target_script( - ${_language} "${_configurations}" ${_target} _targetScript _targetConfigScript ${_unitySourceFiles}) - # set up unity files for parallel compilation - cotire_compute_unity_max_number_of_includes(${_target} _maxIncludes ${_unitySourceFiles}) - cotire_make_unity_source_file_paths(${_language} ${_target} ${_maxIncludes} _unityFiles ${_unitySourceFiles}) - list (LENGTH _unityFiles _numberOfUnityFiles) - if (_numberOfUnityFiles EQUAL 0) - return() - elseif (_numberOfUnityFiles GREATER 1) - cotire_setup_unity_generation_commands( - ${_language} ${_target} "${_targetScript}" "${_targetConfigScript}" "${_unityFiles}" _cmds ${_unitySourceFiles}) - endif() - # set up single unity file for prefix header generation - cotire_make_single_unity_source_file_path(${_language} ${_target} _unityFile) - cotire_setup_unity_generation_commands( - ${_language} ${_target} "${_targetScript}" "${_targetConfigScript}" "${_unityFile}" _cmds ${_unitySourceFiles}) - cotire_make_prefix_file_path(${_language} ${_target} _prefixFile) - # set up prefix header - if (_prefixFile) - # check for user provided prefix header files - get_property(_prefixHeaderFiles TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER_INIT) - if (_prefixHeaderFiles) - cotire_setup_prefix_generation_from_provided_command( - ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" _cmds ${_prefixHeaderFiles}) - else() - cotire_setup_prefix_generation_from_unity_command( - ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" "${_unityFile}" _cmds ${_unitySourceFiles}) - endif() - # check if selected language has enough sources at all - list (LENGTH _sourceFiles _numberOfSources) - if (_numberOfSources LESS ${COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES}) - set (_targetUsePCH FALSE) - else() - get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) - endif() - if (_targetUsePCH) - cotire_make_pch_file_path(${_language} ${_target} _pchFile) - if (_pchFile) - # first file in _sourceFiles is passed as the host file - cotire_setup_pch_file_compilation( - ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" "${_pchFile}" ${_sourceFiles}) - cotire_setup_pch_file_inclusion( - ${_language} ${_target} ${_wholeTarget} "${_prefixFile}" "${_pchFile}" ${_sourceFiles}) - endif() - elseif (_prefixHeaderFiles) - # user provided prefix header must be included unconditionally - cotire_setup_prefix_file_inclusion(${_language} ${_target} "${_prefixFile}" ${_sourceFiles}) - endif() - endif() - # mark target as cotired for language - set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE "${_unityFiles}") - if (_prefixFile) - set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER "${_prefixFile}") - if (_targetUsePCH AND _pchFile) - set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_PRECOMPILED_HEADER "${_pchFile}") - endif() - endif() - set (${_cmdsVar} ${_cmds} PARENT_SCOPE) -endfunction() - -function (cotire_setup_clean_target _target) - set (_cleanTargetName "${_target}${COTIRE_CLEAN_TARGET_SUFFIX}") - if (NOT TARGET "${_cleanTargetName}") - cotire_set_cmd_to_prologue(_cmds) - get_filename_component(_outputDir "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}" ABSOLUTE) - list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "cleanup" "${_outputDir}" "${COTIRE_INTDIR}" "${_target}") - add_custom_target(${_cleanTargetName} - COMMAND ${_cmds} - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" - COMMENT "Cleaning up target ${_target} cotire generated files" - VERBATIM) - cotire_init_target("${_cleanTargetName}") - endif() -endfunction() - -function (cotire_setup_pch_target _languages _configurations _target) - if ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") - # for makefile based generators, we add a custom target to trigger the generation of the cotire related files - set (_dependsFiles "") - foreach (_language ${_languages}) - set (_props COTIRE_${_language}_PREFIX_HEADER COTIRE_${_language}_UNITY_SOURCE) - if (NOT CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" AND NOT - (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) - # MSVC, Intel and clang-cl only create precompiled header as a side effect - list (INSERT _props 0 COTIRE_${_language}_PRECOMPILED_HEADER) - endif() - cotire_get_first_set_property_value(_dependsFile TARGET ${_target} ${_props}) - if (_dependsFile) - list (APPEND _dependsFiles "${_dependsFile}") - endif() - endforeach() - if (_dependsFiles) - set (_pchTargetName "${_target}${COTIRE_PCH_TARGET_SUFFIX}") - add_custom_target("${_pchTargetName}" DEPENDS ${_dependsFiles}) - cotire_init_target("${_pchTargetName}") - cotire_add_to_pch_all_target(${_pchTargetName}) - endif() - else() - # for other generators, we add the "clean all" target to clean up the precompiled header - cotire_setup_clean_all_target() - endif() -endfunction() - -function (cotire_filter_object_libraries _target _objectLibrariesVar) - set (_objectLibraries "") - foreach (_source ${ARGN}) - if (_source MATCHES "^\\$$") - list (APPEND _objectLibraries "${_source}") - endif() - endforeach() - set (${_objectLibrariesVar} ${_objectLibraries} PARENT_SCOPE) -endfunction() - -function (cotire_collect_unity_target_sources _target _languages _unityTargetSourcesVar) - get_target_property(_targetSourceFiles ${_target} SOURCES) - set (_unityTargetSources ${_targetSourceFiles}) - foreach (_language ${_languages}) - get_property(_unityFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE) - if (_unityFiles) - # remove source files that are included in the unity source - set (_sourceFiles "") - set (_excludedSources "") - set (_cotiredSources "") - cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) - if (_sourceFiles OR _cotiredSources) - list (REMOVE_ITEM _unityTargetSources ${_sourceFiles} ${_cotiredSources}) - endif() - # add unity source files instead - list (APPEND _unityTargetSources ${_unityFiles}) - endif() - endforeach() - # handle object libraries which are part of the target's sources - get_target_property(_linkLibrariesStrategy ${_target} COTIRE_UNITY_LINK_LIBRARIES_INIT) - if ("${_linkLibrariesStrategy}" MATCHES "^COPY_UNITY$") - cotire_filter_object_libraries(${_target} _objectLibraries ${_targetSourceFiles}) - if (_objectLibraries) - cotire_map_libraries("${_linkLibrariesStrategy}" _unityObjectLibraries ${_objectLibraries}) - list (REMOVE_ITEM _unityTargetSources ${_objectLibraries}) - list (APPEND _unityTargetSources ${_unityObjectLibraries}) - endif() - endif() - set (${_unityTargetSourcesVar} ${_unityTargetSources} PARENT_SCOPE) -endfunction() - -function (cotire_setup_unity_target_pch_usage _languages _target) - foreach (_language ${_languages}) - get_property(_unityFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE) - if (_unityFiles) - get_property(_userPrefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER_INIT) - get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) - if (_userPrefixFile AND _prefixFile) - # user provided prefix header must be included unconditionally by unity sources - cotire_setup_prefix_file_inclusion(${_language} ${_target} "${_prefixFile}" ${_unityFiles}) - endif() - endif() - endforeach() -endfunction() - -function (cotire_setup_unity_build_target _languages _configurations _target) - get_target_property(_unityTargetName ${_target} COTIRE_UNITY_TARGET_NAME) - if (NOT _unityTargetName) - set (_unityTargetName "${_target}${COTIRE_UNITY_BUILD_TARGET_SUFFIX}") - endif() - # determine unity target sub type - get_target_property(_targetType ${_target} TYPE) - if ("${_targetType}" STREQUAL "EXECUTABLE") - set (_unityTargetSubType "") - elseif (_targetType MATCHES "(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") - set (_unityTargetSubType "${CMAKE_MATCH_1}") - else() - message (WARNING "cotire: target ${_target} has unknown target type ${_targetType}.") - return() - endif() - # determine unity target sources - set (_unityTargetSources "") - cotire_collect_unity_target_sources(${_target} "${_languages}" _unityTargetSources) - # prevent AUTOMOC, AUTOUIC and AUTORCC properties from being set when the unity target is created - set (CMAKE_AUTOMOC OFF) - set (CMAKE_AUTOUIC OFF) - set (CMAKE_AUTORCC OFF) - if (COTIRE_DEBUG) - message (STATUS "add target ${_targetType} ${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}") - endif() - # generate unity target - if ("${_targetType}" STREQUAL "EXECUTABLE") - add_executable(${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}) - else() - add_library(${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}) - endif() - # copy output location properties - set (_outputDirProperties - ARCHIVE_OUTPUT_DIRECTORY ARCHIVE_OUTPUT_DIRECTORY_ - LIBRARY_OUTPUT_DIRECTORY LIBRARY_OUTPUT_DIRECTORY_ - RUNTIME_OUTPUT_DIRECTORY RUNTIME_OUTPUT_DIRECTORY_) - if (COTIRE_UNITY_OUTPUT_DIRECTORY) - set (_setDefaultOutputDir TRUE) - if (IS_ABSOLUTE "${COTIRE_UNITY_OUTPUT_DIRECTORY}") - set (_outputDir "${COTIRE_UNITY_OUTPUT_DIRECTORY}") - else() - # append relative COTIRE_UNITY_OUTPUT_DIRECTORY to target's actual output directory - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} ${_outputDirProperties}) - cotire_resolve_config_properties("${_configurations}" _properties ${_outputDirProperties}) - foreach (_property ${_properties}) - get_property(_outputDir TARGET ${_target} PROPERTY ${_property}) - if (_outputDir) - get_filename_component(_outputDir "${_outputDir}/${COTIRE_UNITY_OUTPUT_DIRECTORY}" ABSOLUTE) - set_property(TARGET ${_unityTargetName} PROPERTY ${_property} "${_outputDir}") - set (_setDefaultOutputDir FALSE) - endif() - endforeach() - if (_setDefaultOutputDir) - get_filename_component(_outputDir "${CMAKE_CURRENT_BINARY_DIR}/${COTIRE_UNITY_OUTPUT_DIRECTORY}" ABSOLUTE) - endif() - endif() - if (_setDefaultOutputDir) - set_target_properties(${_unityTargetName} PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY "${_outputDir}" - LIBRARY_OUTPUT_DIRECTORY "${_outputDir}" - RUNTIME_OUTPUT_DIRECTORY "${_outputDir}") - endif() - else() - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - ${_outputDirProperties}) - endif() - # copy output name - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - ARCHIVE_OUTPUT_NAME ARCHIVE_OUTPUT_NAME_ - LIBRARY_OUTPUT_NAME LIBRARY_OUTPUT_NAME_ - OUTPUT_NAME OUTPUT_NAME_ - RUNTIME_OUTPUT_NAME RUNTIME_OUTPUT_NAME_ - PREFIX _POSTFIX SUFFIX - IMPORT_PREFIX IMPORT_SUFFIX) - # copy compile stuff - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - COMPILE_DEFINITIONS COMPILE_DEFINITIONS_ - COMPILE_FLAGS COMPILE_OPTIONS - Fortran_FORMAT Fortran_MODULE_DIRECTORY - INCLUDE_DIRECTORIES - INTERPROCEDURAL_OPTIMIZATION INTERPROCEDURAL_OPTIMIZATION_ - POSITION_INDEPENDENT_CODE - C_COMPILER_LAUNCHER CXX_COMPILER_LAUNCHER - C_INCLUDE_WHAT_YOU_USE CXX_INCLUDE_WHAT_YOU_USE - C_VISIBILITY_PRESET CXX_VISIBILITY_PRESET VISIBILITY_INLINES_HIDDEN - C_CLANG_TIDY CXX_CLANG_TIDY) - # copy compile features - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - C_EXTENSIONS C_STANDARD C_STANDARD_REQUIRED - CXX_EXTENSIONS CXX_STANDARD CXX_STANDARD_REQUIRED - COMPILE_FEATURES) - # copy interface stuff - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - COMPATIBLE_INTERFACE_BOOL COMPATIBLE_INTERFACE_NUMBER_MAX COMPATIBLE_INTERFACE_NUMBER_MIN - COMPATIBLE_INTERFACE_STRING - INTERFACE_COMPILE_DEFINITIONS INTERFACE_COMPILE_FEATURES INTERFACE_COMPILE_OPTIONS - INTERFACE_INCLUDE_DIRECTORIES INTERFACE_SOURCES - INTERFACE_POSITION_INDEPENDENT_CODE INTERFACE_SYSTEM_INCLUDE_DIRECTORIES - INTERFACE_AUTOUIC_OPTIONS NO_SYSTEM_FROM_IMPORTED) - # copy link stuff - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - BUILD_WITH_INSTALL_RPATH BUILD_WITH_INSTALL_NAME_DIR - INSTALL_RPATH INSTALL_RPATH_USE_LINK_PATH SKIP_BUILD_RPATH - LINKER_LANGUAGE LINK_DEPENDS LINK_DEPENDS_NO_SHARED - LINK_FLAGS LINK_FLAGS_ - LINK_INTERFACE_LIBRARIES LINK_INTERFACE_LIBRARIES_ - LINK_INTERFACE_MULTIPLICITY LINK_INTERFACE_MULTIPLICITY_ - LINK_SEARCH_START_STATIC LINK_SEARCH_END_STATIC - STATIC_LIBRARY_FLAGS STATIC_LIBRARY_FLAGS_ - NO_SONAME SOVERSION VERSION - LINK_WHAT_YOU_USE BUILD_RPATH) - # copy cmake stuff - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - IMPLICIT_DEPENDS_INCLUDE_TRANSFORM RULE_LAUNCH_COMPILE RULE_LAUNCH_CUSTOM RULE_LAUNCH_LINK) - # copy Apple platform specific stuff - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - BUNDLE BUNDLE_EXTENSION FRAMEWORK FRAMEWORK_VERSION INSTALL_NAME_DIR - MACOSX_BUNDLE MACOSX_BUNDLE_INFO_PLIST MACOSX_FRAMEWORK_INFO_PLIST MACOSX_RPATH - OSX_ARCHITECTURES OSX_ARCHITECTURES_ PRIVATE_HEADER PUBLIC_HEADER RESOURCE XCTEST - IOS_INSTALL_COMBINED XCODE_EXPLICIT_FILE_TYPE XCODE_PRODUCT_TYPE) - # copy Windows platform specific stuff - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - GNUtoMS - COMPILE_PDB_NAME COMPILE_PDB_NAME_ - COMPILE_PDB_OUTPUT_DIRECTORY COMPILE_PDB_OUTPUT_DIRECTORY_ - PDB_NAME PDB_NAME_ PDB_OUTPUT_DIRECTORY PDB_OUTPUT_DIRECTORY_ - VS_DESKTOP_EXTENSIONS_VERSION VS_DOTNET_REFERENCES VS_DOTNET_TARGET_FRAMEWORK_VERSION - VS_GLOBAL_KEYWORD VS_GLOBAL_PROJECT_TYPES VS_GLOBAL_ROOTNAMESPACE - VS_IOT_EXTENSIONS_VERSION VS_IOT_STARTUP_TASK - VS_KEYWORD VS_MOBILE_EXTENSIONS_VERSION - VS_SCC_AUXPATH VS_SCC_LOCALPATH VS_SCC_PROJECTNAME VS_SCC_PROVIDER - VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION - VS_WINRT_COMPONENT VS_WINRT_EXTENSIONS VS_WINRT_REFERENCES - WIN32_EXECUTABLE WINDOWS_EXPORT_ALL_SYMBOLS - DEPLOYMENT_REMOTE_DIRECTORY VS_CONFIGURATION_TYPE - VS_SDK_REFERENCES VS_USER_PROPS VS_DEBUGGER_WORKING_DIRECTORY) - # copy Android platform specific stuff - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - ANDROID_API ANDROID_API_MIN ANDROID_GUI - ANDROID_ANT_ADDITIONAL_OPTIONS ANDROID_ARCH ANDROID_ASSETS_DIRECTORIES - ANDROID_JAR_DEPENDENCIES ANDROID_JAR_DIRECTORIES ANDROID_JAVA_SOURCE_DIR - ANDROID_NATIVE_LIB_DEPENDENCIES ANDROID_NATIVE_LIB_DIRECTORIES - ANDROID_PROCESS_MAX ANDROID_PROGUARD ANDROID_PROGUARD_CONFIG_PATH - ANDROID_SECURE_PROPS_PATH ANDROID_SKIP_ANT_STEP ANDROID_STL_TYPE) - # copy CUDA platform specific stuff - cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} - CUDA_PTX_COMPILATION CUDA_SEPARABLE_COMPILATION CUDA_RESOLVE_DEVICE_SYMBOLS - CUDA_EXTENSIONS CUDA_STANDARD CUDA_STANDARD_REQUIRED) - # use output name from original target - get_target_property(_targetOutputName ${_unityTargetName} OUTPUT_NAME) - if (NOT _targetOutputName) - set_property(TARGET ${_unityTargetName} PROPERTY OUTPUT_NAME "${_target}") - endif() - # use export symbol from original target - cotire_get_target_export_symbol("${_target}" _defineSymbol) - if (_defineSymbol) - set_property(TARGET ${_unityTargetName} PROPERTY DEFINE_SYMBOL "${_defineSymbol}") - if ("${_targetType}" STREQUAL "EXECUTABLE") - set_property(TARGET ${_unityTargetName} PROPERTY ENABLE_EXPORTS TRUE) - endif() - endif() - # enable parallel compilation for MSVC - if (MSVC AND "${CMAKE_GENERATOR}" MATCHES "Visual Studio") - list (LENGTH _unityTargetSources _numberOfUnityTargetSources) - if (_numberOfUnityTargetSources GREATER 1) - set_property(TARGET ${_unityTargetName} APPEND PROPERTY COMPILE_OPTIONS "/MP") - endif() - endif() - cotire_init_target(${_unityTargetName}) - cotire_add_to_unity_all_target(${_unityTargetName}) - set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_TARGET_NAME "${_unityTargetName}") -endfunction(cotire_setup_unity_build_target) - -function (cotire_target _target) - set(_options "") - set(_oneValueArgs "") - set(_multiValueArgs LANGUAGES CONFIGURATIONS) - cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) - if (NOT _option_LANGUAGES) - get_property (_option_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) - endif() - if (NOT _option_CONFIGURATIONS) - cotire_get_configuration_types(_option_CONFIGURATIONS) - endif() - # check if cotire can be applied to target at all - cotire_is_target_supported(${_target} _isSupported) - if (NOT _isSupported) - get_target_property(_imported ${_target} IMPORTED) - get_target_property(_targetType ${_target} TYPE) - if (_imported) - message (WARNING "cotire: imported ${_targetType} target ${_target} cannot be cotired.") - else() - message (STATUS "cotire: ${_targetType} target ${_target} cannot be cotired.") - endif() - return() - endif() - # resolve alias - get_target_property(_aliasName ${_target} ALIASED_TARGET) - if (_aliasName) - if (COTIRE_DEBUG) - message (STATUS "${_target} is an alias. Applying cotire to aliased target ${_aliasName} instead.") - endif() - set (_target ${_aliasName}) - endif() - # check if target needs to be cotired for build type - # when using configuration types, the test is performed at build time - cotire_init_cotire_target_properties(${_target}) - if (NOT CMAKE_CONFIGURATION_TYPES) - if (CMAKE_BUILD_TYPE) - list (FIND _option_CONFIGURATIONS "${CMAKE_BUILD_TYPE}" _index) - else() - list (FIND _option_CONFIGURATIONS "None" _index) - endif() - if (_index EQUAL -1) - if (COTIRE_DEBUG) - message (STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} not cotired (${_option_CONFIGURATIONS})") - endif() - return() - endif() - endif() - # when not using configuration types, immediately create cotire intermediate dir - if (NOT CMAKE_CONFIGURATION_TYPES) - cotire_get_intermediate_dir(_baseDir) - file (MAKE_DIRECTORY "${_baseDir}") - endif() - # choose languages that apply to the target - cotire_choose_target_languages("${_target}" _targetLanguages _wholeTarget ${_option_LANGUAGES}) - if (NOT _targetLanguages) - return() - endif() - set (_cmds "") - foreach (_language ${_targetLanguages}) - cotire_process_target_language("${_language}" "${_option_CONFIGURATIONS}" ${_target} ${_wholeTarget} _cmd) - if (_cmd) - list (APPEND _cmds ${_cmd}) - endif() - endforeach() - get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) - if (_targetAddSCU) - cotire_setup_unity_build_target("${_targetLanguages}" "${_option_CONFIGURATIONS}" ${_target}) - endif() - get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) - if (_targetUsePCH) - cotire_setup_target_pch_usage("${_targetLanguages}" ${_target} ${_wholeTarget} ${_cmds}) - cotire_setup_pch_target("${_targetLanguages}" "${_option_CONFIGURATIONS}" ${_target}) - if (_targetAddSCU) - cotire_setup_unity_target_pch_usage("${_targetLanguages}" ${_target}) - endif() - endif() - get_target_property(_targetAddCleanTarget ${_target} COTIRE_ADD_CLEAN) - if (_targetAddCleanTarget) - cotire_setup_clean_target(${_target}) - endif() -endfunction(cotire_target) - -function (cotire_map_libraries _strategy _mappedLibrariesVar) - set (_mappedLibraries "") - foreach (_library ${ARGN}) - if (_library MATCHES "^\\$$") - set (_libraryName "${CMAKE_MATCH_1}") - set (_linkOnly TRUE) - set (_objectLibrary FALSE) - elseif (_library MATCHES "^\\$$") - set (_libraryName "${CMAKE_MATCH_1}") - set (_linkOnly FALSE) - set (_objectLibrary TRUE) - else() - set (_libraryName "${_library}") - set (_linkOnly FALSE) - set (_objectLibrary FALSE) - endif() - if ("${_strategy}" MATCHES "COPY_UNITY") - cotire_is_target_supported(${_libraryName} _isSupported) - if (_isSupported) - # use target's corresponding unity target, if available - get_target_property(_libraryUnityTargetName ${_libraryName} COTIRE_UNITY_TARGET_NAME) - if (TARGET "${_libraryUnityTargetName}") - if (_linkOnly) - list (APPEND _mappedLibraries "$") - elseif (_objectLibrary) - list (APPEND _mappedLibraries "$") - else() - list (APPEND _mappedLibraries "${_libraryUnityTargetName}") - endif() - else() - list (APPEND _mappedLibraries "${_library}") - endif() - else() - list (APPEND _mappedLibraries "${_library}") - endif() - else() - list (APPEND _mappedLibraries "${_library}") - endif() - endforeach() - list (REMOVE_DUPLICATES _mappedLibraries) - set (${_mappedLibrariesVar} ${_mappedLibraries} PARENT_SCOPE) -endfunction() - -function (cotire_target_link_libraries _target) - cotire_is_target_supported(${_target} _isSupported) - if (NOT _isSupported) - return() - endif() - get_target_property(_unityTargetName ${_target} COTIRE_UNITY_TARGET_NAME) - if (TARGET "${_unityTargetName}") - get_target_property(_linkLibrariesStrategy ${_target} COTIRE_UNITY_LINK_LIBRARIES_INIT) - if (COTIRE_DEBUG) - message (STATUS "unity target ${_unityTargetName} link strategy: ${_linkLibrariesStrategy}") - endif() - if ("${_linkLibrariesStrategy}" MATCHES "^(COPY|COPY_UNITY)$") - get_target_property(_linkLibraries ${_target} LINK_LIBRARIES) - if (_linkLibraries) - cotire_map_libraries("${_linkLibrariesStrategy}" _unityLinkLibraries ${_linkLibraries}) - set_target_properties(${_unityTargetName} PROPERTIES LINK_LIBRARIES "${_unityLinkLibraries}") - if (COTIRE_DEBUG) - message (STATUS "unity target ${_unityTargetName} link libraries: ${_unityLinkLibraries}") - endif() - endif() - get_target_property(_interfaceLinkLibraries ${_target} INTERFACE_LINK_LIBRARIES) - if (_interfaceLinkLibraries) - cotire_map_libraries("${_linkLibrariesStrategy}" _unityLinkInterfaceLibraries ${_interfaceLinkLibraries}) - set_target_properties(${_unityTargetName} PROPERTIES INTERFACE_LINK_LIBRARIES "${_unityLinkInterfaceLibraries}") - if (COTIRE_DEBUG) - message (STATUS "unity target ${_unityTargetName} interface link libraries: ${_unityLinkInterfaceLibraries}") - endif() - endif() - get_target_property(_manualDependencies ${_target} MANUALLY_ADDED_DEPENDENCIES) - if (_manualDependencies) - cotire_map_libraries("${_linkLibrariesStrategy}" _unityManualDependencies ${_manualDependencies}) - if (_unityManualDependencies) - add_dependencies("${_unityTargetName}" ${_unityManualDependencies}) - endif() - endif() - endif() - endif() -endfunction(cotire_target_link_libraries) - -function (cotire_cleanup _binaryDir _cotireIntermediateDirName _targetName) - if (_targetName) - file (GLOB_RECURSE _cotireFiles "${_binaryDir}/${_targetName}*.*") - else() - file (GLOB_RECURSE _cotireFiles "${_binaryDir}/*.*") - endif() - # filter files in intermediate directory - set (_filesToRemove "") - foreach (_file ${_cotireFiles}) - get_filename_component(_dir "${_file}" DIRECTORY) - get_filename_component(_dirName "${_dir}" NAME) - if ("${_dirName}" STREQUAL "${_cotireIntermediateDirName}") - list (APPEND _filesToRemove "${_file}") - endif() - endforeach() - if (_filesToRemove) - if (COTIRE_VERBOSE) - message (STATUS "cleaning up ${_filesToRemove}") - endif() - file (REMOVE ${_filesToRemove}) - endif() -endfunction() - -function (cotire_init_target _targetName) - if (COTIRE_TARGETS_FOLDER) - set_target_properties(${_targetName} PROPERTIES FOLDER "${COTIRE_TARGETS_FOLDER}") - endif() - set_target_properties(${_targetName} PROPERTIES EXCLUDE_FROM_ALL TRUE) - # if (MSVC_IDE) - # set_target_properties(${_targetName} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE) - # endif() -endfunction() - -function (cotire_add_to_pch_all_target _pchTargetName) - set (_targetName "${COTIRE_PCH_ALL_TARGET_NAME}") - if (NOT TARGET "${_targetName}") - add_custom_target("${_targetName}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" - VERBATIM) - cotire_init_target("${_targetName}") - endif() - cotire_setup_clean_all_target() - add_dependencies(${_targetName} ${_pchTargetName}) -endfunction() - -function (cotire_add_to_unity_all_target _unityTargetName) - set (_targetName "${COTIRE_UNITY_BUILD_ALL_TARGET_NAME}") - if (NOT TARGET "${_targetName}") - add_custom_target("${_targetName}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" - VERBATIM) - cotire_init_target("${_targetName}") - endif() - cotire_setup_clean_all_target() - add_dependencies(${_targetName} ${_unityTargetName}) -endfunction() - -function (cotire_setup_clean_all_target) - set (_targetName "${COTIRE_CLEAN_ALL_TARGET_NAME}") - if (NOT TARGET "${_targetName}") - cotire_set_cmd_to_prologue(_cmds) - list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "cleanup" "${CMAKE_BINARY_DIR}" "${COTIRE_INTDIR}") - add_custom_target(${_targetName} - COMMAND ${_cmds} - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" - COMMENT "Cleaning up all cotire generated files" - VERBATIM) - cotire_init_target("${_targetName}") - endif() -endfunction() - -function (cotire) - set(_options "") - set(_oneValueArgs "") - set(_multiValueArgs LANGUAGES CONFIGURATIONS) - cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) - set (_targets ${_option_UNPARSED_ARGUMENTS}) - foreach (_target ${_targets}) - if (TARGET ${_target}) - cotire_target(${_target} LANGUAGES ${_option_LANGUAGES} CONFIGURATIONS ${_option_CONFIGURATIONS}) - else() - message (WARNING "cotire: ${_target} is not a target.") - endif() - endforeach() - foreach (_target ${_targets}) - if (TARGET ${_target}) - cotire_target_link_libraries(${_target}) - endif() - endforeach() -endfunction() - -if (CMAKE_SCRIPT_MODE_FILE) - - # cotire is being run in script mode - # locate -P on command args - set (COTIRE_ARGC -1) - foreach (_index RANGE ${CMAKE_ARGC}) - if (COTIRE_ARGC GREATER -1) - set (COTIRE_ARGV${COTIRE_ARGC} "${CMAKE_ARGV${_index}}") - math (EXPR COTIRE_ARGC "${COTIRE_ARGC} + 1") - elseif ("${CMAKE_ARGV${_index}}" STREQUAL "-P") - set (COTIRE_ARGC 0) - endif() - endforeach() - - # include target script if available - if ("${COTIRE_ARGV2}" MATCHES "\\.cmake$") - # the included target scripts sets up additional variables relating to the target (e.g., COTIRE_TARGET_SOURCES) - include("${COTIRE_ARGV2}") - endif() - - if (COTIRE_DEBUG) - message (STATUS "${COTIRE_ARGV0} ${COTIRE_ARGV1} ${COTIRE_ARGV2} ${COTIRE_ARGV3} ${COTIRE_ARGV4} ${COTIRE_ARGV5}") - endif() - - if (NOT COTIRE_BUILD_TYPE) - set (COTIRE_BUILD_TYPE "None") - endif() - string (TOUPPER "${COTIRE_BUILD_TYPE}" _upperConfig) - set (_includeDirs ${COTIRE_TARGET_INCLUDE_DIRECTORIES_${_upperConfig}}) - set (_systemIncludeDirs ${COTIRE_TARGET_SYSTEM_INCLUDE_DIRECTORIES_${_upperConfig}}) - set (_compileDefinitions ${COTIRE_TARGET_COMPILE_DEFINITIONS_${_upperConfig}}) - set (_compileFlags ${COTIRE_TARGET_COMPILE_FLAGS_${_upperConfig}}) - # check if target has been cotired for actual build type COTIRE_BUILD_TYPE - list (FIND COTIRE_TARGET_CONFIGURATION_TYPES "${COTIRE_BUILD_TYPE}" _index) - if (_index GREATER -1) - set (_sources ${COTIRE_TARGET_SOURCES}) - set (_sourcesDefinitions ${COTIRE_TARGET_SOURCES_COMPILE_DEFINITIONS_${_upperConfig}}) - else() - if (COTIRE_DEBUG) - message (STATUS "COTIRE_BUILD_TYPE=${COTIRE_BUILD_TYPE} not cotired (${COTIRE_TARGET_CONFIGURATION_TYPES})") - endif() - set (_sources "") - set (_sourcesDefinitions "") - endif() - set (_targetPreUndefs ${COTIRE_TARGET_PRE_UNDEFS}) - set (_targetPostUndefs ${COTIRE_TARGET_POST_UNDEFS}) - set (_sourcesPreUndefs ${COTIRE_TARGET_SOURCES_PRE_UNDEFS}) - set (_sourcesPostUndefs ${COTIRE_TARGET_SOURCES_POST_UNDEFS}) - - if ("${COTIRE_ARGV1}" STREQUAL "unity") - - if (XCODE) - # executing pre-build action under Xcode, check dependency on target script - set (_dependsOption DEPENDS "${COTIRE_ARGV2}") - else() - # executing custom command, no need to re-check for dependencies - set (_dependsOption "") - endif() - - cotire_select_unity_source_files("${COTIRE_ARGV3}" _sources ${_sources}) - - cotire_generate_unity_source( - "${COTIRE_ARGV3}" ${_sources} - LANGUAGE "${COTIRE_TARGET_LANGUAGE}" - SOURCES_COMPILE_DEFINITIONS ${_sourcesDefinitions} - PRE_UNDEFS ${_targetPreUndefs} - POST_UNDEFS ${_targetPostUndefs} - SOURCES_PRE_UNDEFS ${_sourcesPreUndefs} - SOURCES_POST_UNDEFS ${_sourcesPostUndefs} - ${_dependsOption}) - - elseif ("${COTIRE_ARGV1}" STREQUAL "prefix") - - if (XCODE) - # executing pre-build action under Xcode, check dependency on unity file and prefix dependencies - set (_dependsOption DEPENDS "${COTIRE_ARGV4}" ${COTIRE_TARGET_PREFIX_DEPENDS}) - else() - # executing custom command, no need to re-check for dependencies - set (_dependsOption "") - endif() - - set (_files "") - foreach (_index RANGE 4 ${COTIRE_ARGC}) - if (COTIRE_ARGV${_index}) - list (APPEND _files "${COTIRE_ARGV${_index}}") - endif() - endforeach() - - cotire_generate_prefix_header( - "${COTIRE_ARGV3}" ${_files} - COMPILER_LAUNCHER "${COTIRE_TARGET_${COTIRE_TARGET_LANGUAGE}_COMPILER_LAUNCHER}" - COMPILER_EXECUTABLE "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER}" - COMPILER_ARG1 ${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ARG1} - COMPILER_ID "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ID}" - COMPILER_VERSION "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_VERSION}" - LANGUAGE "${COTIRE_TARGET_LANGUAGE}" - IGNORE_PATH "${COTIRE_TARGET_IGNORE_PATH};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH}" - INCLUDE_PATH ${COTIRE_TARGET_INCLUDE_PATH} - IGNORE_EXTENSIONS "${CMAKE_${COTIRE_TARGET_LANGUAGE}_SOURCE_FILE_EXTENSIONS};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS}" - INCLUDE_PRIORITY_PATH ${COTIRE_TARGET_INCLUDE_PRIORITY_PATH} - INCLUDE_DIRECTORIES ${_includeDirs} - SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} - COMPILE_DEFINITIONS ${_compileDefinitions} - COMPILE_FLAGS ${_compileFlags} - ${_dependsOption}) - - elseif ("${COTIRE_ARGV1}" STREQUAL "precompile") - - set (_files "") - foreach (_index RANGE 5 ${COTIRE_ARGC}) - if (COTIRE_ARGV${_index}) - list (APPEND _files "${COTIRE_ARGV${_index}}") - endif() - endforeach() - - cotire_precompile_prefix_header( - "${COTIRE_ARGV3}" "${COTIRE_ARGV4}" "${COTIRE_ARGV5}" - COMPILER_LAUNCHER "${COTIRE_TARGET_${COTIRE_TARGET_LANGUAGE}_COMPILER_LAUNCHER}" - COMPILER_EXECUTABLE "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER}" - COMPILER_ARG1 ${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ARG1} - COMPILER_ID "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ID}" - COMPILER_VERSION "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_VERSION}" - LANGUAGE "${COTIRE_TARGET_LANGUAGE}" - INCLUDE_DIRECTORIES ${_includeDirs} - SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} - COMPILE_DEFINITIONS ${_compileDefinitions} - COMPILE_FLAGS ${_compileFlags}) - - elseif ("${COTIRE_ARGV1}" STREQUAL "combine") - - if (COTIRE_TARGET_LANGUAGE) - set (_combinedFile "${COTIRE_ARGV3}") - set (_startIndex 4) - else() - set (_combinedFile "${COTIRE_ARGV2}") - set (_startIndex 3) - endif() - set (_files "") - foreach (_index RANGE ${_startIndex} ${COTIRE_ARGC}) - if (COTIRE_ARGV${_index}) - list (APPEND _files "${COTIRE_ARGV${_index}}") - endif() - endforeach() - - if (XCODE) - # executing pre-build action under Xcode, check dependency on files to be combined - set (_dependsOption DEPENDS ${_files}) - else() - # executing custom command, no need to re-check for dependencies - set (_dependsOption "") - endif() - - if (COTIRE_TARGET_LANGUAGE) - cotire_generate_unity_source( - "${_combinedFile}" ${_files} - LANGUAGE "${COTIRE_TARGET_LANGUAGE}" - ${_dependsOption}) - else() - cotire_generate_unity_source("${_combinedFile}" ${_files} ${_dependsOption}) - endif() - - elseif ("${COTIRE_ARGV1}" STREQUAL "cleanup") - - cotire_cleanup("${COTIRE_ARGV2}" "${COTIRE_ARGV3}" "${COTIRE_ARGV4}") - - else() - message (FATAL_ERROR "cotire: unknown command \"${COTIRE_ARGV1}\".") - endif() - -else() - - # cotire is being run in include mode - # set up all variable and property definitions - - if (NOT DEFINED COTIRE_DEBUG_INIT) - if (DEFINED COTIRE_DEBUG) - set (COTIRE_DEBUG_INIT ${COTIRE_DEBUG}) - else() - set (COTIRE_DEBUG_INIT FALSE) - endif() - endif() - option (COTIRE_DEBUG "Enable cotire debugging output?" ${COTIRE_DEBUG_INIT}) - - if (NOT DEFINED COTIRE_VERBOSE_INIT) - if (DEFINED COTIRE_VERBOSE) - set (COTIRE_VERBOSE_INIT ${COTIRE_VERBOSE}) - else() - set (COTIRE_VERBOSE_INIT FALSE) - endif() - endif() - option (COTIRE_VERBOSE "Enable cotire verbose output?" ${COTIRE_VERBOSE_INIT}) - - set (COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS "inc;inl;ipp" CACHE STRING - "Ignore headers with the listed file extensions from the generated prefix header.") - - set (COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH "" CACHE STRING - "Ignore headers from these directories when generating the prefix header.") - - set (COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS "m;mm" CACHE STRING - "Ignore sources with the listed file extensions from the generated unity source.") - - set (COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES "2" CACHE STRING - "Minimum number of sources in target required to enable use of precompiled header.") - - if (NOT DEFINED COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT) - if (DEFINED COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES) - set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT ${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES}) - elseif ("${CMAKE_GENERATOR}" MATCHES "JOM|Ninja|Visual Studio") - # enable parallelization for generators that run multiple jobs by default - set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT "-j") - else() - set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT "0") - endif() - endif() - set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES "${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT}" CACHE STRING - "Maximum number of source files to include in a single unity source file.") - - if (NOT COTIRE_PREFIX_HEADER_FILENAME_SUFFIX) - set (COTIRE_PREFIX_HEADER_FILENAME_SUFFIX "_prefix") - endif() - if (NOT COTIRE_UNITY_SOURCE_FILENAME_SUFFIX) - set (COTIRE_UNITY_SOURCE_FILENAME_SUFFIX "_unity") - endif() - if (NOT COTIRE_INTDIR) - set (COTIRE_INTDIR "cotire") - endif() - if (NOT COTIRE_PCH_ALL_TARGET_NAME) - set (COTIRE_PCH_ALL_TARGET_NAME "all_pch") - endif() - if (NOT COTIRE_UNITY_BUILD_ALL_TARGET_NAME) - set (COTIRE_UNITY_BUILD_ALL_TARGET_NAME "all_unity") - endif() - if (NOT COTIRE_CLEAN_ALL_TARGET_NAME) - set (COTIRE_CLEAN_ALL_TARGET_NAME "clean_cotire") - endif() - if (NOT COTIRE_CLEAN_TARGET_SUFFIX) - set (COTIRE_CLEAN_TARGET_SUFFIX "_clean_cotire") - endif() - if (NOT COTIRE_PCH_TARGET_SUFFIX) - set (COTIRE_PCH_TARGET_SUFFIX "_pch") - endif() - if (MSVC) - # MSVC default PCH memory scaling factor of 100 percent (75 MB) is too small for template heavy C++ code - # use a bigger default factor of 170 percent (128 MB) - if (NOT DEFINED COTIRE_PCH_MEMORY_SCALING_FACTOR) - set (COTIRE_PCH_MEMORY_SCALING_FACTOR "170") - endif() - endif() - if (NOT COTIRE_UNITY_BUILD_TARGET_SUFFIX) - set (COTIRE_UNITY_BUILD_TARGET_SUFFIX "_unity") - endif() - if (NOT DEFINED COTIRE_TARGETS_FOLDER) - set (COTIRE_TARGETS_FOLDER "cotire") - endif() - if (NOT DEFINED COTIRE_UNITY_OUTPUT_DIRECTORY) - if ("${CMAKE_GENERATOR}" MATCHES "Ninja") - # generated Ninja build files do not work if the unity target produces the same output file as the cotired target - set (COTIRE_UNITY_OUTPUT_DIRECTORY "unity") - else() - set (COTIRE_UNITY_OUTPUT_DIRECTORY "") - endif() - endif() - - # define cotire cache variables - - define_property( - CACHED_VARIABLE PROPERTY "COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH" - BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." - FULL_DOCS - "The variable can be set to a semicolon separated list of include directories." - "If a header file is found in one of these directories or sub-directories, it will be excluded from the generated prefix header." - "If not defined, defaults to empty list." - ) - - define_property( - CACHED_VARIABLE PROPERTY "COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS" - BRIEF_DOCS "Ignore includes with the listed file extensions from the generated prefix header." - FULL_DOCS - "The variable can be set to a semicolon separated list of file extensions." - "If a header file extension matches one in the list, it will be excluded from the generated prefix header." - "Includes with an extension in CMAKE__SOURCE_FILE_EXTENSIONS are always ignored." - "If not defined, defaults to inc;inl;ipp." - ) - - define_property( - CACHED_VARIABLE PROPERTY "COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS" - BRIEF_DOCS "Exclude sources with the listed file extensions from the generated unity source." - FULL_DOCS - "The variable can be set to a semicolon separated list of file extensions." - "If a source file extension matches one in the list, it will be excluded from the generated unity source file." - "Source files with an extension in CMAKE__IGNORE_EXTENSIONS are always excluded." - "If not defined, defaults to m;mm." - ) - - define_property( - CACHED_VARIABLE PROPERTY "COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES" - BRIEF_DOCS "Minimum number of sources in target required to enable use of precompiled header." - FULL_DOCS - "The variable can be set to an integer > 0." - "If a target contains less than that number of source files, cotire will not enable the use of the precompiled header for the target." - "If not defined, defaults to 2." - ) - - define_property( - CACHED_VARIABLE PROPERTY "COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES" - BRIEF_DOCS "Maximum number of source files to include in a single unity source file." - FULL_DOCS - "This may be set to an integer >= 0." - "If 0, cotire will only create a single unity source file." - "If a target contains more than that number of source files, cotire will create multiple unity source files for it." - "Can be set to \"-j\" to optimize the count of unity source files for the number of available processor cores." - "Can be set to \"-j jobs\" to optimize the number of unity source files for the given number of simultaneous jobs." - "Is used to initialize the target property COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES." - "Defaults to \"-j\" for the generators Visual Studio, JOM or Ninja. Defaults to 0 otherwise." - ) - - # define cotire directory properties - - define_property( - DIRECTORY PROPERTY "COTIRE_ENABLE_PRECOMPILED_HEADER" - BRIEF_DOCS "Modify build command of cotired targets added in this directory to make use of the generated precompiled header." - FULL_DOCS - "See target property COTIRE_ENABLE_PRECOMPILED_HEADER." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_ADD_UNITY_BUILD" - BRIEF_DOCS "Add a new target that performs a unity build for cotired targets added in this directory." - FULL_DOCS - "See target property COTIRE_ADD_UNITY_BUILD." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_ADD_CLEAN" - BRIEF_DOCS "Add a new target that cleans all cotire generated files for cotired targets added in this directory." - FULL_DOCS - "See target property COTIRE_ADD_CLEAN." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_IGNORE_PATH" - BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." - FULL_DOCS - "See target property COTIRE_PREFIX_HEADER_IGNORE_PATH." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PATH" - BRIEF_DOCS "Honor headers from these directories when generating the prefix header." - FULL_DOCS - "See target property COTIRE_PREFIX_HEADER_INCLUDE_PATH." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH" - BRIEF_DOCS "Header paths matching one of these directories are put at the top of the prefix header." - FULL_DOCS - "See target property COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" - BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each source file." - FULL_DOCS - "See target property COTIRE_UNITY_SOURCE_PRE_UNDEFS." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" - BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of each source file." - FULL_DOCS - "See target property COTIRE_UNITY_SOURCE_POST_UNDEFS." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES" - BRIEF_DOCS "Maximum number of source files to include in a single unity source file." - FULL_DOCS - "See target property COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES." - ) - - define_property( - DIRECTORY PROPERTY "COTIRE_UNITY_LINK_LIBRARIES_INIT" - BRIEF_DOCS "Define strategy for setting up the unity target's link libraries." - FULL_DOCS - "See target property COTIRE_UNITY_LINK_LIBRARIES_INIT." - ) - - # define cotire target properties - - define_property( - TARGET PROPERTY "COTIRE_ENABLE_PRECOMPILED_HEADER" INHERITED - BRIEF_DOCS "Modify this target's build command to make use of the generated precompiled header." - FULL_DOCS - "If this property is set to TRUE, cotire will modify the build command to make use of the generated precompiled header." - "Irrespective of the value of this property, cotire will setup custom commands to generate the unity source and prefix header for the target." - "For makefile based generators cotire will also set up a custom target to manually invoke the generation of the precompiled header." - "The target name will be set to this target's name with the suffix _pch appended." - "Inherited from directory." - "Defaults to TRUE." - ) - - define_property( - TARGET PROPERTY "COTIRE_ADD_UNITY_BUILD" INHERITED - BRIEF_DOCS "Add a new target that performs a unity build for this target." - FULL_DOCS - "If this property is set to TRUE, cotire creates a new target of the same type that uses the generated unity source file instead of the target sources." - "Most of the relevant target properties will be copied from this target to the new unity build target." - "Target dependencies and linked libraries have to be manually set up for the new unity build target." - "The unity target name will be set to this target's name with the suffix _unity appended." - "Inherited from directory." - "Defaults to TRUE." - ) - - define_property( - TARGET PROPERTY "COTIRE_ADD_CLEAN" INHERITED - BRIEF_DOCS "Add a new target that cleans all cotire generated files for this target." - FULL_DOCS - "If this property is set to TRUE, cotire creates a new target that clean all files (unity source, prefix header, precompiled header)." - "The clean target name will be set to this target's name with the suffix _clean_cotire appended." - "Inherited from directory." - "Defaults to FALSE." - ) - - define_property( - TARGET PROPERTY "COTIRE_PREFIX_HEADER_IGNORE_PATH" INHERITED - BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." - FULL_DOCS - "The property can be set to a list of directories." - "If a header file is found in one of these directories or sub-directories, it will be excluded from the generated prefix header." - "Inherited from directory." - "If not set, this property is initialized to \${CMAKE_SOURCE_DIR};\${CMAKE_BINARY_DIR}." - ) - - define_property( - TARGET PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PATH" INHERITED - BRIEF_DOCS "Honor headers from these directories when generating the prefix header." - FULL_DOCS - "The property can be set to a list of directories." - "If a header file is found in one of these directories or sub-directories, it will be included in the generated prefix header." - "If a header file is both selected by COTIRE_PREFIX_HEADER_IGNORE_PATH and COTIRE_PREFIX_HEADER_INCLUDE_PATH," - "the option which yields the closer relative path match wins." - "Inherited from directory." - "If not set, this property is initialized to the empty list." - ) - - define_property( - TARGET PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH" INHERITED - BRIEF_DOCS "Header paths matching one of these directories are put at the top of prefix header." - FULL_DOCS - "The property can be set to a list of directories." - "Header file paths matching one of these directories will be inserted at the beginning of the generated prefix header." - "Header files are sorted according to the order of the directories in the property." - "If not set, this property is initialized to the empty list." - ) - - define_property( - TARGET PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" INHERITED - BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each target source file." - FULL_DOCS - "This may be set to a semicolon-separated list of preprocessor symbols." - "cotire will add corresponding #undef directives to the generated unit source file before each target source file." - "Inherited from directory." - "Defaults to empty string." - ) - - define_property( - TARGET PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" INHERITED - BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of each target source file." - FULL_DOCS - "This may be set to a semicolon-separated list of preprocessor symbols." - "cotire will add corresponding #undef directives to the generated unit source file after each target source file." - "Inherited from directory." - "Defaults to empty string." - ) - - define_property( - TARGET PROPERTY "COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES" INHERITED - BRIEF_DOCS "Maximum number of source files to include in a single unity source file." - FULL_DOCS - "This may be set to an integer > 0." - "If a target contains more than that number of source files, cotire will create multiple unity build files for it." - "If not set, cotire will only create a single unity source file." - "Inherited from directory." - "Defaults to empty." - ) - - define_property( - TARGET PROPERTY "COTIRE__UNITY_SOURCE_INIT" - BRIEF_DOCS "User provided unity source file to be used instead of the automatically generated one." - FULL_DOCS - "If set, cotire will only add the given file(s) to the generated unity source file." - "If not set, cotire will add all the target source files to the generated unity source file." - "The property can be set to a user provided unity source file." - "Defaults to empty." - ) - - define_property( - TARGET PROPERTY "COTIRE__PREFIX_HEADER_INIT" - BRIEF_DOCS "User provided prefix header file to be used instead of the automatically generated one." - FULL_DOCS - "If set, cotire will add the given header file(s) to the generated prefix header file." - "If not set, cotire will generate a prefix header by tracking the header files included by the unity source file." - "The property can be set to a user provided prefix header file (e.g., stdafx.h)." - "Defaults to empty." - ) - - define_property( - TARGET PROPERTY "COTIRE_UNITY_LINK_LIBRARIES_INIT" INHERITED - BRIEF_DOCS "Define strategy for setting up unity target's link libraries." - FULL_DOCS - "If this property is empty or set to NONE, the generated unity target's link libraries have to be set up manually." - "If this property is set to COPY, the unity target's link libraries will be copied from this target." - "If this property is set to COPY_UNITY, the unity target's link libraries will be copied from this target with considering existing unity targets." - "Inherited from directory." - "Defaults to empty." - ) - - define_property( - TARGET PROPERTY "COTIRE__UNITY_SOURCE" - BRIEF_DOCS "Read-only property. The generated unity source file(s)." - FULL_DOCS - "cotire sets this property to the path of the generated single computation unit source file for the target." - "Defaults to empty string." - ) - - define_property( - TARGET PROPERTY "COTIRE__PREFIX_HEADER" - BRIEF_DOCS "Read-only property. The generated prefix header file." - FULL_DOCS - "cotire sets this property to the full path of the generated language prefix header for the target." - "Defaults to empty string." - ) - - define_property( - TARGET PROPERTY "COTIRE__PRECOMPILED_HEADER" - BRIEF_DOCS "Read-only property. The generated precompiled header file." - FULL_DOCS - "cotire sets this property to the full path of the generated language precompiled header binary for the target." - "Defaults to empty string." - ) - - define_property( - TARGET PROPERTY "COTIRE_UNITY_TARGET_NAME" - BRIEF_DOCS "The name of the generated unity build target corresponding to this target." - FULL_DOCS - "This property can be set to the desired name of the unity target that will be created by cotire." - "If not set, the unity target name will be set to this target's name with the suffix _unity appended." - "After this target has been processed by cotire, the property is set to the actual name of the generated unity target." - "Defaults to empty string." - ) - - # define cotire source properties - - define_property( - SOURCE PROPERTY "COTIRE_EXCLUDED" - BRIEF_DOCS "Do not modify source file's build command." - FULL_DOCS - "If this property is set to TRUE, the source file's build command will not be modified to make use of the precompiled header." - "The source file will also be excluded from the generated unity source file." - "Source files that have their COMPILE_FLAGS property set will be excluded by default." - "Defaults to FALSE." - ) - - define_property( - SOURCE PROPERTY "COTIRE_DEPENDENCY" - BRIEF_DOCS "Add this source file to dependencies of the automatically generated prefix header file." - FULL_DOCS - "If this property is set to TRUE, the source file is added to dependencies of the generated prefix header file." - "If the file is modified, cotire will re-generate the prefix header source upon build." - "Defaults to FALSE." - ) - - define_property( - SOURCE PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" - BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of this source file." - FULL_DOCS - "This may be set to a semicolon-separated list of preprocessor symbols." - "cotire will add corresponding #undef directives to the generated unit source file before this file is included." - "Defaults to empty string." - ) - - define_property( - SOURCE PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" - BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of this source file." - FULL_DOCS - "This may be set to a semicolon-separated list of preprocessor symbols." - "cotire will add corresponding #undef directives to the generated unit source file after this file is included." - "Defaults to empty string." - ) - - define_property( - SOURCE PROPERTY "COTIRE_START_NEW_UNITY_SOURCE" - BRIEF_DOCS "Start a new unity source file which includes this source file as the first one." - FULL_DOCS - "If this property is set to TRUE, cotire will complete the current unity file and start a new one." - "The new unity source file will include this source file as the first one." - "This property essentially works as a separator for unity source files." - "Defaults to FALSE." - ) - - define_property( - SOURCE PROPERTY "COTIRE_TARGET" - BRIEF_DOCS "Read-only property. Mark this source file as cotired for the given target." - FULL_DOCS - "cotire sets this property to the name of target, that the source file's build command has been altered for." - "Defaults to empty string." - ) - - message (STATUS "cotire ${COTIRE_CMAKE_MODULE_VERSION} loaded.") - -endif() +# - cotire (compile time reducer) +# +# See the cotire manual for usage hints. +# +#============================================================================= +# Copyright 2012-2018 Sascha Kratky +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +#============================================================================= + +if(__COTIRE_INCLUDED) + return() +endif() +set(__COTIRE_INCLUDED TRUE) + +# call cmake_minimum_required, but prevent modification of the CMake policy stack in include mode +# cmake_minimum_required also sets the policy version as a side effect, which we have to avoid +if (NOT CMAKE_SCRIPT_MODE_FILE) + cmake_policy(PUSH) +endif() +cmake_minimum_required(VERSION 2.8.12) +if (NOT CMAKE_SCRIPT_MODE_FILE) + cmake_policy(POP) +endif() + +set (COTIRE_CMAKE_MODULE_FILE "${CMAKE_CURRENT_LIST_FILE}") +set (COTIRE_CMAKE_MODULE_VERSION "1.8.1") + +# activate select policies +if (POLICY CMP0025) + # Compiler id for Apple Clang is now AppleClang + cmake_policy(SET CMP0025 NEW) +endif() + +if (POLICY CMP0026) + # disallow use of the LOCATION target property + cmake_policy(SET CMP0026 NEW) +endif() + +if (POLICY CMP0038) + # targets may not link directly to themselves + cmake_policy(SET CMP0038 NEW) +endif() + +if (POLICY CMP0039) + # utility targets may not have link dependencies + cmake_policy(SET CMP0039 NEW) +endif() + +if (POLICY CMP0040) + # target in the TARGET signature of add_custom_command() must exist + cmake_policy(SET CMP0040 NEW) +endif() + +if (POLICY CMP0045) + # error on non-existent target in get_target_property + cmake_policy(SET CMP0045 NEW) +endif() + +if (POLICY CMP0046) + # error on non-existent dependency in add_dependencies + cmake_policy(SET CMP0046 NEW) +endif() + +if (POLICY CMP0049) + # do not expand variables in target source entries + cmake_policy(SET CMP0049 NEW) +endif() + +if (POLICY CMP0050) + # disallow add_custom_command SOURCE signatures + cmake_policy(SET CMP0050 NEW) +endif() + +if (POLICY CMP0051) + # include TARGET_OBJECTS expressions in a target's SOURCES property + cmake_policy(SET CMP0051 NEW) +endif() + +if (POLICY CMP0053) + # simplify variable reference and escape sequence evaluation + cmake_policy(SET CMP0053 NEW) +endif() + +if (POLICY CMP0054) + # only interpret if() arguments as variables or keywords when unquoted + cmake_policy(SET CMP0054 NEW) +endif() + +if (POLICY CMP0055) + # strict checking for break() command + cmake_policy(SET CMP0055 NEW) +endif() + +include(CMakeParseArguments) +include(ProcessorCount) + +function (cotire_get_configuration_types _configsVar) + set (_configs "") + if (CMAKE_CONFIGURATION_TYPES) + list (APPEND _configs ${CMAKE_CONFIGURATION_TYPES}) + endif() + if (CMAKE_BUILD_TYPE) + list (APPEND _configs "${CMAKE_BUILD_TYPE}") + endif() + if (_configs) + list (REMOVE_DUPLICATES _configs) + set (${_configsVar} ${_configs} PARENT_SCOPE) + else() + set (${_configsVar} "None" PARENT_SCOPE) + endif() +endfunction() + +function (cotire_get_source_file_extension _sourceFile _extVar) + # get_filename_component returns extension from first occurrence of . in file name + # this function computes the extension from last occurrence of . in file name + string (FIND "${_sourceFile}" "." _index REVERSE) + if (_index GREATER -1) + math (EXPR _index "${_index} + 1") + string (SUBSTRING "${_sourceFile}" ${_index} -1 _sourceExt) + else() + set (_sourceExt "") + endif() + set (${_extVar} "${_sourceExt}" PARENT_SCOPE) +endfunction() + +macro (cotire_check_is_path_relative_to _path _isRelativeVar) + set (${_isRelativeVar} FALSE) + if (IS_ABSOLUTE "${_path}") + foreach (_dir ${ARGN}) + file (RELATIVE_PATH _relPath "${_dir}" "${_path}") + if (NOT _relPath OR (NOT IS_ABSOLUTE "${_relPath}" AND NOT "${_relPath}" MATCHES "^\\.\\.")) + set (${_isRelativeVar} TRUE) + break() + endif() + endforeach() + endif() +endmacro() + +function (cotire_filter_language_source_files _language _target _sourceFilesVar _excludedSourceFilesVar _cotiredSourceFilesVar) + if (CMAKE_${_language}_SOURCE_FILE_EXTENSIONS) + set (_languageExtensions "${CMAKE_${_language}_SOURCE_FILE_EXTENSIONS}") + else() + set (_languageExtensions "") + endif() + if (CMAKE_${_language}_IGNORE_EXTENSIONS) + set (_ignoreExtensions "${CMAKE_${_language}_IGNORE_EXTENSIONS}") + else() + set (_ignoreExtensions "") + endif() + if (COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS) + set (_excludeExtensions "${COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS}") + else() + set (_excludeExtensions "") + endif() + if (COTIRE_DEBUG AND _languageExtensions) + message (STATUS "${_language} source file extensions: ${_languageExtensions}") + endif() + if (COTIRE_DEBUG AND _ignoreExtensions) + message (STATUS "${_language} ignore extensions: ${_ignoreExtensions}") + endif() + if (COTIRE_DEBUG AND _excludeExtensions) + message (STATUS "${_language} exclude extensions: ${_excludeExtensions}") + endif() + if (CMAKE_VERSION VERSION_LESS "3.1.0") + set (_allSourceFiles ${ARGN}) + else() + # as of CMake 3.1 target sources may contain generator expressions + # since we cannot obtain required property information about source files added + # through generator expressions at configure time, we filter them out + string (GENEX_STRIP "${ARGN}" _allSourceFiles) + endif() + set (_filteredSourceFiles "") + set (_excludedSourceFiles "") + foreach (_sourceFile ${_allSourceFiles}) + get_source_file_property(_sourceIsHeaderOnly "${_sourceFile}" HEADER_FILE_ONLY) + get_source_file_property(_sourceIsExternal "${_sourceFile}" EXTERNAL_OBJECT) + get_source_file_property(_sourceIsSymbolic "${_sourceFile}" SYMBOLIC) + if (NOT _sourceIsHeaderOnly AND NOT _sourceIsExternal AND NOT _sourceIsSymbolic) + cotire_get_source_file_extension("${_sourceFile}" _sourceExt) + if (_sourceExt) + list (FIND _ignoreExtensions "${_sourceExt}" _ignoreIndex) + if (_ignoreIndex LESS 0) + list (FIND _excludeExtensions "${_sourceExt}" _excludeIndex) + if (_excludeIndex GREATER -1) + list (APPEND _excludedSourceFiles "${_sourceFile}") + else() + list (FIND _languageExtensions "${_sourceExt}" _sourceIndex) + if (_sourceIndex GREATER -1) + # consider source file unless it is excluded explicitly + get_source_file_property(_sourceIsExcluded "${_sourceFile}" COTIRE_EXCLUDED) + if (_sourceIsExcluded) + list (APPEND _excludedSourceFiles "${_sourceFile}") + else() + list (APPEND _filteredSourceFiles "${_sourceFile}") + endif() + else() + get_source_file_property(_sourceLanguage "${_sourceFile}" LANGUAGE) + if ("${_sourceLanguage}" STREQUAL "${_language}") + # add to excluded sources, if file is not ignored and has correct language without having the correct extension + list (APPEND _excludedSourceFiles "${_sourceFile}") + endif() + endif() + endif() + endif() + endif() + endif() + endforeach() + # separate filtered source files from already cotired ones + # the COTIRE_TARGET property of a source file may be set while a target is being processed by cotire + set (_sourceFiles "") + set (_cotiredSourceFiles "") + foreach (_sourceFile ${_filteredSourceFiles}) + get_source_file_property(_sourceIsCotired "${_sourceFile}" COTIRE_TARGET) + if (_sourceIsCotired) + list (APPEND _cotiredSourceFiles "${_sourceFile}") + else() + get_source_file_property(_sourceCompileFlags "${_sourceFile}" COMPILE_FLAGS) + if (_sourceCompileFlags) + # add to excluded sources, if file has custom compile flags + list (APPEND _excludedSourceFiles "${_sourceFile}") + else() + get_source_file_property(_sourceCompileOptions "${_sourceFile}" COMPILE_OPTIONS) + if (_sourceCompileOptions) + # add to excluded sources, if file has list of custom compile options + list (APPEND _excludedSourceFiles "${_sourceFile}") + else() + list (APPEND _sourceFiles "${_sourceFile}") + endif() + endif() + endif() + endforeach() + if (COTIRE_DEBUG) + if (_sourceFiles) + message (STATUS "Filtered ${_target} ${_language} sources: ${_sourceFiles}") + endif() + if (_excludedSourceFiles) + message (STATUS "Excluded ${_target} ${_language} sources: ${_excludedSourceFiles}") + endif() + if (_cotiredSourceFiles) + message (STATUS "Cotired ${_target} ${_language} sources: ${_cotiredSourceFiles}") + endif() + endif() + set (${_sourceFilesVar} ${_sourceFiles} PARENT_SCOPE) + set (${_excludedSourceFilesVar} ${_excludedSourceFiles} PARENT_SCOPE) + set (${_cotiredSourceFilesVar} ${_cotiredSourceFiles} PARENT_SCOPE) +endfunction() + +function (cotire_get_objects_with_property_on _filteredObjectsVar _property _type) + set (_filteredObjects "") + foreach (_object ${ARGN}) + get_property(_isSet ${_type} "${_object}" PROPERTY ${_property} SET) + if (_isSet) + get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) + if (_propertyValue) + list (APPEND _filteredObjects "${_object}") + endif() + endif() + endforeach() + set (${_filteredObjectsVar} ${_filteredObjects} PARENT_SCOPE) +endfunction() + +function (cotire_get_objects_with_property_off _filteredObjectsVar _property _type) + set (_filteredObjects "") + foreach (_object ${ARGN}) + get_property(_isSet ${_type} "${_object}" PROPERTY ${_property} SET) + if (_isSet) + get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) + if (NOT _propertyValue) + list (APPEND _filteredObjects "${_object}") + endif() + endif() + endforeach() + set (${_filteredObjectsVar} ${_filteredObjects} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_file_property_values _valuesVar _property) + set (_values "") + foreach (_sourceFile ${ARGN}) + get_source_file_property(_propertyValue "${_sourceFile}" ${_property}) + if (_propertyValue) + list (APPEND _values "${_propertyValue}") + endif() + endforeach() + set (${_valuesVar} ${_values} PARENT_SCOPE) +endfunction() + +function (cotire_resolve_config_properties _configurations _propertiesVar) + set (_properties "") + foreach (_property ${ARGN}) + if ("${_property}" MATCHES "") + foreach (_config ${_configurations}) + string (TOUPPER "${_config}" _upperConfig) + string (REPLACE "" "${_upperConfig}" _configProperty "${_property}") + list (APPEND _properties ${_configProperty}) + endforeach() + else() + list (APPEND _properties ${_property}) + endif() + endforeach() + set (${_propertiesVar} ${_properties} PARENT_SCOPE) +endfunction() + +function (cotire_copy_set_properties _configurations _type _source _target) + cotire_resolve_config_properties("${_configurations}" _properties ${ARGN}) + foreach (_property ${_properties}) + get_property(_isSet ${_type} ${_source} PROPERTY ${_property} SET) + if (_isSet) + get_property(_propertyValue ${_type} ${_source} PROPERTY ${_property}) + set_property(${_type} ${_target} PROPERTY ${_property} "${_propertyValue}") + endif() + endforeach() +endfunction() + +function (cotire_get_target_usage_requirements _target _config _targetRequirementsVar) + set (_targetRequirements "") + get_target_property(_librariesToProcess ${_target} LINK_LIBRARIES) + while (_librariesToProcess) + # remove from head + list (GET _librariesToProcess 0 _library) + list (REMOVE_AT _librariesToProcess 0) + if (_library MATCHES "^\\$<\\$:([A-Za-z0-9_:-]+)>$") + set (_library "${CMAKE_MATCH_1}") + elseif (_config STREQUAL "None" AND _library MATCHES "^\\$<\\$:([A-Za-z0-9_:-]+)>$") + set (_library "${CMAKE_MATCH_1}") + endif() + if (TARGET ${_library}) + list (FIND _targetRequirements ${_library} _index) + if (_index LESS 0) + list (APPEND _targetRequirements ${_library}) + # BFS traversal of transitive libraries + get_target_property(_libraries ${_library} INTERFACE_LINK_LIBRARIES) + if (_libraries) + list (APPEND _librariesToProcess ${_libraries}) + list (REMOVE_DUPLICATES _librariesToProcess) + endif() + endif() + endif() + endwhile() + set (${_targetRequirementsVar} ${_targetRequirements} PARENT_SCOPE) +endfunction() + +function (cotire_filter_compile_flags _language _flagFilter _matchedOptionsVar _unmatchedOptionsVar) + if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") + set (_flagPrefix "[/-]") + else() + set (_flagPrefix "--?") + endif() + set (_optionFlag "") + set (_matchedOptions "") + set (_unmatchedOptions "") + foreach (_compileFlag ${ARGN}) + if (_compileFlag) + if (_optionFlag AND NOT "${_compileFlag}" MATCHES "^${_flagPrefix}") + # option with separate argument + list (APPEND _matchedOptions "${_compileFlag}") + set (_optionFlag "") + elseif ("${_compileFlag}" MATCHES "^(${_flagPrefix})(${_flagFilter})$") + # remember option + set (_optionFlag "${CMAKE_MATCH_2}") + elseif ("${_compileFlag}" MATCHES "^(${_flagPrefix})(${_flagFilter})(.+)$") + # option with joined argument + list (APPEND _matchedOptions "${CMAKE_MATCH_3}") + set (_optionFlag "") + else() + # flush remembered option + if (_optionFlag) + list (APPEND _matchedOptions "${_optionFlag}") + set (_optionFlag "") + endif() + # add to unfiltered options + list (APPEND _unmatchedOptions "${_compileFlag}") + endif() + endif() + endforeach() + if (_optionFlag) + list (APPEND _matchedOptions "${_optionFlag}") + endif() + if (COTIRE_DEBUG AND _matchedOptions) + message (STATUS "Filter ${_flagFilter} matched: ${_matchedOptions}") + endif() + if (COTIRE_DEBUG AND _unmatchedOptions) + message (STATUS "Filter ${_flagFilter} unmatched: ${_unmatchedOptions}") + endif() + set (${_matchedOptionsVar} ${_matchedOptions} PARENT_SCOPE) + set (${_unmatchedOptionsVar} ${_unmatchedOptions} PARENT_SCOPE) +endfunction() + +function (cotire_is_target_supported _target _isSupportedVar) + if (NOT TARGET "${_target}") + set (${_isSupportedVar} FALSE PARENT_SCOPE) + return() + endif() + get_target_property(_imported ${_target} IMPORTED) + if (_imported) + set (${_isSupportedVar} FALSE PARENT_SCOPE) + return() + endif() + get_target_property(_targetType ${_target} TYPE) + if (NOT _targetType MATCHES "EXECUTABLE|(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") + set (${_isSupportedVar} FALSE PARENT_SCOPE) + return() + endif() + set (${_isSupportedVar} TRUE PARENT_SCOPE) +endfunction() + +function (cotire_get_target_compile_flags _config _language _target _flagsVar) + string (TOUPPER "${_config}" _upperConfig) + # collect options from CMake language variables + set (_compileFlags "") + if (CMAKE_${_language}_FLAGS) + set (_compileFlags "${_compileFlags} ${CMAKE_${_language}_FLAGS}") + endif() + if (CMAKE_${_language}_FLAGS_${_upperConfig}) + set (_compileFlags "${_compileFlags} ${CMAKE_${_language}_FLAGS_${_upperConfig}}") + endif() + if (_target) + # add target compile flags + get_target_property(_targetflags ${_target} COMPILE_FLAGS) + if (_targetflags) + set (_compileFlags "${_compileFlags} ${_targetflags}") + endif() + endif() + if (UNIX) + separate_arguments(_compileFlags UNIX_COMMAND "${_compileFlags}") + elseif(WIN32) + separate_arguments(_compileFlags WINDOWS_COMMAND "${_compileFlags}") + else() + separate_arguments(_compileFlags) + endif() + # target compile options + if (_target) + get_target_property(_targetOptions ${_target} COMPILE_OPTIONS) + if (_targetOptions) + list (APPEND _compileFlags ${_targetOptions}) + endif() + endif() + # interface compile options from linked library targets + if (_target) + set (_linkedTargets "") + cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) + foreach (_linkedTarget ${_linkedTargets}) + get_target_property(_targetOptions ${_linkedTarget} INTERFACE_COMPILE_OPTIONS) + if (_targetOptions) + list (APPEND _compileFlags ${_targetOptions}) + endif() + endforeach() + endif() + # handle language standard properties + if (CMAKE_${_language}_STANDARD_DEFAULT) + # used compiler supports language standard levels + if (_target) + get_target_property(_targetLanguageStandard ${_target} ${_language}_STANDARD) + if (_targetLanguageStandard) + set (_type "EXTENSION") + get_property(_isSet TARGET ${_target} PROPERTY ${_language}_EXTENSIONS SET) + if (_isSet) + get_target_property(_targetUseLanguageExtensions ${_target} ${_language}_EXTENSIONS) + if (NOT _targetUseLanguageExtensions) + set (_type "STANDARD") + endif() + endif() + if (CMAKE_${_language}${_targetLanguageStandard}_${_type}_COMPILE_OPTION) + list (APPEND _compileFlags "${CMAKE_${_language}${_targetLanguageStandard}_${_type}_COMPILE_OPTION}") + endif() + endif() + endif() + endif() + # handle the POSITION_INDEPENDENT_CODE target property + if (_target) + get_target_property(_targetPIC ${_target} POSITION_INDEPENDENT_CODE) + if (_targetPIC) + get_target_property(_targetType ${_target} TYPE) + if (_targetType STREQUAL "EXECUTABLE" AND CMAKE_${_language}_COMPILE_OPTIONS_PIE) + list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_PIE}") + elseif (CMAKE_${_language}_COMPILE_OPTIONS_PIC) + list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_PIC}") + endif() + endif() + endif() + # handle visibility target properties + if (_target) + get_target_property(_targetVisibility ${_target} ${_language}_VISIBILITY_PRESET) + if (_targetVisibility AND CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY) + list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY}${_targetVisibility}") + endif() + get_target_property(_targetVisibilityInlines ${_target} VISIBILITY_INLINES_HIDDEN) + if (_targetVisibilityInlines AND CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN) + list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN}") + endif() + endif() + # platform specific flags + if (APPLE) + get_target_property(_architectures ${_target} OSX_ARCHITECTURES_${_upperConfig}) + if (NOT _architectures) + get_target_property(_architectures ${_target} OSX_ARCHITECTURES) + endif() + if (_architectures) + foreach (_arch ${_architectures}) + list (APPEND _compileFlags "-arch" "${_arch}") + endforeach() + endif() + if (CMAKE_OSX_SYSROOT) + if (CMAKE_${_language}_SYSROOT_FLAG) + list (APPEND _compileFlags "${CMAKE_${_language}_SYSROOT_FLAG}" "${CMAKE_OSX_SYSROOT}") + else() + list (APPEND _compileFlags "-isysroot" "${CMAKE_OSX_SYSROOT}") + endif() + endif() + if (CMAKE_OSX_DEPLOYMENT_TARGET) + if (CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG) + list (APPEND _compileFlags "${CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG}${CMAKE_OSX_DEPLOYMENT_TARGET}") + else() + list (APPEND _compileFlags "-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + endif() + endif() + endif() + if (COTIRE_DEBUG AND _compileFlags) + message (STATUS "Target ${_target} compile flags: ${_compileFlags}") + endif() + set (${_flagsVar} ${_compileFlags} PARENT_SCOPE) +endfunction() + +function (cotire_get_target_include_directories _config _language _target _includeDirsVar _systemIncludeDirsVar) + set (_includeDirs "") + set (_systemIncludeDirs "") + # default include dirs + if (CMAKE_INCLUDE_CURRENT_DIR) + list (APPEND _includeDirs "${CMAKE_CURRENT_BINARY_DIR}") + list (APPEND _includeDirs "${CMAKE_CURRENT_SOURCE_DIR}") + endif() + set (_targetFlags "") + cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) + # parse additional include directories from target compile flags + if (CMAKE_INCLUDE_FLAG_${_language}) + string (STRIP "${CMAKE_INCLUDE_FLAG_${_language}}" _includeFlag) + string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") + if (_includeFlag) + set (_dirs "") + cotire_filter_compile_flags("${_language}" "${_includeFlag}" _dirs _ignore ${_targetFlags}) + if (_dirs) + list (APPEND _includeDirs ${_dirs}) + endif() + endif() + endif() + # parse additional system include directories from target compile flags + if (CMAKE_INCLUDE_SYSTEM_FLAG_${_language}) + string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" _includeFlag) + string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") + if (_includeFlag) + set (_dirs "") + cotire_filter_compile_flags("${_language}" "${_includeFlag}" _dirs _ignore ${_targetFlags}) + if (_dirs) + list (APPEND _systemIncludeDirs ${_dirs}) + endif() + endif() + endif() + # target include directories + get_directory_property(_dirs DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" INCLUDE_DIRECTORIES) + if (_target) + get_target_property(_targetDirs ${_target} INCLUDE_DIRECTORIES) + if (_targetDirs) + list (APPEND _dirs ${_targetDirs}) + endif() + get_target_property(_targetDirs ${_target} INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) + if (_targetDirs) + list (APPEND _systemIncludeDirs ${_targetDirs}) + endif() + endif() + # interface include directories from linked library targets + if (_target) + set (_linkedTargets "") + cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) + foreach (_linkedTarget ${_linkedTargets}) + get_target_property(_linkedTargetType ${_linkedTarget} TYPE) + if (CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE AND NOT CMAKE_VERSION VERSION_LESS "3.4.0" AND + _linkedTargetType MATCHES "(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") + # CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE refers to CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR + # at the time, when the target was created. These correspond to the target properties BINARY_DIR and SOURCE_DIR + # which are only available with CMake 3.4 or later. + get_target_property(_targetDirs ${_linkedTarget} BINARY_DIR) + if (_targetDirs) + list (APPEND _dirs ${_targetDirs}) + endif() + get_target_property(_targetDirs ${_linkedTarget} SOURCE_DIR) + if (_targetDirs) + list (APPEND _dirs ${_targetDirs}) + endif() + endif() + get_target_property(_targetDirs ${_linkedTarget} INTERFACE_INCLUDE_DIRECTORIES) + if (_targetDirs) + list (APPEND _dirs ${_targetDirs}) + endif() + get_target_property(_targetDirs ${_linkedTarget} INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) + if (_targetDirs) + list (APPEND _systemIncludeDirs ${_targetDirs}) + endif() + endforeach() + endif() + if (dirs) + list (REMOVE_DUPLICATES _dirs) + endif() + list (LENGTH _includeDirs _projectInsertIndex) + foreach (_dir ${_dirs}) + if (CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE) + cotire_check_is_path_relative_to("${_dir}" _isRelative "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}") + if (_isRelative) + list (LENGTH _includeDirs _len) + if (_len EQUAL _projectInsertIndex) + list (APPEND _includeDirs "${_dir}") + else() + list (INSERT _includeDirs _projectInsertIndex "${_dir}") + endif() + math (EXPR _projectInsertIndex "${_projectInsertIndex} + 1") + else() + list (APPEND _includeDirs "${_dir}") + endif() + else() + list (APPEND _includeDirs "${_dir}") + endif() + endforeach() + list (REMOVE_DUPLICATES _includeDirs) + list (REMOVE_DUPLICATES _systemIncludeDirs) + if (CMAKE_${_language}_IMPLICIT_INCLUDE_DIRECTORIES) + list (REMOVE_ITEM _includeDirs ${CMAKE_${_language}_IMPLICIT_INCLUDE_DIRECTORIES}) + endif() + if (WIN32 AND NOT MINGW) + # convert Windows paths in include directories to CMake paths + if (_includeDirs) + set (_paths "") + foreach (_dir ${_includeDirs}) + file (TO_CMAKE_PATH "${_dir}" _path) + list (APPEND _paths "${_path}") + endforeach() + set (_includeDirs ${_paths}) + endif() + if (_systemIncludeDirs) + set (_paths "") + foreach (_dir ${_systemIncludeDirs}) + file (TO_CMAKE_PATH "${_dir}" _path) + list (APPEND _paths "${_path}") + endforeach() + set (_systemIncludeDirs ${_paths}) + endif() + endif() + if (COTIRE_DEBUG AND _includeDirs) + message (STATUS "Target ${_target} include dirs: ${_includeDirs}") + endif() + set (${_includeDirsVar} ${_includeDirs} PARENT_SCOPE) + if (COTIRE_DEBUG AND _systemIncludeDirs) + message (STATUS "Target ${_target} system include dirs: ${_systemIncludeDirs}") + endif() + set (${_systemIncludeDirsVar} ${_systemIncludeDirs} PARENT_SCOPE) +endfunction() + +function (cotire_get_target_export_symbol _target _exportSymbolVar) + set (_exportSymbol "") + get_target_property(_targetType ${_target} TYPE) + get_target_property(_enableExports ${_target} ENABLE_EXPORTS) + if (_targetType MATCHES "(SHARED|MODULE)_LIBRARY" OR + (_targetType STREQUAL "EXECUTABLE" AND _enableExports)) + get_target_property(_exportSymbol ${_target} DEFINE_SYMBOL) + if (NOT _exportSymbol) + set (_exportSymbol "${_target}_EXPORTS") + endif() + string (MAKE_C_IDENTIFIER "${_exportSymbol}" _exportSymbol) + endif() + set (${_exportSymbolVar} ${_exportSymbol} PARENT_SCOPE) +endfunction() + +function (cotire_get_target_compile_definitions _config _language _target _definitionsVar) + string (TOUPPER "${_config}" _upperConfig) + set (_configDefinitions "") + # CMAKE_INTDIR for multi-configuration build systems + if (NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".") + list (APPEND _configDefinitions "CMAKE_INTDIR=\"${_config}\"") + endif() + # target export define symbol + cotire_get_target_export_symbol("${_target}" _defineSymbol) + if (_defineSymbol) + list (APPEND _configDefinitions "${_defineSymbol}") + endif() + # directory compile definitions + get_directory_property(_definitions DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMPILE_DEFINITIONS) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + get_directory_property(_definitions DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMPILE_DEFINITIONS_${_upperConfig}) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + # target compile definitions + get_target_property(_definitions ${_target} COMPILE_DEFINITIONS) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + get_target_property(_definitions ${_target} COMPILE_DEFINITIONS_${_upperConfig}) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + # interface compile definitions from linked library targets + set (_linkedTargets "") + cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) + foreach (_linkedTarget ${_linkedTargets}) + get_target_property(_definitions ${_linkedTarget} INTERFACE_COMPILE_DEFINITIONS) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + endforeach() + # parse additional compile definitions from target compile flags + # and do not look at directory compile definitions, which we already handled + set (_targetFlags "") + cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) + cotire_filter_compile_flags("${_language}" "D" _definitions _ignore ${_targetFlags}) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + list (REMOVE_DUPLICATES _configDefinitions) + if (COTIRE_DEBUG AND _configDefinitions) + message (STATUS "Target ${_target} compile definitions: ${_configDefinitions}") + endif() + set (${_definitionsVar} ${_configDefinitions} PARENT_SCOPE) +endfunction() + +function (cotire_get_target_compiler_flags _config _language _target _compilerFlagsVar) + # parse target compile flags omitting compile definitions and include directives + set (_targetFlags "") + cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) + set (_flagFilter "D") + if (CMAKE_INCLUDE_FLAG_${_language}) + string (STRIP "${CMAKE_INCLUDE_FLAG_${_language}}" _includeFlag) + string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") + if (_includeFlag) + set (_flagFilter "${_flagFilter}|${_includeFlag}") + endif() + endif() + if (CMAKE_INCLUDE_SYSTEM_FLAG_${_language}) + string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" _includeFlag) + string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") + if (_includeFlag) + set (_flagFilter "${_flagFilter}|${_includeFlag}") + endif() + endif() + set (_compilerFlags "") + cotire_filter_compile_flags("${_language}" "${_flagFilter}" _ignore _compilerFlags ${_targetFlags}) + if (COTIRE_DEBUG AND _compilerFlags) + message (STATUS "Target ${_target} compiler flags: ${_compilerFlags}") + endif() + set (${_compilerFlagsVar} ${_compilerFlags} PARENT_SCOPE) +endfunction() + +function (cotire_add_sys_root_paths _pathsVar) + if (APPLE) + if (CMAKE_OSX_SYSROOT AND CMAKE_${_language}_HAS_ISYSROOT) + foreach (_path IN LISTS ${_pathsVar}) + if (IS_ABSOLUTE "${_path}") + get_filename_component(_path "${CMAKE_OSX_SYSROOT}/${_path}" ABSOLUTE) + if (EXISTS "${_path}") + list (APPEND ${_pathsVar} "${_path}") + endif() + endif() + endforeach() + endif() + endif() + set (${_pathsVar} ${${_pathsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_extra_properties _sourceFile _pattern _resultVar) + set (_extraProperties ${ARGN}) + set (_result "") + if (_extraProperties) + list (FIND _extraProperties "${_sourceFile}" _index) + if (_index GREATER -1) + math (EXPR _index "${_index} + 1") + list (LENGTH _extraProperties _len) + math (EXPR _len "${_len} - 1") + foreach (_index RANGE ${_index} ${_len}) + list (GET _extraProperties ${_index} _value) + if (_value MATCHES "${_pattern}") + list (APPEND _result "${_value}") + else() + break() + endif() + endforeach() + endif() + endif() + set (${_resultVar} ${_result} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_compile_definitions _config _language _sourceFile _definitionsVar) + set (_compileDefinitions "") + if (NOT CMAKE_SCRIPT_MODE_FILE) + string (TOUPPER "${_config}" _upperConfig) + get_source_file_property(_definitions "${_sourceFile}" COMPILE_DEFINITIONS) + if (_definitions) + list (APPEND _compileDefinitions ${_definitions}) + endif() + get_source_file_property(_definitions "${_sourceFile}" COMPILE_DEFINITIONS_${_upperConfig}) + if (_definitions) + list (APPEND _compileDefinitions ${_definitions}) + endif() + endif() + cotire_get_source_extra_properties("${_sourceFile}" "^[a-zA-Z0-9_]+(=.*)?$" _definitions ${ARGN}) + if (_definitions) + list (APPEND _compileDefinitions ${_definitions}) + endif() + if (COTIRE_DEBUG AND _compileDefinitions) + message (STATUS "Source ${_sourceFile} compile definitions: ${_compileDefinitions}") + endif() + set (${_definitionsVar} ${_compileDefinitions} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_files_compile_definitions _config _language _definitionsVar) + set (_configDefinitions "") + foreach (_sourceFile ${ARGN}) + cotire_get_source_compile_definitions("${_config}" "${_language}" "${_sourceFile}" _sourceDefinitions) + if (_sourceDefinitions) + list (APPEND _configDefinitions "${_sourceFile}" ${_sourceDefinitions} "-") + endif() + endforeach() + set (${_definitionsVar} ${_configDefinitions} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_undefs _sourceFile _property _sourceUndefsVar) + set (_sourceUndefs "") + if (NOT CMAKE_SCRIPT_MODE_FILE) + get_source_file_property(_undefs "${_sourceFile}" ${_property}) + if (_undefs) + list (APPEND _sourceUndefs ${_undefs}) + endif() + endif() + cotire_get_source_extra_properties("${_sourceFile}" "^[a-zA-Z0-9_]+$" _undefs ${ARGN}) + if (_undefs) + list (APPEND _sourceUndefs ${_undefs}) + endif() + if (COTIRE_DEBUG AND _sourceUndefs) + message (STATUS "Source ${_sourceFile} ${_property} undefs: ${_sourceUndefs}") + endif() + set (${_sourceUndefsVar} ${_sourceUndefs} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_files_undefs _property _sourceUndefsVar) + set (_sourceUndefs "") + foreach (_sourceFile ${ARGN}) + cotire_get_source_undefs("${_sourceFile}" ${_property} _undefs) + if (_undefs) + list (APPEND _sourceUndefs "${_sourceFile}" ${_undefs} "-") + endif() + endforeach() + set (${_sourceUndefsVar} ${_sourceUndefs} PARENT_SCOPE) +endfunction() + +macro (cotire_set_cmd_to_prologue _cmdVar) + set (${_cmdVar} "${CMAKE_COMMAND}") + if (COTIRE_DEBUG) + list (APPEND ${_cmdVar} "--warn-uninitialized") + endif() + list (APPEND ${_cmdVar} "-DCOTIRE_BUILD_TYPE:STRING=$") + if (XCODE) + list (APPEND ${_cmdVar} "-DXCODE:BOOL=TRUE") + endif() + if (COTIRE_VERBOSE) + list (APPEND ${_cmdVar} "-DCOTIRE_VERBOSE:BOOL=ON") + elseif("${CMAKE_GENERATOR}" MATCHES "Makefiles") + list (APPEND ${_cmdVar} "-DCOTIRE_VERBOSE:BOOL=$(VERBOSE)") + endif() +endmacro() + +function (cotire_init_compile_cmd _cmdVar _language _compilerLauncher _compilerExe _compilerArg1) + if (NOT _compilerLauncher) + set (_compilerLauncher ${CMAKE_${_language}_COMPILER_LAUNCHER}) + endif() + if (NOT _compilerExe) + set (_compilerExe "${CMAKE_${_language}_COMPILER}") + endif() + if (NOT _compilerArg1) + set (_compilerArg1 ${CMAKE_${_language}_COMPILER_ARG1}) + endif() + if (WIN32) + file (TO_NATIVE_PATH "${_compilerExe}" _compilerExe) + endif() + string (STRIP "${_compilerArg1}" _compilerArg1) + if ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + # compiler launcher is only supported for Makefile and Ninja + set (${_cmdVar} ${_compilerLauncher} "${_compilerExe}" ${_compilerArg1} PARENT_SCOPE) + else() + set (${_cmdVar} "${_compilerExe}" ${_compilerArg1} PARENT_SCOPE) + endif() +endfunction() + +macro (cotire_add_definitions_to_cmd _cmdVar _language) + foreach (_definition ${ARGN}) + if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") + list (APPEND ${_cmdVar} "/D${_definition}") + else() + list (APPEND ${_cmdVar} "-D${_definition}") + endif() + endforeach() +endmacro() + +function (cotire_add_includes_to_cmd _cmdVar _language _includesVar _systemIncludesVar) + set (_includeDirs ${${_includesVar}} ${${_systemIncludesVar}}) + if (_includeDirs) + list (REMOVE_DUPLICATES _includeDirs) + foreach (_include ${_includeDirs}) + if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") + file (TO_NATIVE_PATH "${_include}" _include) + list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") + else() + set (_index -1) + if ("${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" MATCHES ".+") + list (FIND ${_systemIncludesVar} "${_include}" _index) + endif() + if (_index GREATER -1) + list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") + else() + list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") + endif() + endif() + endforeach() + endif() + set (${_cmdVar} ${${_cmdVar}} PARENT_SCOPE) +endfunction() + +function (cotire_add_frameworks_to_cmd _cmdVar _language _includesVar _systemIncludesVar) + if (APPLE) + set (_frameworkDirs "") + foreach (_include ${${_includesVar}}) + if (IS_ABSOLUTE "${_include}" AND _include MATCHES "\\.framework$") + get_filename_component(_frameworkDir "${_include}" DIRECTORY) + list (APPEND _frameworkDirs "${_frameworkDir}") + endif() + endforeach() + set (_systemFrameworkDirs "") + foreach (_include ${${_systemIncludesVar}}) + if (IS_ABSOLUTE "${_include}" AND _include MATCHES "\\.framework$") + get_filename_component(_frameworkDir "${_include}" DIRECTORY) + list (APPEND _systemFrameworkDirs "${_frameworkDir}") + endif() + endforeach() + if (_systemFrameworkDirs) + list (APPEND _frameworkDirs ${_systemFrameworkDirs}) + endif() + if (_frameworkDirs) + list (REMOVE_DUPLICATES _frameworkDirs) + foreach (_frameworkDir ${_frameworkDirs}) + set (_index -1) + if ("${CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG}" MATCHES ".+") + list (FIND _systemFrameworkDirs "${_frameworkDir}" _index) + endif() + if (_index GREATER -1) + list (APPEND ${_cmdVar} "${CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG}${_frameworkDir}") + else() + list (APPEND ${_cmdVar} "${CMAKE_${_language}_FRAMEWORK_SEARCH_FLAG}${_frameworkDir}") + endif() + endforeach() + endif() + endif() + set (${_cmdVar} ${${_cmdVar}} PARENT_SCOPE) +endfunction() + +macro (cotire_add_compile_flags_to_cmd _cmdVar) + foreach (_flag ${ARGN}) + list (APPEND ${_cmdVar} "${_flag}") + endforeach() +endmacro() + +function (cotire_check_file_up_to_date _fileIsUpToDateVar _file) + if (EXISTS "${_file}") + set (_triggerFile "") + foreach (_dependencyFile ${ARGN}) + if (EXISTS "${_dependencyFile}") + # IS_NEWER_THAN returns TRUE if both files have the same timestamp + # thus we do the comparison in both directions to exclude ties + if ("${_dependencyFile}" IS_NEWER_THAN "${_file}" AND + NOT "${_file}" IS_NEWER_THAN "${_dependencyFile}") + set (_triggerFile "${_dependencyFile}") + break() + endif() + endif() + endforeach() + if (_triggerFile) + if (COTIRE_VERBOSE) + get_filename_component(_fileName "${_file}" NAME) + message (STATUS "${_fileName} update triggered by ${_triggerFile} change.") + endif() + set (${_fileIsUpToDateVar} FALSE PARENT_SCOPE) + else() + if (COTIRE_VERBOSE) + get_filename_component(_fileName "${_file}" NAME) + message (STATUS "${_fileName} is up-to-date.") + endif() + set (${_fileIsUpToDateVar} TRUE PARENT_SCOPE) + endif() + else() + if (COTIRE_VERBOSE) + get_filename_component(_fileName "${_file}" NAME) + message (STATUS "${_fileName} does not exist yet.") + endif() + set (${_fileIsUpToDateVar} FALSE PARENT_SCOPE) + endif() +endfunction() + +macro (cotire_find_closest_relative_path _headerFile _includeDirs _relPathVar) + set (${_relPathVar} "") + foreach (_includeDir ${_includeDirs}) + if (IS_DIRECTORY "${_includeDir}") + file (RELATIVE_PATH _relPath "${_includeDir}" "${_headerFile}") + if (NOT IS_ABSOLUTE "${_relPath}" AND NOT "${_relPath}" MATCHES "^\\.\\.") + string (LENGTH "${${_relPathVar}}" _closestLen) + string (LENGTH "${_relPath}" _relLen) + if (_closestLen EQUAL 0 OR _relLen LESS _closestLen) + set (${_relPathVar} "${_relPath}") + endif() + endif() + elseif ("${_includeDir}" STREQUAL "${_headerFile}") + # if path matches exactly, return short non-empty string + set (${_relPathVar} "1") + break() + endif() + endforeach() +endmacro() + +macro (cotire_check_header_file_location _headerFile _insideIncludeDirs _outsideIncludeDirs _headerIsInside) + # check header path against ignored and honored include directories + cotire_find_closest_relative_path("${_headerFile}" "${_insideIncludeDirs}" _insideRelPath) + if (_insideRelPath) + # header is inside, but could be become outside if there is a shorter outside match + cotire_find_closest_relative_path("${_headerFile}" "${_outsideIncludeDirs}" _outsideRelPath) + if (_outsideRelPath) + string (LENGTH "${_insideRelPath}" _insideRelPathLen) + string (LENGTH "${_outsideRelPath}" _outsideRelPathLen) + if (_outsideRelPathLen LESS _insideRelPathLen) + set (${_headerIsInside} FALSE) + else() + set (${_headerIsInside} TRUE) + endif() + else() + set (${_headerIsInside} TRUE) + endif() + else() + # header is outside + set (${_headerIsInside} FALSE) + endif() +endmacro() + +macro (cotire_check_ignore_header_file_path _headerFile _headerIsIgnoredVar) + if (NOT EXISTS "${_headerFile}") + set (${_headerIsIgnoredVar} TRUE) + elseif (IS_DIRECTORY "${_headerFile}") + set (${_headerIsIgnoredVar} TRUE) + elseif ("${_headerFile}" MATCHES "\\.\\.|[_-]fixed") + # heuristic: ignore headers with embedded parent directory references or "-fixed" or "_fixed" in path + # these often stem from using GCC #include_next tricks, which may break the precompiled header compilation + # with the error message "error: no include path in which to search for header" + set (${_headerIsIgnoredVar} TRUE) + else() + set (${_headerIsIgnoredVar} FALSE) + endif() +endmacro() + +macro (cotire_check_ignore_header_file_ext _headerFile _ignoreExtensionsVar _headerIsIgnoredVar) + # check header file extension + cotire_get_source_file_extension("${_headerFile}" _headerFileExt) + set (${_headerIsIgnoredVar} FALSE) + if (_headerFileExt) + list (FIND ${_ignoreExtensionsVar} "${_headerFileExt}" _index) + if (_index GREATER -1) + set (${_headerIsIgnoredVar} TRUE) + endif() + endif() +endmacro() + +macro (cotire_parse_line _line _headerFileVar _headerDepthVar) + if (MSVC) + # cl.exe /showIncludes produces different output, depending on the language pack used, e.g.: + # English: "Note: including file: C:\directory\file" + # German: "Hinweis: Einlesen der Datei: C:\directory\file" + # We use a very general regular expression, relying on the presence of the : characters + if (_line MATCHES "( +)([a-zA-Z]:[^:]+)$") + string (LENGTH "${CMAKE_MATCH_1}" ${_headerDepthVar}) + get_filename_component(${_headerFileVar} "${CMAKE_MATCH_2}" ABSOLUTE) + else() + set (${_headerFileVar} "") + set (${_headerDepthVar} 0) + endif() + else() + if (_line MATCHES "^(\\.+) (.*)$") + # GCC like output + string (LENGTH "${CMAKE_MATCH_1}" ${_headerDepthVar}) + if (IS_ABSOLUTE "${CMAKE_MATCH_2}") + set (${_headerFileVar} "${CMAKE_MATCH_2}") + else() + get_filename_component(${_headerFileVar} "${CMAKE_MATCH_2}" REALPATH) + endif() + else() + set (${_headerFileVar} "") + set (${_headerDepthVar} 0) + endif() + endif() +endmacro() + +function (cotire_parse_includes _language _scanOutput _ignoredIncludeDirs _honoredIncludeDirs _ignoredExtensions _selectedIncludesVar _unparsedLinesVar) + if (WIN32) + # prevent CMake macro invocation errors due to backslash characters in Windows paths + string (REPLACE "\\" "/" _scanOutput "${_scanOutput}") + endif() + # canonize slashes + string (REPLACE "//" "/" _scanOutput "${_scanOutput}") + # prevent semicolon from being interpreted as a line separator + string (REPLACE ";" "\\;" _scanOutput "${_scanOutput}") + # then separate lines + string (REGEX REPLACE "\n" ";" _scanOutput "${_scanOutput}") + list (LENGTH _scanOutput _len) + # remove duplicate lines to speed up parsing + list (REMOVE_DUPLICATES _scanOutput) + list (LENGTH _scanOutput _uniqueLen) + if (COTIRE_VERBOSE OR COTIRE_DEBUG) + message (STATUS "Scanning ${_uniqueLen} unique lines of ${_len} for includes") + if (_ignoredExtensions) + message (STATUS "Ignored extensions: ${_ignoredExtensions}") + endif() + if (_ignoredIncludeDirs) + message (STATUS "Ignored paths: ${_ignoredIncludeDirs}") + endif() + if (_honoredIncludeDirs) + message (STATUS "Included paths: ${_honoredIncludeDirs}") + endif() + endif() + set (_sourceFiles ${ARGN}) + set (_selectedIncludes "") + set (_unparsedLines "") + # stack keeps track of inside/outside project status of processed header files + set (_headerIsInsideStack "") + foreach (_line IN LISTS _scanOutput) + if (_line) + cotire_parse_line("${_line}" _headerFile _headerDepth) + if (_headerFile) + cotire_check_header_file_location("${_headerFile}" "${_ignoredIncludeDirs}" "${_honoredIncludeDirs}" _headerIsInside) + if (COTIRE_DEBUG) + message (STATUS "${_headerDepth}: ${_headerFile} ${_headerIsInside}") + endif() + # update stack + list (LENGTH _headerIsInsideStack _stackLen) + if (_headerDepth GREATER _stackLen) + math (EXPR _stackLen "${_stackLen} + 1") + foreach (_index RANGE ${_stackLen} ${_headerDepth}) + list (APPEND _headerIsInsideStack ${_headerIsInside}) + endforeach() + else() + foreach (_index RANGE ${_headerDepth} ${_stackLen}) + list (REMOVE_AT _headerIsInsideStack -1) + endforeach() + list (APPEND _headerIsInsideStack ${_headerIsInside}) + endif() + if (COTIRE_DEBUG) + message (STATUS "${_headerIsInsideStack}") + endif() + # header is a candidate if it is outside project + if (NOT _headerIsInside) + # get parent header file's inside/outside status + if (_headerDepth GREATER 1) + math (EXPR _index "${_headerDepth} - 2") + list (GET _headerIsInsideStack ${_index} _parentHeaderIsInside) + else() + set (_parentHeaderIsInside TRUE) + endif() + # select header file if parent header file is inside project + # (e.g., a project header file that includes a standard header file) + if (_parentHeaderIsInside) + cotire_check_ignore_header_file_path("${_headerFile}" _headerIsIgnored) + if (NOT _headerIsIgnored) + cotire_check_ignore_header_file_ext("${_headerFile}" _ignoredExtensions _headerIsIgnored) + if (NOT _headerIsIgnored) + list (APPEND _selectedIncludes "${_headerFile}") + else() + # fix header's inside status on stack, it is ignored by extension now + list (REMOVE_AT _headerIsInsideStack -1) + list (APPEND _headerIsInsideStack TRUE) + endif() + endif() + if (COTIRE_DEBUG) + message (STATUS "${_headerFile} ${_ignoredExtensions} ${_headerIsIgnored}") + endif() + endif() + endif() + else() + if (MSVC) + # for cl.exe do not keep unparsed lines which solely consist of a source file name + string (FIND "${_sourceFiles}" "${_line}" _index) + if (_index LESS 0) + list (APPEND _unparsedLines "${_line}") + endif() + else() + list (APPEND _unparsedLines "${_line}") + endif() + endif() + endif() + endforeach() + list (REMOVE_DUPLICATES _selectedIncludes) + set (${_selectedIncludesVar} ${_selectedIncludes} PARENT_SCOPE) + set (${_unparsedLinesVar} ${_unparsedLines} PARENT_SCOPE) +endfunction() + +function (cotire_scan_includes _includesVar) + set(_options "") + set(_oneValueArgs COMPILER_ID COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_VERSION LANGUAGE UNPARSED_LINES SCAN_RESULT) + set(_multiValueArgs COMPILE_DEFINITIONS COMPILE_FLAGS INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES + IGNORE_PATH INCLUDE_PATH IGNORE_EXTENSIONS INCLUDE_PRIORITY_PATH COMPILER_LAUNCHER) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) + if (NOT _option_LANGUAGE) + set (_option_LANGUAGE "CXX") + endif() + if (NOT _option_COMPILER_ID) + set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") + endif() + if (NOT _option_COMPILER_VERSION) + set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") + endif() + cotire_init_compile_cmd(_cmd "${_option_LANGUAGE}" "${_option_COMPILER_LAUNCHER}" "${_option_COMPILER_EXECUTABLE}" "${_option_COMPILER_ARG1}") + cotire_add_definitions_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_COMPILE_DEFINITIONS}) + cotire_add_compile_flags_to_cmd(_cmd ${_option_COMPILE_FLAGS}) + cotire_add_includes_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) + cotire_add_frameworks_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) + cotire_add_makedep_flags("${_option_LANGUAGE}" "${_option_COMPILER_ID}" "${_option_COMPILER_VERSION}" _cmd) + # only consider existing source files for scanning + set (_existingSourceFiles "") + foreach (_sourceFile ${_sourceFiles}) + if (EXISTS "${_sourceFile}") + list (APPEND _existingSourceFiles "${_sourceFile}") + endif() + endforeach() + if (NOT _existingSourceFiles) + set (${_includesVar} "" PARENT_SCOPE) + return() + endif() + # add source files to be scanned + if (WIN32) + foreach (_sourceFile ${_existingSourceFiles}) + file (TO_NATIVE_PATH "${_sourceFile}" _sourceFileNative) + list (APPEND _cmd "${_sourceFileNative}") + endforeach() + else() + list (APPEND _cmd ${_existingSourceFiles}) + endif() + if (COTIRE_VERBOSE) + message (STATUS "execute_process: ${_cmd}") + endif() + if (MSVC_IDE OR _option_COMPILER_ID MATCHES "MSVC") + # cl.exe messes with the output streams unless the environment variable VS_UNICODE_OUTPUT is cleared + unset (ENV{VS_UNICODE_OUTPUT}) + endif() + execute_process( + COMMAND ${_cmd} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE _result + OUTPUT_QUIET + ERROR_VARIABLE _output) + if (_result) + message (STATUS "Result ${_result} scanning includes of ${_existingSourceFiles}.") + endif() + cotire_parse_includes( + "${_option_LANGUAGE}" "${_output}" + "${_option_IGNORE_PATH}" "${_option_INCLUDE_PATH}" + "${_option_IGNORE_EXTENSIONS}" + _includes _unparsedLines + ${_sourceFiles}) + if (_option_INCLUDE_PRIORITY_PATH) + set (_sortedIncludes "") + foreach (_priorityPath ${_option_INCLUDE_PRIORITY_PATH}) + foreach (_include ${_includes}) + string (FIND ${_include} ${_priorityPath} _position) + if (_position GREATER -1) + list (APPEND _sortedIncludes ${_include}) + endif() + endforeach() + endforeach() + if (_sortedIncludes) + list (INSERT _includes 0 ${_sortedIncludes}) + list (REMOVE_DUPLICATES _includes) + endif() + endif() + set (${_includesVar} ${_includes} PARENT_SCOPE) + if (_option_UNPARSED_LINES) + set (${_option_UNPARSED_LINES} ${_unparsedLines} PARENT_SCOPE) + endif() + if (_option_SCAN_RESULT) + set (${_option_SCAN_RESULT} ${_result} PARENT_SCOPE) + endif() +endfunction() + +macro (cotire_append_undefs _contentsVar) + set (_undefs ${ARGN}) + if (_undefs) + list (REMOVE_DUPLICATES _undefs) + foreach (_definition ${_undefs}) + list (APPEND ${_contentsVar} "#undef ${_definition}") + endforeach() + endif() +endmacro() + +macro (cotire_comment_str _language _commentText _commentVar) + if ("${_language}" STREQUAL "CMAKE") + set (${_commentVar} "# ${_commentText}") + else() + set (${_commentVar} "/* ${_commentText} */") + endif() +endmacro() + +function (cotire_write_file _language _file _contents _force) + get_filename_component(_moduleName "${COTIRE_CMAKE_MODULE_FILE}" NAME) + cotire_comment_str("${_language}" "${_moduleName} ${COTIRE_CMAKE_MODULE_VERSION} generated file" _header1) + cotire_comment_str("${_language}" "${_file}" _header2) + set (_contents "${_header1}\n${_header2}\n${_contents}") + if (COTIRE_DEBUG) + message (STATUS "${_contents}") + endif() + if (_force OR NOT EXISTS "${_file}") + file (WRITE "${_file}" "${_contents}") + else() + file (READ "${_file}" _oldContents) + if (NOT "${_oldContents}" STREQUAL "${_contents}") + file (WRITE "${_file}" "${_contents}") + else() + if (COTIRE_DEBUG) + message (STATUS "${_file} unchanged") + endif() + endif() + endif() +endfunction() + +function (cotire_generate_unity_source _unityFile) + set(_options "") + set(_oneValueArgs LANGUAGE) + set(_multiValueArgs + DEPENDS SOURCES_COMPILE_DEFINITIONS + PRE_UNDEFS SOURCES_PRE_UNDEFS POST_UNDEFS SOURCES_POST_UNDEFS PROLOGUE EPILOGUE) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + if (_option_DEPENDS) + cotire_check_file_up_to_date(_unityFileIsUpToDate "${_unityFile}" ${_option_DEPENDS}) + if (_unityFileIsUpToDate) + return() + endif() + endif() + set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) + if (NOT _option_PRE_UNDEFS) + set (_option_PRE_UNDEFS "") + endif() + if (NOT _option_SOURCES_PRE_UNDEFS) + set (_option_SOURCES_PRE_UNDEFS "") + endif() + if (NOT _option_POST_UNDEFS) + set (_option_POST_UNDEFS "") + endif() + if (NOT _option_SOURCES_POST_UNDEFS) + set (_option_SOURCES_POST_UNDEFS "") + endif() + set (_contents "") + if (_option_PROLOGUE) + list (APPEND _contents ${_option_PROLOGUE}) + endif() + if (_option_LANGUAGE AND _sourceFiles) + if ("${_option_LANGUAGE}" STREQUAL "CXX") + list (APPEND _contents "#ifdef __cplusplus") + elseif ("${_option_LANGUAGE}" STREQUAL "C") + list (APPEND _contents "#ifndef __cplusplus") + endif() + endif() + set (_compileUndefinitions "") + foreach (_sourceFile ${_sourceFiles}) + cotire_get_source_compile_definitions( + "${_option_CONFIGURATION}" "${_option_LANGUAGE}" "${_sourceFile}" _compileDefinitions + ${_option_SOURCES_COMPILE_DEFINITIONS}) + cotire_get_source_undefs("${_sourceFile}" COTIRE_UNITY_SOURCE_PRE_UNDEFS _sourcePreUndefs ${_option_SOURCES_PRE_UNDEFS}) + cotire_get_source_undefs("${_sourceFile}" COTIRE_UNITY_SOURCE_POST_UNDEFS _sourcePostUndefs ${_option_SOURCES_POST_UNDEFS}) + if (_option_PRE_UNDEFS) + list (APPEND _compileUndefinitions ${_option_PRE_UNDEFS}) + endif() + if (_sourcePreUndefs) + list (APPEND _compileUndefinitions ${_sourcePreUndefs}) + endif() + if (_compileUndefinitions) + cotire_append_undefs(_contents ${_compileUndefinitions}) + set (_compileUndefinitions "") + endif() + if (_sourcePostUndefs) + list (APPEND _compileUndefinitions ${_sourcePostUndefs}) + endif() + if (_option_POST_UNDEFS) + list (APPEND _compileUndefinitions ${_option_POST_UNDEFS}) + endif() + foreach (_definition ${_compileDefinitions}) + if (_definition MATCHES "^([a-zA-Z0-9_]+)=(.+)$") + list (APPEND _contents "#define ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}") + list (INSERT _compileUndefinitions 0 "${CMAKE_MATCH_1}") + else() + list (APPEND _contents "#define ${_definition}") + list (INSERT _compileUndefinitions 0 "${_definition}") + endif() + endforeach() + # use absolute path as source file location + get_filename_component(_sourceFileLocation "${_sourceFile}" ABSOLUTE) + if (WIN32) + file (TO_NATIVE_PATH "${_sourceFileLocation}" _sourceFileLocation) + endif() + list (APPEND _contents "#include \"${_sourceFileLocation}\"") + endforeach() + if (_compileUndefinitions) + cotire_append_undefs(_contents ${_compileUndefinitions}) + set (_compileUndefinitions "") + endif() + if (_option_LANGUAGE AND _sourceFiles) + list (APPEND _contents "#endif") + endif() + if (_option_EPILOGUE) + list (APPEND _contents ${_option_EPILOGUE}) + endif() + list (APPEND _contents "") + string (REPLACE ";" "\n" _contents "${_contents}") + if (COTIRE_VERBOSE) + message ("${_contents}") + endif() + cotire_write_file("${_option_LANGUAGE}" "${_unityFile}" "${_contents}" TRUE) +endfunction() + +function (cotire_generate_prefix_header _prefixFile) + set(_options "") + set(_oneValueArgs LANGUAGE COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_ID COMPILER_VERSION) + set(_multiValueArgs DEPENDS COMPILE_DEFINITIONS COMPILE_FLAGS + INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES IGNORE_PATH INCLUDE_PATH + IGNORE_EXTENSIONS INCLUDE_PRIORITY_PATH COMPILER_LAUNCHER) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + if (NOT _option_COMPILER_ID) + set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") + endif() + if (NOT _option_COMPILER_VERSION) + set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") + endif() + if (_option_DEPENDS) + cotire_check_file_up_to_date(_prefixFileIsUpToDate "${_prefixFile}" ${_option_DEPENDS}) + if (_prefixFileIsUpToDate) + # create empty log file + set (_unparsedLinesFile "${_prefixFile}.log") + file (WRITE "${_unparsedLinesFile}" "") + return() + endif() + endif() + set (_prologue "") + set (_epilogue "") + if (_option_COMPILER_ID MATCHES "Clang") + set (_prologue "#pragma clang system_header") + elseif (_option_COMPILER_ID MATCHES "GNU") + set (_prologue "#pragma GCC system_header") + elseif (_option_COMPILER_ID MATCHES "MSVC") + set (_prologue "#pragma warning(push, 0)") + set (_epilogue "#pragma warning(pop)") + elseif (_option_COMPILER_ID MATCHES "Intel") + # Intel compiler requires hdrstop pragma to stop generating PCH file + set (_epilogue "#pragma hdrstop") + endif() + set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) + cotire_scan_includes(_selectedHeaders ${_sourceFiles} + LANGUAGE "${_option_LANGUAGE}" + COMPILER_LAUNCHER "${_option_COMPILER_LAUNCHER}" + COMPILER_EXECUTABLE "${_option_COMPILER_EXECUTABLE}" + COMPILER_ARG1 "${_option_COMPILER_ARG1}" + COMPILER_ID "${_option_COMPILER_ID}" + COMPILER_VERSION "${_option_COMPILER_VERSION}" + COMPILE_DEFINITIONS ${_option_COMPILE_DEFINITIONS} + COMPILE_FLAGS ${_option_COMPILE_FLAGS} + INCLUDE_DIRECTORIES ${_option_INCLUDE_DIRECTORIES} + SYSTEM_INCLUDE_DIRECTORIES ${_option_SYSTEM_INCLUDE_DIRECTORIES} + IGNORE_PATH ${_option_IGNORE_PATH} + INCLUDE_PATH ${_option_INCLUDE_PATH} + IGNORE_EXTENSIONS ${_option_IGNORE_EXTENSIONS} + INCLUDE_PRIORITY_PATH ${_option_INCLUDE_PRIORITY_PATH} + UNPARSED_LINES _unparsedLines + SCAN_RESULT _scanResult) + cotire_generate_unity_source("${_prefixFile}" + PROLOGUE ${_prologue} EPILOGUE ${_epilogue} LANGUAGE "${_option_LANGUAGE}" ${_selectedHeaders}) + set (_unparsedLinesFile "${_prefixFile}.log") + if (_unparsedLines) + if (COTIRE_VERBOSE OR _scanResult OR NOT _selectedHeaders) + list (LENGTH _unparsedLines _skippedLineCount) + if (WIN32) + file (TO_NATIVE_PATH "${_unparsedLinesFile}" _unparsedLinesLogPath) + else() + set (_unparsedLinesLogPath "${_unparsedLinesFile}") + endif() + message (STATUS "${_skippedLineCount} line(s) skipped, see ${_unparsedLinesLogPath}") + endif() + string (REPLACE ";" "\n" _unparsedLines "${_unparsedLines}") + endif() + file (WRITE "${_unparsedLinesFile}" "${_unparsedLines}\n") +endfunction() + +function (cotire_add_makedep_flags _language _compilerID _compilerVersion _flagsVar) + set (_flags ${${_flagsVar}}) + if (_compilerID MATCHES "MSVC") + # cl.exe options used + # /nologo suppresses display of sign-on banner + # /TC treat all files named on the command line as C source files + # /TP treat all files named on the command line as C++ source files + # /EP preprocess to stdout without #line directives + # /showIncludes list include files + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags /nologo "${_sourceFileType${_language}}" /EP /showIncludes) + else() + # return as a flag string + set (_flags "${_sourceFileType${_language}} /EP /showIncludes") + endif() + elseif (_compilerID MATCHES "GNU") + # GCC options used + # -H print the name of each header file used + # -E invoke preprocessor + # -fdirectives-only do not expand macros, requires GCC >= 4.3 + if (_flags) + # append to list + list (APPEND _flags -H -E) + if (NOT "${_compilerVersion}" VERSION_LESS "4.3.0") + list (APPEND _flags -fdirectives-only) + endif() + else() + # return as a flag string + set (_flags "-H -E") + if (NOT "${_compilerVersion}" VERSION_LESS "4.3.0") + set (_flags "${_flags} -fdirectives-only") + endif() + endif() + elseif (_compilerID MATCHES "Clang") + if (UNIX) + # Clang options used + # -H print the name of each header file used + # -E invoke preprocessor + # -fno-color-diagnostics do not print diagnostics in color + # -Eonly just run preprocessor, no output + if (_flags) + # append to list + list (APPEND _flags -H -E -fno-color-diagnostics -Xclang -Eonly) + else() + # return as a flag string + set (_flags "-H -E -fno-color-diagnostics -Xclang -Eonly") + endif() + elseif (WIN32) + # Clang-cl.exe options used + # /TC treat all files named on the command line as C source files + # /TP treat all files named on the command line as C++ source files + # /EP preprocess to stdout without #line directives + # -H print the name of each header file used + # -fno-color-diagnostics do not print diagnostics in color + # -Eonly just run preprocessor, no output + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags "${_sourceFileType${_language}}" /EP -fno-color-diagnostics -Xclang -H -Xclang -Eonly) + else() + # return as a flag string + set (_flags "${_sourceFileType${_language}} /EP -fno-color-diagnostics -Xclang -H -Xclang -Eonly") + endif() + endif() + elseif (_compilerID MATCHES "Intel") + if (WIN32) + # Windows Intel options used + # /nologo do not display compiler version information + # /QH display the include file order + # /EP preprocess to stdout, omitting #line directives + # /TC process all source or unrecognized file types as C source files + # /TP process all source or unrecognized file types as C++ source files + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags /nologo "${_sourceFileType${_language}}" /EP /QH) + else() + # return as a flag string + set (_flags "${_sourceFileType${_language}} /EP /QH") + endif() + else() + # Linux / Mac OS X Intel options used + # -H print the name of each header file used + # -EP preprocess to stdout, omitting #line directives + # -Kc++ process all source or unrecognized file types as C++ source files + if (_flags) + # append to list + if ("${_language}" STREQUAL "CXX") + list (APPEND _flags -Kc++) + endif() + list (APPEND _flags -H -EP) + else() + # return as a flag string + if ("${_language}" STREQUAL "CXX") + set (_flags "-Kc++ ") + endif() + set (_flags "${_flags}-H -EP") + endif() + endif() + else() + message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") + endif() + set (${_flagsVar} ${_flags} PARENT_SCOPE) +endfunction() + +function (cotire_add_pch_compilation_flags _language _compilerID _compilerVersion _prefixFile _pchFile _hostFile _flagsVar) + set (_flags ${${_flagsVar}}) + if (_compilerID MATCHES "MSVC") + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) + # cl.exe options used + # /Yc creates a precompiled header file + # /Fp specifies precompiled header binary file name + # /FI forces inclusion of file + # /TC treat all files named on the command line as C source files + # /TP treat all files named on the command line as C++ source files + # /Zs syntax check only + # /Zm precompiled header memory allocation scaling factor + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags /nologo "${_sourceFileType${_language}}" + "/Yc${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") + if (COTIRE_PCH_MEMORY_SCALING_FACTOR) + list (APPEND _flags "/Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") + endif() + else() + # return as a flag string + set (_flags "/Yc\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + if (COTIRE_PCH_MEMORY_SCALING_FACTOR) + set (_flags "${_flags} /Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") + endif() + endif() + elseif (_compilerID MATCHES "GNU") + # GCC options used + # -x specify the source language + # -c compile but do not link + # -o place output in file + # note that we cannot use -w to suppress all warnings upon pre-compiling, because turning off a warning may + # alter compile flags as a side effect (e.g., -Wwrite-string implies -fconst-strings) + set (_xLanguage_C "c-header") + set (_xLanguage_CXX "c++-header") + if (_flags) + # append to list + list (APPEND _flags -x "${_xLanguage_${_language}}" -c "${_prefixFile}" -o "${_pchFile}") + else() + # return as a flag string + set (_flags "-x ${_xLanguage_${_language}} -c \"${_prefixFile}\" -o \"${_pchFile}\"") + endif() + elseif (_compilerID MATCHES "Clang") + if (UNIX) + # Clang options used + # -x specify the source language + # -c compile but do not link + # -o place output in file + # -fno-pch-timestamp disable inclusion of timestamp in precompiled headers (clang 4.0.0+) + set (_xLanguage_C "c-header") + set (_xLanguage_CXX "c++-header") + if (_flags) + # append to list + list (APPEND _flags -x "${_xLanguage_${_language}}" -c "${_prefixFile}" -o "${_pchFile}") + if (NOT "${_compilerVersion}" VERSION_LESS "4.0.0") + list (APPEND _flags -Xclang -fno-pch-timestamp) + endif() + else() + # return as a flag string + set (_flags "-x ${_xLanguage_${_language}} -c \"${_prefixFile}\" -o \"${_pchFile}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "4.0.0") + set (_flags "${_flags} -Xclang -fno-pch-timestamp") + endif() + endif() + elseif (WIN32) + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) + # Clang-cl.exe options used + # /Yc creates a precompiled header file + # /Fp specifies precompiled header binary file name + # /FI forces inclusion of file + # /Zs syntax check only + # /TC treat all files named on the command line as C source files + # /TP treat all files named on the command line as C++ source files + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags "${_sourceFileType${_language}}" + "/Yc${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") + else() + # return as a flag string + set (_flags "/Yc\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + endif() + endif() + elseif (_compilerID MATCHES "Intel") + if (WIN32) + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) + # Windows Intel options used + # /nologo do not display compiler version information + # /Yc create a precompiled header (PCH) file + # /Fp specify a path or file name for precompiled header files + # /FI tells the preprocessor to include a specified file name as the header file + # /TC process all source or unrecognized file types as C source files + # /TP process all source or unrecognized file types as C++ source files + # /Zs syntax check only + # /Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags /nologo "${_sourceFileType${_language}}" + "/Yc" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + list (APPEND _flags "/Wpch-messages") + endif() + else() + # return as a flag string + set (_flags "/Yc /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + set (_flags "${_flags} /Wpch-messages") + endif() + endif() + else() + # Linux / Mac OS X Intel options used + # -pch-dir location for precompiled header files + # -pch-create name of the precompiled header (PCH) to create + # -Kc++ process all source or unrecognized file types as C++ source files + # -fsyntax-only check only for correct syntax + # -Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) + get_filename_component(_pchDir "${_pchFile}" DIRECTORY) + get_filename_component(_pchName "${_pchFile}" NAME) + set (_xLanguage_C "c-header") + set (_xLanguage_CXX "c++-header") + set (_pchSuppressMessages FALSE) + if ("${CMAKE_${_language}_FLAGS}" MATCHES ".*-Wno-pch-messages.*") + set(_pchSuppressMessages TRUE) + endif() + if (_flags) + # append to list + if ("${_language}" STREQUAL "CXX") + list (APPEND _flags -Kc++) + endif() + list (APPEND _flags -include "${_prefixFile}" -pch-dir "${_pchDir}" -pch-create "${_pchName}" -fsyntax-only "${_hostFile}") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + if (NOT _pchSuppressMessages) + list (APPEND _flags -Wpch-messages) + endif() + endif() + else() + # return as a flag string + set (_flags "-include \"${_prefixFile}\" -pch-dir \"${_pchDir}\" -pch-create \"${_pchName}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + if (NOT _pchSuppressMessages) + set (_flags "${_flags} -Wpch-messages") + endif() + endif() + endif() + endif() + else() + message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") + endif() + set (${_flagsVar} ${_flags} PARENT_SCOPE) +endfunction() + +function (cotire_add_prefix_pch_inclusion_flags _language _compilerID _compilerVersion _prefixFile _pchFile _flagsVar) + set (_flags ${${_flagsVar}}) + if (_compilerID MATCHES "MSVC") + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + # cl.exe options used + # /Yu uses a precompiled header file during build + # /Fp specifies precompiled header binary file name + # /FI forces inclusion of file + # /Zm precompiled header memory allocation scaling factor + if (_pchFile) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + if (_flags) + # append to list + list (APPEND _flags "/Yu${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") + if (COTIRE_PCH_MEMORY_SCALING_FACTOR) + list (APPEND _flags "/Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") + endif() + else() + # return as a flag string + set (_flags "/Yu\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + if (COTIRE_PCH_MEMORY_SCALING_FACTOR) + set (_flags "${_flags} /Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") + endif() + endif() + else() + # no precompiled header, force inclusion of prefix header + if (_flags) + # append to list + list (APPEND _flags "/FI${_prefixFileNative}") + else() + # return as a flag string + set (_flags "/FI\"${_prefixFileNative}\"") + endif() + endif() + elseif (_compilerID MATCHES "GNU") + # GCC options used + # -include process include file as the first line of the primary source file + # -Winvalid-pch warns if precompiled header is found but cannot be used + # note: ccache requires the -include flag to be used in order to process precompiled header correctly + if (_flags) + # append to list + list (APPEND _flags -Winvalid-pch -include "${_prefixFile}") + else() + # return as a flag string + set (_flags "-Winvalid-pch -include \"${_prefixFile}\"") + endif() + elseif (_compilerID MATCHES "Clang") + if (UNIX) + # Clang options used + # -include process include file as the first line of the primary source file + # note: ccache requires the -include flag to be used in order to process precompiled header correctly + if (_flags) + # append to list + list (APPEND _flags -include "${_prefixFile}") + else() + # return as a flag string + set (_flags "-include \"${_prefixFile}\"") + endif() + elseif (WIN32) + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + # Clang-cl.exe options used + # /Yu uses a precompiled header file during build + # /Fp specifies precompiled header binary file name + # /FI forces inclusion of file + if (_pchFile) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + if (_flags) + # append to list + list (APPEND _flags "/Yu${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") + else() + # return as a flag string + set (_flags "/Yu\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + endif() + else() + # no precompiled header, force inclusion of prefix header + if (_flags) + # append to list + list (APPEND _flags "/FI${_prefixFileNative}") + else() + # return as a flag string + set (_flags "/FI\"${_prefixFileNative}\"") + endif() + endif() + endif() + elseif (_compilerID MATCHES "Intel") + if (WIN32) + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + # Windows Intel options used + # /Yu use a precompiled header (PCH) file + # /Fp specify a path or file name for precompiled header files + # /FI tells the preprocessor to include a specified file name as the header file + # /Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) + if (_pchFile) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + if (_flags) + # append to list + list (APPEND _flags "/Yu" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + list (APPEND _flags "/Wpch-messages") + endif() + else() + # return as a flag string + set (_flags "/Yu /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + set (_flags "${_flags} /Wpch-messages") + endif() + endif() + else() + # no precompiled header, force inclusion of prefix header + if (_flags) + # append to list + list (APPEND _flags "/FI${_prefixFileNative}") + else() + # return as a flag string + set (_flags "/FI\"${_prefixFileNative}\"") + endif() + endif() + else() + # Linux / Mac OS X Intel options used + # -pch-dir location for precompiled header files + # -pch-use name of the precompiled header (PCH) to use + # -include process include file as the first line of the primary source file + # -Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) + if (_pchFile) + get_filename_component(_pchDir "${_pchFile}" DIRECTORY) + get_filename_component(_pchName "${_pchFile}" NAME) + set (_pchSuppressMessages FALSE) + if ("${CMAKE_${_language}_FLAGS}" MATCHES ".*-Wno-pch-messages.*") + set(_pchSuppressMessages TRUE) + endif() + if (_flags) + # append to list + list (APPEND _flags -include "${_prefixFile}" -pch-dir "${_pchDir}" -pch-use "${_pchName}") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + if (NOT _pchSuppressMessages) + list (APPEND _flags -Wpch-messages) + endif() + endif() + else() + # return as a flag string + set (_flags "-include \"${_prefixFile}\" -pch-dir \"${_pchDir}\" -pch-use \"${_pchName}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + if (NOT _pchSuppressMessages) + set (_flags "${_flags} -Wpch-messages") + endif() + endif() + endif() + else() + # no precompiled header, force inclusion of prefix header + if (_flags) + # append to list + list (APPEND _flags -include "${_prefixFile}") + else() + # return as a flag string + set (_flags "-include \"${_prefixFile}\"") + endif() + endif() + endif() + else() + message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") + endif() + set (${_flagsVar} ${_flags} PARENT_SCOPE) +endfunction() + +function (cotire_precompile_prefix_header _prefixFile _pchFile _hostFile) + set(_options "") + set(_oneValueArgs COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_ID COMPILER_VERSION LANGUAGE) + set(_multiValueArgs COMPILE_DEFINITIONS COMPILE_FLAGS INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES SYS COMPILER_LAUNCHER) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + if (NOT _option_LANGUAGE) + set (_option_LANGUAGE "CXX") + endif() + if (NOT _option_COMPILER_ID) + set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") + endif() + if (NOT _option_COMPILER_VERSION) + set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") + endif() + cotire_init_compile_cmd(_cmd "${_option_LANGUAGE}" "${_option_COMPILER_LAUNCHER}" "${_option_COMPILER_EXECUTABLE}" "${_option_COMPILER_ARG1}") + cotire_add_definitions_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_COMPILE_DEFINITIONS}) + cotire_add_compile_flags_to_cmd(_cmd ${_option_COMPILE_FLAGS}) + cotire_add_includes_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) + cotire_add_frameworks_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) + cotire_add_pch_compilation_flags( + "${_option_LANGUAGE}" "${_option_COMPILER_ID}" "${_option_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" "${_hostFile}" _cmd) + if (COTIRE_VERBOSE) + message (STATUS "execute_process: ${_cmd}") + endif() + if (MSVC_IDE OR _option_COMPILER_ID MATCHES "MSVC") + # cl.exe messes with the output streams unless the environment variable VS_UNICODE_OUTPUT is cleared + unset (ENV{VS_UNICODE_OUTPUT}) + elseif (_option_COMPILER_ID MATCHES "Clang" AND _option_COMPILER_VERSION VERSION_LESS "4.0.0") + if (_option_COMPILER_LAUNCHER MATCHES "ccache" OR + _option_COMPILER_EXECUTABLE MATCHES "ccache") + # Newer versions of Clang embed a compilation timestamp into the precompiled header binary, + # which results in "file has been modified since the precompiled header was built" errors if ccache is used. + # We work around the problem by disabling ccache upon pre-compiling the prefix header. + set (ENV{CCACHE_DISABLE} "true") + endif() + endif() + execute_process( + COMMAND ${_cmd} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE _result) + if (_result) + message (FATAL_ERROR "cotire: error ${_result} precompiling ${_prefixFile}.") + endif() +endfunction() + +function (cotire_check_precompiled_header_support _language _target _msgVar) + set (_unsupportedCompiler + "Precompiled headers not supported for ${_language} compiler ${CMAKE_${_language}_COMPILER_ID}") + if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC") + # PCH supported since Visual Studio C++ 6.0 + # and CMake does not support an earlier version + set (${_msgVar} "" PARENT_SCOPE) + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "GNU") + # GCC PCH support requires version >= 3.4 + if ("${CMAKE_${_language}_COMPILER_VERSION}" VERSION_LESS "3.4.0") + set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}." PARENT_SCOPE) + else() + set (${_msgVar} "" PARENT_SCOPE) + endif() + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Clang") + if (UNIX) + # all Unix Clang versions have PCH support + set (${_msgVar} "" PARENT_SCOPE) + elseif (WIN32) + # only clang-cl is supported under Windows + get_filename_component(_compilerName "${CMAKE_${_language}_COMPILER}" NAME_WE) + if (NOT _compilerName MATCHES "cl$") + set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}. Use clang-cl instead." PARENT_SCOPE) + endif() + endif() + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Intel") + # Intel PCH support requires version >= 8.0.0 + if ("${CMAKE_${_language}_COMPILER_VERSION}" VERSION_LESS "8.0.0") + set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}." PARENT_SCOPE) + else() + set (${_msgVar} "" PARENT_SCOPE) + endif() + else() + set (${_msgVar} "${_unsupportedCompiler}." PARENT_SCOPE) + endif() + # check if ccache is used as a compiler launcher + get_target_property(_launcher ${_target} ${_language}_COMPILER_LAUNCHER) + get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" REALPATH) + if (_realCompilerExe MATCHES "ccache" OR _launcher MATCHES "ccache") + # verify that ccache configuration is compatible with precompiled headers + # always check environment variable CCACHE_SLOPPINESS, because earlier versions of ccache + # do not report the "sloppiness" setting correctly upon printing ccache configuration + if (DEFINED ENV{CCACHE_SLOPPINESS}) + if (NOT "$ENV{CCACHE_SLOPPINESS}" MATCHES "pch_defines" OR + NOT "$ENV{CCACHE_SLOPPINESS}" MATCHES "time_macros") + set (${_msgVar} + "ccache requires the environment variable CCACHE_SLOPPINESS to be set to \"pch_defines,time_macros\"." + PARENT_SCOPE) + endif() + else() + if (_realCompilerExe MATCHES "ccache") + set (_ccacheExe "${_realCompilerExe}") + else() + set (_ccacheExe "${_launcher}") + endif() + # ccache 3.7.0 replaced --print-config with --show-config + # use -p instead, which seems to work for all version for now, sigh + execute_process( + COMMAND "${_ccacheExe}" "-p" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + RESULT_VARIABLE _result + OUTPUT_VARIABLE _ccacheConfig OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) + if (_result) + set (${_msgVar} "ccache configuration cannot be determined." PARENT_SCOPE) + elseif (NOT _ccacheConfig MATCHES "sloppiness.*=.*time_macros" OR + NOT _ccacheConfig MATCHES "sloppiness.*=.*pch_defines") + set (${_msgVar} + "ccache requires configuration setting \"sloppiness\" to be set to \"pch_defines,time_macros\"." + PARENT_SCOPE) + endif() + endif() + endif() + if (APPLE) + # PCH compilation not supported by GCC / Clang for multi-architecture builds (e.g., i386, x86_64) + cotire_get_configuration_types(_configs) + foreach (_config ${_configs}) + set (_targetFlags "") + cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) + cotire_filter_compile_flags("${_language}" "arch" _architectures _ignore ${_targetFlags}) + list (LENGTH _architectures _numberOfArchitectures) + if (_numberOfArchitectures GREATER 1) + string (REPLACE ";" ", " _architectureStr "${_architectures}") + set (${_msgVar} + "Precompiled headers not supported on Darwin for multi-architecture builds (${_architectureStr})." + PARENT_SCOPE) + break() + endif() + endforeach() + endif() +endfunction() + +macro (cotire_get_intermediate_dir _cotireDir) + # ${CMAKE_CFG_INTDIR} may reference a build-time variable when using a generator which supports configuration types + get_filename_component(${_cotireDir} "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${COTIRE_INTDIR}" ABSOLUTE) +endmacro() + +macro (cotire_setup_file_extension_variables) + set (_unityFileExt_C ".c") + set (_unityFileExt_CXX ".cxx") + set (_prefixFileExt_C ".h") + set (_prefixFileExt_CXX ".hxx") + set (_prefixSourceFileExt_C ".c") + set (_prefixSourceFileExt_CXX ".cxx") +endmacro() + +function (cotire_make_single_unity_source_file_path _language _target _unityFileVar) + cotire_setup_file_extension_variables() + if (NOT DEFINED _unityFileExt_${_language}) + set (${_unityFileVar} "" PARENT_SCOPE) + return() + endif() + set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") + set (_unityFileName "${_unityFileBaseName}${_unityFileExt_${_language}}") + cotire_get_intermediate_dir(_baseDir) + set (_unityFile "${_baseDir}/${_unityFileName}") + set (${_unityFileVar} "${_unityFile}" PARENT_SCOPE) +endfunction() + +function (cotire_make_unity_source_file_paths _language _target _maxIncludes _unityFilesVar) + cotire_setup_file_extension_variables() + if (NOT DEFINED _unityFileExt_${_language}) + set (${_unityFileVar} "" PARENT_SCOPE) + return() + endif() + set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") + cotire_get_intermediate_dir(_baseDir) + set (_startIndex 0) + set (_index 0) + set (_unityFiles "") + set (_sourceFiles ${ARGN}) + foreach (_sourceFile ${_sourceFiles}) + get_source_file_property(_startNew "${_sourceFile}" COTIRE_START_NEW_UNITY_SOURCE) + math (EXPR _unityFileCount "${_index} - ${_startIndex}") + if (_startNew OR (_maxIncludes GREATER 0 AND NOT _unityFileCount LESS _maxIncludes)) + if (_index GREATER 0) + # start new unity file segment + math (EXPR _endIndex "${_index} - 1") + set (_unityFileName "${_unityFileBaseName}_${_startIndex}_${_endIndex}${_unityFileExt_${_language}}") + list (APPEND _unityFiles "${_baseDir}/${_unityFileName}") + endif() + set (_startIndex ${_index}) + endif() + math (EXPR _index "${_index} + 1") + endforeach() + list (LENGTH _sourceFiles _numberOfSources) + if (_startIndex EQUAL 0) + # there is only a single unity file + cotire_make_single_unity_source_file_path(${_language} ${_target} _unityFiles) + elseif (_startIndex LESS _numberOfSources) + # end with final unity file segment + math (EXPR _endIndex "${_index} - 1") + set (_unityFileName "${_unityFileBaseName}_${_startIndex}_${_endIndex}${_unityFileExt_${_language}}") + list (APPEND _unityFiles "${_baseDir}/${_unityFileName}") + endif() + set (${_unityFilesVar} ${_unityFiles} PARENT_SCOPE) + if (COTIRE_DEBUG AND _unityFiles) + message (STATUS "unity files: ${_unityFiles}") + endif() +endfunction() + +function (cotire_unity_to_prefix_file_path _language _target _unityFile _prefixFileVar) + cotire_setup_file_extension_variables() + if (NOT DEFINED _unityFileExt_${_language}) + set (${_prefixFileVar} "" PARENT_SCOPE) + return() + endif() + set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") + set (_prefixFileBaseName "${_target}_${_language}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") + string (REPLACE "${_unityFileBaseName}" "${_prefixFileBaseName}" _prefixFile "${_unityFile}") + string (REGEX REPLACE "${_unityFileExt_${_language}}$" "${_prefixFileExt_${_language}}" _prefixFile "${_prefixFile}") + set (${_prefixFileVar} "${_prefixFile}" PARENT_SCOPE) +endfunction() + +function (cotire_prefix_header_to_source_file_path _language _prefixHeaderFile _prefixSourceFileVar) + cotire_setup_file_extension_variables() + if (NOT DEFINED _prefixSourceFileExt_${_language}) + set (${_prefixSourceFileVar} "" PARENT_SCOPE) + return() + endif() + string (REGEX REPLACE "${_prefixFileExt_${_language}}$" "${_prefixSourceFileExt_${_language}}" _prefixSourceFile "${_prefixHeaderFile}") + set (${_prefixSourceFileVar} "${_prefixSourceFile}" PARENT_SCOPE) +endfunction() + +function (cotire_make_prefix_file_name _language _target _prefixFileBaseNameVar _prefixFileNameVar) + cotire_setup_file_extension_variables() + if (NOT _language) + set (_prefixFileBaseName "${_target}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") + set (_prefixFileName "${_prefixFileBaseName}${_prefixFileExt_C}") + elseif (DEFINED _prefixFileExt_${_language}) + set (_prefixFileBaseName "${_target}_${_language}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") + set (_prefixFileName "${_prefixFileBaseName}${_prefixFileExt_${_language}}") + else() + set (_prefixFileBaseName "") + set (_prefixFileName "") + endif() + set (${_prefixFileBaseNameVar} "${_prefixFileBaseName}" PARENT_SCOPE) + set (${_prefixFileNameVar} "${_prefixFileName}" PARENT_SCOPE) +endfunction() + +function (cotire_make_prefix_file_path _language _target _prefixFileVar) + cotire_make_prefix_file_name("${_language}" "${_target}" _prefixFileBaseName _prefixFileName) + set (${_prefixFileVar} "" PARENT_SCOPE) + if (_prefixFileName) + if (NOT _language) + set (_language "C") + endif() + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang|Intel|MSVC") + cotire_get_intermediate_dir(_baseDir) + set (${_prefixFileVar} "${_baseDir}/${_prefixFileName}" PARENT_SCOPE) + endif() + endif() +endfunction() + +function (cotire_make_pch_file_path _language _target _pchFileVar) + cotire_make_prefix_file_name("${_language}" "${_target}" _prefixFileBaseName _prefixFileName) + set (${_pchFileVar} "" PARENT_SCOPE) + if (_prefixFileBaseName AND _prefixFileName) + cotire_check_precompiled_header_support("${_language}" "${_target}" _msg) + if (NOT _msg) + if (XCODE) + # For Xcode, we completely hand off the compilation of the prefix header to the IDE + return() + endif() + cotire_get_intermediate_dir(_baseDir) + if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC") + # MSVC uses the extension .pch added to the prefix header base name + set (${_pchFileVar} "${_baseDir}/${_prefixFileBaseName}.pch" PARENT_SCOPE) + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Clang") + # Clang looks for a precompiled header corresponding to the prefix header with the extension .pch appended + set (${_pchFileVar} "${_baseDir}/${_prefixFileName}.pch" PARENT_SCOPE) + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "GNU") + # GCC looks for a precompiled header corresponding to the prefix header with the extension .gch appended + set (${_pchFileVar} "${_baseDir}/${_prefixFileName}.gch" PARENT_SCOPE) + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Intel") + # Intel uses the extension .pchi added to the prefix header base name + set (${_pchFileVar} "${_baseDir}/${_prefixFileBaseName}.pchi" PARENT_SCOPE) + endif() + endif() + endif() +endfunction() + +function (cotire_select_unity_source_files _unityFile _sourcesVar) + set (_sourceFiles ${ARGN}) + if (_sourceFiles AND "${_unityFile}" MATCHES "${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}_([0-9]+)_([0-9]+)") + set (_startIndex ${CMAKE_MATCH_1}) + set (_endIndex ${CMAKE_MATCH_2}) + list (LENGTH _sourceFiles _numberOfSources) + if (NOT _startIndex LESS _numberOfSources) + math (EXPR _startIndex "${_numberOfSources} - 1") + endif() + if (NOT _endIndex LESS _numberOfSources) + math (EXPR _endIndex "${_numberOfSources} - 1") + endif() + set (_files "") + foreach (_index RANGE ${_startIndex} ${_endIndex}) + list (GET _sourceFiles ${_index} _file) + list (APPEND _files "${_file}") + endforeach() + else() + set (_files ${_sourceFiles}) + endif() + set (${_sourcesVar} ${_files} PARENT_SCOPE) +endfunction() + +function (cotire_get_unity_source_dependencies _language _target _dependencySourcesVar) + set (_dependencySources "") + # depend on target's generated source files + get_target_property(_targetSourceFiles ${_target} SOURCES) + cotire_get_objects_with_property_on(_generatedSources GENERATED SOURCE ${_targetSourceFiles}) + if (_generatedSources) + # but omit all generated source files that have the COTIRE_EXCLUDED property set to true + cotire_get_objects_with_property_on(_excludedGeneratedSources COTIRE_EXCLUDED SOURCE ${_generatedSources}) + if (_excludedGeneratedSources) + list (REMOVE_ITEM _generatedSources ${_excludedGeneratedSources}) + endif() + # and omit all generated source files that have the COTIRE_DEPENDENCY property set to false explicitly + cotire_get_objects_with_property_off(_excludedNonDependencySources COTIRE_DEPENDENCY SOURCE ${_generatedSources}) + if (_excludedNonDependencySources) + list (REMOVE_ITEM _generatedSources ${_excludedNonDependencySources}) + endif() + if (_generatedSources) + list (APPEND _dependencySources ${_generatedSources}) + endif() + endif() + if (COTIRE_DEBUG AND _dependencySources) + message (STATUS "${_language} ${_target} unity source dependencies: ${_dependencySources}") + endif() + set (${_dependencySourcesVar} ${_dependencySources} PARENT_SCOPE) +endfunction() + +function (cotire_get_prefix_header_dependencies _language _target _dependencySourcesVar) + set (_dependencySources "") + # depend on target source files marked with custom COTIRE_DEPENDENCY property + get_target_property(_targetSourceFiles ${_target} SOURCES) + cotire_get_objects_with_property_on(_dependencySources COTIRE_DEPENDENCY SOURCE ${_targetSourceFiles}) + if (COTIRE_DEBUG AND _dependencySources) + message (STATUS "${_language} ${_target} prefix header dependencies: ${_dependencySources}") + endif() + set (${_dependencySourcesVar} ${_dependencySources} PARENT_SCOPE) +endfunction() + +function (cotire_generate_target_script _language _configurations _target _targetScriptVar _targetConfigScriptVar) + set (_targetSources ${ARGN}) + cotire_get_prefix_header_dependencies(${_language} ${_target} COTIRE_TARGET_PREFIX_DEPENDS ${_targetSources}) + cotire_get_unity_source_dependencies(${_language} ${_target} COTIRE_TARGET_UNITY_DEPENDS ${_targetSources}) + # set up variables to be configured + set (COTIRE_TARGET_LANGUAGE "${_language}") + get_target_property(COTIRE_TARGET_IGNORE_PATH ${_target} COTIRE_PREFIX_HEADER_IGNORE_PATH) + cotire_add_sys_root_paths(COTIRE_TARGET_IGNORE_PATH) + get_target_property(COTIRE_TARGET_INCLUDE_PATH ${_target} COTIRE_PREFIX_HEADER_INCLUDE_PATH) + cotire_add_sys_root_paths(COTIRE_TARGET_INCLUDE_PATH) + get_target_property(COTIRE_TARGET_PRE_UNDEFS ${_target} COTIRE_UNITY_SOURCE_PRE_UNDEFS) + get_target_property(COTIRE_TARGET_POST_UNDEFS ${_target} COTIRE_UNITY_SOURCE_POST_UNDEFS) + get_target_property(COTIRE_TARGET_MAXIMUM_NUMBER_OF_INCLUDES ${_target} COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES) + get_target_property(COTIRE_TARGET_INCLUDE_PRIORITY_PATH ${_target} COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH) + cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_PRE_UNDEFS COTIRE_TARGET_SOURCES_PRE_UNDEFS ${_targetSources}) + cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_POST_UNDEFS COTIRE_TARGET_SOURCES_POST_UNDEFS ${_targetSources}) + set (COTIRE_TARGET_CONFIGURATION_TYPES "${_configurations}") + foreach (_config ${_configurations}) + string (TOUPPER "${_config}" _upperConfig) + cotire_get_target_include_directories( + "${_config}" "${_language}" "${_target}" COTIRE_TARGET_INCLUDE_DIRECTORIES_${_upperConfig} COTIRE_TARGET_SYSTEM_INCLUDE_DIRECTORIES_${_upperConfig}) + cotire_get_target_compile_definitions( + "${_config}" "${_language}" "${_target}" COTIRE_TARGET_COMPILE_DEFINITIONS_${_upperConfig}) + cotire_get_target_compiler_flags( + "${_config}" "${_language}" "${_target}" COTIRE_TARGET_COMPILE_FLAGS_${_upperConfig}) + cotire_get_source_files_compile_definitions( + "${_config}" "${_language}" COTIRE_TARGET_SOURCES_COMPILE_DEFINITIONS_${_upperConfig} ${_targetSources}) + endforeach() + get_target_property(COTIRE_TARGET_${_language}_COMPILER_LAUNCHER ${_target} ${_language}_COMPILER_LAUNCHER) + # set up COTIRE_TARGET_SOURCES + set (COTIRE_TARGET_SOURCES "") + foreach (_sourceFile ${_targetSources}) + get_source_file_property(_generated "${_sourceFile}" GENERATED) + if (_generated) + # use absolute paths for generated files only, retrieving the LOCATION property is an expensive operation + get_source_file_property(_sourceLocation "${_sourceFile}" LOCATION) + list (APPEND COTIRE_TARGET_SOURCES "${_sourceLocation}") + else() + list (APPEND COTIRE_TARGET_SOURCES "${_sourceFile}") + endif() + endforeach() + # copy variable definitions to cotire target script + get_cmake_property(_vars VARIABLES) + string (REGEX MATCHALL "COTIRE_[A-Za-z0-9_]+" _matchVars "${_vars}") + # omit COTIRE_*_INIT variables + string (REGEX MATCHALL "COTIRE_[A-Za-z0-9_]+_INIT" _initVars "${_matchVars}") + if (_initVars) + list (REMOVE_ITEM _matchVars ${_initVars}) + endif() + # omit COTIRE_VERBOSE which is passed as a CMake define on command line + list (REMOVE_ITEM _matchVars COTIRE_VERBOSE) + set (_contents "") + set (_contentsHasGeneratorExpressions FALSE) + foreach (_var IN LISTS _matchVars ITEMS + XCODE MSVC CMAKE_GENERATOR CMAKE_BUILD_TYPE CMAKE_CONFIGURATION_TYPES + CMAKE_${_language}_COMPILER_ID CMAKE_${_language}_COMPILER_VERSION + CMAKE_${_language}_COMPILER_LAUNCHER CMAKE_${_language}_COMPILER CMAKE_${_language}_COMPILER_ARG1 + CMAKE_INCLUDE_FLAG_${_language} CMAKE_INCLUDE_FLAG_SEP_${_language} + CMAKE_INCLUDE_SYSTEM_FLAG_${_language} + CMAKE_${_language}_FRAMEWORK_SEARCH_FLAG + CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG + CMAKE_${_language}_SOURCE_FILE_EXTENSIONS) + if (DEFINED ${_var}) + string (REPLACE "\"" "\\\"" _value "${${_var}}") + set (_contents "${_contents}set (${_var} \"${_value}\")\n") + if (NOT _contentsHasGeneratorExpressions) + if ("${_value}" MATCHES "\\$<.*>") + set (_contentsHasGeneratorExpressions TRUE) + endif() + endif() + endif() + endforeach() + # generate target script file + get_filename_component(_moduleName "${COTIRE_CMAKE_MODULE_FILE}" NAME) + set (_targetCotireScript "${CMAKE_CURRENT_BINARY_DIR}/${_target}_${_language}_${_moduleName}") + cotire_write_file("CMAKE" "${_targetCotireScript}" "${_contents}" FALSE) + if (_contentsHasGeneratorExpressions) + # use file(GENERATE ...) to expand generator expressions in the target script at CMake generate-time + set (_configNameOrNoneGeneratorExpression "$<$:None>$<$>:$>") + set (_targetCotireConfigScript "${CMAKE_CURRENT_BINARY_DIR}/${_target}_${_language}_${_configNameOrNoneGeneratorExpression}_${_moduleName}") + file (GENERATE OUTPUT "${_targetCotireConfigScript}" INPUT "${_targetCotireScript}") + else() + set (_targetCotireConfigScript "${_targetCotireScript}") + endif() + set (${_targetScriptVar} "${_targetCotireScript}" PARENT_SCOPE) + set (${_targetConfigScriptVar} "${_targetCotireConfigScript}" PARENT_SCOPE) +endfunction() + +function (cotire_setup_pch_file_compilation _language _target _targetScript _prefixFile _pchFile _hostFile) + set (_sourceFiles ${ARGN}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" OR + (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) + # for MSVC, Intel and Clang-cl, we attach the precompiled header compilation to the host file + # the remaining files include the precompiled header, see cotire_setup_pch_file_inclusion + if (_sourceFiles) + set (_flags "") + cotire_add_pch_compilation_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" "${_hostFile}" _flags) + set_property (SOURCE ${_hostFile} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + if (COTIRE_DEBUG) + message (STATUS "set_property: SOURCE ${_hostFile} APPEND_STRING COMPILE_FLAGS ${_flags}") + endif() + set_property (SOURCE ${_hostFile} APPEND PROPERTY OBJECT_OUTPUTS "${_pchFile}") + # make object file generated from host file depend on prefix header + set_property (SOURCE ${_hostFile} APPEND PROPERTY OBJECT_DEPENDS "${_prefixFile}") + # mark host file as cotired to prevent it from being used in another cotired target + set_property (SOURCE ${_hostFile} PROPERTY COTIRE_TARGET "${_target}") + endif() + elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + # for makefile based generator, we add a custom command to precompile the prefix header + if (_targetScript) + cotire_set_cmd_to_prologue(_cmds) + list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "precompile" "${_targetScript}" "${_prefixFile}" "${_pchFile}" "${_hostFile}") + if (MSVC_IDE) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileLogPath) + else() + file (RELATIVE_PATH _pchFileLogPath "${CMAKE_BINARY_DIR}" "${_pchFile}") + endif() + # make precompiled header compilation depend on the actual compiler executable used to force + # re-compilation when the compiler executable is updated. This prevents "created by a different GCC executable" + # warnings when the precompiled header is included. + get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" ABSOLUTE) + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: OUTPUT ${_pchFile} ${_cmds} DEPENDS ${_prefixFile} ${_realCompilerExe} IMPLICIT_DEPENDS ${_language} ${_prefixFile}") + endif() + set_property (SOURCE "${_pchFile}" PROPERTY GENERATED TRUE) + add_custom_command( + OUTPUT "${_pchFile}" + COMMAND ${_cmds} + DEPENDS "${_prefixFile}" "${_realCompilerExe}" + IMPLICIT_DEPENDS ${_language} "${_prefixFile}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Building ${_language} precompiled header ${_pchFileLogPath}" + VERBATIM) + endif() + endif() +endfunction() + +function (cotire_setup_pch_file_inclusion _language _target _wholeTarget _prefixFile _pchFile _hostFile) + if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" OR + (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) + # for MSVC, Intel and clang-cl, we include the precompiled header in all but the host file + # the host file does the precompiled header compilation, see cotire_setup_pch_file_compilation + set (_sourceFiles ${ARGN}) + list (LENGTH _sourceFiles _numberOfSourceFiles) + if (_numberOfSourceFiles GREATER 0) + # mark sources as cotired to prevent them from being used in another cotired target + set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") + set (_flags "") + cotire_add_prefix_pch_inclusion_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" _flags) + set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + if (COTIRE_DEBUG) + message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") + endif() + # make object files generated from source files depend on precompiled header + set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_pchFile}") + endif() + elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + set (_sourceFiles ${_hostFile} ${ARGN}) + if (NOT _wholeTarget) + # for makefile based generator, we force the inclusion of the prefix header for a subset + # of the source files, if this is a multi-language target or has excluded files + set (_flags "") + cotire_add_prefix_pch_inclusion_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" _flags) + set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + if (COTIRE_DEBUG) + message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") + endif() + # mark sources as cotired to prevent them from being used in another cotired target + set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") + endif() + # make object files generated from source files depend on precompiled header + set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_pchFile}") + endif() +endfunction() + +function (cotire_setup_prefix_file_inclusion _language _target _prefixFile) + set (_sourceFiles ${ARGN}) + # force the inclusion of the prefix header for the given source files + set (_flags "") + set (_pchFile "") + cotire_add_prefix_pch_inclusion_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" _flags) + set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + if (COTIRE_DEBUG) + message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") + endif() + # mark sources as cotired to prevent them from being used in another cotired target + set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") + # make object files generated from source files depend on prefix header + set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_prefixFile}") +endfunction() + +function (cotire_get_first_set_property_value _propertyValueVar _type _object) + set (_properties ${ARGN}) + foreach (_property ${_properties}) + get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) + if (_propertyValue) + set (${_propertyValueVar} ${_propertyValue} PARENT_SCOPE) + return() + endif() + endforeach() + set (${_propertyValueVar} "" PARENT_SCOPE) +endfunction() + +function (cotire_setup_combine_command _language _targetScript _joinedFile _cmdsVar) + set (_files ${ARGN}) + set (_filesPaths "") + foreach (_file ${_files}) + get_filename_component(_filePath "${_file}" ABSOLUTE) + list (APPEND _filesPaths "${_filePath}") + endforeach() + cotire_set_cmd_to_prologue(_prefixCmd) + list (APPEND _prefixCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "combine") + if (_targetScript) + list (APPEND _prefixCmd "${_targetScript}") + endif() + list (APPEND _prefixCmd "${_joinedFile}" ${_filesPaths}) + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: OUTPUT ${_joinedFile} COMMAND ${_prefixCmd} DEPENDS ${_files}") + endif() + set_property (SOURCE "${_joinedFile}" PROPERTY GENERATED TRUE) + if (MSVC_IDE) + file (TO_NATIVE_PATH "${_joinedFile}" _joinedFileLogPath) + else() + file (RELATIVE_PATH _joinedFileLogPath "${CMAKE_BINARY_DIR}" "${_joinedFile}") + endif() + get_filename_component(_joinedFileBaseName "${_joinedFile}" NAME_WE) + get_filename_component(_joinedFileExt "${_joinedFile}" EXT) + if (_language AND _joinedFileBaseName MATCHES "${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}$") + set (_comment "Generating ${_language} unity source ${_joinedFileLogPath}") + elseif (_language AND _joinedFileBaseName MATCHES "${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}$") + if (_joinedFileExt MATCHES "^\\.c") + set (_comment "Generating ${_language} prefix source ${_joinedFileLogPath}") + else() + set (_comment "Generating ${_language} prefix header ${_joinedFileLogPath}") + endif() + else() + set (_comment "Generating ${_joinedFileLogPath}") + endif() + add_custom_command( + OUTPUT "${_joinedFile}" + COMMAND ${_prefixCmd} + DEPENDS ${_files} + COMMENT "${_comment}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + VERBATIM) + list (APPEND ${_cmdsVar} COMMAND ${_prefixCmd}) + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_setup_target_pch_usage _languages _target _wholeTarget) + if (XCODE) + # for Xcode, we attach a pre-build action to generate the unity sources and prefix headers + set (_prefixFiles "") + foreach (_language ${_languages}) + get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) + if (_prefixFile) + list (APPEND _prefixFiles "${_prefixFile}") + endif() + endforeach() + set (_cmds ${ARGN}) + list (LENGTH _prefixFiles _numberOfPrefixFiles) + if (_numberOfPrefixFiles GREATER 1) + # we also generate a generic, single prefix header which includes all language specific prefix headers + set (_language "") + set (_targetScript "") + cotire_make_prefix_file_path("${_language}" ${_target} _prefixHeader) + cotire_setup_combine_command("${_language}" "${_targetScript}" "${_prefixHeader}" _cmds ${_prefixFiles}) + else() + set (_prefixHeader "${_prefixFiles}") + endif() + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: TARGET ${_target} PRE_BUILD ${_cmds}") + endif() + # because CMake PRE_BUILD command does not support dependencies, + # we check dependencies explicity in cotire script mode when the pre-build action is run + add_custom_command( + TARGET "${_target}" + PRE_BUILD ${_cmds} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Updating target ${_target} prefix headers" + VERBATIM) + # make Xcode precompile the generated prefix header with ProcessPCH and ProcessPCH++ + set_target_properties(${_target} PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES") + set_target_properties(${_target} PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${_prefixHeader}") + elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + # for makefile based generator, we force inclusion of the prefix header for all target source files + # if this is a single-language target without any excluded files + if (_wholeTarget) + set (_language "${_languages}") + # for MSVC, Intel and clang-cl, precompiled header inclusion is always done on the source file level + # see cotire_setup_pch_file_inclusion + if (NOT CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" AND NOT + (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) + get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) + if (_prefixFile) + get_property(_pchFile TARGET ${_target} PROPERTY COTIRE_${_language}_PRECOMPILED_HEADER) + set (_options COMPILE_OPTIONS) + cotire_add_prefix_pch_inclusion_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" _options) + set_property(TARGET ${_target} APPEND PROPERTY ${_options}) + if (COTIRE_DEBUG) + message (STATUS "set_property: TARGET ${_target} APPEND PROPERTY ${_options}") + endif() + endif() + endif() + endif() + endif() +endfunction() + +function (cotire_setup_unity_generation_commands _language _target _targetScript _targetConfigScript _unityFiles _cmdsVar) + set (_dependencySources "") + cotire_get_unity_source_dependencies(${_language} ${_target} _dependencySources ${ARGN}) + foreach (_unityFile ${_unityFiles}) + set_property (SOURCE "${_unityFile}" PROPERTY GENERATED TRUE) + # set up compiled unity source dependencies via OBJECT_DEPENDS + # this ensures that missing source files are generated before the unity file is compiled + if (COTIRE_DEBUG AND _dependencySources) + message (STATUS "${_unityFile} OBJECT_DEPENDS ${_dependencySources}") + endif() + if (_dependencySources) + # the OBJECT_DEPENDS property requires a list of full paths + set (_objectDependsPaths "") + foreach (_sourceFile ${_dependencySources}) + get_source_file_property(_sourceLocation "${_sourceFile}" LOCATION) + list (APPEND _objectDependsPaths "${_sourceLocation}") + endforeach() + set_property (SOURCE "${_unityFile}" PROPERTY OBJECT_DEPENDS ${_objectDependsPaths}) + endif() + if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") + # unity file compilation results in potentially huge object file, + # thus use /bigobj by default unter cl.exe and Windows Intel + set_property (SOURCE "${_unityFile}" APPEND_STRING PROPERTY COMPILE_FLAGS "/bigobj") + endif() + cotire_set_cmd_to_prologue(_unityCmd) + list (APPEND _unityCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "unity" "${_targetConfigScript}" "${_unityFile}") + if (CMAKE_VERSION VERSION_LESS "3.1.0") + set (_unityCmdDepends "${_targetScript}") + else() + # CMake 3.1.0 supports generator expressions in arguments to DEPENDS + set (_unityCmdDepends "${_targetConfigScript}") + endif() + if (MSVC_IDE) + file (TO_NATIVE_PATH "${_unityFile}" _unityFileLogPath) + else() + file (RELATIVE_PATH _unityFileLogPath "${CMAKE_BINARY_DIR}" "${_unityFile}") + endif() + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: OUTPUT ${_unityFile} COMMAND ${_unityCmd} DEPENDS ${_unityCmdDepends}") + endif() + add_custom_command( + OUTPUT "${_unityFile}" + COMMAND ${_unityCmd} + DEPENDS ${_unityCmdDepends} + COMMENT "Generating ${_language} unity source ${_unityFileLogPath}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + VERBATIM) + list (APPEND ${_cmdsVar} COMMAND ${_unityCmd}) + endforeach() + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_setup_prefix_generation_command _language _target _targetScript _prefixFile _unityFiles _cmdsVar) + set (_sourceFiles ${ARGN}) + set (_dependencySources "") + cotire_get_prefix_header_dependencies(${_language} ${_target} _dependencySources ${_sourceFiles}) + cotire_set_cmd_to_prologue(_prefixCmd) + list (APPEND _prefixCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "prefix" "${_targetScript}" "${_prefixFile}" ${_unityFiles}) + set_property (SOURCE "${_prefixFile}" PROPERTY GENERATED TRUE) + # make prefix header generation depend on the actual compiler executable used to force + # re-generation when the compiler executable is updated. This prevents "file not found" + # errors for compiler version specific system header files. + get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" ABSOLUTE) + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: OUTPUT ${_prefixFile} COMMAND ${_prefixCmd} DEPENDS ${_unityFile} ${_dependencySources} ${_realCompilerExe}") + endif() + if (MSVC_IDE) + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileLogPath) + else() + file (RELATIVE_PATH _prefixFileLogPath "${CMAKE_BINARY_DIR}" "${_prefixFile}") + endif() + get_filename_component(_prefixFileExt "${_prefixFile}" EXT) + if (_prefixFileExt MATCHES "^\\.c") + set (_comment "Generating ${_language} prefix source ${_prefixFileLogPath}") + else() + set (_comment "Generating ${_language} prefix header ${_prefixFileLogPath}") + endif() + # prevent pre-processing errors upon generating the prefix header when a target's generated include file does not yet exist + # we do not add a file-level dependency for the target's generated files though, because we only want to depend on their existence + # thus we make the prefix header generation depend on a custom helper target which triggers the generation of the files + set (_preTargetName "${_target}${COTIRE_PCH_TARGET_SUFFIX}_pre") + if (TARGET ${_preTargetName}) + # custom helper target has already been generated while processing a different language + list (APPEND _dependencySources ${_preTargetName}) + else() + get_target_property(_targetSourceFiles ${_target} SOURCES) + cotire_get_objects_with_property_on(_generatedSources GENERATED SOURCE ${_targetSourceFiles}) + if (_generatedSources) + add_custom_target("${_preTargetName}" DEPENDS ${_generatedSources}) + cotire_init_target("${_preTargetName}") + list (APPEND _dependencySources ${_preTargetName}) + endif() + endif() + add_custom_command( + OUTPUT "${_prefixFile}" "${_prefixFile}.log" + COMMAND ${_prefixCmd} + DEPENDS ${_unityFiles} ${_dependencySources} "${_realCompilerExe}" + COMMENT "${_comment}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + VERBATIM) + list (APPEND ${_cmdsVar} COMMAND ${_prefixCmd}) + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_setup_prefix_generation_from_unity_command _language _target _targetScript _prefixFile _unityFiles _cmdsVar) + set (_sourceFiles ${ARGN}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") + # GNU and Clang require indirect compilation of the prefix header to make them honor the system_header pragma + cotire_prefix_header_to_source_file_path(${_language} "${_prefixFile}" _prefixSourceFile) + else() + set (_prefixSourceFile "${_prefixFile}") + endif() + cotire_setup_prefix_generation_command( + ${_language} ${_target} "${_targetScript}" + "${_prefixSourceFile}" "${_unityFiles}" ${_cmdsVar} ${_sourceFiles}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") + # set up generation of a prefix source file which includes the prefix header + cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixFile}" _cmds ${_prefixSourceFile}) + endif() + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_setup_prefix_generation_from_provided_command _language _target _targetScript _prefixFile _cmdsVar) + set (_prefixHeaderFiles ${ARGN}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") + # GNU and Clang require indirect compilation of the prefix header to make them honor the system_header pragma + cotire_prefix_header_to_source_file_path(${_language} "${_prefixFile}" _prefixSourceFile) + else() + set (_prefixSourceFile "${_prefixFile}") + endif() + cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixSourceFile}" _cmds ${_prefixHeaderFiles}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") + # set up generation of a prefix source file which includes the prefix header + cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixFile}" _cmds ${_prefixSourceFile}) + endif() + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_init_cotire_target_properties _target) + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER TRUE) + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD TRUE) + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ADD_CLEAN SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_ADD_CLEAN FALSE) + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH "${CMAKE_SOURCE_DIR}") + cotire_check_is_path_relative_to("${CMAKE_BINARY_DIR}" _isRelative "${CMAKE_SOURCE_DIR}") + if (NOT _isRelative) + set_property(TARGET ${_target} APPEND PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH "${CMAKE_BINARY_DIR}") + endif() + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH "") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH "") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS "") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_POST_UNDEFS SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_POST_UNDEFS "") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_LINK_LIBRARIES_INIT SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_LINK_LIBRARIES_INIT "COPY_UNITY") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES SET) + if (NOT _isSet) + if (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES "${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES}") + else() + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES "") + endif() + endif() +endfunction() + +function (cotire_make_target_message _target _languages _disableMsg _targetMsgVar) + get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) + get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) + string (REPLACE ";" " " _languagesStr "${_languages}") + math (EXPR _numberOfExcludedFiles "${ARGC} - 4") + if (_numberOfExcludedFiles EQUAL 0) + set (_excludedStr "") + elseif (COTIRE_VERBOSE OR _numberOfExcludedFiles LESS 4) + string (REPLACE ";" ", " _excludedStr "excluding ${ARGN}") + else() + set (_excludedStr "excluding ${_numberOfExcludedFiles} files") + endif() + set (_targetMsg "") + if (NOT _languages) + set (_targetMsg "Target ${_target} cannot be cotired.") + if (_disableMsg) + set (_targetMsg "${_targetMsg} ${_disableMsg}") + endif() + elseif (NOT _targetUsePCH AND NOT _targetAddSCU) + set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build and precompiled header.") + if (_disableMsg) + set (_targetMsg "${_targetMsg} ${_disableMsg}") + endif() + elseif (NOT _targetUsePCH) + if (_excludedStr) + set (_targetMsg "${_languagesStr} target ${_target} cotired without precompiled header ${_excludedStr}.") + else() + set (_targetMsg "${_languagesStr} target ${_target} cotired without precompiled header.") + endif() + if (_disableMsg) + set (_targetMsg "${_targetMsg} ${_disableMsg}") + endif() + elseif (NOT _targetAddSCU) + if (_excludedStr) + set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build ${_excludedStr}.") + else() + set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build.") + endif() + if (_disableMsg) + set (_targetMsg "${_targetMsg} ${_disableMsg}") + endif() + else() + if (_excludedStr) + set (_targetMsg "${_languagesStr} target ${_target} cotired ${_excludedStr}.") + else() + set (_targetMsg "${_languagesStr} target ${_target} cotired.") + endif() + endif() + set (${_targetMsgVar} "${_targetMsg}" PARENT_SCOPE) +endfunction() + +function (cotire_choose_target_languages _target _targetLanguagesVar _wholeTargetVar) + set (_languages ${ARGN}) + set (_allSourceFiles "") + set (_allExcludedSourceFiles "") + set (_allCotiredSourceFiles "") + set (_targetLanguages "") + set (_pchEligibleTargetLanguages "") + get_target_property(_targetType ${_target} TYPE) + get_target_property(_targetSourceFiles ${_target} SOURCES) + get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) + get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) + set (_disableMsg "") + foreach (_language ${_languages}) + get_target_property(_prefixHeader ${_target} COTIRE_${_language}_PREFIX_HEADER) + get_target_property(_unityBuildFile ${_target} COTIRE_${_language}_UNITY_SOURCE) + if (_prefixHeader OR _unityBuildFile) + message (STATUS "cotire: target ${_target} has already been cotired.") + set (${_targetLanguagesVar} "" PARENT_SCOPE) + return() + endif() + if (_targetUsePCH AND "${_language}" MATCHES "^C|CXX$" AND DEFINED CMAKE_${_language}_COMPILER_ID) + if (CMAKE_${_language}_COMPILER_ID) + cotire_check_precompiled_header_support("${_language}" "${_target}" _disableMsg) + if (_disableMsg) + set (_targetUsePCH FALSE) + endif() + endif() + endif() + set (_sourceFiles "") + set (_excludedSources "") + set (_cotiredSources "") + cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) + if (_sourceFiles OR _excludedSources OR _cotiredSources) + list (APPEND _targetLanguages ${_language}) + endif() + if (_sourceFiles) + list (APPEND _allSourceFiles ${_sourceFiles}) + endif() + list (LENGTH _sourceFiles _numberOfSources) + if (NOT _numberOfSources LESS ${COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES}) + list (APPEND _pchEligibleTargetLanguages ${_language}) + endif() + if (_excludedSources) + list (APPEND _allExcludedSourceFiles ${_excludedSources}) + endif() + if (_cotiredSources) + list (APPEND _allCotiredSourceFiles ${_cotiredSources}) + endif() + endforeach() + set (_targetMsgLevel STATUS) + if (NOT _targetLanguages) + string (REPLACE ";" " or " _languagesStr "${_languages}") + set (_disableMsg "No ${_languagesStr} source files.") + set (_targetUsePCH FALSE) + set (_targetAddSCU FALSE) + endif() + if (_targetUsePCH) + if (_allCotiredSourceFiles) + cotire_get_source_file_property_values(_cotireTargets COTIRE_TARGET ${_allCotiredSourceFiles}) + list (REMOVE_DUPLICATES _cotireTargets) + string (REPLACE ";" ", " _cotireTargetsStr "${_cotireTargets}") + set (_disableMsg "Target sources already include a precompiled header for target(s) ${_cotireTargets}.") + set (_disableMsg "${_disableMsg} Set target property COTIRE_ENABLE_PRECOMPILED_HEADER to FALSE for targets ${_target},") + set (_disableMsg "${_disableMsg} ${_cotireTargetsStr} to get a workable build system.") + set (_targetMsgLevel SEND_ERROR) + set (_targetUsePCH FALSE) + elseif (NOT _pchEligibleTargetLanguages) + set (_disableMsg "Too few applicable sources.") + set (_targetUsePCH FALSE) + elseif (XCODE AND _allExcludedSourceFiles) + # for Xcode, we cannot apply the precompiled header to individual sources, only to the whole target + set (_disableMsg "Exclusion of source files not supported for generator Xcode.") + set (_targetUsePCH FALSE) + elseif (XCODE AND "${_targetType}" STREQUAL "OBJECT_LIBRARY") + # for Xcode, we cannot apply the required PRE_BUILD action to generate the prefix header to an OBJECT_LIBRARY target + set (_disableMsg "Required PRE_BUILD action not supported for OBJECT_LIBRARY targets for generator Xcode.") + set (_targetUsePCH FALSE) + endif() + endif() + if (_targetAddSCU) + # disable unity builds if automatic Qt processing is used + get_target_property(_targetAutoMoc ${_target} AUTOMOC) + get_target_property(_targetAutoUic ${_target} AUTOUIC) + get_target_property(_targetAutoRcc ${_target} AUTORCC) + if (_targetAutoMoc OR _targetAutoUic OR _targetAutoRcc) + if (_disableMsg) + set (_disableMsg "${_disableMsg} Target uses automatic CMake Qt processing.") + else() + set (_disableMsg "Target uses automatic CMake Qt processing.") + endif() + set (_targetAddSCU FALSE) + endif() + endif() + set_property(TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER ${_targetUsePCH}) + set_property(TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD ${_targetAddSCU}) + cotire_make_target_message(${_target} "${_targetLanguages}" "${_disableMsg}" _targetMsg ${_allExcludedSourceFiles}) + if (_targetMsg) + if (NOT DEFINED COTIREMSG_${_target}) + set (COTIREMSG_${_target} "") + endif() + if (COTIRE_VERBOSE OR NOT "${_targetMsgLevel}" STREQUAL "STATUS" OR + NOT "${COTIREMSG_${_target}}" STREQUAL "${_targetMsg}") + # cache message to avoid redundant messages on re-configure + set (COTIREMSG_${_target} "${_targetMsg}" CACHE INTERNAL "${_target} cotire message.") + message (${_targetMsgLevel} "${_targetMsg}") + endif() + endif() + list (LENGTH _targetLanguages _numberOfLanguages) + if (_numberOfLanguages GREATER 1 OR _allExcludedSourceFiles) + set (${_wholeTargetVar} FALSE PARENT_SCOPE) + else() + set (${_wholeTargetVar} TRUE PARENT_SCOPE) + endif() + set (${_targetLanguagesVar} ${_targetLanguages} PARENT_SCOPE) +endfunction() + +function (cotire_compute_unity_max_number_of_includes _target _maxIncludesVar) + set (_sourceFiles ${ARGN}) + get_target_property(_maxIncludes ${_target} COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES) + if (_maxIncludes MATCHES "(-j|--parallel|--jobs) ?([0-9]*)") + if (DEFINED CMAKE_MATCH_2) + set (_numberOfThreads "${CMAKE_MATCH_2}") + else() + set (_numberOfThreads "") + endif() + if (NOT _numberOfThreads) + # use all available cores + ProcessorCount(_numberOfThreads) + endif() + list (LENGTH _sourceFiles _numberOfSources) + math (EXPR _maxIncludes "(${_numberOfSources} + ${_numberOfThreads} - 1) / ${_numberOfThreads}") + elseif (NOT _maxIncludes MATCHES "[0-9]+") + set (_maxIncludes 0) + endif() + if (COTIRE_DEBUG) + message (STATUS "${_target} unity source max includes: ${_maxIncludes}") + endif() + set (${_maxIncludesVar} ${_maxIncludes} PARENT_SCOPE) +endfunction() + +function (cotire_process_target_language _language _configurations _target _wholeTarget _cmdsVar) + set (${_cmdsVar} "" PARENT_SCOPE) + get_target_property(_targetSourceFiles ${_target} SOURCES) + set (_sourceFiles "") + set (_excludedSources "") + set (_cotiredSources "") + cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) + if (NOT _sourceFiles AND NOT _cotiredSources) + return() + endif() + set (_cmds "") + # check for user provided unity source file list + get_property(_unitySourceFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE_INIT) + if (NOT _unitySourceFiles) + set (_unitySourceFiles ${_sourceFiles} ${_cotiredSources}) + endif() + cotire_generate_target_script( + ${_language} "${_configurations}" ${_target} _targetScript _targetConfigScript ${_unitySourceFiles}) + # set up unity files for parallel compilation + cotire_compute_unity_max_number_of_includes(${_target} _maxIncludes ${_unitySourceFiles}) + cotire_make_unity_source_file_paths(${_language} ${_target} ${_maxIncludes} _unityFiles ${_unitySourceFiles}) + list (LENGTH _unityFiles _numberOfUnityFiles) + if (_numberOfUnityFiles EQUAL 0) + return() + elseif (_numberOfUnityFiles GREATER 1) + cotire_setup_unity_generation_commands( + ${_language} ${_target} "${_targetScript}" "${_targetConfigScript}" "${_unityFiles}" _cmds ${_unitySourceFiles}) + endif() + # set up single unity file for prefix header generation + cotire_make_single_unity_source_file_path(${_language} ${_target} _unityFile) + cotire_setup_unity_generation_commands( + ${_language} ${_target} "${_targetScript}" "${_targetConfigScript}" "${_unityFile}" _cmds ${_unitySourceFiles}) + cotire_make_prefix_file_path(${_language} ${_target} _prefixFile) + # set up prefix header + if (_prefixFile) + # check for user provided prefix header files + get_property(_prefixHeaderFiles TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER_INIT) + if (_prefixHeaderFiles) + cotire_setup_prefix_generation_from_provided_command( + ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" _cmds ${_prefixHeaderFiles}) + else() + cotire_setup_prefix_generation_from_unity_command( + ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" "${_unityFile}" _cmds ${_unitySourceFiles}) + endif() + # check if selected language has enough sources at all + list (LENGTH _sourceFiles _numberOfSources) + if (_numberOfSources LESS ${COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES}) + set (_targetUsePCH FALSE) + else() + get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) + endif() + if (_targetUsePCH) + cotire_make_pch_file_path(${_language} ${_target} _pchFile) + if (_pchFile) + # first file in _sourceFiles is passed as the host file + cotire_setup_pch_file_compilation( + ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" "${_pchFile}" ${_sourceFiles}) + cotire_setup_pch_file_inclusion( + ${_language} ${_target} ${_wholeTarget} "${_prefixFile}" "${_pchFile}" ${_sourceFiles}) + endif() + elseif (_prefixHeaderFiles) + # user provided prefix header must be included unconditionally + cotire_setup_prefix_file_inclusion(${_language} ${_target} "${_prefixFile}" ${_sourceFiles}) + endif() + endif() + # mark target as cotired for language + set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE "${_unityFiles}") + if (_prefixFile) + set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER "${_prefixFile}") + if (_targetUsePCH AND _pchFile) + set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_PRECOMPILED_HEADER "${_pchFile}") + endif() + endif() + set (${_cmdsVar} ${_cmds} PARENT_SCOPE) +endfunction() + +function (cotire_setup_clean_target _target) + set (_cleanTargetName "${_target}${COTIRE_CLEAN_TARGET_SUFFIX}") + if (NOT TARGET "${_cleanTargetName}") + cotire_set_cmd_to_prologue(_cmds) + get_filename_component(_outputDir "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}" ABSOLUTE) + list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "cleanup" "${_outputDir}" "${COTIRE_INTDIR}" "${_target}") + add_custom_target(${_cleanTargetName} + COMMAND ${_cmds} + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "Cleaning up target ${_target} cotire generated files" + VERBATIM) + cotire_init_target("${_cleanTargetName}") + endif() +endfunction() + +function (cotire_setup_pch_target _languages _configurations _target) + if ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + # for makefile based generators, we add a custom target to trigger the generation of the cotire related files + set (_dependsFiles "") + foreach (_language ${_languages}) + set (_props COTIRE_${_language}_PREFIX_HEADER COTIRE_${_language}_UNITY_SOURCE) + if (NOT CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" AND NOT + (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) + # MSVC, Intel and clang-cl only create precompiled header as a side effect + list (INSERT _props 0 COTIRE_${_language}_PRECOMPILED_HEADER) + endif() + cotire_get_first_set_property_value(_dependsFile TARGET ${_target} ${_props}) + if (_dependsFile) + list (APPEND _dependsFiles "${_dependsFile}") + endif() + endforeach() + if (_dependsFiles) + set (_pchTargetName "${_target}${COTIRE_PCH_TARGET_SUFFIX}") + add_custom_target("${_pchTargetName}" DEPENDS ${_dependsFiles}) + cotire_init_target("${_pchTargetName}") + cotire_add_to_pch_all_target(${_pchTargetName}) + endif() + else() + # for other generators, we add the "clean all" target to clean up the precompiled header + cotire_setup_clean_all_target() + endif() +endfunction() + +function (cotire_filter_object_libraries _target _objectLibrariesVar) + set (_objectLibraries "") + foreach (_source ${ARGN}) + if (_source MATCHES "^\\$$") + list (APPEND _objectLibraries "${_source}") + endif() + endforeach() + set (${_objectLibrariesVar} ${_objectLibraries} PARENT_SCOPE) +endfunction() + +function (cotire_collect_unity_target_sources _target _languages _unityTargetSourcesVar) + get_target_property(_targetSourceFiles ${_target} SOURCES) + set (_unityTargetSources ${_targetSourceFiles}) + foreach (_language ${_languages}) + get_property(_unityFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE) + if (_unityFiles) + # remove source files that are included in the unity source + set (_sourceFiles "") + set (_excludedSources "") + set (_cotiredSources "") + cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) + if (_sourceFiles OR _cotiredSources) + list (REMOVE_ITEM _unityTargetSources ${_sourceFiles} ${_cotiredSources}) + endif() + # add unity source files instead + list (APPEND _unityTargetSources ${_unityFiles}) + endif() + endforeach() + # handle object libraries which are part of the target's sources + get_target_property(_linkLibrariesStrategy ${_target} COTIRE_UNITY_LINK_LIBRARIES_INIT) + if ("${_linkLibrariesStrategy}" MATCHES "^COPY_UNITY$") + cotire_filter_object_libraries(${_target} _objectLibraries ${_targetSourceFiles}) + if (_objectLibraries) + cotire_map_libraries("${_linkLibrariesStrategy}" _unityObjectLibraries ${_objectLibraries}) + list (REMOVE_ITEM _unityTargetSources ${_objectLibraries}) + list (APPEND _unityTargetSources ${_unityObjectLibraries}) + endif() + endif() + set (${_unityTargetSourcesVar} ${_unityTargetSources} PARENT_SCOPE) +endfunction() + +function (cotire_setup_unity_target_pch_usage _languages _target) + foreach (_language ${_languages}) + get_property(_unityFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE) + if (_unityFiles) + get_property(_userPrefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER_INIT) + get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) + if (_userPrefixFile AND _prefixFile) + # user provided prefix header must be included unconditionally by unity sources + cotire_setup_prefix_file_inclusion(${_language} ${_target} "${_prefixFile}" ${_unityFiles}) + endif() + endif() + endforeach() +endfunction() + +function (cotire_setup_unity_build_target _languages _configurations _target) + get_target_property(_unityTargetName ${_target} COTIRE_UNITY_TARGET_NAME) + if (NOT _unityTargetName) + set (_unityTargetName "${_target}${COTIRE_UNITY_BUILD_TARGET_SUFFIX}") + endif() + # determine unity target sub type + get_target_property(_targetType ${_target} TYPE) + if ("${_targetType}" STREQUAL "EXECUTABLE") + set (_unityTargetSubType "") + elseif (_targetType MATCHES "(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") + set (_unityTargetSubType "${CMAKE_MATCH_1}") + else() + message (WARNING "cotire: target ${_target} has unknown target type ${_targetType}.") + return() + endif() + # determine unity target sources + set (_unityTargetSources "") + cotire_collect_unity_target_sources(${_target} "${_languages}" _unityTargetSources) + # prevent AUTOMOC, AUTOUIC and AUTORCC properties from being set when the unity target is created + set (CMAKE_AUTOMOC OFF) + set (CMAKE_AUTOUIC OFF) + set (CMAKE_AUTORCC OFF) + if (COTIRE_DEBUG) + message (STATUS "add target ${_targetType} ${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}") + endif() + # generate unity target + if ("${_targetType}" STREQUAL "EXECUTABLE") + add_executable(${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}) + else() + add_library(${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}) + endif() + # copy output location properties + set (_outputDirProperties + ARCHIVE_OUTPUT_DIRECTORY ARCHIVE_OUTPUT_DIRECTORY_ + LIBRARY_OUTPUT_DIRECTORY LIBRARY_OUTPUT_DIRECTORY_ + RUNTIME_OUTPUT_DIRECTORY RUNTIME_OUTPUT_DIRECTORY_) + if (COTIRE_UNITY_OUTPUT_DIRECTORY) + set (_setDefaultOutputDir TRUE) + if (IS_ABSOLUTE "${COTIRE_UNITY_OUTPUT_DIRECTORY}") + set (_outputDir "${COTIRE_UNITY_OUTPUT_DIRECTORY}") + else() + # append relative COTIRE_UNITY_OUTPUT_DIRECTORY to target's actual output directory + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} ${_outputDirProperties}) + cotire_resolve_config_properties("${_configurations}" _properties ${_outputDirProperties}) + foreach (_property ${_properties}) + get_property(_outputDir TARGET ${_target} PROPERTY ${_property}) + if (_outputDir) + get_filename_component(_outputDir "${_outputDir}/${COTIRE_UNITY_OUTPUT_DIRECTORY}" ABSOLUTE) + set_property(TARGET ${_unityTargetName} PROPERTY ${_property} "${_outputDir}") + set (_setDefaultOutputDir FALSE) + endif() + endforeach() + if (_setDefaultOutputDir) + get_filename_component(_outputDir "${CMAKE_CURRENT_BINARY_DIR}/${COTIRE_UNITY_OUTPUT_DIRECTORY}" ABSOLUTE) + endif() + endif() + if (_setDefaultOutputDir) + set_target_properties(${_unityTargetName} PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY "${_outputDir}" + LIBRARY_OUTPUT_DIRECTORY "${_outputDir}" + RUNTIME_OUTPUT_DIRECTORY "${_outputDir}") + endif() + else() + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + ${_outputDirProperties}) + endif() + # copy output name + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + ARCHIVE_OUTPUT_NAME ARCHIVE_OUTPUT_NAME_ + LIBRARY_OUTPUT_NAME LIBRARY_OUTPUT_NAME_ + OUTPUT_NAME OUTPUT_NAME_ + RUNTIME_OUTPUT_NAME RUNTIME_OUTPUT_NAME_ + PREFIX _POSTFIX SUFFIX + IMPORT_PREFIX IMPORT_SUFFIX) + # copy compile stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + COMPILE_DEFINITIONS COMPILE_DEFINITIONS_ + COMPILE_FLAGS COMPILE_OPTIONS + Fortran_FORMAT Fortran_MODULE_DIRECTORY + INCLUDE_DIRECTORIES + INTERPROCEDURAL_OPTIMIZATION INTERPROCEDURAL_OPTIMIZATION_ + POSITION_INDEPENDENT_CODE + C_COMPILER_LAUNCHER CXX_COMPILER_LAUNCHER + C_INCLUDE_WHAT_YOU_USE CXX_INCLUDE_WHAT_YOU_USE + C_VISIBILITY_PRESET CXX_VISIBILITY_PRESET VISIBILITY_INLINES_HIDDEN + C_CLANG_TIDY CXX_CLANG_TIDY) + # copy compile features + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + C_EXTENSIONS C_STANDARD C_STANDARD_REQUIRED + CXX_EXTENSIONS CXX_STANDARD CXX_STANDARD_REQUIRED + COMPILE_FEATURES) + # copy interface stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + COMPATIBLE_INTERFACE_BOOL COMPATIBLE_INTERFACE_NUMBER_MAX COMPATIBLE_INTERFACE_NUMBER_MIN + COMPATIBLE_INTERFACE_STRING + INTERFACE_COMPILE_DEFINITIONS INTERFACE_COMPILE_FEATURES INTERFACE_COMPILE_OPTIONS + INTERFACE_INCLUDE_DIRECTORIES INTERFACE_SOURCES + INTERFACE_POSITION_INDEPENDENT_CODE INTERFACE_SYSTEM_INCLUDE_DIRECTORIES + INTERFACE_AUTOUIC_OPTIONS NO_SYSTEM_FROM_IMPORTED) + # copy link stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + BUILD_WITH_INSTALL_RPATH BUILD_WITH_INSTALL_NAME_DIR + INSTALL_RPATH INSTALL_RPATH_USE_LINK_PATH SKIP_BUILD_RPATH + LINKER_LANGUAGE LINK_DEPENDS LINK_DEPENDS_NO_SHARED + LINK_FLAGS LINK_FLAGS_ + LINK_INTERFACE_LIBRARIES LINK_INTERFACE_LIBRARIES_ + LINK_INTERFACE_MULTIPLICITY LINK_INTERFACE_MULTIPLICITY_ + LINK_SEARCH_START_STATIC LINK_SEARCH_END_STATIC + STATIC_LIBRARY_FLAGS STATIC_LIBRARY_FLAGS_ + NO_SONAME SOVERSION VERSION + LINK_WHAT_YOU_USE BUILD_RPATH) + # copy cmake stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + IMPLICIT_DEPENDS_INCLUDE_TRANSFORM RULE_LAUNCH_COMPILE RULE_LAUNCH_CUSTOM RULE_LAUNCH_LINK) + # copy Apple platform specific stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + BUNDLE BUNDLE_EXTENSION FRAMEWORK FRAMEWORK_VERSION INSTALL_NAME_DIR + MACOSX_BUNDLE MACOSX_BUNDLE_INFO_PLIST MACOSX_FRAMEWORK_INFO_PLIST MACOSX_RPATH + OSX_ARCHITECTURES OSX_ARCHITECTURES_ PRIVATE_HEADER PUBLIC_HEADER RESOURCE XCTEST + IOS_INSTALL_COMBINED XCODE_EXPLICIT_FILE_TYPE XCODE_PRODUCT_TYPE) + # copy Windows platform specific stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + GNUtoMS + COMPILE_PDB_NAME COMPILE_PDB_NAME_ + COMPILE_PDB_OUTPUT_DIRECTORY COMPILE_PDB_OUTPUT_DIRECTORY_ + PDB_NAME PDB_NAME_ PDB_OUTPUT_DIRECTORY PDB_OUTPUT_DIRECTORY_ + VS_DESKTOP_EXTENSIONS_VERSION VS_DOTNET_REFERENCES VS_DOTNET_TARGET_FRAMEWORK_VERSION + VS_GLOBAL_KEYWORD VS_GLOBAL_PROJECT_TYPES VS_GLOBAL_ROOTNAMESPACE + VS_IOT_EXTENSIONS_VERSION VS_IOT_STARTUP_TASK + VS_KEYWORD VS_MOBILE_EXTENSIONS_VERSION + VS_SCC_AUXPATH VS_SCC_LOCALPATH VS_SCC_PROJECTNAME VS_SCC_PROVIDER + VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION + VS_WINRT_COMPONENT VS_WINRT_EXTENSIONS VS_WINRT_REFERENCES + WIN32_EXECUTABLE WINDOWS_EXPORT_ALL_SYMBOLS + DEPLOYMENT_REMOTE_DIRECTORY VS_CONFIGURATION_TYPE + VS_SDK_REFERENCES VS_USER_PROPS VS_DEBUGGER_WORKING_DIRECTORY) + # copy Android platform specific stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + ANDROID_API ANDROID_API_MIN ANDROID_GUI + ANDROID_ANT_ADDITIONAL_OPTIONS ANDROID_ARCH ANDROID_ASSETS_DIRECTORIES + ANDROID_JAR_DEPENDENCIES ANDROID_JAR_DIRECTORIES ANDROID_JAVA_SOURCE_DIR + ANDROID_NATIVE_LIB_DEPENDENCIES ANDROID_NATIVE_LIB_DIRECTORIES + ANDROID_PROCESS_MAX ANDROID_PROGUARD ANDROID_PROGUARD_CONFIG_PATH + ANDROID_SECURE_PROPS_PATH ANDROID_SKIP_ANT_STEP ANDROID_STL_TYPE) + # copy CUDA platform specific stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + CUDA_PTX_COMPILATION CUDA_SEPARABLE_COMPILATION CUDA_RESOLVE_DEVICE_SYMBOLS + CUDA_EXTENSIONS CUDA_STANDARD CUDA_STANDARD_REQUIRED) + # use output name from original target + get_target_property(_targetOutputName ${_unityTargetName} OUTPUT_NAME) + if (NOT _targetOutputName) + set_property(TARGET ${_unityTargetName} PROPERTY OUTPUT_NAME "${_target}") + endif() + # use export symbol from original target + cotire_get_target_export_symbol("${_target}" _defineSymbol) + if (_defineSymbol) + set_property(TARGET ${_unityTargetName} PROPERTY DEFINE_SYMBOL "${_defineSymbol}") + if ("${_targetType}" STREQUAL "EXECUTABLE") + set_property(TARGET ${_unityTargetName} PROPERTY ENABLE_EXPORTS TRUE) + endif() + endif() + # enable parallel compilation for MSVC + if (MSVC AND "${CMAKE_GENERATOR}" MATCHES "Visual Studio") + list (LENGTH _unityTargetSources _numberOfUnityTargetSources) + if (_numberOfUnityTargetSources GREATER 1) + set_property(TARGET ${_unityTargetName} APPEND PROPERTY COMPILE_OPTIONS "/MP") + endif() + endif() + cotire_init_target(${_unityTargetName}) + cotire_add_to_unity_all_target(${_unityTargetName}) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_TARGET_NAME "${_unityTargetName}") +endfunction(cotire_setup_unity_build_target) + +function (cotire_target _target) + set(_options "") + set(_oneValueArgs "") + set(_multiValueArgs LANGUAGES CONFIGURATIONS) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + if (NOT _option_LANGUAGES) + get_property (_option_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) + endif() + if (NOT _option_CONFIGURATIONS) + cotire_get_configuration_types(_option_CONFIGURATIONS) + endif() + # check if cotire can be applied to target at all + cotire_is_target_supported(${_target} _isSupported) + if (NOT _isSupported) + get_target_property(_imported ${_target} IMPORTED) + get_target_property(_targetType ${_target} TYPE) + if (_imported) + message (WARNING "cotire: imported ${_targetType} target ${_target} cannot be cotired.") + else() + message (STATUS "cotire: ${_targetType} target ${_target} cannot be cotired.") + endif() + return() + endif() + # resolve alias + get_target_property(_aliasName ${_target} ALIASED_TARGET) + if (_aliasName) + if (COTIRE_DEBUG) + message (STATUS "${_target} is an alias. Applying cotire to aliased target ${_aliasName} instead.") + endif() + set (_target ${_aliasName}) + endif() + # check if target needs to be cotired for build type + # when using configuration types, the test is performed at build time + cotire_init_cotire_target_properties(${_target}) + if (NOT CMAKE_CONFIGURATION_TYPES) + if (CMAKE_BUILD_TYPE) + list (FIND _option_CONFIGURATIONS "${CMAKE_BUILD_TYPE}" _index) + else() + list (FIND _option_CONFIGURATIONS "None" _index) + endif() + if (_index EQUAL -1) + if (COTIRE_DEBUG) + message (STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} not cotired (${_option_CONFIGURATIONS})") + endif() + return() + endif() + endif() + # when not using configuration types, immediately create cotire intermediate dir + if (NOT CMAKE_CONFIGURATION_TYPES) + cotire_get_intermediate_dir(_baseDir) + file (MAKE_DIRECTORY "${_baseDir}") + endif() + # choose languages that apply to the target + cotire_choose_target_languages("${_target}" _targetLanguages _wholeTarget ${_option_LANGUAGES}) + if (NOT _targetLanguages) + return() + endif() + set (_cmds "") + foreach (_language ${_targetLanguages}) + cotire_process_target_language("${_language}" "${_option_CONFIGURATIONS}" ${_target} ${_wholeTarget} _cmd) + if (_cmd) + list (APPEND _cmds ${_cmd}) + endif() + endforeach() + get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) + if (_targetAddSCU) + cotire_setup_unity_build_target("${_targetLanguages}" "${_option_CONFIGURATIONS}" ${_target}) + endif() + get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) + if (_targetUsePCH) + cotire_setup_target_pch_usage("${_targetLanguages}" ${_target} ${_wholeTarget} ${_cmds}) + cotire_setup_pch_target("${_targetLanguages}" "${_option_CONFIGURATIONS}" ${_target}) + if (_targetAddSCU) + cotire_setup_unity_target_pch_usage("${_targetLanguages}" ${_target}) + endif() + endif() + get_target_property(_targetAddCleanTarget ${_target} COTIRE_ADD_CLEAN) + if (_targetAddCleanTarget) + cotire_setup_clean_target(${_target}) + endif() +endfunction(cotire_target) + +function (cotire_map_libraries _strategy _mappedLibrariesVar) + set (_mappedLibraries "") + foreach (_library ${ARGN}) + if (_library MATCHES "^\\$$") + set (_libraryName "${CMAKE_MATCH_1}") + set (_linkOnly TRUE) + set (_objectLibrary FALSE) + elseif (_library MATCHES "^\\$$") + set (_libraryName "${CMAKE_MATCH_1}") + set (_linkOnly FALSE) + set (_objectLibrary TRUE) + else() + set (_libraryName "${_library}") + set (_linkOnly FALSE) + set (_objectLibrary FALSE) + endif() + if ("${_strategy}" MATCHES "COPY_UNITY") + cotire_is_target_supported(${_libraryName} _isSupported) + if (_isSupported) + # use target's corresponding unity target, if available + get_target_property(_libraryUnityTargetName ${_libraryName} COTIRE_UNITY_TARGET_NAME) + if (TARGET "${_libraryUnityTargetName}") + if (_linkOnly) + list (APPEND _mappedLibraries "$") + elseif (_objectLibrary) + list (APPEND _mappedLibraries "$") + else() + list (APPEND _mappedLibraries "${_libraryUnityTargetName}") + endif() + else() + list (APPEND _mappedLibraries "${_library}") + endif() + else() + list (APPEND _mappedLibraries "${_library}") + endif() + else() + list (APPEND _mappedLibraries "${_library}") + endif() + endforeach() + list (REMOVE_DUPLICATES _mappedLibraries) + set (${_mappedLibrariesVar} ${_mappedLibraries} PARENT_SCOPE) +endfunction() + +function (cotire_target_link_libraries _target) + cotire_is_target_supported(${_target} _isSupported) + if (NOT _isSupported) + return() + endif() + get_target_property(_unityTargetName ${_target} COTIRE_UNITY_TARGET_NAME) + if (TARGET "${_unityTargetName}") + get_target_property(_linkLibrariesStrategy ${_target} COTIRE_UNITY_LINK_LIBRARIES_INIT) + if (COTIRE_DEBUG) + message (STATUS "unity target ${_unityTargetName} link strategy: ${_linkLibrariesStrategy}") + endif() + if ("${_linkLibrariesStrategy}" MATCHES "^(COPY|COPY_UNITY)$") + get_target_property(_linkLibraries ${_target} LINK_LIBRARIES) + if (_linkLibraries) + cotire_map_libraries("${_linkLibrariesStrategy}" _unityLinkLibraries ${_linkLibraries}) + set_target_properties(${_unityTargetName} PROPERTIES LINK_LIBRARIES "${_unityLinkLibraries}") + if (COTIRE_DEBUG) + message (STATUS "unity target ${_unityTargetName} link libraries: ${_unityLinkLibraries}") + endif() + endif() + get_target_property(_interfaceLinkLibraries ${_target} INTERFACE_LINK_LIBRARIES) + if (_interfaceLinkLibraries) + cotire_map_libraries("${_linkLibrariesStrategy}" _unityLinkInterfaceLibraries ${_interfaceLinkLibraries}) + set_target_properties(${_unityTargetName} PROPERTIES INTERFACE_LINK_LIBRARIES "${_unityLinkInterfaceLibraries}") + if (COTIRE_DEBUG) + message (STATUS "unity target ${_unityTargetName} interface link libraries: ${_unityLinkInterfaceLibraries}") + endif() + endif() + get_target_property(_manualDependencies ${_target} MANUALLY_ADDED_DEPENDENCIES) + if (_manualDependencies) + cotire_map_libraries("${_linkLibrariesStrategy}" _unityManualDependencies ${_manualDependencies}) + if (_unityManualDependencies) + add_dependencies("${_unityTargetName}" ${_unityManualDependencies}) + endif() + endif() + endif() + endif() +endfunction(cotire_target_link_libraries) + +function (cotire_cleanup _binaryDir _cotireIntermediateDirName _targetName) + if (_targetName) + file (GLOB_RECURSE _cotireFiles "${_binaryDir}/${_targetName}*.*") + else() + file (GLOB_RECURSE _cotireFiles "${_binaryDir}/*.*") + endif() + # filter files in intermediate directory + set (_filesToRemove "") + foreach (_file ${_cotireFiles}) + get_filename_component(_dir "${_file}" DIRECTORY) + get_filename_component(_dirName "${_dir}" NAME) + if ("${_dirName}" STREQUAL "${_cotireIntermediateDirName}") + list (APPEND _filesToRemove "${_file}") + endif() + endforeach() + if (_filesToRemove) + if (COTIRE_VERBOSE) + message (STATUS "cleaning up ${_filesToRemove}") + endif() + file (REMOVE ${_filesToRemove}) + endif() +endfunction() + +function (cotire_init_target _targetName) + if (COTIRE_TARGETS_FOLDER) + set_target_properties(${_targetName} PROPERTIES FOLDER "${COTIRE_TARGETS_FOLDER}") + endif() + set_target_properties(${_targetName} PROPERTIES EXCLUDE_FROM_ALL TRUE) + # if (MSVC_IDE) + # set_target_properties(${_targetName} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE) + # endif() +endfunction() + +function (cotire_add_to_pch_all_target _pchTargetName) + set (_targetName "${COTIRE_PCH_ALL_TARGET_NAME}") + if (NOT TARGET "${_targetName}") + add_custom_target("${_targetName}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + VERBATIM) + cotire_init_target("${_targetName}") + endif() + cotire_setup_clean_all_target() + add_dependencies(${_targetName} ${_pchTargetName}) +endfunction() + +function (cotire_add_to_unity_all_target _unityTargetName) + set (_targetName "${COTIRE_UNITY_BUILD_ALL_TARGET_NAME}") + if (NOT TARGET "${_targetName}") + add_custom_target("${_targetName}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + VERBATIM) + cotire_init_target("${_targetName}") + endif() + cotire_setup_clean_all_target() + add_dependencies(${_targetName} ${_unityTargetName}) +endfunction() + +function (cotire_setup_clean_all_target) + set (_targetName "${COTIRE_CLEAN_ALL_TARGET_NAME}") + if (NOT TARGET "${_targetName}") + cotire_set_cmd_to_prologue(_cmds) + list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "cleanup" "${CMAKE_BINARY_DIR}" "${COTIRE_INTDIR}") + add_custom_target(${_targetName} + COMMAND ${_cmds} + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "Cleaning up all cotire generated files" + VERBATIM) + cotire_init_target("${_targetName}") + endif() +endfunction() + +function (cotire) + set(_options "") + set(_oneValueArgs "") + set(_multiValueArgs LANGUAGES CONFIGURATIONS) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + set (_targets ${_option_UNPARSED_ARGUMENTS}) + foreach (_target ${_targets}) + if (TARGET ${_target}) + cotire_target(${_target} LANGUAGES ${_option_LANGUAGES} CONFIGURATIONS ${_option_CONFIGURATIONS}) + else() + message (WARNING "cotire: ${_target} is not a target.") + endif() + endforeach() + foreach (_target ${_targets}) + if (TARGET ${_target}) + cotire_target_link_libraries(${_target}) + endif() + endforeach() +endfunction() + +if (CMAKE_SCRIPT_MODE_FILE) + + # cotire is being run in script mode + # locate -P on command args + set (COTIRE_ARGC -1) + foreach (_index RANGE ${CMAKE_ARGC}) + if (COTIRE_ARGC GREATER -1) + set (COTIRE_ARGV${COTIRE_ARGC} "${CMAKE_ARGV${_index}}") + math (EXPR COTIRE_ARGC "${COTIRE_ARGC} + 1") + elseif ("${CMAKE_ARGV${_index}}" STREQUAL "-P") + set (COTIRE_ARGC 0) + endif() + endforeach() + + # include target script if available + if ("${COTIRE_ARGV2}" MATCHES "\\.cmake$") + # the included target scripts sets up additional variables relating to the target (e.g., COTIRE_TARGET_SOURCES) + include("${COTIRE_ARGV2}") + endif() + + if (COTIRE_DEBUG) + message (STATUS "${COTIRE_ARGV0} ${COTIRE_ARGV1} ${COTIRE_ARGV2} ${COTIRE_ARGV3} ${COTIRE_ARGV4} ${COTIRE_ARGV5}") + endif() + + if (NOT COTIRE_BUILD_TYPE) + set (COTIRE_BUILD_TYPE "None") + endif() + string (TOUPPER "${COTIRE_BUILD_TYPE}" _upperConfig) + set (_includeDirs ${COTIRE_TARGET_INCLUDE_DIRECTORIES_${_upperConfig}}) + set (_systemIncludeDirs ${COTIRE_TARGET_SYSTEM_INCLUDE_DIRECTORIES_${_upperConfig}}) + set (_compileDefinitions ${COTIRE_TARGET_COMPILE_DEFINITIONS_${_upperConfig}}) + set (_compileFlags ${COTIRE_TARGET_COMPILE_FLAGS_${_upperConfig}}) + # check if target has been cotired for actual build type COTIRE_BUILD_TYPE + list (FIND COTIRE_TARGET_CONFIGURATION_TYPES "${COTIRE_BUILD_TYPE}" _index) + if (_index GREATER -1) + set (_sources ${COTIRE_TARGET_SOURCES}) + set (_sourcesDefinitions ${COTIRE_TARGET_SOURCES_COMPILE_DEFINITIONS_${_upperConfig}}) + else() + if (COTIRE_DEBUG) + message (STATUS "COTIRE_BUILD_TYPE=${COTIRE_BUILD_TYPE} not cotired (${COTIRE_TARGET_CONFIGURATION_TYPES})") + endif() + set (_sources "") + set (_sourcesDefinitions "") + endif() + set (_targetPreUndefs ${COTIRE_TARGET_PRE_UNDEFS}) + set (_targetPostUndefs ${COTIRE_TARGET_POST_UNDEFS}) + set (_sourcesPreUndefs ${COTIRE_TARGET_SOURCES_PRE_UNDEFS}) + set (_sourcesPostUndefs ${COTIRE_TARGET_SOURCES_POST_UNDEFS}) + + if ("${COTIRE_ARGV1}" STREQUAL "unity") + + if (XCODE) + # executing pre-build action under Xcode, check dependency on target script + set (_dependsOption DEPENDS "${COTIRE_ARGV2}") + else() + # executing custom command, no need to re-check for dependencies + set (_dependsOption "") + endif() + + cotire_select_unity_source_files("${COTIRE_ARGV3}" _sources ${_sources}) + + cotire_generate_unity_source( + "${COTIRE_ARGV3}" ${_sources} + LANGUAGE "${COTIRE_TARGET_LANGUAGE}" + SOURCES_COMPILE_DEFINITIONS ${_sourcesDefinitions} + PRE_UNDEFS ${_targetPreUndefs} + POST_UNDEFS ${_targetPostUndefs} + SOURCES_PRE_UNDEFS ${_sourcesPreUndefs} + SOURCES_POST_UNDEFS ${_sourcesPostUndefs} + ${_dependsOption}) + + elseif ("${COTIRE_ARGV1}" STREQUAL "prefix") + + if (XCODE) + # executing pre-build action under Xcode, check dependency on unity file and prefix dependencies + set (_dependsOption DEPENDS "${COTIRE_ARGV4}" ${COTIRE_TARGET_PREFIX_DEPENDS}) + else() + # executing custom command, no need to re-check for dependencies + set (_dependsOption "") + endif() + + set (_files "") + foreach (_index RANGE 4 ${COTIRE_ARGC}) + if (COTIRE_ARGV${_index}) + list (APPEND _files "${COTIRE_ARGV${_index}}") + endif() + endforeach() + + cotire_generate_prefix_header( + "${COTIRE_ARGV3}" ${_files} + COMPILER_LAUNCHER "${COTIRE_TARGET_${COTIRE_TARGET_LANGUAGE}_COMPILER_LAUNCHER}" + COMPILER_EXECUTABLE "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER}" + COMPILER_ARG1 ${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ARG1} + COMPILER_ID "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ID}" + COMPILER_VERSION "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_VERSION}" + LANGUAGE "${COTIRE_TARGET_LANGUAGE}" + IGNORE_PATH "${COTIRE_TARGET_IGNORE_PATH};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH}" + INCLUDE_PATH ${COTIRE_TARGET_INCLUDE_PATH} + IGNORE_EXTENSIONS "${CMAKE_${COTIRE_TARGET_LANGUAGE}_SOURCE_FILE_EXTENSIONS};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS}" + INCLUDE_PRIORITY_PATH ${COTIRE_TARGET_INCLUDE_PRIORITY_PATH} + INCLUDE_DIRECTORIES ${_includeDirs} + SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} + COMPILE_DEFINITIONS ${_compileDefinitions} + COMPILE_FLAGS ${_compileFlags} + ${_dependsOption}) + + elseif ("${COTIRE_ARGV1}" STREQUAL "precompile") + + set (_files "") + foreach (_index RANGE 5 ${COTIRE_ARGC}) + if (COTIRE_ARGV${_index}) + list (APPEND _files "${COTIRE_ARGV${_index}}") + endif() + endforeach() + + cotire_precompile_prefix_header( + "${COTIRE_ARGV3}" "${COTIRE_ARGV4}" "${COTIRE_ARGV5}" + COMPILER_LAUNCHER "${COTIRE_TARGET_${COTIRE_TARGET_LANGUAGE}_COMPILER_LAUNCHER}" + COMPILER_EXECUTABLE "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER}" + COMPILER_ARG1 ${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ARG1} + COMPILER_ID "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ID}" + COMPILER_VERSION "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_VERSION}" + LANGUAGE "${COTIRE_TARGET_LANGUAGE}" + INCLUDE_DIRECTORIES ${_includeDirs} + SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} + COMPILE_DEFINITIONS ${_compileDefinitions} + COMPILE_FLAGS ${_compileFlags}) + + elseif ("${COTIRE_ARGV1}" STREQUAL "combine") + + if (COTIRE_TARGET_LANGUAGE) + set (_combinedFile "${COTIRE_ARGV3}") + set (_startIndex 4) + else() + set (_combinedFile "${COTIRE_ARGV2}") + set (_startIndex 3) + endif() + set (_files "") + foreach (_index RANGE ${_startIndex} ${COTIRE_ARGC}) + if (COTIRE_ARGV${_index}) + list (APPEND _files "${COTIRE_ARGV${_index}}") + endif() + endforeach() + + if (XCODE) + # executing pre-build action under Xcode, check dependency on files to be combined + set (_dependsOption DEPENDS ${_files}) + else() + # executing custom command, no need to re-check for dependencies + set (_dependsOption "") + endif() + + if (COTIRE_TARGET_LANGUAGE) + cotire_generate_unity_source( + "${_combinedFile}" ${_files} + LANGUAGE "${COTIRE_TARGET_LANGUAGE}" + ${_dependsOption}) + else() + cotire_generate_unity_source("${_combinedFile}" ${_files} ${_dependsOption}) + endif() + + elseif ("${COTIRE_ARGV1}" STREQUAL "cleanup") + + cotire_cleanup("${COTIRE_ARGV2}" "${COTIRE_ARGV3}" "${COTIRE_ARGV4}") + + else() + message (FATAL_ERROR "cotire: unknown command \"${COTIRE_ARGV1}\".") + endif() + +else() + + # cotire is being run in include mode + # set up all variable and property definitions + + if (NOT DEFINED COTIRE_DEBUG_INIT) + if (DEFINED COTIRE_DEBUG) + set (COTIRE_DEBUG_INIT ${COTIRE_DEBUG}) + else() + set (COTIRE_DEBUG_INIT FALSE) + endif() + endif() + option (COTIRE_DEBUG "Enable cotire debugging output?" ${COTIRE_DEBUG_INIT}) + + if (NOT DEFINED COTIRE_VERBOSE_INIT) + if (DEFINED COTIRE_VERBOSE) + set (COTIRE_VERBOSE_INIT ${COTIRE_VERBOSE}) + else() + set (COTIRE_VERBOSE_INIT FALSE) + endif() + endif() + option (COTIRE_VERBOSE "Enable cotire verbose output?" ${COTIRE_VERBOSE_INIT}) + + set (COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS "inc;inl;ipp" CACHE STRING + "Ignore headers with the listed file extensions from the generated prefix header.") + + set (COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH "" CACHE STRING + "Ignore headers from these directories when generating the prefix header.") + + set (COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS "m;mm" CACHE STRING + "Ignore sources with the listed file extensions from the generated unity source.") + + set (COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES "2" CACHE STRING + "Minimum number of sources in target required to enable use of precompiled header.") + + if (NOT DEFINED COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT) + if (DEFINED COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES) + set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT ${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES}) + elseif ("${CMAKE_GENERATOR}" MATCHES "JOM|Ninja|Visual Studio") + # enable parallelization for generators that run multiple jobs by default + set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT "-j") + else() + set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT "0") + endif() + endif() + set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES "${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT}" CACHE STRING + "Maximum number of source files to include in a single unity source file.") + + if (NOT COTIRE_PREFIX_HEADER_FILENAME_SUFFIX) + set (COTIRE_PREFIX_HEADER_FILENAME_SUFFIX "_prefix") + endif() + if (NOT COTIRE_UNITY_SOURCE_FILENAME_SUFFIX) + set (COTIRE_UNITY_SOURCE_FILENAME_SUFFIX "_unity") + endif() + if (NOT COTIRE_INTDIR) + set (COTIRE_INTDIR "cotire") + endif() + if (NOT COTIRE_PCH_ALL_TARGET_NAME) + set (COTIRE_PCH_ALL_TARGET_NAME "all_pch") + endif() + if (NOT COTIRE_UNITY_BUILD_ALL_TARGET_NAME) + set (COTIRE_UNITY_BUILD_ALL_TARGET_NAME "all_unity") + endif() + if (NOT COTIRE_CLEAN_ALL_TARGET_NAME) + set (COTIRE_CLEAN_ALL_TARGET_NAME "clean_cotire") + endif() + if (NOT COTIRE_CLEAN_TARGET_SUFFIX) + set (COTIRE_CLEAN_TARGET_SUFFIX "_clean_cotire") + endif() + if (NOT COTIRE_PCH_TARGET_SUFFIX) + set (COTIRE_PCH_TARGET_SUFFIX "_pch") + endif() + if (MSVC) + # MSVC default PCH memory scaling factor of 100 percent (75 MB) is too small for template heavy C++ code + # use a bigger default factor of 170 percent (128 MB) + if (NOT DEFINED COTIRE_PCH_MEMORY_SCALING_FACTOR) + set (COTIRE_PCH_MEMORY_SCALING_FACTOR "170") + endif() + endif() + if (NOT COTIRE_UNITY_BUILD_TARGET_SUFFIX) + set (COTIRE_UNITY_BUILD_TARGET_SUFFIX "_unity") + endif() + if (NOT DEFINED COTIRE_TARGETS_FOLDER) + set (COTIRE_TARGETS_FOLDER "cotire") + endif() + if (NOT DEFINED COTIRE_UNITY_OUTPUT_DIRECTORY) + if ("${CMAKE_GENERATOR}" MATCHES "Ninja") + # generated Ninja build files do not work if the unity target produces the same output file as the cotired target + set (COTIRE_UNITY_OUTPUT_DIRECTORY "unity") + else() + set (COTIRE_UNITY_OUTPUT_DIRECTORY "") + endif() + endif() + + # define cotire cache variables + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH" + BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." + FULL_DOCS + "The variable can be set to a semicolon separated list of include directories." + "If a header file is found in one of these directories or sub-directories, it will be excluded from the generated prefix header." + "If not defined, defaults to empty list." + ) + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS" + BRIEF_DOCS "Ignore includes with the listed file extensions from the generated prefix header." + FULL_DOCS + "The variable can be set to a semicolon separated list of file extensions." + "If a header file extension matches one in the list, it will be excluded from the generated prefix header." + "Includes with an extension in CMAKE__SOURCE_FILE_EXTENSIONS are always ignored." + "If not defined, defaults to inc;inl;ipp." + ) + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS" + BRIEF_DOCS "Exclude sources with the listed file extensions from the generated unity source." + FULL_DOCS + "The variable can be set to a semicolon separated list of file extensions." + "If a source file extension matches one in the list, it will be excluded from the generated unity source file." + "Source files with an extension in CMAKE__IGNORE_EXTENSIONS are always excluded." + "If not defined, defaults to m;mm." + ) + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES" + BRIEF_DOCS "Minimum number of sources in target required to enable use of precompiled header." + FULL_DOCS + "The variable can be set to an integer > 0." + "If a target contains less than that number of source files, cotire will not enable the use of the precompiled header for the target." + "If not defined, defaults to 2." + ) + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES" + BRIEF_DOCS "Maximum number of source files to include in a single unity source file." + FULL_DOCS + "This may be set to an integer >= 0." + "If 0, cotire will only create a single unity source file." + "If a target contains more than that number of source files, cotire will create multiple unity source files for it." + "Can be set to \"-j\" to optimize the count of unity source files for the number of available processor cores." + "Can be set to \"-j jobs\" to optimize the number of unity source files for the given number of simultaneous jobs." + "Is used to initialize the target property COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES." + "Defaults to \"-j\" for the generators Visual Studio, JOM or Ninja. Defaults to 0 otherwise." + ) + + # define cotire directory properties + + define_property( + DIRECTORY PROPERTY "COTIRE_ENABLE_PRECOMPILED_HEADER" + BRIEF_DOCS "Modify build command of cotired targets added in this directory to make use of the generated precompiled header." + FULL_DOCS + "See target property COTIRE_ENABLE_PRECOMPILED_HEADER." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_ADD_UNITY_BUILD" + BRIEF_DOCS "Add a new target that performs a unity build for cotired targets added in this directory." + FULL_DOCS + "See target property COTIRE_ADD_UNITY_BUILD." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_ADD_CLEAN" + BRIEF_DOCS "Add a new target that cleans all cotire generated files for cotired targets added in this directory." + FULL_DOCS + "See target property COTIRE_ADD_CLEAN." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_IGNORE_PATH" + BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." + FULL_DOCS + "See target property COTIRE_PREFIX_HEADER_IGNORE_PATH." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PATH" + BRIEF_DOCS "Honor headers from these directories when generating the prefix header." + FULL_DOCS + "See target property COTIRE_PREFIX_HEADER_INCLUDE_PATH." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH" + BRIEF_DOCS "Header paths matching one of these directories are put at the top of the prefix header." + FULL_DOCS + "See target property COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each source file." + FULL_DOCS + "See target property COTIRE_UNITY_SOURCE_PRE_UNDEFS." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of each source file." + FULL_DOCS + "See target property COTIRE_UNITY_SOURCE_POST_UNDEFS." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES" + BRIEF_DOCS "Maximum number of source files to include in a single unity source file." + FULL_DOCS + "See target property COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_UNITY_LINK_LIBRARIES_INIT" + BRIEF_DOCS "Define strategy for setting up the unity target's link libraries." + FULL_DOCS + "See target property COTIRE_UNITY_LINK_LIBRARIES_INIT." + ) + + # define cotire target properties + + define_property( + TARGET PROPERTY "COTIRE_ENABLE_PRECOMPILED_HEADER" INHERITED + BRIEF_DOCS "Modify this target's build command to make use of the generated precompiled header." + FULL_DOCS + "If this property is set to TRUE, cotire will modify the build command to make use of the generated precompiled header." + "Irrespective of the value of this property, cotire will setup custom commands to generate the unity source and prefix header for the target." + "For makefile based generators cotire will also set up a custom target to manually invoke the generation of the precompiled header." + "The target name will be set to this target's name with the suffix _pch appended." + "Inherited from directory." + "Defaults to TRUE." + ) + + define_property( + TARGET PROPERTY "COTIRE_ADD_UNITY_BUILD" INHERITED + BRIEF_DOCS "Add a new target that performs a unity build for this target." + FULL_DOCS + "If this property is set to TRUE, cotire creates a new target of the same type that uses the generated unity source file instead of the target sources." + "Most of the relevant target properties will be copied from this target to the new unity build target." + "Target dependencies and linked libraries have to be manually set up for the new unity build target." + "The unity target name will be set to this target's name with the suffix _unity appended." + "Inherited from directory." + "Defaults to TRUE." + ) + + define_property( + TARGET PROPERTY "COTIRE_ADD_CLEAN" INHERITED + BRIEF_DOCS "Add a new target that cleans all cotire generated files for this target." + FULL_DOCS + "If this property is set to TRUE, cotire creates a new target that clean all files (unity source, prefix header, precompiled header)." + "The clean target name will be set to this target's name with the suffix _clean_cotire appended." + "Inherited from directory." + "Defaults to FALSE." + ) + + define_property( + TARGET PROPERTY "COTIRE_PREFIX_HEADER_IGNORE_PATH" INHERITED + BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." + FULL_DOCS + "The property can be set to a list of directories." + "If a header file is found in one of these directories or sub-directories, it will be excluded from the generated prefix header." + "Inherited from directory." + "If not set, this property is initialized to \${CMAKE_SOURCE_DIR};\${CMAKE_BINARY_DIR}." + ) + + define_property( + TARGET PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PATH" INHERITED + BRIEF_DOCS "Honor headers from these directories when generating the prefix header." + FULL_DOCS + "The property can be set to a list of directories." + "If a header file is found in one of these directories or sub-directories, it will be included in the generated prefix header." + "If a header file is both selected by COTIRE_PREFIX_HEADER_IGNORE_PATH and COTIRE_PREFIX_HEADER_INCLUDE_PATH," + "the option which yields the closer relative path match wins." + "Inherited from directory." + "If not set, this property is initialized to the empty list." + ) + + define_property( + TARGET PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH" INHERITED + BRIEF_DOCS "Header paths matching one of these directories are put at the top of prefix header." + FULL_DOCS + "The property can be set to a list of directories." + "Header file paths matching one of these directories will be inserted at the beginning of the generated prefix header." + "Header files are sorted according to the order of the directories in the property." + "If not set, this property is initialized to the empty list." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" INHERITED + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each target source file." + FULL_DOCS + "This may be set to a semicolon-separated list of preprocessor symbols." + "cotire will add corresponding #undef directives to the generated unit source file before each target source file." + "Inherited from directory." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" INHERITED + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of each target source file." + FULL_DOCS + "This may be set to a semicolon-separated list of preprocessor symbols." + "cotire will add corresponding #undef directives to the generated unit source file after each target source file." + "Inherited from directory." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES" INHERITED + BRIEF_DOCS "Maximum number of source files to include in a single unity source file." + FULL_DOCS + "This may be set to an integer > 0." + "If a target contains more than that number of source files, cotire will create multiple unity build files for it." + "If not set, cotire will only create a single unity source file." + "Inherited from directory." + "Defaults to empty." + ) + + define_property( + TARGET PROPERTY "COTIRE__UNITY_SOURCE_INIT" + BRIEF_DOCS "User provided unity source file to be used instead of the automatically generated one." + FULL_DOCS + "If set, cotire will only add the given file(s) to the generated unity source file." + "If not set, cotire will add all the target source files to the generated unity source file." + "The property can be set to a user provided unity source file." + "Defaults to empty." + ) + + define_property( + TARGET PROPERTY "COTIRE__PREFIX_HEADER_INIT" + BRIEF_DOCS "User provided prefix header file to be used instead of the automatically generated one." + FULL_DOCS + "If set, cotire will add the given header file(s) to the generated prefix header file." + "If not set, cotire will generate a prefix header by tracking the header files included by the unity source file." + "The property can be set to a user provided prefix header file (e.g., stdafx.h)." + "Defaults to empty." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_LINK_LIBRARIES_INIT" INHERITED + BRIEF_DOCS "Define strategy for setting up unity target's link libraries." + FULL_DOCS + "If this property is empty or set to NONE, the generated unity target's link libraries have to be set up manually." + "If this property is set to COPY, the unity target's link libraries will be copied from this target." + "If this property is set to COPY_UNITY, the unity target's link libraries will be copied from this target with considering existing unity targets." + "Inherited from directory." + "Defaults to empty." + ) + + define_property( + TARGET PROPERTY "COTIRE__UNITY_SOURCE" + BRIEF_DOCS "Read-only property. The generated unity source file(s)." + FULL_DOCS + "cotire sets this property to the path of the generated single computation unit source file for the target." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE__PREFIX_HEADER" + BRIEF_DOCS "Read-only property. The generated prefix header file." + FULL_DOCS + "cotire sets this property to the full path of the generated language prefix header for the target." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE__PRECOMPILED_HEADER" + BRIEF_DOCS "Read-only property. The generated precompiled header file." + FULL_DOCS + "cotire sets this property to the full path of the generated language precompiled header binary for the target." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_TARGET_NAME" + BRIEF_DOCS "The name of the generated unity build target corresponding to this target." + FULL_DOCS + "This property can be set to the desired name of the unity target that will be created by cotire." + "If not set, the unity target name will be set to this target's name with the suffix _unity appended." + "After this target has been processed by cotire, the property is set to the actual name of the generated unity target." + "Defaults to empty string." + ) + + # define cotire source properties + + define_property( + SOURCE PROPERTY "COTIRE_EXCLUDED" + BRIEF_DOCS "Do not modify source file's build command." + FULL_DOCS + "If this property is set to TRUE, the source file's build command will not be modified to make use of the precompiled header." + "The source file will also be excluded from the generated unity source file." + "Source files that have their COMPILE_FLAGS property set will be excluded by default." + "Defaults to FALSE." + ) + + define_property( + SOURCE PROPERTY "COTIRE_DEPENDENCY" + BRIEF_DOCS "Add this source file to dependencies of the automatically generated prefix header file." + FULL_DOCS + "If this property is set to TRUE, the source file is added to dependencies of the generated prefix header file." + "If the file is modified, cotire will re-generate the prefix header source upon build." + "Defaults to FALSE." + ) + + define_property( + SOURCE PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of this source file." + FULL_DOCS + "This may be set to a semicolon-separated list of preprocessor symbols." + "cotire will add corresponding #undef directives to the generated unit source file before this file is included." + "Defaults to empty string." + ) + + define_property( + SOURCE PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of this source file." + FULL_DOCS + "This may be set to a semicolon-separated list of preprocessor symbols." + "cotire will add corresponding #undef directives to the generated unit source file after this file is included." + "Defaults to empty string." + ) + + define_property( + SOURCE PROPERTY "COTIRE_START_NEW_UNITY_SOURCE" + BRIEF_DOCS "Start a new unity source file which includes this source file as the first one." + FULL_DOCS + "If this property is set to TRUE, cotire will complete the current unity file and start a new one." + "The new unity source file will include this source file as the first one." + "This property essentially works as a separator for unity source files." + "Defaults to FALSE." + ) + + define_property( + SOURCE PROPERTY "COTIRE_TARGET" + BRIEF_DOCS "Read-only property. Mark this source file as cotired for the given target." + FULL_DOCS + "cotire sets this property to the name of target, that the source file's build command has been altered for." + "Defaults to empty string." + ) + + message (STATUS "cotire ${COTIRE_CMAKE_MODULE_VERSION} loaded.") + +endif() diff --git a/adm/cmake/doxygen.cmake b/adm/cmake/doxygen.cmake index 46ad1e2e15..5fd2a33920 100644 --- a/adm/cmake/doxygen.cmake +++ b/adm/cmake/doxygen.cmake @@ -1,62 +1,62 @@ -# doxygen -set (DOXYGEN_MINIMUM_VERSION 1.8.4) - -if (DO_ONLY_CHECK_FOR_DOXYGEN) - message (STATUS "Info. Detecting doxygen") - set (DOXYGEN_SKIP_DOT ON) - find_package (Doxygen ${DOXYGEN_MINIMUM_VERSION}) - - set (CAN_DOXYGEN_BE_USED OFF) - if (DOXYGEN_EXECUTABLE) - set (CAN_DOXYGEN_BE_USED ON) - message (STATUS "Info. Doxygen is found and can be used") - endif() -else() - set (3RDPARTY_DOT_EXECUTABLE_DESCR "The path to the 'dot' tool producing layered drawings of directed graphs.\nThis tool used by doxygen") - set (3RDPARTY_DOXYGEN_EXECUTABLE_DESCR "The path to the doxygen command") - - if (NOT DEFINED 3RDPARTY_DOXYGEN_EXECUTABLE) - set (3RDPARTY_DOXYGEN_EXECUTABLE "" CACHE FILEPATH "${3RDPARTY_DOXYGEN_EXECUTABLE_DESCR}") - endif() - - if (NOT DEFINED 3RDPARTY_DOT_EXECUTABLE) - set (3RDPARTY_DOT_EXECUTABLE "" CACHE FILEPATH "${3RDPARTY_DOT_EXECUTABLE_DESCR}") - endif() - - if (NOT DEFINED 3RDPARTY_SKIP_DOT_EXECUTABLE) - set (3RDPARTY_SKIP_DOT_EXECUTABLE ON CACHE BOOL "Skip trying to find Dot") - endif() - - if (3RDPARTY_SKIP_DOT_EXECUTABLE) - OCCT_CHECK_AND_UNSET (3RDPARTY_DOT_EXECUTABLE) - endif() - - if (NOT 3RDPARTY_DOXYGEN_EXECUTABLE OR (NOT 3RDPARTY_SKIP_DOT_EXECUTABLE AND NOT 3RDPARTY_DOT_EXECUTABLE)) - - set (DOXYGEN_SKIP_DOT ${3RDPARTY_SKIP_DOT_EXECUTABLE}) - find_package (Doxygen ${DOXYGEN_MINIMUM_VERSION}) - - if (NOT 3RDPARTY_DOXYGEN_EXECUTABLE AND DOXYGEN_EXECUTABLE) - set (3RDPARTY_DOXYGEN_EXECUTABLE "${DOXYGEN_EXECUTABLE}" CACHE FILEPATH "${3RDPARTY_DOXYGEN_EXECUTABLE_DESCR}" FORCE) - endif() - - if (NOT 3RDPARTY_SKIP_DOT_EXECUTABLE AND NOT 3RDPARTY_DOT_EXECUTABLE AND DOXYGEN_DOT_EXECUTABLE) - set (3RDPARTY_DOT_EXECUTABLE "${DOXYGEN_DOT_EXECUTABLE}" CACHE FILEPATH "${3RDPARTY_DOT_EXECUTABLE_DESCR}" FORCE) - endif() - endif() - - if (NOT 3RDPARTY_DOXYGEN_EXECUTABLE OR NOT EXISTS "${3RDPARTY_DOXYGEN_EXECUTABLE}") - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_DOXYGEN_EXECUTABLE) - endif() - - if (NOT 3RDPARTY_SKIP_DOT_EXECUTABLE) - if (NOT 3RDPARTY_DOT_EXECUTABLE OR NOT EXISTS "${3RDPARTY_DOT_EXECUTABLE}") - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_DOT_EXECUTABLE) - endif() - endif() -endif() - -# unset all redundant variables -OCCT_CHECK_AND_UNSET (DOXYGEN_SKIP_DOT) -OCCT_CHECK_AND_UNSET (DOXYGEN_EXECUTABLE) -OCCT_CHECK_AND_UNSET (DOXYGEN_DOT_EXECUTABLE) +# doxygen +set (DOXYGEN_MINIMUM_VERSION 1.8.4) + +if (DO_ONLY_CHECK_FOR_DOXYGEN) + message (STATUS "Info. Detecting doxygen") + set (DOXYGEN_SKIP_DOT ON) + find_package (Doxygen ${DOXYGEN_MINIMUM_VERSION}) + + set (CAN_DOXYGEN_BE_USED OFF) + if (DOXYGEN_EXECUTABLE) + set (CAN_DOXYGEN_BE_USED ON) + message (STATUS "Info. Doxygen is found and can be used") + endif() +else() + set (3RDPARTY_DOT_EXECUTABLE_DESCR "The path to the 'dot' tool producing layered drawings of directed graphs.\nThis tool used by doxygen") + set (3RDPARTY_DOXYGEN_EXECUTABLE_DESCR "The path to the doxygen command") + + if (NOT DEFINED 3RDPARTY_DOXYGEN_EXECUTABLE) + set (3RDPARTY_DOXYGEN_EXECUTABLE "" CACHE FILEPATH "${3RDPARTY_DOXYGEN_EXECUTABLE_DESCR}") + endif() + + if (NOT DEFINED 3RDPARTY_DOT_EXECUTABLE) + set (3RDPARTY_DOT_EXECUTABLE "" CACHE FILEPATH "${3RDPARTY_DOT_EXECUTABLE_DESCR}") + endif() + + if (NOT DEFINED 3RDPARTY_SKIP_DOT_EXECUTABLE) + set (3RDPARTY_SKIP_DOT_EXECUTABLE ON CACHE BOOL "Skip trying to find Dot") + endif() + + if (3RDPARTY_SKIP_DOT_EXECUTABLE) + OCCT_CHECK_AND_UNSET (3RDPARTY_DOT_EXECUTABLE) + endif() + + if (NOT 3RDPARTY_DOXYGEN_EXECUTABLE OR (NOT 3RDPARTY_SKIP_DOT_EXECUTABLE AND NOT 3RDPARTY_DOT_EXECUTABLE)) + + set (DOXYGEN_SKIP_DOT ${3RDPARTY_SKIP_DOT_EXECUTABLE}) + find_package (Doxygen ${DOXYGEN_MINIMUM_VERSION}) + + if (NOT 3RDPARTY_DOXYGEN_EXECUTABLE AND DOXYGEN_EXECUTABLE) + set (3RDPARTY_DOXYGEN_EXECUTABLE "${DOXYGEN_EXECUTABLE}" CACHE FILEPATH "${3RDPARTY_DOXYGEN_EXECUTABLE_DESCR}" FORCE) + endif() + + if (NOT 3RDPARTY_SKIP_DOT_EXECUTABLE AND NOT 3RDPARTY_DOT_EXECUTABLE AND DOXYGEN_DOT_EXECUTABLE) + set (3RDPARTY_DOT_EXECUTABLE "${DOXYGEN_DOT_EXECUTABLE}" CACHE FILEPATH "${3RDPARTY_DOT_EXECUTABLE_DESCR}" FORCE) + endif() + endif() + + if (NOT 3RDPARTY_DOXYGEN_EXECUTABLE OR NOT EXISTS "${3RDPARTY_DOXYGEN_EXECUTABLE}") + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_DOXYGEN_EXECUTABLE) + endif() + + if (NOT 3RDPARTY_SKIP_DOT_EXECUTABLE) + if (NOT 3RDPARTY_DOT_EXECUTABLE OR NOT EXISTS "${3RDPARTY_DOT_EXECUTABLE}") + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_DOT_EXECUTABLE) + endif() + endif() +endif() + +# unset all redundant variables +OCCT_CHECK_AND_UNSET (DOXYGEN_SKIP_DOT) +OCCT_CHECK_AND_UNSET (DOXYGEN_EXECUTABLE) +OCCT_CHECK_AND_UNSET (DOXYGEN_DOT_EXECUTABLE) diff --git a/adm/cmake/draco.cmake b/adm/cmake/draco.cmake index 755391fa52..fdf7ec999e 100644 --- a/adm/cmake/draco.cmake +++ b/adm/cmake/draco.cmake @@ -1,96 +1,96 @@ -# Draco - a library for a lossy vertex data compression, used as extension to glTF format. -# https://github.com/google/draco - -OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") - -if (NOT DEFINED INSTALL_DRACO) - set (INSTALL_DRACO OFF CACHE BOOL "${INSTALL_DRACO_DESCR}") -endif() - -if (NOT DEFINED 3RDPARTY_DRACO_DIR) - set (3RDPARTY_DRACO_DIR "" CACHE PATH "The directory containing Draco") -endif() - -if (NOT DEFINED 3RDPARTY_DRACO_INCLUDE_DIR) - set (3RDPARTY_DRACO_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the Draco") -endif() - -if (NOT DEFINED 3RDPARTY_DRACO_LIBRARY OR NOT 3RDPARTY_DRACO_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_DRACO_LIBRARY_DIR}") - set (3RDPARTY_DRACO_LIBRARY "" CACHE FILEPATH "Draco library" FORCE) -endif() - -if (NOT DEFINED 3RDPARTY_DRACO_LIBRARY_DIR) - set (3RDPARTY_DRACO_LIBRARY_DIR "" CACHE PATH "The directory containing Draco library") -endif() - -if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - if (NOT 3RDPARTY_DRACO_DIR OR NOT EXISTS "${3RDPARTY_DRACO_DIR}") - FIND_PRODUCT_DIR("${3RDPARTY_DIR}" draco DRACO_DIR_NAME) - if (DRACO_DIR_NAME) - set (3RDPARTY_DRACO_DIR "${3RDPARTY_DIR}/${DRACO_DIR_NAME}" CACHE PATH "The directory containing Draco" FORCE) - endif() - endif() -endif() - -if (3RDPARTY_DRACO_DIR AND EXISTS "${3RDPARTY_DRACO_DIR}") - set (DRACO_INCLUDE_PATH "${3RDPARTY_DRACO_DIR}/include") - set (DRACO_LIBRARY_PATH "${3RDPARTY_DRACO_DIR}/lib") -endif() - -if (NOT 3RDPARTY_DRACO_INCLUDE_DIR) - if (DRACO_INCLUDE_PATH AND EXISTS "${DRACO_INCLUDE_PATH}") - set (3RDPARTY_DRACO_INCLUDE_DIR "${DRACO_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of DRACO" FORCE) - endif() -endif() - -if (NOT 3RDPARTY_DRACO_LIBRARY_DIR) - if (DRACO_LIBRARY_PATH AND EXISTS "${DRACO_LIBRARY_PATH}") - set (3RDPARTY_DRACO_LIBRARY_DIR "${DRACO_LIBRARY_PATH}" CACHE FILEPATH "The directory containing DRACO library" FORCE) - endif() -endif() - -if (3RDPARTY_DRACO_INCLUDE_DIR AND EXISTS "${3RDPARTY_DRACO_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_DRACO_INCLUDE_DIR}") -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_DRACO_INCLUDE_DIR) -endif() - -if (3RDPARTY_DRACO_DIR AND EXISTS "${3RDPARTY_DRACO_DIR}") - if (NOT 3RDPARTY_DRACO_LIBRARY OR NOT EXISTS "${3RDPARTY_DRACO_LIBRARY}") - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a) - set (3RDPARTY_DRACO_LIBRARY "3RDPARTY_DRACO_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to Draco library" FORCE) - - find_library (3RDPARTY_DRACO_LIBRARY NAMES ${CSF_Draco} - PATHS "${3RDPARTY_DRACO_LIBRARY_DIR}" - PATH_SUFFIXES lib - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - if (3RDPARTY_DRACO_LIBRARY AND EXISTS "${3RDPARTY_DRACO_LIBRARY}") - get_filename_component (3RDPARTY_DRACO_LIBRARY_DIR "${3RDPARTY_DRACO_LIBRARY}" PATH) - set (3RDPARTY_DRACO_LIBRARY_DIR "${3RDPARTY_DRACO_LIBRARY_DIR}" CACHE FILEPATH "The directory containing Draco library" FORCE) - endif() - endif() -endif() - -if (3RDPARTY_DRACO_LIBRARY_DIR AND EXISTS "${3RDPARTY_DRACO_LIBRARY_DIR}") - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_DRACO_LIBRARY_DIR}") -else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_DRACO_LIBRARY_DIR) -endif() - -if (INSTALL_DRACO) - get_filename_component(3RDPARTY_DRACO_LIBRARY_REALPATH ${3RDPARTY_DRACO_LIBRARY} REALPATH) - if (SINGLE_GENERATOR) - install (FILES ${3RDPARTY_DRACO_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR_LIB}") - else() - install (FILES ${3RDPARTY_DRACO_LIBRARY_REALPATH} - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_LIB}") - install (FILES ${3RDPARTY_DRACO_LIBRARY_REALPATH} - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_LIB}i") - install (FILES ${3RDPARTY_DRACO_LIBRARY_REALPATH} - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_LIB}d") - endif() -endif() +# Draco - a library for a lossy vertex data compression, used as extension to glTF format. +# https://github.com/google/draco + +OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") + +if (NOT DEFINED INSTALL_DRACO) + set (INSTALL_DRACO OFF CACHE BOOL "${INSTALL_DRACO_DESCR}") +endif() + +if (NOT DEFINED 3RDPARTY_DRACO_DIR) + set (3RDPARTY_DRACO_DIR "" CACHE PATH "The directory containing Draco") +endif() + +if (NOT DEFINED 3RDPARTY_DRACO_INCLUDE_DIR) + set (3RDPARTY_DRACO_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the Draco") +endif() + +if (NOT DEFINED 3RDPARTY_DRACO_LIBRARY OR NOT 3RDPARTY_DRACO_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_DRACO_LIBRARY_DIR}") + set (3RDPARTY_DRACO_LIBRARY "" CACHE FILEPATH "Draco library" FORCE) +endif() + +if (NOT DEFINED 3RDPARTY_DRACO_LIBRARY_DIR) + set (3RDPARTY_DRACO_LIBRARY_DIR "" CACHE PATH "The directory containing Draco library") +endif() + +if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") + if (NOT 3RDPARTY_DRACO_DIR OR NOT EXISTS "${3RDPARTY_DRACO_DIR}") + FIND_PRODUCT_DIR("${3RDPARTY_DIR}" draco DRACO_DIR_NAME) + if (DRACO_DIR_NAME) + set (3RDPARTY_DRACO_DIR "${3RDPARTY_DIR}/${DRACO_DIR_NAME}" CACHE PATH "The directory containing Draco" FORCE) + endif() + endif() +endif() + +if (3RDPARTY_DRACO_DIR AND EXISTS "${3RDPARTY_DRACO_DIR}") + set (DRACO_INCLUDE_PATH "${3RDPARTY_DRACO_DIR}/include") + set (DRACO_LIBRARY_PATH "${3RDPARTY_DRACO_DIR}/lib") +endif() + +if (NOT 3RDPARTY_DRACO_INCLUDE_DIR) + if (DRACO_INCLUDE_PATH AND EXISTS "${DRACO_INCLUDE_PATH}") + set (3RDPARTY_DRACO_INCLUDE_DIR "${DRACO_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of DRACO" FORCE) + endif() +endif() + +if (NOT 3RDPARTY_DRACO_LIBRARY_DIR) + if (DRACO_LIBRARY_PATH AND EXISTS "${DRACO_LIBRARY_PATH}") + set (3RDPARTY_DRACO_LIBRARY_DIR "${DRACO_LIBRARY_PATH}" CACHE FILEPATH "The directory containing DRACO library" FORCE) + endif() +endif() + +if (3RDPARTY_DRACO_INCLUDE_DIR AND EXISTS "${3RDPARTY_DRACO_INCLUDE_DIR}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_DRACO_INCLUDE_DIR}") +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_DRACO_INCLUDE_DIR) +endif() + +if (3RDPARTY_DRACO_DIR AND EXISTS "${3RDPARTY_DRACO_DIR}") + if (NOT 3RDPARTY_DRACO_LIBRARY OR NOT EXISTS "${3RDPARTY_DRACO_LIBRARY}") + set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a) + set (3RDPARTY_DRACO_LIBRARY "3RDPARTY_DRACO_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to Draco library" FORCE) + + find_library (3RDPARTY_DRACO_LIBRARY NAMES ${CSF_Draco} + PATHS "${3RDPARTY_DRACO_LIBRARY_DIR}" + PATH_SUFFIXES lib + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + if (3RDPARTY_DRACO_LIBRARY AND EXISTS "${3RDPARTY_DRACO_LIBRARY}") + get_filename_component (3RDPARTY_DRACO_LIBRARY_DIR "${3RDPARTY_DRACO_LIBRARY}" PATH) + set (3RDPARTY_DRACO_LIBRARY_DIR "${3RDPARTY_DRACO_LIBRARY_DIR}" CACHE FILEPATH "The directory containing Draco library" FORCE) + endif() + endif() +endif() + +if (3RDPARTY_DRACO_LIBRARY_DIR AND EXISTS "${3RDPARTY_DRACO_LIBRARY_DIR}") + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_DRACO_LIBRARY_DIR}") +else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_DRACO_LIBRARY_DIR) +endif() + +if (INSTALL_DRACO) + get_filename_component(3RDPARTY_DRACO_LIBRARY_REALPATH ${3RDPARTY_DRACO_LIBRARY} REALPATH) + if (SINGLE_GENERATOR) + install (FILES ${3RDPARTY_DRACO_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR_LIB}") + else() + install (FILES ${3RDPARTY_DRACO_LIBRARY_REALPATH} + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_LIB}") + install (FILES ${3RDPARTY_DRACO_LIBRARY_REALPATH} + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_LIB}i") + install (FILES ${3RDPARTY_DRACO_LIBRARY_REALPATH} + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_LIB}d") + endif() +endif() diff --git a/adm/cmake/egl.cmake b/adm/cmake/egl.cmake index 396ff05d24..99ead1b3d3 100644 --- a/adm/cmake/egl.cmake +++ b/adm/cmake/egl.cmake @@ -1,3 +1,3 @@ -# EGL - -THIRDPARTY_PRODUCT("EGL" "EGL/egl.h" "CSF_OpenGlesLibs" "") +# EGL + +THIRDPARTY_PRODUCT("EGL" "EGL/egl.h" "CSF_OpenGlesLibs" "") diff --git a/adm/cmake/eigen.cmake b/adm/cmake/eigen.cmake index 87b56ea464..21ce8287f8 100644 --- a/adm/cmake/eigen.cmake +++ b/adm/cmake/eigen.cmake @@ -1,87 +1,87 @@ -# eigen - -if (NOT DEFINED INSTALL_EIGEN) - set (INSTALL_EIGEN OFF CACHE BOOL "${INSTALL_EIGEN_DESCR}") -endif() - -# eigen directory -if (NOT DEFINED 3RDPARTY_EIGEN_DIR) - set (3RDPARTY_EIGEN_DIR "" CACHE PATH "The directory containing eigen") -endif() - -# search for eigen in user defined directory -if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - if (NOT 3RDPARTY_EIGEN_DIR OR NOT EXISTS "${3RDPARTY_EIGEN_DIR}") - FIND_PRODUCT_DIR("${3RDPARTY_DIR}" Eigen EIGEN_DIR_NAME) - if (EIGEN_DIR_NAME) - set (3RDPARTY_EIGEN_DIR "${3RDPARTY_DIR}/${EIGEN_DIR_NAME}" CACHE PATH "The directory containing eigen" FORCE) - endif() - endif() -endif() - -if (NOT DEFINED 3RDPARTY_EIGEN_INCLUDE_DIR) - set (3RDPARTY_EIGEN_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of the EIGEN") -endif() - -if (NOT 3RDPARTY_EIGEN_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}") - - set (HEADER_NAMES Eigen) - - set (3RDPARTY_EIGEN_INCLUDE_DIR "3RDPARTY_EIGEN_INCLUDE_DIR-NOTFOUND" CACHE PATH "the path to Eigen header file" FORCE) - - if (3RDPARTY_EIGEN_DIR AND EXISTS "${3RDPARTY_EIGEN_DIR}") - find_path (3RDPARTY_EIGEN_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATHS ${3RDPARTY_EIGEN_DIR} - PATH_SUFFIXES include eigen3 include/eigen3 - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_path (3RDPARTY_EIGEN_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATH_SUFFIXES include eigen3 include/eigen3 - CMAKE_FIND_ROOT_PATH_BOTH) - endif() - - # use default (CMake) EIGEN search - if (NOT 3RDPARTY_EIGEN_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}") - # use 3RDPARTY_EIGEN_DIR if it is specified for eigen search - if (3RDPARTY_EIGEN_DIR AND EXISTS "${3RDPARTY_EIGEN_DIR}") - set (CACHED_EIGEN_DIR $ENV{Eigen3_DIR}) - set (ENV{Eigen3_DIR} "${3RDPARTY_EIGEN_DIR}") - endif() - - find_package(Eigen3 QUIET) - - # restore ENV{Eigen3_DIR} - if (3RDPARTY_EIGEN_DIR AND EXISTS "${3RDPARTY_EIGEN_DIR}") - set (ENV{Eigen3_DIR} ${CACHED_EIGEN_DIR}) - endif() - - if (${EIGEN3_FOUND}) - set (3RDPARTY_EIGEN_INCLUDE_DIR "${EIGEN3_INCLUDE_DIR}" CACHE PATH "the path to Eigen header file" FORCE) - set (3RDPARTY_EIGEN_DIR "${EIGEN3_ROOT_DIR}" CACHE PATH "The directory containing eigen" FORCE) - endif() - endif() -endif() - -if (3RDPARTY_EIGEN_INCLUDE_DIR AND EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}") - - # Install header files - if (INSTALL_EIGEN) - file(GLOB EIGEN_SUBDIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}/*") - foreach(SUBDIR ${EIGEN_SUBDIRS}) - if(IS_DIRECTORY "${SUBDIR}") - install (DIRECTORY "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}") - else() - install (FILES "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}") - endif() - endforeach() - endif() -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_EIGEN_INCLUDE_DIR) - - set (3RDPARTY_EIGEN_INCLUDE_DIR "" CACHE PATH "the path to Eigen header file" FORCE) -endif() - -# unset all redundant variables -OCCT_CHECK_AND_UNSET(Eigen3_DIR) +# eigen + +if (NOT DEFINED INSTALL_EIGEN) + set (INSTALL_EIGEN OFF CACHE BOOL "${INSTALL_EIGEN_DESCR}") +endif() + +# eigen directory +if (NOT DEFINED 3RDPARTY_EIGEN_DIR) + set (3RDPARTY_EIGEN_DIR "" CACHE PATH "The directory containing eigen") +endif() + +# search for eigen in user defined directory +if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") + if (NOT 3RDPARTY_EIGEN_DIR OR NOT EXISTS "${3RDPARTY_EIGEN_DIR}") + FIND_PRODUCT_DIR("${3RDPARTY_DIR}" Eigen EIGEN_DIR_NAME) + if (EIGEN_DIR_NAME) + set (3RDPARTY_EIGEN_DIR "${3RDPARTY_DIR}/${EIGEN_DIR_NAME}" CACHE PATH "The directory containing eigen" FORCE) + endif() + endif() +endif() + +if (NOT DEFINED 3RDPARTY_EIGEN_INCLUDE_DIR) + set (3RDPARTY_EIGEN_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of the EIGEN") +endif() + +if (NOT 3RDPARTY_EIGEN_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}") + + set (HEADER_NAMES Eigen) + + set (3RDPARTY_EIGEN_INCLUDE_DIR "3RDPARTY_EIGEN_INCLUDE_DIR-NOTFOUND" CACHE PATH "the path to Eigen header file" FORCE) + + if (3RDPARTY_EIGEN_DIR AND EXISTS "${3RDPARTY_EIGEN_DIR}") + find_path (3RDPARTY_EIGEN_INCLUDE_DIR NAMES ${HEADER_NAMES} + PATHS ${3RDPARTY_EIGEN_DIR} + PATH_SUFFIXES include eigen3 include/eigen3 + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + else() + find_path (3RDPARTY_EIGEN_INCLUDE_DIR NAMES ${HEADER_NAMES} + PATH_SUFFIXES include eigen3 include/eigen3 + CMAKE_FIND_ROOT_PATH_BOTH) + endif() + + # use default (CMake) EIGEN search + if (NOT 3RDPARTY_EIGEN_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}") + # use 3RDPARTY_EIGEN_DIR if it is specified for eigen search + if (3RDPARTY_EIGEN_DIR AND EXISTS "${3RDPARTY_EIGEN_DIR}") + set (CACHED_EIGEN_DIR $ENV{Eigen3_DIR}) + set (ENV{Eigen3_DIR} "${3RDPARTY_EIGEN_DIR}") + endif() + + find_package(Eigen3 QUIET) + + # restore ENV{Eigen3_DIR} + if (3RDPARTY_EIGEN_DIR AND EXISTS "${3RDPARTY_EIGEN_DIR}") + set (ENV{Eigen3_DIR} ${CACHED_EIGEN_DIR}) + endif() + + if (${EIGEN3_FOUND}) + set (3RDPARTY_EIGEN_INCLUDE_DIR "${EIGEN3_INCLUDE_DIR}" CACHE PATH "the path to Eigen header file" FORCE) + set (3RDPARTY_EIGEN_DIR "${EIGEN3_ROOT_DIR}" CACHE PATH "The directory containing eigen" FORCE) + endif() + endif() +endif() + +if (3RDPARTY_EIGEN_INCLUDE_DIR AND EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}") + + # Install header files + if (INSTALL_EIGEN) + file(GLOB EIGEN_SUBDIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}/*") + foreach(SUBDIR ${EIGEN_SUBDIRS}) + if(IS_DIRECTORY "${SUBDIR}") + install (DIRECTORY "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}") + else() + install (FILES "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}") + endif() + endforeach() + endif() +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_EIGEN_INCLUDE_DIR) + + set (3RDPARTY_EIGEN_INCLUDE_DIR "" CACHE PATH "the path to Eigen header file" FORCE) +endif() + +# unset all redundant variables +OCCT_CHECK_AND_UNSET(Eigen3_DIR) diff --git a/adm/cmake/ffmpeg.cmake b/adm/cmake/ffmpeg.cmake index f619d2d410..0873a5a1a5 100644 --- a/adm/cmake/ffmpeg.cmake +++ b/adm/cmake/ffmpeg.cmake @@ -1,242 +1,242 @@ -# FFmpeg - -if (NOT DEFINED INSTALL_FFMPEG) - set (INSTALL_FFMPEG OFF CACHE BOOL "${INSTALL_FFMPEG_DESCR}") -endif() - -if (NOT DEFINED 3RDPARTY_FFMPEG_DIR) - set (3RDPARTY_FFMPEG_DIR "" CACHE PATH "The directory containing FFmpeg") -endif() - -# include occt macros. compiler_bitness, os_with_bit, compiler -OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") - -# specify FFMPEG folder in connection with 3RDPARTY_DIR -if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - if (NOT 3RDPARTY_FFMPEG_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_DIR}") - FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" FFMPEG FFMPEG_DIR_NAME) - if (FFMPEG_DIR_NAME) - set (3RDPARTY_FFMPEG_DIR "${3RDPARTY_DIR}/${FFMPEG_DIR_NAME}" CACHE PATH "The directory containing FFmpeg" FORCE) - endif() - endif() -else() -endif() - -# define required FFMPEG variables -if (NOT DEFINED 3RDPARTY_FFMPEG_INCLUDE_DIR) - set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE PATH "the path of headers directory") -endif() - -separate_arguments (CSF_FFmpeg) -foreach (LIBRARY_NAME ${CSF_FFmpeg}) - if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}") - set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg framework (${LIBRARY_NAME})" FORCE) - endif() - - if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}) - set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg framework (${LIBRARY_NAME})") - endif() - - if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR) - set (3RDPARTY_FFMPEG_LIBRARY_DIR "" CACHE PATH "The directory containing FFmpeg libraries") - endif() - - if (WIN32) - if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}") - set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg shared libraries (${LIBRARY_NAME})" FORCE) - endif() - endif() - - if (WIN32) - if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}) - set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared libraries (${LIBRARY_NAME})") - endif() - if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR) - set (3RDPARTY_FFMPEG_DLL_DIR "" CACHE PATH "The directory containing FFmpeg shared libraries") - endif() - endif() - - # check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR - if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}") - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_INCLUDE_DIR PATH "the path to FFmpeg") - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} FILEPATH "the path to FFmpeg framework (${LIBRARY_NAME})") - - if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}") - get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH) - set (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg libraries" FORCE) - set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) - else() - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg library (${LIBRARY_NAME})") - endif() - - if (WIN32) - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} FILEPATH "the path to FFmpeg shared library (${LIBRARY_NAME})") - - if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}") - get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH) - set (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg shared libraries" FORCE) - set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE) - else() - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})") - endif() - endif() - endif() -endforeach() - -# header -if (NOT 3RDPARTY_FFMPEG_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_INCLUDE_DIR}") - set (HEADER_NAMES avutil.h libavutil/avutil.h) - - # set 3RDPARTY_FFMPEG_INCLUDE_DIR as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FFMPEG_INCLUDE_DIR - set (3RDPARTY_FFMPEG_INCLUDE_DIR "3RDPARTY_FFMPEG_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "the path to header directory" FORCE) - - if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}") - find_path (3RDPARTY_FFMPEG_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATHS ${3RDPARTY_FFMPEG_DIR} - PATH_SUFFIXES include - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_path (3RDPARTY_FFMPEG_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATH_SUFFIXES include - CMAKE_FIND_ROOT_PATH_BOTH) - endif() -endif() - -if (3RDPARTY_FFMPEG_INCLUDE_DIR AND EXISTS "${3RDPARTY_FFMPEG_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FFMPEG_INCLUDE_DIR}") -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_INCLUDE_DIR) - - set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE FILEPATH "the path to avutil.h" FORCE) -endif() - -# libraries -foreach (LIBRARY_NAME ${CSF_FFmpeg}) - if (NOT 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}") - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a) - - set (FFMPEG_PATH_SUFFIXES lib) - if (ANDROID) - set (FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} libs/${ANDROID_ABI}) - elseif(APPLE) - set (FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} Frameworks) - endif() - - # set 3RDPARTY_FFMPEG_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FFMPEG_LIBRARY - set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}-NOTFOUND" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE) - - if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}") - find_library (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} NAMES ${LIBRARY_NAME} - PATHS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" "${3RDPARTY_FFMPEG_DIR}" - PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_library (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} NAMES ${LIBRARY_NAME} - PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH) - endif() - - if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}") - get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH) - set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) - else() - set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) - endif() - endif() - - if (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}") - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}") - else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}) - - set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE) - endif() - - # shared library - if (WIN32) - if (NOT 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}") - - set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) - set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}-NOTFOUND" CACHE FILEPATH "The path to FFmpeg shared library (${LIBRARY_NAME})" FORCE) - - # find FFmpeg shared library - file (GLOB 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DIR}/bin/${LIBRARY_NAME}[-][0-9]*") - - if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}") - set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" CACHE FILEPATH "FFmpeg shared library (${LIBRARY_NAME})" FORCE) - get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH) - set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) - else() - set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE) - endif() - endif() - - if (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}") - list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}") - else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}) - endif() - endif() - - # install instructions - if (INSTALL_FFMPEG) - OCCT_MAKE_OS_WITH_BITNESS() - OCCT_MAKE_COMPILER_SHORT_NAME() - - if (WIN32) - if (DEFINED INSTALL_BIN_DIR) - install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" DESTINATION "${INSTALL_BIN_DIR}") - else() - install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/${INSTALL_DIR_BIN}") - install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/${INSTALL_DIR_BIN}i") - install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/${INSTALL_DIR_BIN}d") - endif() - else() - get_filename_component(3RDPARTY_FFMPEG_LIBRARY_ABS ${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}} REALPATH) - get_filename_component(3RDPARTY_FFMPEG_LIBRARY_NAME ${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}} NAME) - - if (DEFINED INSTALL_LIB_DIR) - install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}" - DESTINATION "${INSTALL_LIB_DIR}" - RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6) - else() - install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib" - RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6) - install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libi" - RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6) - install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd" - RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6) - endif() - endif() - - set (USED_3RDPARTY_FFMPEG_DIR "") - else() - # the library directory for using by the executable - if (WIN32) - set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}) - else() - set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}) - endif() - endif() - - mark_as_advanced (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}) -endforeach() - -# unset all redundant variables -OCCT_CHECK_AND_UNSET (FFMPEG_INCLUDE_DIRS) -OCCT_CHECK_AND_UNSET (FFMPEG_LIBRARY_DIRS) -OCCT_CHECK_AND_UNSET (FFMPEG_DIR) +# FFmpeg + +if (NOT DEFINED INSTALL_FFMPEG) + set (INSTALL_FFMPEG OFF CACHE BOOL "${INSTALL_FFMPEG_DESCR}") +endif() + +if (NOT DEFINED 3RDPARTY_FFMPEG_DIR) + set (3RDPARTY_FFMPEG_DIR "" CACHE PATH "The directory containing FFmpeg") +endif() + +# include occt macros. compiler_bitness, os_with_bit, compiler +OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") + +# specify FFMPEG folder in connection with 3RDPARTY_DIR +if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") + if (NOT 3RDPARTY_FFMPEG_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_DIR}") + FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" FFMPEG FFMPEG_DIR_NAME) + if (FFMPEG_DIR_NAME) + set (3RDPARTY_FFMPEG_DIR "${3RDPARTY_DIR}/${FFMPEG_DIR_NAME}" CACHE PATH "The directory containing FFmpeg" FORCE) + endif() + endif() +else() +endif() + +# define required FFMPEG variables +if (NOT DEFINED 3RDPARTY_FFMPEG_INCLUDE_DIR) + set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE PATH "the path of headers directory") +endif() + +separate_arguments (CSF_FFmpeg) +foreach (LIBRARY_NAME ${CSF_FFmpeg}) + if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}") + set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg framework (${LIBRARY_NAME})" FORCE) + endif() + + if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}) + set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg framework (${LIBRARY_NAME})") + endif() + + if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR) + set (3RDPARTY_FFMPEG_LIBRARY_DIR "" CACHE PATH "The directory containing FFmpeg libraries") + endif() + + if (WIN32) + if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}") + set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg shared libraries (${LIBRARY_NAME})" FORCE) + endif() + endif() + + if (WIN32) + if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}) + set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared libraries (${LIBRARY_NAME})") + endif() + if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR) + set (3RDPARTY_FFMPEG_DLL_DIR "" CACHE PATH "The directory containing FFmpeg shared libraries") + endif() + endif() + + # check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR + if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}") + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_INCLUDE_DIR PATH "the path to FFmpeg") + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} FILEPATH "the path to FFmpeg framework (${LIBRARY_NAME})") + + if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}") + get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH) + set (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg libraries" FORCE) + set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) + else() + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg library (${LIBRARY_NAME})") + endif() + + if (WIN32) + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} FILEPATH "the path to FFmpeg shared library (${LIBRARY_NAME})") + + if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}") + get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH) + set (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg shared libraries" FORCE) + set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE) + else() + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})") + endif() + endif() + endif() +endforeach() + +# header +if (NOT 3RDPARTY_FFMPEG_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_INCLUDE_DIR}") + set (HEADER_NAMES avutil.h libavutil/avutil.h) + + # set 3RDPARTY_FFMPEG_INCLUDE_DIR as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FFMPEG_INCLUDE_DIR + set (3RDPARTY_FFMPEG_INCLUDE_DIR "3RDPARTY_FFMPEG_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "the path to header directory" FORCE) + + if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}") + find_path (3RDPARTY_FFMPEG_INCLUDE_DIR NAMES ${HEADER_NAMES} + PATHS ${3RDPARTY_FFMPEG_DIR} + PATH_SUFFIXES include + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + else() + find_path (3RDPARTY_FFMPEG_INCLUDE_DIR NAMES ${HEADER_NAMES} + PATH_SUFFIXES include + CMAKE_FIND_ROOT_PATH_BOTH) + endif() +endif() + +if (3RDPARTY_FFMPEG_INCLUDE_DIR AND EXISTS "${3RDPARTY_FFMPEG_INCLUDE_DIR}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FFMPEG_INCLUDE_DIR}") +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_INCLUDE_DIR) + + set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE FILEPATH "the path to avutil.h" FORCE) +endif() + +# libraries +foreach (LIBRARY_NAME ${CSF_FFmpeg}) + if (NOT 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}") + set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a) + + set (FFMPEG_PATH_SUFFIXES lib) + if (ANDROID) + set (FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} libs/${ANDROID_ABI}) + elseif(APPLE) + set (FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} Frameworks) + endif() + + # set 3RDPARTY_FFMPEG_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FFMPEG_LIBRARY + set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}-NOTFOUND" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE) + + if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}") + find_library (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} NAMES ${LIBRARY_NAME} + PATHS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" "${3RDPARTY_FFMPEG_DIR}" + PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + else() + find_library (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} NAMES ${LIBRARY_NAME} + PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH) + endif() + + if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}") + get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH) + set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) + else() + set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) + endif() + endif() + + if (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}") + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}") + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}) + + set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE) + endif() + + # shared library + if (WIN32) + if (NOT 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}") + + set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) + set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}-NOTFOUND" CACHE FILEPATH "The path to FFmpeg shared library (${LIBRARY_NAME})" FORCE) + + # find FFmpeg shared library + file (GLOB 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DIR}/bin/${LIBRARY_NAME}[-][0-9]*") + + if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}") + set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" CACHE FILEPATH "FFmpeg shared library (${LIBRARY_NAME})" FORCE) + get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH) + set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) + else() + set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE) + endif() + endif() + + if (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}") + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}") + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}) + endif() + endif() + + # install instructions + if (INSTALL_FFMPEG) + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + + if (WIN32) + if (DEFINED INSTALL_BIN_DIR) + install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" DESTINATION "${INSTALL_BIN_DIR}") + else() + install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/${INSTALL_DIR_BIN}") + install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/${INSTALL_DIR_BIN}i") + install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/${INSTALL_DIR_BIN}d") + endif() + else() + get_filename_component(3RDPARTY_FFMPEG_LIBRARY_ABS ${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}} REALPATH) + get_filename_component(3RDPARTY_FFMPEG_LIBRARY_NAME ${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}} NAME) + + if (DEFINED INSTALL_LIB_DIR) + install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}" + DESTINATION "${INSTALL_LIB_DIR}" + RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6) + else() + install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib" + RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6) + install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libi" + RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6) + install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd" + RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6) + endif() + endif() + + set (USED_3RDPARTY_FFMPEG_DIR "") + else() + # the library directory for using by the executable + if (WIN32) + set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}) + else() + set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}) + endif() + endif() + + mark_as_advanced (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}) +endforeach() + +# unset all redundant variables +OCCT_CHECK_AND_UNSET (FFMPEG_INCLUDE_DIRS) +OCCT_CHECK_AND_UNSET (FFMPEG_LIBRARY_DIRS) +OCCT_CHECK_AND_UNSET (FFMPEG_DIR) diff --git a/adm/cmake/flex.cmake b/adm/cmake/flex.cmake index b59a9cff79..cc0b9748b4 100644 --- a/adm/cmake/flex.cmake +++ b/adm/cmake/flex.cmake @@ -1,33 +1,33 @@ -# flex - -# execute FindFLEX script by "find_package (Flex)" is required to define FLEX_TARGET macro - -# delete obsolete 3RDPARTY_FLEX_EXECUTABLE cache variable (not used anymore) -unset (3RDPARTY_FLEX_EXECUTABLE CACHE) - -# delete FLEX_EXECUTABLE cache variable if it is empty, otherwise find_package will fail -# without reasonable diagnostic -if (NOT FLEX_EXECUTABLE OR NOT EXISTS "${FLEX_EXECUTABLE}") - unset (FLEX_EXECUTABLE CACHE) -endif() -if (NOT FLEX_INCLUDE_DIR OR NOT EXISTS "${FLEX_INCLUDE_DIR}") - unset (FLEX_INCLUDE_DIR CACHE) -endif() - -# Add paths to 3rdparty subfolders containing name "flex" to CMAKE_PROGRAM_PATH and -# CMAKE_INCLUDE_PATH variables to make these paths searhed by find_package -if (3RDPARTY_DIR) - file (GLOB FLEX_PATHS LIST_DIRECTORIES true "${3RDPARTY_DIR}/*flex*") - foreach (candidate_path ${FLEX_PATHS}) - if (IS_DIRECTORY ${candidate_path}) - list (APPEND CMAKE_PROGRAM_PATH ${candidate_path}) - list (APPEND CMAKE_INCLUDE_PATH ${candidate_path}) - endif() - endforeach() -endif() - -find_package (FLEX 2.6.4) - -if (NOT FLEX_FOUND OR NOT FLEX_INCLUDE_DIR OR NOT EXISTS "${FLEX_INCLUDE_DIR}/FlexLexer.h") - list (APPEND 3RDPARTY_NOT_INCLUDED FLEX_INCLUDE_DIR) -endif() +# flex + +# execute FindFLEX script by "find_package (Flex)" is required to define FLEX_TARGET macro + +# delete obsolete 3RDPARTY_FLEX_EXECUTABLE cache variable (not used anymore) +unset (3RDPARTY_FLEX_EXECUTABLE CACHE) + +# delete FLEX_EXECUTABLE cache variable if it is empty, otherwise find_package will fail +# without reasonable diagnostic +if (NOT FLEX_EXECUTABLE OR NOT EXISTS "${FLEX_EXECUTABLE}") + unset (FLEX_EXECUTABLE CACHE) +endif() +if (NOT FLEX_INCLUDE_DIR OR NOT EXISTS "${FLEX_INCLUDE_DIR}") + unset (FLEX_INCLUDE_DIR CACHE) +endif() + +# Add paths to 3rdparty subfolders containing name "flex" to CMAKE_PROGRAM_PATH and +# CMAKE_INCLUDE_PATH variables to make these paths searhed by find_package +if (3RDPARTY_DIR) + file (GLOB FLEX_PATHS LIST_DIRECTORIES true "${3RDPARTY_DIR}/*flex*") + foreach (candidate_path ${FLEX_PATHS}) + if (IS_DIRECTORY ${candidate_path}) + list (APPEND CMAKE_PROGRAM_PATH ${candidate_path}) + list (APPEND CMAKE_INCLUDE_PATH ${candidate_path}) + endif() + endforeach() +endif() + +find_package (FLEX 2.6.4) + +if (NOT FLEX_FOUND OR NOT FLEX_INCLUDE_DIR OR NOT EXISTS "${FLEX_INCLUDE_DIR}/FlexLexer.h") + list (APPEND 3RDPARTY_NOT_INCLUDED FLEX_INCLUDE_DIR) +endif() diff --git a/adm/cmake/freeimage.cmake b/adm/cmake/freeimage.cmake index 50f32cb20d..5f6958b81d 100644 --- a/adm/cmake/freeimage.cmake +++ b/adm/cmake/freeimage.cmake @@ -1,3 +1,3 @@ -#freeimage - -THIRDPARTY_PRODUCT("FREEIMAGE" "FreeImage.h" "CSF_FreeImagePlus" "d") +#freeimage + +THIRDPARTY_PRODUCT("FREEIMAGE" "FreeImage.h" "CSF_FreeImagePlus" "d") diff --git a/adm/cmake/freetype.cmake b/adm/cmake/freetype.cmake index 8563c24f28..ee3f95d813 100644 --- a/adm/cmake/freetype.cmake +++ b/adm/cmake/freetype.cmake @@ -1,384 +1,384 @@ -# freetype - -if (NOT DEFINED INSTALL_FREETYPE AND BUILD_SHARED_LIBS) - set (INSTALL_FREETYPE OFF CACHE BOOL "${INSTALL_FREETYPE_DESCR}") -endif() - -if (NOT DEFINED 3RDPARTY_FREETYPE_DIR) - set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype") -endif() - -# include occt macros. compiler_bitness, os_wiht_bit, compiler -OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") - -OCCT_MAKE_COMPILER_SHORT_NAME() -OCCT_MAKE_COMPILER_BITNESS() - -# specify freetype folder in connectin with 3RDPARTY_DIR -if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - #CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_DIR 3RDPARTY_FREETYPE_DIR PATH "The directory containing freetype") - - if (NOT 3RDPARTY_FREETYPE_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DIR}") - FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" FREETYPE FREETYPE_DIR_NAME) - if (FREETYPE_DIR_NAME) - set (3RDPARTY_FREETYPE_DIR "${3RDPARTY_DIR}/${FREETYPE_DIR_NAME}" CACHE PATH "The directory containing freetype" FORCE) - endif() - endif() -else() - #set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype" FORCE) -endif() - -# define required freetype variables -if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) - set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "the path of ft2build.h") -endif() - -if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) - set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path of freetype2") -endif() - -if (BUILD_SHARED_LIBS) - if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY OR NOT 3RDPARTY_FREETYPE_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") - set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE) - endif() - - if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY_DIR) - set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library") - endif() - - if (WIN32) - if (NOT DEFINED 3RDPARTY_FREETYPE_DLL OR NOT 3RDPARTY_FREETYPE_DLL_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}") - set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE) - endif() - endif() - - if (WIN32) - if (NOT DEFINED 3RDPARTY_FREETYPE_DLL_DIR) - set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE PATH "The directory containing freetype shared library") - endif() - endif() -endif() - -# check 3RDPARTY_FREETYPE_ paths for consistency with specified 3RDPARTY_FREETYPE_DIR -if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build FILEPATH "The directory containing ft2build.h header") - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 FILEPATH "The directory containing ftheader.h header") - if (BUILD_SHARED_LIBS) - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_LIBRARY FILEPATH "the path to freetype library") - - if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") - get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH) - set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE) - else() - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_LIBRARY_DIR PATH "The directory containing freetype library") - endif() - - if (WIN32) - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_DLL FILEPATH "the path to freetype shared library") - - if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}") - get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH) - set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE PATH "The directory containing freetype shared library" FORCE) - else() - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_DLL_DIR PATH "The directory containing freetype shared library") - endif() - endif() - endif() -endif() - -# the FIRST step in search for freetype library and header folders (built-in search engine) - -# execute built-in search engine to seek freetype -set (IS_BUILTIN_SEARCH_REQUIRED OFF) -if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") - set (IS_BUILTIN_SEARCH_REQUIRED ON) -elseif (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") - set (IS_BUILTIN_SEARCH_REQUIRED ON) -elseif (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") - set (IS_BUILTIN_SEARCH_REQUIRED ON) -#elseif (WIN32) - #if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}") - # set (IS_BUILTIN_SEARCH_REQUIRED ON) - #endif() -endif() - -if (IS_BUILTIN_SEARCH_REQUIRED) - - # use 3RDPARTY_FREETYPE_DIR if it is specified for freetype search - if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") - set (CACHED_FREETYPE_DIR $ENV{FREETYPE_DIR}) - set (ENV{FREETYPE_DIR} "${3RDPARTY_FREETYPE_DIR}") - endif() - - unset (FREETYPE_LIBRARY_RELEASE) - find_package(Freetype) - - # Only for UNIX (not APPLE) - if ((NOT WIN32) AND (NOT APPLE)) - # To avoid linker error on Ubuntu 18.04 and others linux distributives we should - # link with freetype library, compiled as Position Independent Code (PIC), - # for example, with shared object. - if ((DEFINED FREETYPE_LIBRARY_RELEASE) AND (NOT "${FREETYPE_LIBRARY_RELEASE}" STREQUAL "") AND (EXISTS "${FREETYPE_LIBRARY_RELEASE}")) - string (REPLACE "\.a" "\.so" FREETYPE_LIBRARY_RELEASE "${FREETYPE_LIBRARY_RELEASE}") - endif() - endif() - - # restore ENV{FREETYPE_DIR} - if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") - set (ENV{FREETYPE_DIR} ${CACHED_FREETYPE_DIR}) - endif() - - # check the found paths for consistency with specified 3RDPARTY_FREETYPE_DIR - if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_INCLUDE_DIR_ft2build FILEPATH "The directory containing ft2build.h header") - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_INCLUDE_DIR_freetype2 FILEPATH "The directory containing ftheader.h header") - if (BUILD_SHARED_LIBS) - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_LIBRARY_RELEASE FILEPATH "freetype library") - endif() - endif() - - # assign the found paths to corresponding 3RDPARTY_FREETYPE_ variables - if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") - if (FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${FREETYPE_INCLUDE_DIR_ft2build}") - set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_INCLUDE_DIR_ft2build}" CACHE FILEPATH "The directory containing ft2build.h header" FORCE) - endif() - endif() - - if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") - if (FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") - set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_INCLUDE_DIR_freetype2}" CACHE FILEPATH "The directory containing ftheader.h header" FORCE) - endif() - endif() - - if (BUILD_SHARED_LIBS) - if (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") - if (FREETYPE_LIBRARY_RELEASE AND EXISTS "${FREETYPE_LIBRARY_RELEASE}") - set (3RDPARTY_FREETYPE_LIBRARY "${FREETYPE_LIBRARY_RELEASE}" CACHE FILEPATH "The path to freetype library" FORCE) - endif() - endif() - - if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") - get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH) - set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE) - else() - set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library" FORCE) - endif() - endif() -endif() - -# the SECOND step in search for freetype library and header folders (additional search algorithms) - -# ft2build.h -if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") - set (FT2BUILD_NAMES ft2build.h config/ft2build.h freetype/config/ft2build.h) - - # set 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build - set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build-NOTFOUND" CACHE FILEPATH "The directory containing ft2build.h header" FORCE) - - # cmake (version < 3.0) doesn't find ft2build.h of freetype (version is >= 2.5.1) - # do search taking into account freetype structure of 2.5.1 version - if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") - find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build NAMES ${FT2BUILD_NAMES} - PATHS ${3RDPARTY_FREETYPE_DIR} - PATH_SUFFIXES include freetype2 include/freetype2 - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build NAMES ${FT2BUILD_NAMES} - PATHS /usr/X11R6 /usr/local/X11R6 /usr/local/X11 /usr/freeware - PATH_SUFFIXES include/freetype2 include freetype2 - CMAKE_FIND_ROOT_PATH_BOTH) - endif() -endif() - -if (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) - - set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "The directory containing ft2build.h header" FORCE) -endif() - -# ftheader.h -if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") - set (FTHEADER_NAMES ftheader.h config/ftheader.h freetype/config/ftheader.h) - - # set 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 - set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2-NOTFOUND" CACHE FILEPATH "The directory containing ftheader.h header" FORCE) - - if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") - find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 NAMES ${FTHEADER_NAMES} - HINTS ${3RDPARTY_FREETYPE_DIR} - PATH_SUFFIXES include/freetype2 include freetype2 - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 NAMES ${FTHEADER_NAMES} - PATHS /usr/X11R6 /usr/local/X11R6 /usr/local/X11 /usr/freeware - PATH_SUFFIXES include/freetype2 include freetype2 - CMAKE_FIND_ROOT_PATH_BOTH) - endif() -endif() - -if (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) - - set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "The directory containing ftheader.h header" FORCE) -endif() - -# freetype library -#if (BUILD_SHARED_LIBS) - if (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib) - - set (FREETYPE_PATH_SUFFIXES lib) - if (ANDROID) - set (FREETYPE_PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES} libs/${ANDROID_ABI}) - endif() - - # set 3RDPARTY_FREETYPE_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_LIBRARY - set (3RDPARTY_FREETYPE_LIBRARY "3RDPARTY_FREETYPE_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to freetype library" FORCE) - - if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") - find_library (3RDPARTY_FREETYPE_LIBRARY ${CSF_FREETYPE} - PATHS "${3RDPARTY_FREETYPE_LIBRARY_DIR}" "${3RDPARTY_FREETYPE_DIR}" - PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_library (3RDPARTY_FREETYPE_LIBRARY ${CSF_FREETYPE} - PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH) - endif() - - # Only for UNIX (not APPLE) - if ((NOT WIN32) AND (NOT APPLE)) - # To avoid linker error on Ubuntu 18.04 and some others linux distributives we should - # link with freetype library, compiled as Position Independent Code (PIC), - # for example, with shared object. - if ((DEFINED 3RDPARTY_FREETYPE_LIBRARY) AND (NOT "${3RDPARTY_FREETYPE_LIBRARY}" STREQUAL "") AND (EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")) - string (REPLACE "\.a" "\.so" 3RDPARTY_FREETYPE_LIBRARY "${3RDPARTY_FREETYPE_LIBRARY}") - endif() - endif() - - if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") - get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH) - set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE) - else() - set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library" FORCE) - endif() - endif() - - if (3RDPARTY_FREETYPE_LIBRARY_DIR AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") - else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_FREETYPE_LIBRARY_DIR) - - set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "The path to freetype library" FORCE) - endif() - - # freetype shared library - if (WIN32) - if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}") - - set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) - - # set 3RDPARTY_FREETYPE_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_DLL - set (3RDPARTY_FREETYPE_DLL "3RDPARTY_FREETYPE_DLL-NOTFOUND" CACHE FILEPATH "The path to freetype shared library" FORCE) - - if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") - find_library (3RDPARTY_FREETYPE_DLL ${CSF_FREETYPE} - PATHS "${3RDPARTY_FREETYPE_DIR}" - PATH_SUFFIXES bin - NO_DEFAULT_PATH) - else() - find_library (3RDPARTY_FREETYPE_DLL ${CSF_FREETYPE} - PATH_SUFFIXES bin) - endif() - - if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}") - get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH) - set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE PATH "The directory containing freetype library" FORCE) - else() - set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE PATH "The directory containing freetype shared library" FORCE) - - set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE) - endif() - endif() - - if (3RDPARTY_FREETYPE_DLL_DIR OR EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}") - list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FREETYPE_DLL_DIR}") - else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_FREETYPE_DLL_DIR) - endif() - endif() - - # install instructions - if (INSTALL_FREETYPE) - OCCT_MAKE_OS_WITH_BITNESS() - - if (WIN32) - if (SINGLE_GENERATOR) - install (FILES "${3RDPARTY_FREETYPE_DLL}" DESTINATION "${INSTALL_DIR_BIN}") - else() - install (FILES "${3RDPARTY_FREETYPE_DLL}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_BIN}") - install (FILES "${3RDPARTY_FREETYPE_DLL}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_BIN}i") - install (FILES "${3RDPARTY_FREETYPE_DLL}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_BIN}d") - endif() - else() - get_filename_component(3RDPARTY_FREETYPE_LIBRARY_ABS ${3RDPARTY_FREETYPE_LIBRARY} REALPATH) - get_filename_component(3RDPARTY_FREETYPE_LIBRARY_NAME ${3RDPARTY_FREETYPE_LIBRARY} NAME) - - if (SINGLE_GENERATOR) - install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}" - DESTINATION "${INSTALL_DIR_LIB}" - RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6) - else() - install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_LIB}" - RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6) - install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_LIB}i" - RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6) - install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_LIB}d" - RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6) - endif() - endif() - - set (USED_3RDPARTY_FREETYPE_DIR "") - else() - # the library directory for using by the executable - if (WIN32) - set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_DLL_DIR}) - else() - set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_LIBRARY_DIR}) - endif() - endif() -#endif() - -# unset all redundant variables -OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_ft2build) -OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_freetype2) -OCCT_CHECK_AND_UNSET(FREETYPE_LIBRARY_RELEASE) - -if (BUILD_SHARED_LIBS) - mark_as_advanced (3RDPARTY_FREETYPE_LIBRARY 3RDPARTY_FREETYPE_DLL) -else() - OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_DLL) - OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_DLL_DIR) - OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_LIBRARY) - OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_LIBRARY_DIR) - OCCT_CHECK_AND_UNSET(INSTALL_FREETYPE) -endif() +# freetype + +if (NOT DEFINED INSTALL_FREETYPE AND BUILD_SHARED_LIBS) + set (INSTALL_FREETYPE OFF CACHE BOOL "${INSTALL_FREETYPE_DESCR}") +endif() + +if (NOT DEFINED 3RDPARTY_FREETYPE_DIR) + set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype") +endif() + +# include occt macros. compiler_bitness, os_wiht_bit, compiler +OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") + +OCCT_MAKE_COMPILER_SHORT_NAME() +OCCT_MAKE_COMPILER_BITNESS() + +# specify freetype folder in connectin with 3RDPARTY_DIR +if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") + #CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_DIR 3RDPARTY_FREETYPE_DIR PATH "The directory containing freetype") + + if (NOT 3RDPARTY_FREETYPE_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DIR}") + FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" FREETYPE FREETYPE_DIR_NAME) + if (FREETYPE_DIR_NAME) + set (3RDPARTY_FREETYPE_DIR "${3RDPARTY_DIR}/${FREETYPE_DIR_NAME}" CACHE PATH "The directory containing freetype" FORCE) + endif() + endif() +else() + #set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype" FORCE) +endif() + +# define required freetype variables +if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) + set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "the path of ft2build.h") +endif() + +if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) + set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path of freetype2") +endif() + +if (BUILD_SHARED_LIBS) + if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY OR NOT 3RDPARTY_FREETYPE_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") + set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE) + endif() + + if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY_DIR) + set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library") + endif() + + if (WIN32) + if (NOT DEFINED 3RDPARTY_FREETYPE_DLL OR NOT 3RDPARTY_FREETYPE_DLL_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}") + set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE) + endif() + endif() + + if (WIN32) + if (NOT DEFINED 3RDPARTY_FREETYPE_DLL_DIR) + set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE PATH "The directory containing freetype shared library") + endif() + endif() +endif() + +# check 3RDPARTY_FREETYPE_ paths for consistency with specified 3RDPARTY_FREETYPE_DIR +if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build FILEPATH "The directory containing ft2build.h header") + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 FILEPATH "The directory containing ftheader.h header") + if (BUILD_SHARED_LIBS) + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_LIBRARY FILEPATH "the path to freetype library") + + if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") + get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH) + set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE) + else() + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_LIBRARY_DIR PATH "The directory containing freetype library") + endif() + + if (WIN32) + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_DLL FILEPATH "the path to freetype shared library") + + if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}") + get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH) + set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE PATH "The directory containing freetype shared library" FORCE) + else() + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_DLL_DIR PATH "The directory containing freetype shared library") + endif() + endif() + endif() +endif() + +# the FIRST step in search for freetype library and header folders (built-in search engine) + +# execute built-in search engine to seek freetype +set (IS_BUILTIN_SEARCH_REQUIRED OFF) +if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") + set (IS_BUILTIN_SEARCH_REQUIRED ON) +elseif (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") + set (IS_BUILTIN_SEARCH_REQUIRED ON) +elseif (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") + set (IS_BUILTIN_SEARCH_REQUIRED ON) +#elseif (WIN32) + #if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}") + # set (IS_BUILTIN_SEARCH_REQUIRED ON) + #endif() +endif() + +if (IS_BUILTIN_SEARCH_REQUIRED) + + # use 3RDPARTY_FREETYPE_DIR if it is specified for freetype search + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + set (CACHED_FREETYPE_DIR $ENV{FREETYPE_DIR}) + set (ENV{FREETYPE_DIR} "${3RDPARTY_FREETYPE_DIR}") + endif() + + unset (FREETYPE_LIBRARY_RELEASE) + find_package(Freetype) + + # Only for UNIX (not APPLE) + if ((NOT WIN32) AND (NOT APPLE)) + # To avoid linker error on Ubuntu 18.04 and others linux distributives we should + # link with freetype library, compiled as Position Independent Code (PIC), + # for example, with shared object. + if ((DEFINED FREETYPE_LIBRARY_RELEASE) AND (NOT "${FREETYPE_LIBRARY_RELEASE}" STREQUAL "") AND (EXISTS "${FREETYPE_LIBRARY_RELEASE}")) + string (REPLACE "\.a" "\.so" FREETYPE_LIBRARY_RELEASE "${FREETYPE_LIBRARY_RELEASE}") + endif() + endif() + + # restore ENV{FREETYPE_DIR} + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + set (ENV{FREETYPE_DIR} ${CACHED_FREETYPE_DIR}) + endif() + + # check the found paths for consistency with specified 3RDPARTY_FREETYPE_DIR + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_INCLUDE_DIR_ft2build FILEPATH "The directory containing ft2build.h header") + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_INCLUDE_DIR_freetype2 FILEPATH "The directory containing ftheader.h header") + if (BUILD_SHARED_LIBS) + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_LIBRARY_RELEASE FILEPATH "freetype library") + endif() + endif() + + # assign the found paths to corresponding 3RDPARTY_FREETYPE_ variables + if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") + if (FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${FREETYPE_INCLUDE_DIR_ft2build}") + set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_INCLUDE_DIR_ft2build}" CACHE FILEPATH "The directory containing ft2build.h header" FORCE) + endif() + endif() + + if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") + if (FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") + set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_INCLUDE_DIR_freetype2}" CACHE FILEPATH "The directory containing ftheader.h header" FORCE) + endif() + endif() + + if (BUILD_SHARED_LIBS) + if (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") + if (FREETYPE_LIBRARY_RELEASE AND EXISTS "${FREETYPE_LIBRARY_RELEASE}") + set (3RDPARTY_FREETYPE_LIBRARY "${FREETYPE_LIBRARY_RELEASE}" CACHE FILEPATH "The path to freetype library" FORCE) + endif() + endif() + + if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") + get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH) + set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE) + else() + set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library" FORCE) + endif() + endif() +endif() + +# the SECOND step in search for freetype library and header folders (additional search algorithms) + +# ft2build.h +if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") + set (FT2BUILD_NAMES ft2build.h config/ft2build.h freetype/config/ft2build.h) + + # set 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build + set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build-NOTFOUND" CACHE FILEPATH "The directory containing ft2build.h header" FORCE) + + # cmake (version < 3.0) doesn't find ft2build.h of freetype (version is >= 2.5.1) + # do search taking into account freetype structure of 2.5.1 version + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build NAMES ${FT2BUILD_NAMES} + PATHS ${3RDPARTY_FREETYPE_DIR} + PATH_SUFFIXES include freetype2 include/freetype2 + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + else() + find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build NAMES ${FT2BUILD_NAMES} + PATHS /usr/X11R6 /usr/local/X11R6 /usr/local/X11 /usr/freeware + PATH_SUFFIXES include/freetype2 include freetype2 + CMAKE_FIND_ROOT_PATH_BOTH) + endif() +endif() + +if (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) + + set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "The directory containing ft2build.h header" FORCE) +endif() + +# ftheader.h +if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") + set (FTHEADER_NAMES ftheader.h config/ftheader.h freetype/config/ftheader.h) + + # set 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 + set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2-NOTFOUND" CACHE FILEPATH "The directory containing ftheader.h header" FORCE) + + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 NAMES ${FTHEADER_NAMES} + HINTS ${3RDPARTY_FREETYPE_DIR} + PATH_SUFFIXES include/freetype2 include freetype2 + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + else() + find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 NAMES ${FTHEADER_NAMES} + PATHS /usr/X11R6 /usr/local/X11R6 /usr/local/X11 /usr/freeware + PATH_SUFFIXES include/freetype2 include freetype2 + CMAKE_FIND_ROOT_PATH_BOTH) + endif() +endif() + +if (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) + + set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "The directory containing ftheader.h header" FORCE) +endif() + +# freetype library +#if (BUILD_SHARED_LIBS) + if (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") + set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib) + + set (FREETYPE_PATH_SUFFIXES lib) + if (ANDROID) + set (FREETYPE_PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES} libs/${ANDROID_ABI}) + endif() + + # set 3RDPARTY_FREETYPE_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_LIBRARY + set (3RDPARTY_FREETYPE_LIBRARY "3RDPARTY_FREETYPE_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to freetype library" FORCE) + + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + find_library (3RDPARTY_FREETYPE_LIBRARY ${CSF_FREETYPE} + PATHS "${3RDPARTY_FREETYPE_LIBRARY_DIR}" "${3RDPARTY_FREETYPE_DIR}" + PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + else() + find_library (3RDPARTY_FREETYPE_LIBRARY ${CSF_FREETYPE} + PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH) + endif() + + # Only for UNIX (not APPLE) + if ((NOT WIN32) AND (NOT APPLE)) + # To avoid linker error on Ubuntu 18.04 and some others linux distributives we should + # link with freetype library, compiled as Position Independent Code (PIC), + # for example, with shared object. + if ((DEFINED 3RDPARTY_FREETYPE_LIBRARY) AND (NOT "${3RDPARTY_FREETYPE_LIBRARY}" STREQUAL "") AND (EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")) + string (REPLACE "\.a" "\.so" 3RDPARTY_FREETYPE_LIBRARY "${3RDPARTY_FREETYPE_LIBRARY}") + endif() + endif() + + if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") + get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH) + set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE) + else() + set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library" FORCE) + endif() + endif() + + if (3RDPARTY_FREETYPE_LIBRARY_DIR AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_FREETYPE_LIBRARY_DIR) + + set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "The path to freetype library" FORCE) + endif() + + # freetype shared library + if (WIN32) + if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}") + + set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) + + # set 3RDPARTY_FREETYPE_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_DLL + set (3RDPARTY_FREETYPE_DLL "3RDPARTY_FREETYPE_DLL-NOTFOUND" CACHE FILEPATH "The path to freetype shared library" FORCE) + + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + find_library (3RDPARTY_FREETYPE_DLL ${CSF_FREETYPE} + PATHS "${3RDPARTY_FREETYPE_DIR}" + PATH_SUFFIXES bin + NO_DEFAULT_PATH) + else() + find_library (3RDPARTY_FREETYPE_DLL ${CSF_FREETYPE} + PATH_SUFFIXES bin) + endif() + + if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}") + get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH) + set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE PATH "The directory containing freetype library" FORCE) + else() + set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE PATH "The directory containing freetype shared library" FORCE) + + set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE) + endif() + endif() + + if (3RDPARTY_FREETYPE_DLL_DIR OR EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}") + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FREETYPE_DLL_DIR}") + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_FREETYPE_DLL_DIR) + endif() + endif() + + # install instructions + if (INSTALL_FREETYPE) + OCCT_MAKE_OS_WITH_BITNESS() + + if (WIN32) + if (SINGLE_GENERATOR) + install (FILES "${3RDPARTY_FREETYPE_DLL}" DESTINATION "${INSTALL_DIR_BIN}") + else() + install (FILES "${3RDPARTY_FREETYPE_DLL}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_BIN}") + install (FILES "${3RDPARTY_FREETYPE_DLL}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_BIN}i") + install (FILES "${3RDPARTY_FREETYPE_DLL}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_BIN}d") + endif() + else() + get_filename_component(3RDPARTY_FREETYPE_LIBRARY_ABS ${3RDPARTY_FREETYPE_LIBRARY} REALPATH) + get_filename_component(3RDPARTY_FREETYPE_LIBRARY_NAME ${3RDPARTY_FREETYPE_LIBRARY} NAME) + + if (SINGLE_GENERATOR) + install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}" + DESTINATION "${INSTALL_DIR_LIB}" + RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6) + else() + install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_LIB}" + RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6) + install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_LIB}i" + RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6) + install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_LIB}d" + RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6) + endif() + endif() + + set (USED_3RDPARTY_FREETYPE_DIR "") + else() + # the library directory for using by the executable + if (WIN32) + set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_DLL_DIR}) + else() + set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_LIBRARY_DIR}) + endif() + endif() +#endif() + +# unset all redundant variables +OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_ft2build) +OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_freetype2) +OCCT_CHECK_AND_UNSET(FREETYPE_LIBRARY_RELEASE) + +if (BUILD_SHARED_LIBS) + mark_as_advanced (3RDPARTY_FREETYPE_LIBRARY 3RDPARTY_FREETYPE_DLL) +else() + OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_DLL) + OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_DLL_DIR) + OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_LIBRARY) + OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_LIBRARY_DIR) + OCCT_CHECK_AND_UNSET(INSTALL_FREETYPE) +endif() diff --git a/adm/cmake/gles2.cmake b/adm/cmake/gles2.cmake index ecc4f8d2b7..ac588f5fba 100644 --- a/adm/cmake/gles2.cmake +++ b/adm/cmake/gles2.cmake @@ -1,3 +1,3 @@ -# OpenGL ES 2.0 - -THIRDPARTY_PRODUCT("GLES2" "GLES2/gl2.h" "CSF_OpenGlesLibs" "") +# OpenGL ES 2.0 + +THIRDPARTY_PRODUCT("GLES2" "GLES2/gl2.h" "CSF_OpenGlesLibs" "") diff --git a/adm/cmake/glx.cmake b/adm/cmake/glx.cmake index b5fa891321..95e931224a 100644 --- a/adm/cmake/glx.cmake +++ b/adm/cmake/glx.cmake @@ -1,4 +1,4 @@ -# glx - -separate_arguments (CSF_OpenGlLibs) -THIRDPARTY_PRODUCT("GLX" "GL/glx.h" "CSF_OpenGlLibs" "d") +# glx + +separate_arguments (CSF_OpenGlLibs) +THIRDPARTY_PRODUCT("GLX" "GL/glx.h" "CSF_OpenGlLibs" "d") diff --git a/adm/cmake/occt_csf.cmake b/adm/cmake/occt_csf.cmake index bee8ba78d9..bef8635af8 100644 --- a/adm/cmake/occt_csf.cmake +++ b/adm/cmake/occt_csf.cmake @@ -1,150 +1,150 @@ -# CSF variables definition - -if(CSFS_ALREADY_INCLUDED) - return() -endif() -set(CSFS_ALREADY_INCLUDED 1) - - -if (NOT DEFINED USE_TCL) - OCCT_IS_PRODUCT_REQUIRED (CSF_TclLibs USE_TCL) -endif() - -# TBB -if (USE_TBB) - set (CSF_TBB "tbb tbbmalloc") -else() - set (CSF_TBB) -endif() - -# FREETYPE -if (USE_FREETYPE) - set (CSF_FREETYPE "freetype") -else() - set (CSF_FREETYPE) -endif() - -# FFmpeg -if (USE_FFMPEG) - set (CSF_FFmpeg "avcodec avformat swscale avutil") -else() - set (CSF_FFmpeg) -endif() - -# FREEIMAGE -if (USE_FREEIMAGE) - set (CSF_FreeImagePlus "freeimage") -else() - if (WIN32) - set (CSF_FreeImagePlus "windowscodecs") - else() - set (CSF_FreeImagePlus) - endif() -endif() - -# OpenVR -if (USE_OPENVR) - set (CSF_OpenVR "openvr_api") -else() - set (CSF_OpenVR) -endif() - -# TCL -if (USE_TCL) - if (WIN32) - set (CSF_TclLibs "tcl86") - else() - if(APPLE) - set (CSF_TclLibs Tcl) - elseif(UNIX) - set (CSF_TclLibs "tcl8.6") - endif() - endif() -endif() - -# TK -if (USE_TK) - if (WIN32) - set (CSF_TclTkLibs "tk86") - else() - if(APPLE) - set (CSF_TclTkLibs Tk) - elseif(UNIX) - set (CSF_TclTkLibs "tk8.6") - endif() - endif() -endif() - -# Draco -if (USE_DRACO) - set (CSF_Draco "draco") -else() - set (CSF_Draco) -endif() - -if (WIN32) - set (CSF_advapi32 "advapi32.lib") - set (CSF_gdi32 "gdi32.lib") - set (CSF_user32 "user32.lib") - set (CSF_shell32 "shell32.lib") - set (CSF_wsock32 "wsock32.lib") - set (CSF_psapi "psapi.lib") - set (CSF_winmm "winmm.lib") - set (CSF_d3d9 "D3D9.lib") - set (CSF_OpenGlLibs "opengl32.lib") - set (CSF_OpenGlesLibs "libEGL libGLESv2") -else() - - if (APPLE) - set (CSF_objc "objc") - - # frameworks - if (IOS) - find_library (Appkit_LIB NAMES UIKit) - set (CSF_Appkit ${Appkit_LIB}) - else() - find_library (Appkit_LIB NAMES AppKit) - set (CSF_Appkit ${Appkit_LIB}) - endif() - OCCT_CHECK_AND_UNSET (Appkit_LIB) - - find_library (IOKit_LIB NAMES IOKit) - set (CSF_IOKit ${IOKit_LIB}) - OCCT_CHECK_AND_UNSET (IOKit_LIB) - - if (IOS) - find_library (OpenGlesLibs_LIB NAMES OpenGLES) - set (CSF_OpenGlesLibs ${OpenGlesLibs_LIB}) - OCCT_CHECK_AND_UNSET (OpenGlesLibs_LIB) - elseif (USE_XLIB) - set (CSF_OpenGlLibs "GL") - set (CSF_XwLibs "X11") - else() - find_library (OpenGlLibs_LIB NAMES OpenGL) - set (CSF_OpenGlLibs ${OpenGlLibs_LIB}) - OCCT_CHECK_AND_UNSET (OpenGlLibs_LIB) - endif() - - elseif (EMSCRIPTEN) - set (CSF_ThreadLibs "pthread rt stdc++") - set (CSF_OpenGlesLibs "EGL GLESv2") - set (CSF_dl "dl") - elseif (ANDROID) - set (CSF_ThreadLibs "c") - set (CSF_OpenGlesLibs "EGL GLESv2") - set (CSF_androidlog "log") - elseif (UNIX) - set (CSF_ThreadLibs "pthread rt stdc++") - if (USE_XLIB) - set (CSF_OpenGlLibs "GL") - set (CSF_XwLibs "X11") - else() - set (CSF_OpenGlLibs "GL EGL") - endif() - set (CSF_OpenGlesLibs "EGL GLESv2") - set (CSF_dl "dl") - if (USE_FREETYPE) - set (CSF_fontconfig "fontconfig") - endif() - endif() -endif() +# CSF variables definition + +if(CSFS_ALREADY_INCLUDED) + return() +endif() +set(CSFS_ALREADY_INCLUDED 1) + + +if (NOT DEFINED USE_TCL) + OCCT_IS_PRODUCT_REQUIRED (CSF_TclLibs USE_TCL) +endif() + +# TBB +if (USE_TBB) + set (CSF_TBB "tbb tbbmalloc") +else() + set (CSF_TBB) +endif() + +# FREETYPE +if (USE_FREETYPE) + set (CSF_FREETYPE "freetype") +else() + set (CSF_FREETYPE) +endif() + +# FFmpeg +if (USE_FFMPEG) + set (CSF_FFmpeg "avcodec avformat swscale avutil") +else() + set (CSF_FFmpeg) +endif() + +# FREEIMAGE +if (USE_FREEIMAGE) + set (CSF_FreeImagePlus "freeimage") +else() + if (WIN32) + set (CSF_FreeImagePlus "windowscodecs") + else() + set (CSF_FreeImagePlus) + endif() +endif() + +# OpenVR +if (USE_OPENVR) + set (CSF_OpenVR "openvr_api") +else() + set (CSF_OpenVR) +endif() + +# TCL +if (USE_TCL) + if (WIN32) + set (CSF_TclLibs "tcl86") + else() + if(APPLE) + set (CSF_TclLibs Tcl) + elseif(UNIX) + set (CSF_TclLibs "tcl8.6") + endif() + endif() +endif() + +# TK +if (USE_TK) + if (WIN32) + set (CSF_TclTkLibs "tk86") + else() + if(APPLE) + set (CSF_TclTkLibs Tk) + elseif(UNIX) + set (CSF_TclTkLibs "tk8.6") + endif() + endif() +endif() + +# Draco +if (USE_DRACO) + set (CSF_Draco "draco") +else() + set (CSF_Draco) +endif() + +if (WIN32) + set (CSF_advapi32 "advapi32.lib") + set (CSF_gdi32 "gdi32.lib") + set (CSF_user32 "user32.lib") + set (CSF_shell32 "shell32.lib") + set (CSF_wsock32 "wsock32.lib") + set (CSF_psapi "psapi.lib") + set (CSF_winmm "winmm.lib") + set (CSF_d3d9 "D3D9.lib") + set (CSF_OpenGlLibs "opengl32.lib") + set (CSF_OpenGlesLibs "libEGL libGLESv2") +else() + + if (APPLE) + set (CSF_objc "objc") + + # frameworks + if (IOS) + find_library (Appkit_LIB NAMES UIKit) + set (CSF_Appkit ${Appkit_LIB}) + else() + find_library (Appkit_LIB NAMES AppKit) + set (CSF_Appkit ${Appkit_LIB}) + endif() + OCCT_CHECK_AND_UNSET (Appkit_LIB) + + find_library (IOKit_LIB NAMES IOKit) + set (CSF_IOKit ${IOKit_LIB}) + OCCT_CHECK_AND_UNSET (IOKit_LIB) + + if (IOS) + find_library (OpenGlesLibs_LIB NAMES OpenGLES) + set (CSF_OpenGlesLibs ${OpenGlesLibs_LIB}) + OCCT_CHECK_AND_UNSET (OpenGlesLibs_LIB) + elseif (USE_XLIB) + set (CSF_OpenGlLibs "GL") + set (CSF_XwLibs "X11") + else() + find_library (OpenGlLibs_LIB NAMES OpenGL) + set (CSF_OpenGlLibs ${OpenGlLibs_LIB}) + OCCT_CHECK_AND_UNSET (OpenGlLibs_LIB) + endif() + + elseif (EMSCRIPTEN) + set (CSF_ThreadLibs "pthread rt stdc++") + set (CSF_OpenGlesLibs "EGL GLESv2") + set (CSF_dl "dl") + elseif (ANDROID) + set (CSF_ThreadLibs "c") + set (CSF_OpenGlesLibs "EGL GLESv2") + set (CSF_androidlog "log") + elseif (UNIX) + set (CSF_ThreadLibs "pthread rt stdc++") + if (USE_XLIB) + set (CSF_OpenGlLibs "GL") + set (CSF_XwLibs "X11") + else() + set (CSF_OpenGlLibs "GL EGL") + endif() + set (CSF_OpenGlesLibs "EGL GLESv2") + set (CSF_dl "dl") + if (USE_FREETYPE) + set (CSF_fontconfig "fontconfig") + endif() + endif() +endif() diff --git a/adm/cmake/occt_defs_flags.cmake b/adm/cmake/occt_defs_flags.cmake index 33b50e8ce7..334cf635ed 100644 --- a/adm/cmake/occt_defs_flags.cmake +++ b/adm/cmake/occt_defs_flags.cmake @@ -1,159 +1,159 @@ -## - -if(FLAGS_ALREADY_INCLUDED) - return() -endif() -set(FLAGS_ALREADY_INCLUDED 1) - -# force option /fp:precise for Visual Studio projects. -# -# Note that while this option is default for MSVC compiler, Visual Studio -# project can be switched later to use Intel Compiler (ICC). -# Enforcing -fp:precise ensures that in such case ICC will use correct -# option instead of its default -fp:fast which is harmful for OCCT. -if (MSVC) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise") - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise") -endif() - -# add SSE2 option for old MSVC compilers (VS 2005 - 2010, 32 bit only) -if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8) - if (MSVC AND ((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION EQUAL 1500) OR (MSVC_VERSION EQUAL 1600))) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2") - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:SSE2") - endif() -endif() - -if (MSVC) - # suppress C26812 on VS2019/C++20 (prefer 'enum class' over 'enum') - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise /wd\"26812\"") - # suppress warning on using portable non-secure functions in favor of non-portable secure ones - add_definitions (-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE) -else() - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fPIC") - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexceptions -fPIC") - add_definitions(-DOCC_CONVERT_SIGNALS) -endif() - -# enable structured exceptions for MSVC -string (REGEX MATCH "EHsc" ISFLAG "${CMAKE_CXX_FLAGS}") -if (ISFLAG) - string (REGEX REPLACE "EHsc" "EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -elseif (MSVC) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHa") -endif() - -if (MSVC) - # string pooling (GF), function-level linking (Gy) - set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GF /Gy") - set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GF /Gy") - if (BUILD_FORCE_RelWithDebInfo) - # generate debug info (Zi), inline expansion level (Ob1) - set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /Ob1") - set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi /Ob1") - # generate debug info (debug), OptimizeReferences=true (OPT:REF), EnableCOMDATFolding=true (OPT:ICF) - set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /debug /OPT:REF /OPT:ICF") - endif() -endif() - -# remove _WINDOWS flag if it exists -string (REGEX MATCH "/D_WINDOWS" IS_WINDOWSFLAG "${CMAKE_CXX_FLAGS}") -if (IS_WINDOWSFLAG) - message (STATUS "Info: /D_WINDOWS has been removed from CMAKE_CXX_FLAGS") - string (REGEX REPLACE "/D_WINDOWS" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -endif() - -# remove WIN32 flag if it exists -string (REGEX MATCH "/DWIN32" IS_WIN32FLAG "${CMAKE_CXX_FLAGS}") -if (IS_WIN32FLAG) - message (STATUS "Info: /DWIN32 has been removed from CMAKE_CXX_FLAGS") - string (REGEX REPLACE "/DWIN32" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -endif() - -# remove _WINDOWS flag if it exists -string (REGEX MATCH "/D_WINDOWS" IS_WINDOWSFLAG "${CMAKE_C_FLAGS}") -if (IS_WINDOWSFLAG) - message (STATUS "Info: /D_WINDOWS has been removed from CMAKE_C_FLAGS") - string (REGEX REPLACE "/D_WINDOWS" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") -endif() - -# remove WIN32 flag if it exists -string (REGEX MATCH "/DWIN32" IS_WIN32FLAG "${CMAKE_C_FLAGS}") -if (IS_WIN32FLAG) - message (STATUS "Info: /DWIN32 has been removed from CMAKE_C_FLAGS") - string (REGEX REPLACE "/DWIN32" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") -endif() - -# remove DEBUG flag if it exists -string (REGEX MATCH "-DDEBUG" IS_DEBUG_CXX "${CMAKE_CXX_FLAGS_DEBUG}") -if (IS_DEBUG_CXX) - message (STATUS "Info: -DDEBUG has been removed from CMAKE_CXX_FLAGS_DEBUG") - string (REGEX REPLACE "-DDEBUG" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") -endif() - -string (REGEX MATCH "-DDEBUG" IS_DEBUG_C "${CMAKE_C_FLAGS_DEBUG}") -if (IS_DEBUG_C) - message (STATUS "Info: -DDEBUG has been removed from CMAKE_C_FLAGS_DEBUG") - string (REGEX REPLACE "-DDEBUG" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") -endif() -# enable parallel compilation on MSVC 9 and above -if (MSVC AND (MSVC_VERSION GREATER 1400)) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") -endif() - -# generate a single response file which enlist all of the object files -if (NOT DEFINED CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS) - SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1) -endif() -if (NOT DEFINED CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS) - SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1) -endif() - -# increase compiler warnings level (-W4 for MSVC, -Wextra for GCC) -if (MSVC) - if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]") - string (REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - else() - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") - endif() -elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]")) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") - if (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshorten-64-to-32") - endif() - if (BUILD_SHARED_LIBS) - if (APPLE) - set (CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}") - elseif(NOT WIN32) - set (CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}") - endif() - endif() -endif() - -if (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]") - if (APPLE) - # CLang can be used with both libstdc++ and libc++, however on OS X libstdc++ is outdated. - set (CMAKE_CXX_FLAGS "-stdlib=libc++ ${CMAKE_CXX_FLAGS}") - endif() - # Optimize size of binaries - set (CMAKE_SHARED_LINKER_FLAGS "-Wl,-s ${CMAKE_SHARED_LINKER_FLAGS}") -elseif(MINGW) - add_definitions(-D_WIN32_WINNT=0x0601) - # _WIN32_WINNT=0x0601 (use Windows 7 SDK) - #set (CMAKE_SYSTEM_VERSION "6.1") - # workaround bugs in mingw with vtable export - set (CMAKE_SHARED_LINKER_FLAGS "-Wl,--export-all-symbols") - - # Optimize size of binaries - set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") - set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") -elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX) - # Optimize size of binaries - set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") - set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") -endif() - -if (BUILD_RELEASE_DISABLE_EXCEPTIONS) - set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNo_Exception") - set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNo_Exception") -endif() +## + +if(FLAGS_ALREADY_INCLUDED) + return() +endif() +set(FLAGS_ALREADY_INCLUDED 1) + +# force option /fp:precise for Visual Studio projects. +# +# Note that while this option is default for MSVC compiler, Visual Studio +# project can be switched later to use Intel Compiler (ICC). +# Enforcing -fp:precise ensures that in such case ICC will use correct +# option instead of its default -fp:fast which is harmful for OCCT. +if (MSVC) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise") +endif() + +# add SSE2 option for old MSVC compilers (VS 2005 - 2010, 32 bit only) +if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8) + if (MSVC AND ((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION EQUAL 1500) OR (MSVC_VERSION EQUAL 1600))) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:SSE2") + endif() +endif() + +if (MSVC) + # suppress C26812 on VS2019/C++20 (prefer 'enum class' over 'enum') + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise /wd\"26812\"") + # suppress warning on using portable non-secure functions in favor of non-portable secure ones + add_definitions (-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE) +else() + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fPIC") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexceptions -fPIC") + add_definitions(-DOCC_CONVERT_SIGNALS) +endif() + +# enable structured exceptions for MSVC +string (REGEX MATCH "EHsc" ISFLAG "${CMAKE_CXX_FLAGS}") +if (ISFLAG) + string (REGEX REPLACE "EHsc" "EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +elseif (MSVC) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHa") +endif() + +if (MSVC) + # string pooling (GF), function-level linking (Gy) + set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GF /Gy") + set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GF /Gy") + if (BUILD_FORCE_RelWithDebInfo) + # generate debug info (Zi), inline expansion level (Ob1) + set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /Ob1") + set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi /Ob1") + # generate debug info (debug), OptimizeReferences=true (OPT:REF), EnableCOMDATFolding=true (OPT:ICF) + set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /debug /OPT:REF /OPT:ICF") + endif() +endif() + +# remove _WINDOWS flag if it exists +string (REGEX MATCH "/D_WINDOWS" IS_WINDOWSFLAG "${CMAKE_CXX_FLAGS}") +if (IS_WINDOWSFLAG) + message (STATUS "Info: /D_WINDOWS has been removed from CMAKE_CXX_FLAGS") + string (REGEX REPLACE "/D_WINDOWS" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +endif() + +# remove WIN32 flag if it exists +string (REGEX MATCH "/DWIN32" IS_WIN32FLAG "${CMAKE_CXX_FLAGS}") +if (IS_WIN32FLAG) + message (STATUS "Info: /DWIN32 has been removed from CMAKE_CXX_FLAGS") + string (REGEX REPLACE "/DWIN32" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +endif() + +# remove _WINDOWS flag if it exists +string (REGEX MATCH "/D_WINDOWS" IS_WINDOWSFLAG "${CMAKE_C_FLAGS}") +if (IS_WINDOWSFLAG) + message (STATUS "Info: /D_WINDOWS has been removed from CMAKE_C_FLAGS") + string (REGEX REPLACE "/D_WINDOWS" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") +endif() + +# remove WIN32 flag if it exists +string (REGEX MATCH "/DWIN32" IS_WIN32FLAG "${CMAKE_C_FLAGS}") +if (IS_WIN32FLAG) + message (STATUS "Info: /DWIN32 has been removed from CMAKE_C_FLAGS") + string (REGEX REPLACE "/DWIN32" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") +endif() + +# remove DEBUG flag if it exists +string (REGEX MATCH "-DDEBUG" IS_DEBUG_CXX "${CMAKE_CXX_FLAGS_DEBUG}") +if (IS_DEBUG_CXX) + message (STATUS "Info: -DDEBUG has been removed from CMAKE_CXX_FLAGS_DEBUG") + string (REGEX REPLACE "-DDEBUG" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") +endif() + +string (REGEX MATCH "-DDEBUG" IS_DEBUG_C "${CMAKE_C_FLAGS_DEBUG}") +if (IS_DEBUG_C) + message (STATUS "Info: -DDEBUG has been removed from CMAKE_C_FLAGS_DEBUG") + string (REGEX REPLACE "-DDEBUG" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") +endif() +# enable parallel compilation on MSVC 9 and above +if (MSVC AND (MSVC_VERSION GREATER 1400)) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") +endif() + +# generate a single response file which enlist all of the object files +if (NOT DEFINED CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS) + SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1) +endif() +if (NOT DEFINED CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS) + SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1) +endif() + +# increase compiler warnings level (-W4 for MSVC, -Wextra for GCC) +if (MSVC) + if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]") + string (REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + else() + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") + endif() +elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]")) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") + if (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshorten-64-to-32") + endif() + if (BUILD_SHARED_LIBS) + if (APPLE) + set (CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}") + elseif(NOT WIN32) + set (CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}") + endif() + endif() +endif() + +if (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]") + if (APPLE) + # CLang can be used with both libstdc++ and libc++, however on OS X libstdc++ is outdated. + set (CMAKE_CXX_FLAGS "-stdlib=libc++ ${CMAKE_CXX_FLAGS}") + endif() + # Optimize size of binaries + set (CMAKE_SHARED_LINKER_FLAGS "-Wl,-s ${CMAKE_SHARED_LINKER_FLAGS}") +elseif(MINGW) + add_definitions(-D_WIN32_WINNT=0x0601) + # _WIN32_WINNT=0x0601 (use Windows 7 SDK) + #set (CMAKE_SYSTEM_VERSION "6.1") + # workaround bugs in mingw with vtable export + set (CMAKE_SHARED_LINKER_FLAGS "-Wl,--export-all-symbols") + + # Optimize size of binaries + set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") + set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") +elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX) + # Optimize size of binaries + set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") + set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") +endif() + +if (BUILD_RELEASE_DISABLE_EXCEPTIONS) + set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNo_Exception") + set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNo_Exception") +endif() diff --git a/adm/cmake/occt_macros.cmake b/adm/cmake/occt_macros.cmake index 9fd3ec4cfb..f6d9fa9643 100644 --- a/adm/cmake/occt_macros.cmake +++ b/adm/cmake/occt_macros.cmake @@ -1,634 +1,634 @@ -## - -if(OCCT_MACROS_ALREADY_INCLUDED) - return() -endif() -set(OCCT_MACROS_ALREADY_INCLUDED 1) - - -macro (OCCT_CHECK_AND_UNSET VARNAME) - if (DEFINED ${VARNAME}) - unset (${VARNAME} CACHE) - endif() -endmacro() - -macro (OCCT_CHECK_AND_UNSET_GROUP GROUPNAME) - get_cmake_property(VARS VARIABLES) - string (REGEX MATCHALL "(^|;)${GROUPNAME}[A-Za-z0-9_]*" GROUPNAME_VARS "${VARS}") - foreach(GROUPNAME_VAR ${GROUPNAME_VARS}) - OCCT_CHECK_AND_UNSET(${GROUPNAME_VAR}) - endforeach() -endmacro() - -macro (OCCT_CHECK_AND_UNSET_INSTALL_DIR_SUBDIRS) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_BIN) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_SCRIPT) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_LIB) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_INCLUDE) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_RESOURCE) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_DATA) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_SAMPLES) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_TESTS) - OCCT_CHECK_AND_UNSET (INSTALL_DIR_DOC) -endmacro() - -# COMPILER_BITNESS variable -macro (OCCT_MAKE_COMPILER_BITNESS) - math (EXPR COMPILER_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)") -endmacro() - -# OS_WITH_BIT -macro (OCCT_MAKE_OS_WITH_BITNESS) - - OCCT_MAKE_COMPILER_BITNESS() - - if (WIN32) - set (OS_WITH_BIT "win${COMPILER_BITNESS}") - elseif(APPLE) - set (OS_WITH_BIT "mac${COMPILER_BITNESS}") - else() - set (OS_WITH_BIT "lin${COMPILER_BITNESS}") - endif() -endmacro() - -# COMPILER variable -macro (OCCT_MAKE_COMPILER_SHORT_NAME) - if (MSVC) - if ((MSVC_VERSION EQUAL 1300) OR (MSVC_VERSION EQUAL 1310)) - set (COMPILER vc7) - elseif (MSVC_VERSION EQUAL 1400) - set (COMPILER vc8) - elseif (MSVC_VERSION EQUAL 1500) - set (COMPILER vc9) - elseif (MSVC_VERSION EQUAL 1600) - set (COMPILER vc10) - elseif (MSVC_VERSION EQUAL 1700) - set (COMPILER vc11) - elseif (MSVC_VERSION EQUAL 1800) - set (COMPILER vc12) - elseif (MSVC_VERSION EQUAL 1900) - set (COMPILER vc14) - elseif ((MSVC_VERSION GREATER 1900) AND (MSVC_VERSION LESS 2000)) - # Since Visual Studio 15 (2017), its version diverged from version of - # compiler which is 14.1; as that compiler uses the same run-time as 14.0, - # we keep its id as "vc14" to be compatibille - set (COMPILER vc14) - else() - message (FATAL_ERROR "Unrecognized MSVC_VERSION") - endif() - elseif (DEFINED CMAKE_COMPILER_IS_GNUCC) - set (COMPILER gcc) - elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX) - set (COMPILER gxx) - elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]") - set (COMPILER clang) - elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Ii][Nn][Tt][Ee][Ll]") - set (COMPILER icc) - else() - set (COMPILER ${CMAKE_GENERATOR}) - string (REGEX REPLACE " " "" COMPILER ${COMPILER}) - endif() -endmacro() - -function (SUBDIRECTORY_NAMES MAIN_DIRECTORY RESULT) - file (GLOB SUB_ITEMS "${MAIN_DIRECTORY}/*") - - foreach (ITEM ${SUB_ITEMS}) - if (IS_DIRECTORY "${ITEM}") - get_filename_component (ITEM_NAME "${ITEM}" NAME) - list (APPEND LOCAL_RESULT "${ITEM_NAME}") - endif() - endforeach() - set (${RESULT} ${LOCAL_RESULT} PARENT_SCOPE) -endfunction() - -function (FIND_SUBDIRECTORY ROOT_DIRECTORY DIRECTORY_SUFFIX SUBDIRECTORY_NAME) - #message("Trying to find directory with suffix ${DIRECTORY_SUFFIX} in ${ROOT_DIRECTORY}") - SUBDIRECTORY_NAMES ("${ROOT_DIRECTORY}" SUBDIR_NAME_LIST) - #message("Subdirectories: ${SUBDIR_NAME_LIST}") - - #set(${SUBDIRECTORY_NAME} "${SUBDIR_NAME_LIST}" PARENT_SCOPE) - - foreach (SUBDIR_NAME ${SUBDIR_NAME_LIST}) - #message("Subdir: ${SUBDIR_NAME}, ${DIRECTORY_SUFFIX}") - # REGEX failed if the directory name contains '++' combination, so we replace it - string(REPLACE "+" "\\+" SUBDIR_NAME_ESCAPED ${SUBDIR_NAME}) - string (REGEX MATCH "${SUBDIR_NAME_ESCAPED}" DOES_PATH_CONTAIN "${DIRECTORY_SUFFIX}") - if (DOES_PATH_CONTAIN) - set(${SUBDIRECTORY_NAME} "${ROOT_DIRECTORY}/${SUBDIR_NAME}" PARENT_SCOPE) - #message("Subdirectory is found: ${SUBDIRECTORY_NAME}") - BREAK() - else() - #message("Check directory: ${ROOT_DIRECTORY}/${SUBDIR_NAME}") - FIND_SUBDIRECTORY ("${ROOT_DIRECTORY}/${SUBDIR_NAME}" "${DIRECTORY_SUFFIX}" SUBDIR_REC_NAME) - if (NOT "${SUBDIR_REC_NAME}" STREQUAL "") - set(${SUBDIRECTORY_NAME} "${SUBDIR_REC_NAME}" PARENT_SCOPE) - #message("Subdirectory is found: ${SUBDIRECTORY_NAME}") - BREAK() - endif() - endif() - endforeach() -endfunction() - -function (OCCT_ORIGIN_AND_PATCHED_FILES RELATIVE_PATH SEARCH_TEMPLATE RESULT) - - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}") - file (GLOB FOUND_FILES "${BUILD_PATCH}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}") - endif() - - file (GLOB ORIGIN_FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}") - foreach (ORIGIN_FILE ${ORIGIN_FILES}) - # check for existence of patched version of current file - if (NOT BUILD_PATCH OR NOT EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}") - list (APPEND FOUND_FILES ${ORIGIN_FILE}) - else() - get_filename_component (ORIGIN_FILE_NAME "${ORIGIN_FILE}" NAME) - if (NOT EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}/${ORIGIN_FILE_NAME}") - list (APPEND FOUND_FILES ${ORIGIN_FILE}) - endif() - endif() - endforeach() - - set (${RESULT} ${FOUND_FILES} PARENT_SCOPE) -endfunction() - -function (FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT) - OCCT_MAKE_COMPILER_SHORT_NAME() - OCCT_MAKE_COMPILER_BITNESS() - - string (TOLOWER "${PRODUCT_NAME}" lower_PRODUCT_NAME) - if ("${lower_PRODUCT_NAME}" STREQUAL "egl") - string (SUBSTRING "${lower_PRODUCT_NAME}" 1 -1 lower_PRODUCT_NAME) - list (APPEND SEARCH_TEMPLATES "[^gl]+${lower_PRODUCT_NAME}.*") - elseif ("${lower_PRODUCT_NAME}" STREQUAL "tbb") - list (APPEND SEARCH_TEMPLATES "^.*${lower_PRODUCT_NAME}.*") - else() - list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*${COMPILER}.*${COMPILER_BITNESS}") - list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}") - list (APPEND SEARCH_TEMPLATES "^[a-zA-Z]*[0-9]*-${lower_PRODUCT_NAME}[^a-zA-Z]*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}") - list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*[0-9.]+.*${COMPILER_BITNESS}") - list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*.*${COMPILER_BITNESS}") - list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*[0-9.]+") - list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*") - endif() - - SUBDIRECTORY_NAMES ("${ROOT_DIR}" SUBDIR_NAME_LIST) - - foreach (SEARCH_TEMPLATE ${SEARCH_TEMPLATES}) - if (LOCAL_RESULT) - BREAK() - endif() - - foreach (SUBDIR_NAME ${SUBDIR_NAME_LIST}) - string (TOLOWER "${SUBDIR_NAME}" lower_SUBDIR_NAME) - - string (REGEX MATCH "${SEARCH_TEMPLATE}" DUMMY_VAR "${lower_SUBDIR_NAME}") - if (DUMMY_VAR) - list (APPEND LOCAL_RESULT ${SUBDIR_NAME}) - endif() - endforeach() - endforeach() - - if (LOCAL_RESULT) - list (GET LOCAL_RESULT -1 DUMMY) - set (${RESULT} ${DUMMY} PARENT_SCOPE) - endif() -endfunction() - -macro (OCCT_INSTALL_FILE_OR_DIR BEING_INSTALLED_OBJECT DESTINATION_PATH) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}") - if (IS_DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}") - # first of all, install original files - install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") - - # secondly, rewrite original files with patched ones - install (DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") - else() - install (FILES "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") - endif() - else() - if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}") - install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") - else() - install (FILES "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") - endif() - endif() -endmacro() - -macro (OCCT_CONFIGURE_AND_INSTALL BEING_CONGIRUGED_FILE BUILD_NAME INSTALL_NAME DESTINATION_PATH) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}") - configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY) - else() - configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY) - endif() - - install(FILES "${OCCT_BINARY_DIR}/${BUILD_NAME}" DESTINATION "${DESTINATION_PATH}" RENAME ${INSTALL_NAME}) -endmacro() - -macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOOLKITS OCCT_COLLECT_SOURCE_DIR OCCT_INSTALL_DIR_PREFIX) - set (OCCT_USED_PACKAGES) - - # consider patched header.in template - set (TEMPLATE_HEADER_PATH "${CMAKE_SOURCE_DIR}/adm/templates/header.in") - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/header.in") - set (TEMPLATE_HEADER_PATH "${BUILD_PATCH}/adm/templates/header.in") - endif() - - set (ROOT_OCCT_DIR ${CMAKE_SOURCE_DIR}) - - foreach (OCCT_USED_TOOLKIT ${OCCT_BUILD_TOOLKITS}) - # append all required package folders - set (OCCT_TOOLKIT_PACKAGES) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_USED_TOOLKIT}/PACKAGES") - file (STRINGS "${BUILD_PATCH}/src/${OCCT_USED_TOOLKIT}/PACKAGES" OCCT_TOOLKIT_PACKAGES) - elseif (EXISTS "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_USED_TOOLKIT}/PACKAGES") - file (STRINGS "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_USED_TOOLKIT}/PACKAGES" OCCT_TOOLKIT_PACKAGES) - endif() - - list (APPEND OCCT_USED_PACKAGES ${OCCT_TOOLKIT_PACKAGES}) - endforeach() - - list (REMOVE_DUPLICATES OCCT_USED_PACKAGES) - - set (OCCT_HEADER_FILES_COMPLETE) - set (OCCT_HEADER_FILE_NAMES_NOT_IN_FILES) - set (OCCT_HEADER_FILE_WITH_PROPER_NAMES) - - string(TIMESTAMP CURRENT_TIME "%H:%M:%S") - message (STATUS "Info: \(${CURRENT_TIME}\) Compare FILES with files in package directories...") - - foreach (OCCT_PACKAGE ${OCCT_USED_PACKAGES}) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES") - file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" OCCT_ALL_FILE_NAMES) - elseif (EXISTS "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/FILES") - file (STRINGS "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/FILES" OCCT_ALL_FILE_NAMES) - else() - message (WARNING "FILES has not been found in ${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}") - continue() - endif() - - list (LENGTH OCCT_ALL_FILE_NAMES ALL_FILES_NB) - math (EXPR ALL_FILES_NB "${ALL_FILES_NB} - 1" ) - - # emit warnings if there are unprocessed headers - file (GLOB OCCT_ALL_FILES_IN_DIR "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/*.*") - file (GLOB OCCT_ALL_FILES_IN_PATCH_DIR "${BUILD_PATCH}/src/${OCCT_PACKAGE}/*.*") - - # use patched header files - foreach (OCCT_FILE_IN_PATCH_DIR ${OCCT_ALL_FILES_IN_PATCH_DIR}) - get_filename_component (OCCT_FILE_IN_PATCH_DIR_NAME ${OCCT_FILE_IN_PATCH_DIR} NAME) - list (REMOVE_ITEM OCCT_ALL_FILES_IN_DIR "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/${OCCT_FILE_IN_PATCH_DIR_NAME}") - list (APPEND OCCT_ALL_FILES_IN_DIR "${OCCT_FILE_IN_PATCH_DIR}") - endforeach() - - foreach (OCCT_FILE_IN_DIR ${OCCT_ALL_FILES_IN_DIR}) - get_filename_component (OCCT_FILE_IN_DIR_NAME ${OCCT_FILE_IN_DIR} NAME) - - set (OCCT_FILE_IN_DIR_STATUS OFF) - - if (${ALL_FILES_NB} LESS 0) - break() - endif() - - foreach (FILE_INDEX RANGE ${ALL_FILES_NB}) - list (GET OCCT_ALL_FILE_NAMES ${FILE_INDEX} OCCT_FILE_NAME) - - string (REGEX REPLACE "[^:]+:+" "" OCCT_FILE_NAME "${OCCT_FILE_NAME}") - - if ("${OCCT_FILE_IN_DIR_NAME}" STREQUAL "${OCCT_FILE_NAME}") - set (OCCT_FILE_IN_DIR_STATUS ON) - - string (REGEX MATCH ".+\\.[hlg]xx|.+\\.h$" IS_HEADER_FOUND "${OCCT_FILE_NAME}") - if (IS_HEADER_FOUND) - list (APPEND OCCT_HEADER_FILES_COMPLETE ${OCCT_FILE_IN_DIR}) - - # collect header files with name that does not contain its package one - string (REGEX MATCH "^${OCCT_PACKAGE}[_.]" IS_HEADER_MATHCING_PACKAGE "${OCCT_FILE_NAME}") - if (NOT IS_HEADER_MATHCING_PACKAGE) - list (APPEND OCCT_HEADER_FILE_WITH_PROPER_NAMES "${OCCT_FILE_NAME}") - endif() - endif() - - # remove found element from list - list (REMOVE_AT OCCT_ALL_FILE_NAMES ${FILE_INDEX}) - math (EXPR ALL_FILES_NB "${ALL_FILES_NB} - 1" ) # decrement number - - break() - endif() - endforeach() - - if (NOT OCCT_FILE_IN_DIR_STATUS) - message (STATUS "Warning. File ${OCCT_FILE_IN_DIR} is not listed in ${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/FILES") - - string (REGEX MATCH ".+\\.[hlg]xx|.+\\.h$" IS_HEADER_FOUND "${OCCT_FILE_NAME}") - if (IS_HEADER_FOUND) - list (APPEND OCCT_HEADER_FILE_NAMES_NOT_IN_FILES ${OCCT_FILE_NAME}) - endif() - endif() - endforeach() - endforeach() - - # create new file including found header - string(TIMESTAMP CURRENT_TIME "%H:%M:%S") - message (STATUS "Info: \(${CURRENT_TIME}\) Create header-links in inc folder...") - - foreach (OCCT_HEADER_FILE ${OCCT_HEADER_FILES_COMPLETE}) - get_filename_component (HEADER_FILE_NAME ${OCCT_HEADER_FILE} NAME) - set (OCCT_HEADER_FILE_CONTENT "#include \"${OCCT_HEADER_FILE}\"") - configure_file ("${TEMPLATE_HEADER_PATH}" "${ROOT_TARGET_OCCT_DIR}/${OCCT_INSTALL_DIR_PREFIX}/${HEADER_FILE_NAME}" @ONLY) - endforeach() - - install (FILES ${OCCT_HEADER_FILES_COMPLETE} DESTINATION "${INSTALL_DIR}/${OCCT_INSTALL_DIR_PREFIX}") - - string(TIMESTAMP CURRENT_TIME "%H:%M:%S") - message (STATUS "Info: \(${CURRENT_TIME}\) Checking headers in inc folder...") - - file (GLOB OCCT_HEADER_FILES_OLD "${ROOT_TARGET_OCCT_DIR}/${OCCT_INSTALL_DIR_PREFIX}/*") - foreach (OCCT_HEADER_FILE_OLD ${OCCT_HEADER_FILES_OLD}) - get_filename_component (HEADER_FILE_NAME ${OCCT_HEADER_FILE_OLD} NAME) - string (REGEX MATCH "^[a-zA-Z0-9]+" PACKAGE_NAME "${HEADER_FILE_NAME}") - - list (FIND OCCT_USED_PACKAGES ${PACKAGE_NAME} IS_HEADER_FOUND) - if (NOT ${IS_HEADER_FOUND} EQUAL -1) - if (NOT EXISTS "${OCCT_COLLECT_SOURCE_DIR}/${PACKAGE_NAME}/${HEADER_FILE_NAME}") - message (STATUS "Warning. ${OCCT_HEADER_FILE_OLD} is not present in the sources and will be removed from ${ROOT_TARGET_OCCT_DIR}/inc") - file (REMOVE "${OCCT_HEADER_FILE_OLD}") - else() - list (FIND OCCT_HEADER_FILE_NAMES_NOT_IN_FILES ${PACKAGE_NAME} IS_HEADER_FOUND) - if (NOT ${IS_HEADER_FOUND} EQUAL -1) - message (STATUS "Warning. ${OCCT_HEADER_FILE_OLD} is present in the sources but not involved in FILES and will be removed from ${ROOT_TARGET_OCCT_DIR}/inc") - file (REMOVE "${OCCT_HEADER_FILE_OLD}") - endif() - endif() - else() - set (IS_HEADER_FOUND -1) - if (NOT "${OCCT_HEADER_FILE_WITH_PROPER_NAMES}" STREQUAL "") - list (FIND OCCT_HEADER_FILE_WITH_PROPER_NAMES ${HEADER_FILE_NAME} IS_HEADER_FOUND) - endif() - - if (${IS_HEADER_FOUND} EQUAL -1) - message (STATUS "Warning. \(${PACKAGE_NAME}\) ${OCCT_HEADER_FILE_OLD} is not used and will be removed from ${ROOT_TARGET_OCCT_DIR}/inc") - file (REMOVE "${OCCT_HEADER_FILE_OLD}") - endif() - endif() - endforeach() -endmacro() - -macro (OCCT_COPY_FILE_OR_DIR BEING_COPIED_OBJECT DESTINATION_PATH) - # first of all, copy original files - if (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_COPIED_OBJECT}") - file (COPY "${CMAKE_SOURCE_DIR}/${BEING_COPIED_OBJECT}" DESTINATION "${DESTINATION_PATH}") - endif() - - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_COPIED_OBJECT}") - # secondly, rewrite original files with patched ones - file (COPY "${BUILD_PATCH}/${BEING_COPIED_OBJECT}" DESTINATION "${DESTINATION_PATH}") - endif() -endmacro() - -macro (OCCT_CONFIGURE BEING_CONGIRUGED_FILE FINAL_NAME) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}") - configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY) - else() - configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY) - endif() -endmacro() - -macro (OCCT_ADD_SUBDIRECTORY BEING_ADDED_DIRECTORY) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt") - add_subdirectory(${BUILD_PATCH}/${BEING_ADDED_DIRECTORY}) - elseif (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt") - add_subdirectory (${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY}) - else() - message (STATUS "${BEING_ADDED_DIRECTORY} directory is not included") - endif() -endmacro() - -function (OCCT_IS_PRODUCT_REQUIRED CSF_VAR_NAME USE_PRODUCT) - set (${USE_PRODUCT} OFF PARENT_SCOPE) - - if (NOT BUILD_TOOLKITS) - message(STATUS "Warning: the list of being used toolkits is empty") - else() - foreach (USED_TOOLKIT ${BUILD_TOOLKITS}) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${USED_TOOLKIT}/EXTERNLIB") - file (READ "${BUILD_PATCH}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT) - elseif (EXISTS "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB") - file (READ "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT) - endif() - - string (REGEX MATCH "${CSF_VAR_NAME}" DOES_FILE_CONTAIN "${FILE_CONTENT}") - - if (DOES_FILE_CONTAIN) - set (${USE_PRODUCT} ON PARENT_SCOPE) - break() - endif() - endforeach() - endif() -endfunction() - -function (FILE_TO_LIST FILE_NAME FILE_CONTENT) - set (LOCAL_FILE_CONTENT) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${FILE_NAME}") - file (STRINGS "${BUILD_PATCH}/${FILE_NAME}" LOCAL_FILE_CONTENT) - elseif (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_NAME}") - file (STRINGS "${CMAKE_SOURCE_DIR}/${FILE_NAME}" LOCAL_FILE_CONTENT) - endif() - - set (${FILE_CONTENT} ${LOCAL_FILE_CONTENT} PARENT_SCOPE) -endfunction() - -# Function to determine if TOOLKIT is OCCT toolkit -function (IS_OCCT_TOOLKIT TOOLKIT_NAME MODULES IS_TOOLKIT_FOUND) - set (${IS_TOOLKIT_FOUND} OFF PARENT_SCOPE) - foreach (MODULE ${${MODULES}}) - set (TOOLKITS ${${MODULE}_TOOLKITS}) - list (FIND TOOLKITS ${TOOLKIT_NAME} FOUND) - - if (NOT ${FOUND} EQUAL -1) - set (${IS_TOOLKIT_FOUND} ON PARENT_SCOPE) - endif() - endforeach(MODULE) -endfunction() - -# TOOLKIT_DEPS is defined with dependencies from file src/TOOLKIT_NAME/EXTERNLIB. -# CSF_ variables are ignored -function (OCCT_TOOLKIT_DEP TOOLKIT_NAME TOOLKIT_DEPS) - FILE_TO_LIST ("src/${TOOLKIT_NAME}/EXTERNLIB" FILE_CONTENT) - - #list (APPEND LOCAL_TOOLKIT_DEPS ${TOOLKIT_NAME}) - set (LOCAL_TOOLKIT_DEPS) - foreach (FILE_CONTENT_LINE ${FILE_CONTENT}) - string (REGEX MATCH "^TK" TK_FOUND ${FILE_CONTENT_LINE}) - if ("x${FILE_CONTENT_LINE}" STREQUAL "xDRAWEXE" OR NOT "${TK_FOUND}" STREQUAL "") - list (APPEND LOCAL_TOOLKIT_DEPS ${FILE_CONTENT_LINE}) - endif() - endforeach() - - set (${TOOLKIT_DEPS} ${LOCAL_TOOLKIT_DEPS} PARENT_SCOPE) -endfunction() - -# TOOLKIT_FULL_DEPS is defined with complete dependencies (all levels) -function (OCCT_TOOLKIT_FULL_DEP TOOLKIT_NAME TOOLKIT_FULL_DEPS) - # first level dependencies are stored in LOCAL_TOOLKIT_FULL_DEPS - OCCT_TOOLKIT_DEP (${TOOLKIT_NAME} LOCAL_TOOLKIT_FULL_DEPS) - - list (LENGTH LOCAL_TOOLKIT_FULL_DEPS LIST_LENGTH) - set (LIST_INDEX 0) - while (LIST_INDEX LESS LIST_LENGTH) - list (GET LOCAL_TOOLKIT_FULL_DEPS ${LIST_INDEX} CURRENT_TOOLKIT) - OCCT_TOOLKIT_DEP (${CURRENT_TOOLKIT} CURRENT_TOOLKIT_DEPS) - - # append toolkits are not contained - foreach (CURRENT_TOOLKIT_DEP ${CURRENT_TOOLKIT_DEPS}) - set (CURRENT_TOOLKIT_DEP_FOUND OFF) - foreach (LOCAL_TOOLKIT_FULL_DEP ${LOCAL_TOOLKIT_FULL_DEPS}) - if ("${CURRENT_TOOLKIT_DEP}" STREQUAL "${LOCAL_TOOLKIT_FULL_DEP}") - set (CURRENT_TOOLKIT_DEP_FOUND ON) - break() - endif() - endforeach() - if ("${CURRENT_TOOLKIT_DEP_FOUND}" STREQUAL "OFF") - list (APPEND LOCAL_TOOLKIT_FULL_DEPS ${CURRENT_TOOLKIT_DEP}) - endif() - endforeach() - - # increment the list index - MATH(EXPR LIST_INDEX "${LIST_INDEX}+1") - - # calculate new length - list (LENGTH LOCAL_TOOLKIT_FULL_DEPS LIST_LENGTH) - endwhile() - - set (${TOOLKIT_FULL_DEPS} ${LOCAL_TOOLKIT_FULL_DEPS} PARENT_SCOPE) -endfunction() - -# Function to get list of modules/toolkits/samples from file adm/${FILE_NAME}. -# Creates list <$MODULE_LIST> to store list of MODULES and -# _TOOLKITS foreach module to store its toolkits, where "TOOLKITS" is defined by TOOLKITS_NAME_SUFFIX. -function (OCCT_MODULES_AND_TOOLKITS FILE_NAME TOOLKITS_NAME_SUFFIX MODULE_LIST) - FILE_TO_LIST ("adm/${FILE_NAME}" FILE_CONTENT) - - foreach (CONTENT_LINE ${FILE_CONTENT}) - string (REPLACE " " ";" CONTENT_LINE ${CONTENT_LINE}) - list (GET CONTENT_LINE 0 MODULE_NAME) - list (REMOVE_AT CONTENT_LINE 0) - list (APPEND ${MODULE_LIST} ${MODULE_NAME}) - # (!) REMOVE THE LINE BELOW (implicit variables) - set (${MODULE_NAME}_${TOOLKITS_NAME_SUFFIX} ${CONTENT_LINE} PARENT_SCOPE) - endforeach() - - set (${MODULE_LIST} ${${MODULE_LIST}} PARENT_SCOPE) -endfunction() - -# Returns OCC version string from file Standard_Version.hxx (if available) -function (OCC_VERSION OCC_VERSION_MAJOR OCC_VERSION_MINOR OCC_VERSION_MAINTENANCE OCC_VERSION_DEVELOPMENT OCC_VERSION_STRING_EXT) - - set (OCC_VERSION_MAJOR 7) - set (OCC_VERSION_MINOR 0) - set (OCC_VERSION_MAINTENANCE 0) - set (OCC_VERSION_DEVELOPMENT dev) - set (OCC_VERSION_COMPLETE "7.0.0") - - set (STANDARD_VERSION_FILE "${CMAKE_SOURCE_DIR}/src/Standard/Standard_Version.hxx") - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/Standard/Standard_Version.hxx") - set (STANDARD_VERSION_FILE "${BUILD_PATCH}/src/Standard/Standard_Version.hxx") - endif() - - if (EXISTS "${STANDARD_VERSION_FILE}") - foreach (SOUGHT_VERSION OCC_VERSION_MAJOR OCC_VERSION_MINOR OCC_VERSION_MAINTENANCE) - file (STRINGS "${STANDARD_VERSION_FILE}" ${SOUGHT_VERSION} REGEX "^#define ${SOUGHT_VERSION} .*") - string (REGEX REPLACE ".*${SOUGHT_VERSION} .*([^ ]+).*" "\\1" ${SOUGHT_VERSION} "${${SOUGHT_VERSION}}" ) - endforeach() - - foreach (SOUGHT_VERSION OCC_VERSION_DEVELOPMENT OCC_VERSION_COMPLETE) - file (STRINGS "${STANDARD_VERSION_FILE}" ${SOUGHT_VERSION} REGEX "^#define ${SOUGHT_VERSION} .*") - string (REGEX REPLACE ".*${SOUGHT_VERSION} .*\"([^ ]+)\".*" "\\1" ${SOUGHT_VERSION} "${${SOUGHT_VERSION}}" ) - endforeach() - endif() - - set (OCC_VERSION_MAJOR "${OCC_VERSION_MAJOR}" PARENT_SCOPE) - set (OCC_VERSION_MINOR "${OCC_VERSION_MINOR}" PARENT_SCOPE) - set (OCC_VERSION_MAINTENANCE "${OCC_VERSION_MAINTENANCE}" PARENT_SCOPE) - set (OCC_VERSION_DEVELOPMENT "${OCC_VERSION_DEVELOPMENT}" PARENT_SCOPE) - - if (OCC_VERSION_DEVELOPMENT AND OCC_VERSION_COMPLETE) - set (OCC_VERSION_STRING_EXT "${OCC_VERSION_COMPLETE}.${OCC_VERSION_DEVELOPMENT}" PARENT_SCOPE) - else() - set (OCC_VERSION_STRING_EXT "${OCC_VERSION_COMPLETE}" PARENT_SCOPE) - endif() -endfunction() - -macro (CHECK_PATH_FOR_CONSISTENCY THE_ROOT_PATH_NAME THE_BEING_CHECKED_PATH_NAME THE_VAR_TYPE THE_MESSAGE_OF_BEING_CHECKED_PATH) - - set (THE_ROOT_PATH "${${THE_ROOT_PATH_NAME}}") - set (THE_BEING_CHECKED_PATH "${${THE_BEING_CHECKED_PATH_NAME}}") - - if (THE_BEING_CHECKED_PATH OR EXISTS "${THE_BEING_CHECKED_PATH}") - get_filename_component (THE_ROOT_PATH_ABS "${THE_ROOT_PATH}" ABSOLUTE) - get_filename_component (THE_BEING_CHECKED_PATH_ABS "${THE_BEING_CHECKED_PATH}" ABSOLUTE) - - string (REGEX MATCH "${THE_ROOT_PATH_ABS}" DOES_PATH_CONTAIN "${THE_BEING_CHECKED_PATH_ABS}") - - if (NOT DOES_PATH_CONTAIN) # if cmake found the being checked path at different place from THE_ROOT_PATH_ABS - set (${THE_BEING_CHECKED_PATH_NAME} "" CACHE ${THE_VAR_TYPE} "${THE_MESSAGE_OF_BEING_CHECKED_PATH}" FORCE) - endif() - else() - set (${THE_BEING_CHECKED_PATH_NAME} "" CACHE ${THE_VAR_TYPE} "${THE_MESSAGE_OF_BEING_CHECKED_PATH}" FORCE) - endif() - -endmacro() - -# Adds OCCT_INSTALL_BIN_LETTER variable ("" for Release, "d" for Debug and -# "i" for RelWithDebInfo) in OpenCASCADETargets-*.cmake files during -# installation process. -# This and the following macros are used to overcome limitation of CMake -# prior to version 3.3 not supporting per-configuration install paths -# for install target files (see https://cmake.org/Bug/view.php?id=14317) -macro (OCCT_UPDATE_TARGET_FILE) - if (MSVC) - OCCT_INSERT_CODE_FOR_TARGET () - endif() - - install (CODE - "string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWERCASE) - file (GLOB ALL_OCCT_TARGET_FILES \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE*Targets-\${CMAKE_INSTALL_CONFIG_NAME_LOWERCASE}.cmake\") - foreach(TARGET_FILENAME \${ALL_OCCT_TARGET_FILES}) - file (STRINGS \"\${TARGET_FILENAME}\" TARGET_FILE_CONTENT) - file (REMOVE \"\${TARGET_FILENAME}\") - foreach (line IN LISTS TARGET_FILE_CONTENT) - string (REGEX REPLACE \"[\\\\]?[\\\$]{OCCT_INSTALL_BIN_LETTER}\" \"\${OCCT_INSTALL_BIN_LETTER}\" line \"\${line}\") - file (APPEND \"\${TARGET_FILENAME}\" \"\${line}\\n\") - endforeach() - endforeach()") -endmacro() - -macro (OCCT_INSERT_CODE_FOR_TARGET) - install(CODE "if (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$\") - set (OCCT_INSTALL_BIN_LETTER \"\") - elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$\") - set (OCCT_INSTALL_BIN_LETTER \"i\") - elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Dd][Ee][Bb][Uu][Gg])$\") - set (OCCT_INSTALL_BIN_LETTER \"d\") - endif()") -endmacro() - -macro (OCCT_UPDATE_DRAW_DEFAULT_FILE) - install(CODE "set (DRAW_DEFAULT_FILE_NAME \"${INSTALL_DIR}/${INSTALL_DIR_RESOURCE}/DrawResources/DrawPlugin\") - file (STRINGS \"\${DRAW_DEFAULT_FILE_NAME}\" DRAW_DEFAULT_CONTENT) - file (REMOVE \"\${DRAW_DEFAULT_FILE_NAME}\") - foreach (line IN LISTS DRAW_DEFAULT_CONTENT) - string (REGEX MATCH \": TK\([a-zA-Z]+\)$\" IS_TK_LINE \"\${line}\") - string (REGEX REPLACE \": TK\([a-zA-Z]+\)$\" \": TK\${CMAKE_MATCH_1}${BUILD_SHARED_LIBRARY_NAME_POSTFIX}\" line \"\${line}\") - file (APPEND \"\${DRAW_DEFAULT_FILE_NAME}\" \"\${line}\\n\") - endforeach()") -endmacro() - -macro (OCCT_CREATE_SYMLINK_TO_FILE LIBRARY_NAME LINK_NAME) - if (NOT WIN32) - install (CODE "if (EXISTS \"${LIBRARY_NAME}\") - execute_process (COMMAND ln -s \"${LIBRARY_NAME}\" \"${LINK_NAME}\") - endif() - ") - endif() -endmacro() +## + +if(OCCT_MACROS_ALREADY_INCLUDED) + return() +endif() +set(OCCT_MACROS_ALREADY_INCLUDED 1) + + +macro (OCCT_CHECK_AND_UNSET VARNAME) + if (DEFINED ${VARNAME}) + unset (${VARNAME} CACHE) + endif() +endmacro() + +macro (OCCT_CHECK_AND_UNSET_GROUP GROUPNAME) + get_cmake_property(VARS VARIABLES) + string (REGEX MATCHALL "(^|;)${GROUPNAME}[A-Za-z0-9_]*" GROUPNAME_VARS "${VARS}") + foreach(GROUPNAME_VAR ${GROUPNAME_VARS}) + OCCT_CHECK_AND_UNSET(${GROUPNAME_VAR}) + endforeach() +endmacro() + +macro (OCCT_CHECK_AND_UNSET_INSTALL_DIR_SUBDIRS) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_BIN) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_SCRIPT) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_LIB) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_INCLUDE) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_RESOURCE) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_DATA) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_SAMPLES) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_TESTS) + OCCT_CHECK_AND_UNSET (INSTALL_DIR_DOC) +endmacro() + +# COMPILER_BITNESS variable +macro (OCCT_MAKE_COMPILER_BITNESS) + math (EXPR COMPILER_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)") +endmacro() + +# OS_WITH_BIT +macro (OCCT_MAKE_OS_WITH_BITNESS) + + OCCT_MAKE_COMPILER_BITNESS() + + if (WIN32) + set (OS_WITH_BIT "win${COMPILER_BITNESS}") + elseif(APPLE) + set (OS_WITH_BIT "mac${COMPILER_BITNESS}") + else() + set (OS_WITH_BIT "lin${COMPILER_BITNESS}") + endif() +endmacro() + +# COMPILER variable +macro (OCCT_MAKE_COMPILER_SHORT_NAME) + if (MSVC) + if ((MSVC_VERSION EQUAL 1300) OR (MSVC_VERSION EQUAL 1310)) + set (COMPILER vc7) + elseif (MSVC_VERSION EQUAL 1400) + set (COMPILER vc8) + elseif (MSVC_VERSION EQUAL 1500) + set (COMPILER vc9) + elseif (MSVC_VERSION EQUAL 1600) + set (COMPILER vc10) + elseif (MSVC_VERSION EQUAL 1700) + set (COMPILER vc11) + elseif (MSVC_VERSION EQUAL 1800) + set (COMPILER vc12) + elseif (MSVC_VERSION EQUAL 1900) + set (COMPILER vc14) + elseif ((MSVC_VERSION GREATER 1900) AND (MSVC_VERSION LESS 2000)) + # Since Visual Studio 15 (2017), its version diverged from version of + # compiler which is 14.1; as that compiler uses the same run-time as 14.0, + # we keep its id as "vc14" to be compatibille + set (COMPILER vc14) + else() + message (FATAL_ERROR "Unrecognized MSVC_VERSION") + endif() + elseif (DEFINED CMAKE_COMPILER_IS_GNUCC) + set (COMPILER gcc) + elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX) + set (COMPILER gxx) + elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]") + set (COMPILER clang) + elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Ii][Nn][Tt][Ee][Ll]") + set (COMPILER icc) + else() + set (COMPILER ${CMAKE_GENERATOR}) + string (REGEX REPLACE " " "" COMPILER ${COMPILER}) + endif() +endmacro() + +function (SUBDIRECTORY_NAMES MAIN_DIRECTORY RESULT) + file (GLOB SUB_ITEMS "${MAIN_DIRECTORY}/*") + + foreach (ITEM ${SUB_ITEMS}) + if (IS_DIRECTORY "${ITEM}") + get_filename_component (ITEM_NAME "${ITEM}" NAME) + list (APPEND LOCAL_RESULT "${ITEM_NAME}") + endif() + endforeach() + set (${RESULT} ${LOCAL_RESULT} PARENT_SCOPE) +endfunction() + +function (FIND_SUBDIRECTORY ROOT_DIRECTORY DIRECTORY_SUFFIX SUBDIRECTORY_NAME) + #message("Trying to find directory with suffix ${DIRECTORY_SUFFIX} in ${ROOT_DIRECTORY}") + SUBDIRECTORY_NAMES ("${ROOT_DIRECTORY}" SUBDIR_NAME_LIST) + #message("Subdirectories: ${SUBDIR_NAME_LIST}") + + #set(${SUBDIRECTORY_NAME} "${SUBDIR_NAME_LIST}" PARENT_SCOPE) + + foreach (SUBDIR_NAME ${SUBDIR_NAME_LIST}) + #message("Subdir: ${SUBDIR_NAME}, ${DIRECTORY_SUFFIX}") + # REGEX failed if the directory name contains '++' combination, so we replace it + string(REPLACE "+" "\\+" SUBDIR_NAME_ESCAPED ${SUBDIR_NAME}) + string (REGEX MATCH "${SUBDIR_NAME_ESCAPED}" DOES_PATH_CONTAIN "${DIRECTORY_SUFFIX}") + if (DOES_PATH_CONTAIN) + set(${SUBDIRECTORY_NAME} "${ROOT_DIRECTORY}/${SUBDIR_NAME}" PARENT_SCOPE) + #message("Subdirectory is found: ${SUBDIRECTORY_NAME}") + BREAK() + else() + #message("Check directory: ${ROOT_DIRECTORY}/${SUBDIR_NAME}") + FIND_SUBDIRECTORY ("${ROOT_DIRECTORY}/${SUBDIR_NAME}" "${DIRECTORY_SUFFIX}" SUBDIR_REC_NAME) + if (NOT "${SUBDIR_REC_NAME}" STREQUAL "") + set(${SUBDIRECTORY_NAME} "${SUBDIR_REC_NAME}" PARENT_SCOPE) + #message("Subdirectory is found: ${SUBDIRECTORY_NAME}") + BREAK() + endif() + endif() + endforeach() +endfunction() + +function (OCCT_ORIGIN_AND_PATCHED_FILES RELATIVE_PATH SEARCH_TEMPLATE RESULT) + + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}") + file (GLOB FOUND_FILES "${BUILD_PATCH}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}") + endif() + + file (GLOB ORIGIN_FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}") + foreach (ORIGIN_FILE ${ORIGIN_FILES}) + # check for existence of patched version of current file + if (NOT BUILD_PATCH OR NOT EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}") + list (APPEND FOUND_FILES ${ORIGIN_FILE}) + else() + get_filename_component (ORIGIN_FILE_NAME "${ORIGIN_FILE}" NAME) + if (NOT EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}/${ORIGIN_FILE_NAME}") + list (APPEND FOUND_FILES ${ORIGIN_FILE}) + endif() + endif() + endforeach() + + set (${RESULT} ${FOUND_FILES} PARENT_SCOPE) +endfunction() + +function (FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT) + OCCT_MAKE_COMPILER_SHORT_NAME() + OCCT_MAKE_COMPILER_BITNESS() + + string (TOLOWER "${PRODUCT_NAME}" lower_PRODUCT_NAME) + if ("${lower_PRODUCT_NAME}" STREQUAL "egl") + string (SUBSTRING "${lower_PRODUCT_NAME}" 1 -1 lower_PRODUCT_NAME) + list (APPEND SEARCH_TEMPLATES "[^gl]+${lower_PRODUCT_NAME}.*") + elseif ("${lower_PRODUCT_NAME}" STREQUAL "tbb") + list (APPEND SEARCH_TEMPLATES "^.*${lower_PRODUCT_NAME}.*") + else() + list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*${COMPILER}.*${COMPILER_BITNESS}") + list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}") + list (APPEND SEARCH_TEMPLATES "^[a-zA-Z]*[0-9]*-${lower_PRODUCT_NAME}[^a-zA-Z]*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}") + list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*[0-9.]+.*${COMPILER_BITNESS}") + list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*.*${COMPILER_BITNESS}") + list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*[0-9.]+") + list (APPEND SEARCH_TEMPLATES "^[^a-zA-Z]*${lower_PRODUCT_NAME}[^a-zA-Z]*") + endif() + + SUBDIRECTORY_NAMES ("${ROOT_DIR}" SUBDIR_NAME_LIST) + + foreach (SEARCH_TEMPLATE ${SEARCH_TEMPLATES}) + if (LOCAL_RESULT) + BREAK() + endif() + + foreach (SUBDIR_NAME ${SUBDIR_NAME_LIST}) + string (TOLOWER "${SUBDIR_NAME}" lower_SUBDIR_NAME) + + string (REGEX MATCH "${SEARCH_TEMPLATE}" DUMMY_VAR "${lower_SUBDIR_NAME}") + if (DUMMY_VAR) + list (APPEND LOCAL_RESULT ${SUBDIR_NAME}) + endif() + endforeach() + endforeach() + + if (LOCAL_RESULT) + list (GET LOCAL_RESULT -1 DUMMY) + set (${RESULT} ${DUMMY} PARENT_SCOPE) + endif() +endfunction() + +macro (OCCT_INSTALL_FILE_OR_DIR BEING_INSTALLED_OBJECT DESTINATION_PATH) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}") + if (IS_DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}") + # first of all, install original files + install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") + + # secondly, rewrite original files with patched ones + install (DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") + else() + install (FILES "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") + endif() + else() + if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}") + install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") + else() + install (FILES "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}") + endif() + endif() +endmacro() + +macro (OCCT_CONFIGURE_AND_INSTALL BEING_CONGIRUGED_FILE BUILD_NAME INSTALL_NAME DESTINATION_PATH) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}") + configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY) + else() + configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY) + endif() + + install(FILES "${OCCT_BINARY_DIR}/${BUILD_NAME}" DESTINATION "${DESTINATION_PATH}" RENAME ${INSTALL_NAME}) +endmacro() + +macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOOLKITS OCCT_COLLECT_SOURCE_DIR OCCT_INSTALL_DIR_PREFIX) + set (OCCT_USED_PACKAGES) + + # consider patched header.in template + set (TEMPLATE_HEADER_PATH "${CMAKE_SOURCE_DIR}/adm/templates/header.in") + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/header.in") + set (TEMPLATE_HEADER_PATH "${BUILD_PATCH}/adm/templates/header.in") + endif() + + set (ROOT_OCCT_DIR ${CMAKE_SOURCE_DIR}) + + foreach (OCCT_USED_TOOLKIT ${OCCT_BUILD_TOOLKITS}) + # append all required package folders + set (OCCT_TOOLKIT_PACKAGES) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_USED_TOOLKIT}/PACKAGES") + file (STRINGS "${BUILD_PATCH}/src/${OCCT_USED_TOOLKIT}/PACKAGES" OCCT_TOOLKIT_PACKAGES) + elseif (EXISTS "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_USED_TOOLKIT}/PACKAGES") + file (STRINGS "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_USED_TOOLKIT}/PACKAGES" OCCT_TOOLKIT_PACKAGES) + endif() + + list (APPEND OCCT_USED_PACKAGES ${OCCT_TOOLKIT_PACKAGES}) + endforeach() + + list (REMOVE_DUPLICATES OCCT_USED_PACKAGES) + + set (OCCT_HEADER_FILES_COMPLETE) + set (OCCT_HEADER_FILE_NAMES_NOT_IN_FILES) + set (OCCT_HEADER_FILE_WITH_PROPER_NAMES) + + string(TIMESTAMP CURRENT_TIME "%H:%M:%S") + message (STATUS "Info: \(${CURRENT_TIME}\) Compare FILES with files in package directories...") + + foreach (OCCT_PACKAGE ${OCCT_USED_PACKAGES}) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES") + file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" OCCT_ALL_FILE_NAMES) + elseif (EXISTS "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/FILES") + file (STRINGS "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/FILES" OCCT_ALL_FILE_NAMES) + else() + message (WARNING "FILES has not been found in ${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}") + continue() + endif() + + list (LENGTH OCCT_ALL_FILE_NAMES ALL_FILES_NB) + math (EXPR ALL_FILES_NB "${ALL_FILES_NB} - 1" ) + + # emit warnings if there are unprocessed headers + file (GLOB OCCT_ALL_FILES_IN_DIR "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/*.*") + file (GLOB OCCT_ALL_FILES_IN_PATCH_DIR "${BUILD_PATCH}/src/${OCCT_PACKAGE}/*.*") + + # use patched header files + foreach (OCCT_FILE_IN_PATCH_DIR ${OCCT_ALL_FILES_IN_PATCH_DIR}) + get_filename_component (OCCT_FILE_IN_PATCH_DIR_NAME ${OCCT_FILE_IN_PATCH_DIR} NAME) + list (REMOVE_ITEM OCCT_ALL_FILES_IN_DIR "${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/${OCCT_FILE_IN_PATCH_DIR_NAME}") + list (APPEND OCCT_ALL_FILES_IN_DIR "${OCCT_FILE_IN_PATCH_DIR}") + endforeach() + + foreach (OCCT_FILE_IN_DIR ${OCCT_ALL_FILES_IN_DIR}) + get_filename_component (OCCT_FILE_IN_DIR_NAME ${OCCT_FILE_IN_DIR} NAME) + + set (OCCT_FILE_IN_DIR_STATUS OFF) + + if (${ALL_FILES_NB} LESS 0) + break() + endif() + + foreach (FILE_INDEX RANGE ${ALL_FILES_NB}) + list (GET OCCT_ALL_FILE_NAMES ${FILE_INDEX} OCCT_FILE_NAME) + + string (REGEX REPLACE "[^:]+:+" "" OCCT_FILE_NAME "${OCCT_FILE_NAME}") + + if ("${OCCT_FILE_IN_DIR_NAME}" STREQUAL "${OCCT_FILE_NAME}") + set (OCCT_FILE_IN_DIR_STATUS ON) + + string (REGEX MATCH ".+\\.[hlg]xx|.+\\.h$" IS_HEADER_FOUND "${OCCT_FILE_NAME}") + if (IS_HEADER_FOUND) + list (APPEND OCCT_HEADER_FILES_COMPLETE ${OCCT_FILE_IN_DIR}) + + # collect header files with name that does not contain its package one + string (REGEX MATCH "^${OCCT_PACKAGE}[_.]" IS_HEADER_MATHCING_PACKAGE "${OCCT_FILE_NAME}") + if (NOT IS_HEADER_MATHCING_PACKAGE) + list (APPEND OCCT_HEADER_FILE_WITH_PROPER_NAMES "${OCCT_FILE_NAME}") + endif() + endif() + + # remove found element from list + list (REMOVE_AT OCCT_ALL_FILE_NAMES ${FILE_INDEX}) + math (EXPR ALL_FILES_NB "${ALL_FILES_NB} - 1" ) # decrement number + + break() + endif() + endforeach() + + if (NOT OCCT_FILE_IN_DIR_STATUS) + message (STATUS "Warning. File ${OCCT_FILE_IN_DIR} is not listed in ${OCCT_COLLECT_SOURCE_DIR}/${OCCT_PACKAGE}/FILES") + + string (REGEX MATCH ".+\\.[hlg]xx|.+\\.h$" IS_HEADER_FOUND "${OCCT_FILE_NAME}") + if (IS_HEADER_FOUND) + list (APPEND OCCT_HEADER_FILE_NAMES_NOT_IN_FILES ${OCCT_FILE_NAME}) + endif() + endif() + endforeach() + endforeach() + + # create new file including found header + string(TIMESTAMP CURRENT_TIME "%H:%M:%S") + message (STATUS "Info: \(${CURRENT_TIME}\) Create header-links in inc folder...") + + foreach (OCCT_HEADER_FILE ${OCCT_HEADER_FILES_COMPLETE}) + get_filename_component (HEADER_FILE_NAME ${OCCT_HEADER_FILE} NAME) + set (OCCT_HEADER_FILE_CONTENT "#include \"${OCCT_HEADER_FILE}\"") + configure_file ("${TEMPLATE_HEADER_PATH}" "${ROOT_TARGET_OCCT_DIR}/${OCCT_INSTALL_DIR_PREFIX}/${HEADER_FILE_NAME}" @ONLY) + endforeach() + + install (FILES ${OCCT_HEADER_FILES_COMPLETE} DESTINATION "${INSTALL_DIR}/${OCCT_INSTALL_DIR_PREFIX}") + + string(TIMESTAMP CURRENT_TIME "%H:%M:%S") + message (STATUS "Info: \(${CURRENT_TIME}\) Checking headers in inc folder...") + + file (GLOB OCCT_HEADER_FILES_OLD "${ROOT_TARGET_OCCT_DIR}/${OCCT_INSTALL_DIR_PREFIX}/*") + foreach (OCCT_HEADER_FILE_OLD ${OCCT_HEADER_FILES_OLD}) + get_filename_component (HEADER_FILE_NAME ${OCCT_HEADER_FILE_OLD} NAME) + string (REGEX MATCH "^[a-zA-Z0-9]+" PACKAGE_NAME "${HEADER_FILE_NAME}") + + list (FIND OCCT_USED_PACKAGES ${PACKAGE_NAME} IS_HEADER_FOUND) + if (NOT ${IS_HEADER_FOUND} EQUAL -1) + if (NOT EXISTS "${OCCT_COLLECT_SOURCE_DIR}/${PACKAGE_NAME}/${HEADER_FILE_NAME}") + message (STATUS "Warning. ${OCCT_HEADER_FILE_OLD} is not present in the sources and will be removed from ${ROOT_TARGET_OCCT_DIR}/inc") + file (REMOVE "${OCCT_HEADER_FILE_OLD}") + else() + list (FIND OCCT_HEADER_FILE_NAMES_NOT_IN_FILES ${PACKAGE_NAME} IS_HEADER_FOUND) + if (NOT ${IS_HEADER_FOUND} EQUAL -1) + message (STATUS "Warning. ${OCCT_HEADER_FILE_OLD} is present in the sources but not involved in FILES and will be removed from ${ROOT_TARGET_OCCT_DIR}/inc") + file (REMOVE "${OCCT_HEADER_FILE_OLD}") + endif() + endif() + else() + set (IS_HEADER_FOUND -1) + if (NOT "${OCCT_HEADER_FILE_WITH_PROPER_NAMES}" STREQUAL "") + list (FIND OCCT_HEADER_FILE_WITH_PROPER_NAMES ${HEADER_FILE_NAME} IS_HEADER_FOUND) + endif() + + if (${IS_HEADER_FOUND} EQUAL -1) + message (STATUS "Warning. \(${PACKAGE_NAME}\) ${OCCT_HEADER_FILE_OLD} is not used and will be removed from ${ROOT_TARGET_OCCT_DIR}/inc") + file (REMOVE "${OCCT_HEADER_FILE_OLD}") + endif() + endif() + endforeach() +endmacro() + +macro (OCCT_COPY_FILE_OR_DIR BEING_COPIED_OBJECT DESTINATION_PATH) + # first of all, copy original files + if (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_COPIED_OBJECT}") + file (COPY "${CMAKE_SOURCE_DIR}/${BEING_COPIED_OBJECT}" DESTINATION "${DESTINATION_PATH}") + endif() + + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_COPIED_OBJECT}") + # secondly, rewrite original files with patched ones + file (COPY "${BUILD_PATCH}/${BEING_COPIED_OBJECT}" DESTINATION "${DESTINATION_PATH}") + endif() +endmacro() + +macro (OCCT_CONFIGURE BEING_CONGIRUGED_FILE FINAL_NAME) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}") + configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY) + else() + configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY) + endif() +endmacro() + +macro (OCCT_ADD_SUBDIRECTORY BEING_ADDED_DIRECTORY) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt") + add_subdirectory(${BUILD_PATCH}/${BEING_ADDED_DIRECTORY}) + elseif (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt") + add_subdirectory (${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY}) + else() + message (STATUS "${BEING_ADDED_DIRECTORY} directory is not included") + endif() +endmacro() + +function (OCCT_IS_PRODUCT_REQUIRED CSF_VAR_NAME USE_PRODUCT) + set (${USE_PRODUCT} OFF PARENT_SCOPE) + + if (NOT BUILD_TOOLKITS) + message(STATUS "Warning: the list of being used toolkits is empty") + else() + foreach (USED_TOOLKIT ${BUILD_TOOLKITS}) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${USED_TOOLKIT}/EXTERNLIB") + file (READ "${BUILD_PATCH}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT) + elseif (EXISTS "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB") + file (READ "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT) + endif() + + string (REGEX MATCH "${CSF_VAR_NAME}" DOES_FILE_CONTAIN "${FILE_CONTENT}") + + if (DOES_FILE_CONTAIN) + set (${USE_PRODUCT} ON PARENT_SCOPE) + break() + endif() + endforeach() + endif() +endfunction() + +function (FILE_TO_LIST FILE_NAME FILE_CONTENT) + set (LOCAL_FILE_CONTENT) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${FILE_NAME}") + file (STRINGS "${BUILD_PATCH}/${FILE_NAME}" LOCAL_FILE_CONTENT) + elseif (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_NAME}") + file (STRINGS "${CMAKE_SOURCE_DIR}/${FILE_NAME}" LOCAL_FILE_CONTENT) + endif() + + set (${FILE_CONTENT} ${LOCAL_FILE_CONTENT} PARENT_SCOPE) +endfunction() + +# Function to determine if TOOLKIT is OCCT toolkit +function (IS_OCCT_TOOLKIT TOOLKIT_NAME MODULES IS_TOOLKIT_FOUND) + set (${IS_TOOLKIT_FOUND} OFF PARENT_SCOPE) + foreach (MODULE ${${MODULES}}) + set (TOOLKITS ${${MODULE}_TOOLKITS}) + list (FIND TOOLKITS ${TOOLKIT_NAME} FOUND) + + if (NOT ${FOUND} EQUAL -1) + set (${IS_TOOLKIT_FOUND} ON PARENT_SCOPE) + endif() + endforeach(MODULE) +endfunction() + +# TOOLKIT_DEPS is defined with dependencies from file src/TOOLKIT_NAME/EXTERNLIB. +# CSF_ variables are ignored +function (OCCT_TOOLKIT_DEP TOOLKIT_NAME TOOLKIT_DEPS) + FILE_TO_LIST ("src/${TOOLKIT_NAME}/EXTERNLIB" FILE_CONTENT) + + #list (APPEND LOCAL_TOOLKIT_DEPS ${TOOLKIT_NAME}) + set (LOCAL_TOOLKIT_DEPS) + foreach (FILE_CONTENT_LINE ${FILE_CONTENT}) + string (REGEX MATCH "^TK" TK_FOUND ${FILE_CONTENT_LINE}) + if ("x${FILE_CONTENT_LINE}" STREQUAL "xDRAWEXE" OR NOT "${TK_FOUND}" STREQUAL "") + list (APPEND LOCAL_TOOLKIT_DEPS ${FILE_CONTENT_LINE}) + endif() + endforeach() + + set (${TOOLKIT_DEPS} ${LOCAL_TOOLKIT_DEPS} PARENT_SCOPE) +endfunction() + +# TOOLKIT_FULL_DEPS is defined with complete dependencies (all levels) +function (OCCT_TOOLKIT_FULL_DEP TOOLKIT_NAME TOOLKIT_FULL_DEPS) + # first level dependencies are stored in LOCAL_TOOLKIT_FULL_DEPS + OCCT_TOOLKIT_DEP (${TOOLKIT_NAME} LOCAL_TOOLKIT_FULL_DEPS) + + list (LENGTH LOCAL_TOOLKIT_FULL_DEPS LIST_LENGTH) + set (LIST_INDEX 0) + while (LIST_INDEX LESS LIST_LENGTH) + list (GET LOCAL_TOOLKIT_FULL_DEPS ${LIST_INDEX} CURRENT_TOOLKIT) + OCCT_TOOLKIT_DEP (${CURRENT_TOOLKIT} CURRENT_TOOLKIT_DEPS) + + # append toolkits are not contained + foreach (CURRENT_TOOLKIT_DEP ${CURRENT_TOOLKIT_DEPS}) + set (CURRENT_TOOLKIT_DEP_FOUND OFF) + foreach (LOCAL_TOOLKIT_FULL_DEP ${LOCAL_TOOLKIT_FULL_DEPS}) + if ("${CURRENT_TOOLKIT_DEP}" STREQUAL "${LOCAL_TOOLKIT_FULL_DEP}") + set (CURRENT_TOOLKIT_DEP_FOUND ON) + break() + endif() + endforeach() + if ("${CURRENT_TOOLKIT_DEP_FOUND}" STREQUAL "OFF") + list (APPEND LOCAL_TOOLKIT_FULL_DEPS ${CURRENT_TOOLKIT_DEP}) + endif() + endforeach() + + # increment the list index + MATH(EXPR LIST_INDEX "${LIST_INDEX}+1") + + # calculate new length + list (LENGTH LOCAL_TOOLKIT_FULL_DEPS LIST_LENGTH) + endwhile() + + set (${TOOLKIT_FULL_DEPS} ${LOCAL_TOOLKIT_FULL_DEPS} PARENT_SCOPE) +endfunction() + +# Function to get list of modules/toolkits/samples from file adm/${FILE_NAME}. +# Creates list <$MODULE_LIST> to store list of MODULES and +# _TOOLKITS foreach module to store its toolkits, where "TOOLKITS" is defined by TOOLKITS_NAME_SUFFIX. +function (OCCT_MODULES_AND_TOOLKITS FILE_NAME TOOLKITS_NAME_SUFFIX MODULE_LIST) + FILE_TO_LIST ("adm/${FILE_NAME}" FILE_CONTENT) + + foreach (CONTENT_LINE ${FILE_CONTENT}) + string (REPLACE " " ";" CONTENT_LINE ${CONTENT_LINE}) + list (GET CONTENT_LINE 0 MODULE_NAME) + list (REMOVE_AT CONTENT_LINE 0) + list (APPEND ${MODULE_LIST} ${MODULE_NAME}) + # (!) REMOVE THE LINE BELOW (implicit variables) + set (${MODULE_NAME}_${TOOLKITS_NAME_SUFFIX} ${CONTENT_LINE} PARENT_SCOPE) + endforeach() + + set (${MODULE_LIST} ${${MODULE_LIST}} PARENT_SCOPE) +endfunction() + +# Returns OCC version string from file Standard_Version.hxx (if available) +function (OCC_VERSION OCC_VERSION_MAJOR OCC_VERSION_MINOR OCC_VERSION_MAINTENANCE OCC_VERSION_DEVELOPMENT OCC_VERSION_STRING_EXT) + + set (OCC_VERSION_MAJOR 7) + set (OCC_VERSION_MINOR 0) + set (OCC_VERSION_MAINTENANCE 0) + set (OCC_VERSION_DEVELOPMENT dev) + set (OCC_VERSION_COMPLETE "7.0.0") + + set (STANDARD_VERSION_FILE "${CMAKE_SOURCE_DIR}/src/Standard/Standard_Version.hxx") + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/Standard/Standard_Version.hxx") + set (STANDARD_VERSION_FILE "${BUILD_PATCH}/src/Standard/Standard_Version.hxx") + endif() + + if (EXISTS "${STANDARD_VERSION_FILE}") + foreach (SOUGHT_VERSION OCC_VERSION_MAJOR OCC_VERSION_MINOR OCC_VERSION_MAINTENANCE) + file (STRINGS "${STANDARD_VERSION_FILE}" ${SOUGHT_VERSION} REGEX "^#define ${SOUGHT_VERSION} .*") + string (REGEX REPLACE ".*${SOUGHT_VERSION} .*([^ ]+).*" "\\1" ${SOUGHT_VERSION} "${${SOUGHT_VERSION}}" ) + endforeach() + + foreach (SOUGHT_VERSION OCC_VERSION_DEVELOPMENT OCC_VERSION_COMPLETE) + file (STRINGS "${STANDARD_VERSION_FILE}" ${SOUGHT_VERSION} REGEX "^#define ${SOUGHT_VERSION} .*") + string (REGEX REPLACE ".*${SOUGHT_VERSION} .*\"([^ ]+)\".*" "\\1" ${SOUGHT_VERSION} "${${SOUGHT_VERSION}}" ) + endforeach() + endif() + + set (OCC_VERSION_MAJOR "${OCC_VERSION_MAJOR}" PARENT_SCOPE) + set (OCC_VERSION_MINOR "${OCC_VERSION_MINOR}" PARENT_SCOPE) + set (OCC_VERSION_MAINTENANCE "${OCC_VERSION_MAINTENANCE}" PARENT_SCOPE) + set (OCC_VERSION_DEVELOPMENT "${OCC_VERSION_DEVELOPMENT}" PARENT_SCOPE) + + if (OCC_VERSION_DEVELOPMENT AND OCC_VERSION_COMPLETE) + set (OCC_VERSION_STRING_EXT "${OCC_VERSION_COMPLETE}.${OCC_VERSION_DEVELOPMENT}" PARENT_SCOPE) + else() + set (OCC_VERSION_STRING_EXT "${OCC_VERSION_COMPLETE}" PARENT_SCOPE) + endif() +endfunction() + +macro (CHECK_PATH_FOR_CONSISTENCY THE_ROOT_PATH_NAME THE_BEING_CHECKED_PATH_NAME THE_VAR_TYPE THE_MESSAGE_OF_BEING_CHECKED_PATH) + + set (THE_ROOT_PATH "${${THE_ROOT_PATH_NAME}}") + set (THE_BEING_CHECKED_PATH "${${THE_BEING_CHECKED_PATH_NAME}}") + + if (THE_BEING_CHECKED_PATH OR EXISTS "${THE_BEING_CHECKED_PATH}") + get_filename_component (THE_ROOT_PATH_ABS "${THE_ROOT_PATH}" ABSOLUTE) + get_filename_component (THE_BEING_CHECKED_PATH_ABS "${THE_BEING_CHECKED_PATH}" ABSOLUTE) + + string (REGEX MATCH "${THE_ROOT_PATH_ABS}" DOES_PATH_CONTAIN "${THE_BEING_CHECKED_PATH_ABS}") + + if (NOT DOES_PATH_CONTAIN) # if cmake found the being checked path at different place from THE_ROOT_PATH_ABS + set (${THE_BEING_CHECKED_PATH_NAME} "" CACHE ${THE_VAR_TYPE} "${THE_MESSAGE_OF_BEING_CHECKED_PATH}" FORCE) + endif() + else() + set (${THE_BEING_CHECKED_PATH_NAME} "" CACHE ${THE_VAR_TYPE} "${THE_MESSAGE_OF_BEING_CHECKED_PATH}" FORCE) + endif() + +endmacro() + +# Adds OCCT_INSTALL_BIN_LETTER variable ("" for Release, "d" for Debug and +# "i" for RelWithDebInfo) in OpenCASCADETargets-*.cmake files during +# installation process. +# This and the following macros are used to overcome limitation of CMake +# prior to version 3.3 not supporting per-configuration install paths +# for install target files (see https://cmake.org/Bug/view.php?id=14317) +macro (OCCT_UPDATE_TARGET_FILE) + if (MSVC) + OCCT_INSERT_CODE_FOR_TARGET () + endif() + + install (CODE + "string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWERCASE) + file (GLOB ALL_OCCT_TARGET_FILES \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE*Targets-\${CMAKE_INSTALL_CONFIG_NAME_LOWERCASE}.cmake\") + foreach(TARGET_FILENAME \${ALL_OCCT_TARGET_FILES}) + file (STRINGS \"\${TARGET_FILENAME}\" TARGET_FILE_CONTENT) + file (REMOVE \"\${TARGET_FILENAME}\") + foreach (line IN LISTS TARGET_FILE_CONTENT) + string (REGEX REPLACE \"[\\\\]?[\\\$]{OCCT_INSTALL_BIN_LETTER}\" \"\${OCCT_INSTALL_BIN_LETTER}\" line \"\${line}\") + file (APPEND \"\${TARGET_FILENAME}\" \"\${line}\\n\") + endforeach() + endforeach()") +endmacro() + +macro (OCCT_INSERT_CODE_FOR_TARGET) + install(CODE "if (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$\") + set (OCCT_INSTALL_BIN_LETTER \"\") + elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$\") + set (OCCT_INSTALL_BIN_LETTER \"i\") + elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Dd][Ee][Bb][Uu][Gg])$\") + set (OCCT_INSTALL_BIN_LETTER \"d\") + endif()") +endmacro() + +macro (OCCT_UPDATE_DRAW_DEFAULT_FILE) + install(CODE "set (DRAW_DEFAULT_FILE_NAME \"${INSTALL_DIR}/${INSTALL_DIR_RESOURCE}/DrawResources/DrawPlugin\") + file (STRINGS \"\${DRAW_DEFAULT_FILE_NAME}\" DRAW_DEFAULT_CONTENT) + file (REMOVE \"\${DRAW_DEFAULT_FILE_NAME}\") + foreach (line IN LISTS DRAW_DEFAULT_CONTENT) + string (REGEX MATCH \": TK\([a-zA-Z]+\)$\" IS_TK_LINE \"\${line}\") + string (REGEX REPLACE \": TK\([a-zA-Z]+\)$\" \": TK\${CMAKE_MATCH_1}${BUILD_SHARED_LIBRARY_NAME_POSTFIX}\" line \"\${line}\") + file (APPEND \"\${DRAW_DEFAULT_FILE_NAME}\" \"\${line}\\n\") + endforeach()") +endmacro() + +macro (OCCT_CREATE_SYMLINK_TO_FILE LIBRARY_NAME LINK_NAME) + if (NOT WIN32) + install (CODE "if (EXISTS \"${LIBRARY_NAME}\") + execute_process (COMMAND ln -s \"${LIBRARY_NAME}\" \"${LINK_NAME}\") + endif() + ") + endif() +endmacro() diff --git a/adm/cmake/occt_resources.cmake b/adm/cmake/occt_resources.cmake index d51df4d367..3c2514dfdf 100644 --- a/adm/cmake/occt_resources.cmake +++ b/adm/cmake/occt_resources.cmake @@ -1,78 +1,78 @@ -# OCCT resource files generation - -macro (OCCT_GENERATE_CONTENT_ONLY CurrentResource) - set (RESOURCE_FILES) - set (isResDirectory FALSE) - if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/src/${CurrentResource}") - file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource}/FILES" RESOURCE_FILES) - set (CurrentResource_Directory "${CurrentResource}") - set (isResDirectory TRUE) - else() - get_filename_component (CurrentResource_Name "${CurrentResource}" NAME) - list (APPEND RESOURCE_FILES "res:::${CurrentResource_Name}") - get_filename_component (CurrentResource_Directory "${CurrentResource}" DIRECTORY) - endif() - - # Add current toolkit into RESOURCE_TOOLKITS array to copy it to the BUILD directory - list (APPEND RESOURCE_TOOLKITS "${CurrentResource_Directory}") - list (REMOVE_DUPLICATES RESOURCE_TOOLKITS) - - if (BUILD_RESOURCES) - foreach (RESOURCE_FILE ${RESOURCE_FILES}) - string (REGEX MATCH "^[^:]+:::" IS_RESOURCE "${RESOURCE_FILE}") - if (IS_RESOURCE) - string (REGEX REPLACE "[^:]+:+" "" RESOURCE_FILE "${RESOURCE_FILE}") - - get_filename_component (CurrentResource_FileName "${RESOURCE_FILE}" NAME) - string (REPLACE "." "_" CurrentResource_FileName "${CurrentResource_FileName}") - set (HEADER_FILE_NAME "${CurrentResource_Directory}_${CurrentResource_FileName}.pxx") - - set (toProcessResFile TRUE) - if (isResDirectory) - list (FIND RESOURCE_FILES "${HEADER_FILE_NAME}" aResIndex) - if ("${aResIndex}" STREQUAL "-1") - set (toProcessResFile FALSE) - endif() - endif() - - if (toProcessResFile) - message(STATUS "Info. Generating header file from resource file: ${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}") - - # generate content for header file - set (OCCT_HEADER_FILE_CONTENT "// This file has been automatically generated from resource file src/${CurrentResource_Directory}/${RESOURCE_FILE}\n\n") - - # read resource file - file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}" RESOURCE_FILE_LINES_LIST) - - set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}static const char ${CurrentResource_Directory}_${CurrentResource_FileName}[] =") - foreach (line IN LISTS RESOURCE_FILE_LINES_LIST) - string (REPLACE "\"" "\\\"" line "${line}") - set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}\n \"${line}\\n\"") - endforeach() - set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT};") - - # Save generated content to header file - set (HEADER_FILE "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${HEADER_FILE_NAME}") - if (EXISTS "${HEADER_FILE}") - file (REMOVE "${HEADER_FILE}") - endif() - configure_file ("${CMAKE_SOURCE_DIR}/adm/templates/header.in" "${HEADER_FILE}" @ONLY NEWLINE_STYLE LF) - endif() - endif() - endforeach() - endif() -endmacro() - - -FILE_TO_LIST ("adm/RESOURCES" RESOURCES) -foreach (CurrentResource ${RESOURCES}) - get_filename_component (CurrentResource_FileName "${CurrentResource}" NAME) - if ("${CurrentResource_FileName}" STREQUAL TObj.msg OR - "${CurrentResource_FileName}" STREQUAL BOPAlgo.msg OR - "${CurrentResource_FileName}" STREQUAL Units.dat OR - "${CurrentResource}" STREQUAL XSMessage OR - "${CurrentResource}" STREQUAL SHMessage OR - "${CurrentResource}" STREQUAL Shaders) - OCCT_GENERATE_CONTENT_ONLY ("${CurrentResource}") - endif() -endforeach() +# OCCT resource files generation + +macro (OCCT_GENERATE_CONTENT_ONLY CurrentResource) + set (RESOURCE_FILES) + set (isResDirectory FALSE) + if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/src/${CurrentResource}") + file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource}/FILES" RESOURCE_FILES) + set (CurrentResource_Directory "${CurrentResource}") + set (isResDirectory TRUE) + else() + get_filename_component (CurrentResource_Name "${CurrentResource}" NAME) + list (APPEND RESOURCE_FILES "res:::${CurrentResource_Name}") + get_filename_component (CurrentResource_Directory "${CurrentResource}" DIRECTORY) + endif() + + # Add current toolkit into RESOURCE_TOOLKITS array to copy it to the BUILD directory + list (APPEND RESOURCE_TOOLKITS "${CurrentResource_Directory}") + list (REMOVE_DUPLICATES RESOURCE_TOOLKITS) + + if (BUILD_RESOURCES) + foreach (RESOURCE_FILE ${RESOURCE_FILES}) + string (REGEX MATCH "^[^:]+:::" IS_RESOURCE "${RESOURCE_FILE}") + if (IS_RESOURCE) + string (REGEX REPLACE "[^:]+:+" "" RESOURCE_FILE "${RESOURCE_FILE}") + + get_filename_component (CurrentResource_FileName "${RESOURCE_FILE}" NAME) + string (REPLACE "." "_" CurrentResource_FileName "${CurrentResource_FileName}") + set (HEADER_FILE_NAME "${CurrentResource_Directory}_${CurrentResource_FileName}.pxx") + + set (toProcessResFile TRUE) + if (isResDirectory) + list (FIND RESOURCE_FILES "${HEADER_FILE_NAME}" aResIndex) + if ("${aResIndex}" STREQUAL "-1") + set (toProcessResFile FALSE) + endif() + endif() + + if (toProcessResFile) + message(STATUS "Info. Generating header file from resource file: ${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}") + + # generate content for header file + set (OCCT_HEADER_FILE_CONTENT "// This file has been automatically generated from resource file src/${CurrentResource_Directory}/${RESOURCE_FILE}\n\n") + + # read resource file + file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}" RESOURCE_FILE_LINES_LIST) + + set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}static const char ${CurrentResource_Directory}_${CurrentResource_FileName}[] =") + foreach (line IN LISTS RESOURCE_FILE_LINES_LIST) + string (REPLACE "\"" "\\\"" line "${line}") + set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}\n \"${line}\\n\"") + endforeach() + set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT};") + + # Save generated content to header file + set (HEADER_FILE "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${HEADER_FILE_NAME}") + if (EXISTS "${HEADER_FILE}") + file (REMOVE "${HEADER_FILE}") + endif() + configure_file ("${CMAKE_SOURCE_DIR}/adm/templates/header.in" "${HEADER_FILE}" @ONLY NEWLINE_STYLE LF) + endif() + endif() + endforeach() + endif() +endmacro() + + +FILE_TO_LIST ("adm/RESOURCES" RESOURCES) +foreach (CurrentResource ${RESOURCES}) + get_filename_component (CurrentResource_FileName "${CurrentResource}" NAME) + if ("${CurrentResource_FileName}" STREQUAL TObj.msg OR + "${CurrentResource_FileName}" STREQUAL BOPAlgo.msg OR + "${CurrentResource_FileName}" STREQUAL Units.dat OR + "${CurrentResource}" STREQUAL XSMessage OR + "${CurrentResource}" STREQUAL SHMessage OR + "${CurrentResource}" STREQUAL Shaders) + OCCT_GENERATE_CONTENT_ONLY ("${CurrentResource}") + endif() +endforeach() diff --git a/adm/cmake/occt_toolkit.cmake b/adm/cmake/occt_toolkit.cmake index 517d1b47fa..9311094366 100644 --- a/adm/cmake/occt_toolkit.cmake +++ b/adm/cmake/occt_toolkit.cmake @@ -1,500 +1,500 @@ -# script for each OCCT toolkit - -# filling some variables by default values(src) or using custom(tools, samples) -set (RELATIVE_SOURCES_DIR "${RELATIVE_DIR}") -if ("${RELATIVE_SOURCES_DIR}" STREQUAL "") - #if it is not defined, use default directory - set (RELATIVE_SOURCES_DIR "src") -endif() - -set (OCC_MODULES_LIST "${MODULES_LIST}") -if ("${OCC_MODULES_LIST}" STREQUAL "") - set (OCC_MODULES_LIST ${OCCT_MODULES}) -endif() - -set (OCC_TARGET_FOLDER "${TARGET_FOLDER}") -if ("${OCC_TARGET_FOLDER}" STREQUAL "") - set (OCC_TARGET_FOLDER "Modules") -endif() - -set (OCCT_TOOLKITS_NAME_SUFFIX "${TOOLKITS_NAME_SUFFIX}") -if ("${OCCT_TOOLKITS_NAME_SUFFIX}" STREQUAL "") - set (OCCT_TOOLKITS_NAME_SUFFIX "TOOLKITS") -endif() - -# parse PACKAGES file -FILE_TO_LIST ("${RELATIVE_SOURCES_DIR}/${PROJECT_NAME}/PACKAGES" USED_PACKAGES) -if ("${USED_PACKAGES}" STREQUAL "") - set (USED_PACKAGES ${PROJECT_NAME}) -endif() - -if (USE_QT) - # Qt dependencies - OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt_macro) - FIND_QT_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES) - include_directories("${PROJECT_INCLUDES}") -endif(USE_QT) - -set (PRECOMPILED_DEFS) - -if (NOT BUILD_SHARED_LIBS) - list (APPEND PRECOMPILED_DEFS "-DOCCT_NO_PLUGINS") - if (WIN32 AND NOT EXECUTABLE_PROJECT) - list (APPEND PRECOMPILED_DEFS "-DOCCT_STATIC_BUILD") - endif() -endif() - -# Get all used packages from toolkit -UNSET(RESOURCE_FILES) -foreach (OCCT_PACKAGE ${USED_PACKAGES}) - - #remove part after "/" in the OCCT_PACKAGE variable if exists - string (FIND "${OCCT_PACKAGE}" "/" _index) - if (_index GREATER -1) - math (EXPR _index "${_index}") - string (SUBSTRING "${OCCT_PACKAGE}" 0 ${_index} OCCT_PACKAGE_NAME) - else() - set (OCCT_PACKAGE_NAME "${OCCT_PACKAGE}") - endif() - - if (WIN32) - list (APPEND PRECOMPILED_DEFS "-D__${OCCT_PACKAGE_NAME}_DLL") - endif() - - set (SOURCE_FILES) - set (HEADER_FILES) - - # Generate Flex and Bison files - if (${BUILD_YACCLEX}) - # flex files - OCCT_ORIGIN_AND_PATCHED_FILES ("${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}" "*[.]lex" SOURCE_FILES_FLEX) - list (LENGTH SOURCE_FILES_FLEX SOURCE_FILES_FLEX_LEN) - - # bison files - OCCT_ORIGIN_AND_PATCHED_FILES ("${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}" "*[.]yacc" SOURCE_FILES_BISON) - list (LENGTH SOURCE_FILES_BISON SOURCE_FILES_BISON_LEN) - - if (${SOURCE_FILES_FLEX_LEN} EQUAL ${SOURCE_FILES_BISON_LEN} AND NOT ${SOURCE_FILES_FLEX_LEN} EQUAL 0) - - list (SORT SOURCE_FILES_FLEX) - list (SORT SOURCE_FILES_BISON) - - math (EXPR SOURCE_FILES_FLEX_LEN "${SOURCE_FILES_FLEX_LEN} - 1") - foreach (FLEX_FILE_INDEX RANGE ${SOURCE_FILES_FLEX_LEN}) - - list (GET SOURCE_FILES_FLEX ${FLEX_FILE_INDEX} CURRENT_FLEX_FILE) - get_filename_component (CURRENT_FLEX_FILE_NAME ${CURRENT_FLEX_FILE} NAME_WE) - - list (GET SOURCE_FILES_BISON ${FLEX_FILE_INDEX} CURRENT_BISON_FILE) - get_filename_component (CURRENT_BISON_FILE_NAME ${CURRENT_BISON_FILE} NAME_WE) - - string (COMPARE EQUAL ${CURRENT_FLEX_FILE_NAME} ${CURRENT_BISON_FILE_NAME} ARE_FILES_EQUAL) - - if (EXISTS "${CURRENT_FLEX_FILE}" AND EXISTS "${CURRENT_BISON_FILE}" AND ${ARE_FILES_EQUAL}) - - # Note: files are generated in original source directory (not in patch!) - set (FLEX_BISON_TARGET_DIR "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}") - - # choose appropriate extension for generated files: "cxx" if source file contains - # instruction to generate C++ code, "c" otherwise - set (BISON_OUTPUT_FILE_EXT "c") - set (FLEX_OUTPUT_FILE_EXT "c") - file (STRINGS "${CURRENT_BISON_FILE}" FILE_BISON_CONTENT) - foreach (FILE_BISON_CONTENT_LINE ${FILE_BISON_CONTENT}) - string (REGEX MATCH "%language \"C\\+\\+\"" CXX_BISON_LANGUAGE_FOUND ${FILE_BISON_CONTENT_LINE}) - if (CXX_BISON_LANGUAGE_FOUND) - set (BISON_OUTPUT_FILE_EXT "cxx") - endif() - endforeach() - - if (EXISTS ${FLEX_BISON_TARGET_DIR}/FlexLexer.h) - message (STATUS "Info: remove old FLEX header file: ${FLEX_BISON_TARGET_DIR}/FlexLexer.h") - file(REMOVE ${FLEX_BISON_TARGET_DIR}/FlexLexer.h) - endif() - - file (STRINGS "${CURRENT_FLEX_FILE}" FILE_FLEX_CONTENT) - foreach (FILE_FLEX_CONTENT_LINE ${FILE_FLEX_CONTENT}) - string (REGEX MATCH "%option c\\+\\+" CXX_FLEX_LANGUAGE_FOUND ${FILE_FLEX_CONTENT_LINE}) - if (CXX_FLEX_LANGUAGE_FOUND) - set (FLEX_OUTPUT_FILE_EXT "cxx") - - # install copy of FlexLexer.h locally to allow further building without flex - if (FLEX_INCLUDE_DIR AND EXISTS "${FLEX_INCLUDE_DIR}/FlexLexer.h") - configure_file("${FLEX_INCLUDE_DIR}/FlexLexer.h" "${FLEX_BISON_TARGET_DIR}/FlexLexer.h" @ONLY NEWLINE_STYLE LF) - endif() - endif() - endforeach() - set (BISON_OUTPUT_FILE ${CURRENT_BISON_FILE_NAME}.tab.${BISON_OUTPUT_FILE_EXT}) - set (FLEX_OUTPUT_FILE lex.${CURRENT_FLEX_FILE_NAME}.${FLEX_OUTPUT_FILE_EXT}) - - if (EXISTS ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.${BISON_OUTPUT_FILE_EXT}) - message (STATUS "Info: remove old output BISON file: ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.${BISON_OUTPUT_FILE_EXT}") - file(REMOVE ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.${BISON_OUTPUT_FILE_EXT}) - endif() - if (EXISTS ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.hxx) - message (STATUS "Info: remove old output BISON file: ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.hxx") - file(REMOVE ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.hxx) - endif() - if (EXISTS ${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}) - message (STATUS "Info: remove old output FLEX file: ${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}") - file(REMOVE ${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}) - endif() - - BISON_TARGET (Parser_${CURRENT_BISON_FILE_NAME} ${CURRENT_BISON_FILE} "${FLEX_BISON_TARGET_DIR}/${BISON_OUTPUT_FILE}" - COMPILE_FLAGS "-p ${CURRENT_BISON_FILE_NAME} -l -M ${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/=") - FLEX_TARGET (Scanner_${CURRENT_FLEX_FILE_NAME} ${CURRENT_FLEX_FILE} "${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}" - COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME} -L") - ADD_FLEX_BISON_DEPENDENCY (Scanner_${CURRENT_FLEX_FILE_NAME} Parser_${CURRENT_BISON_FILE_NAME}) - - list (APPEND SOURCE_FILES ${BISON_OUTPUT_FILE} ${FLEX_OUTPUT_FILE}) - endif() - endforeach() - endif() - endif() - - # header files - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES") - file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h") - file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx") - file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx") - - file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c") - if(APPLE) - file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm") - endif() - else() - file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h") - file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx") - file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx") - - file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c") - if(APPLE) - file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm") - endif() - endif() - - list (APPEND HEADER_FILES ${HEADER_FILES_M} ${HEADER_FILES_LXX} ${SOURCE_FILES_GXX}) - list (APPEND SOURCE_FILES ${SOURCE_FILES_C}) - if(APPLE) - list (APPEND SOURCE_FILES ${SOURCE_FILES_M}) - endif() - - foreach(HEADER_FILE ${HEADER_FILES}) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") - message (STATUS "Info: consider patched file: ${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") - list (APPEND USED_INCFILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") - SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE_NAME}" FILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") - else() - list (APPEND USED_INCFILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") - SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE_NAME}" FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") - endif() - endforeach() - - foreach(SOURCE_FILE ${SOURCE_FILES}) - if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") - message (STATUS "Info: consider patched file: ${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") - list (APPEND USED_SRCFILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") - SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE_NAME}" FILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") - else() - list (APPEND USED_SRCFILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") - SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE_NAME}" FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") - endif() - endforeach() - - if (USE_QT) - FIND_AND_INSTALL_QT_RESOURCES (${OCCT_PACKAGE} RESOURCE_FILES) - #message("Qt Resource files are: ${QT_RESOURCE_FILES} in ${OCCT_PACKAGE}") - endif(USE_QT) - - #message("Resource files are: ${RESOURCE_FILES} in ${OCCT_PACKAGE}") - foreach(RESOURCE_FILE ${RESOURCE_FILES}) - SOURCE_GROUP ("Resource Files\\${OCCT_PACKAGE_NAME}" FILES "${RESOURCE_FILE}") - endforeach() -endforeach() -string (REGEX REPLACE ";" " " PRECOMPILED_DEFS "${PRECOMPILED_DEFS}") - -set (USED_RCFILE "") -if (MSVC) - set (USED_RCFILE "${CMAKE_BINARY_DIR}/resources/${PROJECT_NAME}.rc") - - if (APPLY_OCCT_PATCH_DIR AND EXISTS "${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in") - configure_file("${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY) - else() - configure_file("${CMAKE_SOURCE_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY) - endif() -endif() - -set (CURRENT_MODULE) -foreach (OCCT_MODULE ${OCC_MODULES_LIST}) - list (FIND ${OCCT_MODULE}_${OCCT_TOOLKITS_NAME_SUFFIX} ${PROJECT_NAME} CURRENT_PROJECT_IS_BUILT) - - if (NOT ${CURRENT_PROJECT_IS_BUILT} EQUAL -1) - set (CURRENT_MODULE ${OCCT_MODULE}) - endif() -endforeach() - -if (MSVC) - OCCT_INSERT_CODE_FOR_TARGET () -endif() - -if (USE_QT) - FIND_AND_WRAP_MOC_FILES("${USED_INCFILES}" "${PROJECT_NAME}_MOC_FILES") - #message("MOC files: ${${PROJECT_NAME}_MOC_FILES}") -endif (USE_QT) - -if (EXECUTABLE_PROJECT) - add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES}) - - if (DEFINED ${PROJECT_NAME}_DISABLE_COTIRE AND ${PROJECT_NAME}_DISABLE_COTIRE) - set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER FALSE) - set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) - else() - # To avoid excluding of PROJECT_NAME from cotire tool, we may use cotire - # COTIRE_PREFIX_HEADER_IGNORE_PATH instead. But, practically it causes many 'undefined symbols' error. - # So, we just exclude PROJECT_NAME from cotire list. - # if (DEFINED ${PROJECT_NAME}_COTIRE_IGNORE_PATH) - # set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_PREFIX_HEADER_IGNORE_PATH "${${PROJECT_NAME}_COTIRE_IGNORE_PATH}") - # endif() - endif() - - install (TARGETS ${PROJECT_NAME} - DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}") - - if (EMSCRIPTEN) - install(FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.wasm DESTINATION "${INSTALL_DIR_BIN}/${OCCT_INSTALL_BIN_LETTER}") - endif() -else() - add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES}) - - if (DEFINED ${PROJECT_NAME}_DISABLE_COTIRE AND ${PROJECT_NAME}_DISABLE_COTIRE) - set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER FALSE) - set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) - else() - # To avoid excluding of PROJECT_NAME from cotire tool, we may use cotire - # COTIRE_PREFIX_HEADER_IGNORE_PATH instead. But, practically it causes many 'undefined symbols' error. - # So, we just exclude PROJECT_NAME from cotire list. - # if (DEFINED ${PROJECT_NAME}_COTIRE_IGNORE_PATH) - # set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_PREFIX_HEADER_IGNORE_PATH "${${PROJECT_NAME}_COTIRE_IGNORE_PATH}") - # endif() - endif() - - if (MSVC) - if (BUILD_FORCE_RelWithDebInfo) - set (aReleasePdbConf "Release") - else() - set (aReleasePdbConf) - endif() - install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.pdb - CONFIGURATIONS Debug ${aReleasePdbConf} RelWithDebInfo - DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}") - endif() - - if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "") - set (CMAKE_SHARED_LIBRARY_SUFFIX_DEFAULT ${CMAKE_SHARED_LIBRARY_SUFFIX}) - set (CMAKE_SHARED_LIBRARY_SUFFIX "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX}") - endif() - - install (TARGETS ${PROJECT_NAME} - EXPORT OpenCASCADE${CURRENT_MODULE}Targets - RUNTIME DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}" - ARCHIVE DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}" - LIBRARY DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}" - INCLUDES DESTINATION ${INSTALL_DIR_INCLUDE}) - - if (NOT WIN32) - if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "") - set (LINK_NAME "${INSTALL_DIR}/${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}/lib${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX_DEFAULT}") - set (LIBRARY_NAME "${INSTALL_DIR}/${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}/lib${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}") - OCCT_CREATE_SYMLINK_TO_FILE (${LIBRARY_NAME} ${LINK_NAME}) - endif() - endif() -endif() - -if (CURRENT_MODULE) - set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "${OCC_TARGET_FOLDER}/${CURRENT_MODULE}") - set_target_properties (${PROJECT_NAME} PROPERTIES MODULE "${CURRENT_MODULE}") - if (APPLE) - if (NOT "${INSTALL_NAME_DIR}" STREQUAL "") - set_target_properties (${PROJECT_NAME} PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "${INSTALL_NAME_DIR}") - endif() - endif() -endif() - -get_property (OCC_VERSION_MAJOR GLOBAL PROPERTY OCC_VERSION_MAJOR) -get_property (OCC_VERSION_MINOR GLOBAL PROPERTY OCC_VERSION_MINOR) -get_property (OCC_VERSION_MAINTENANCE GLOBAL PROPERTY OCC_VERSION_MAINTENANCE) - -set (OCC_SOVERSION "") -if (BUILD_SOVERSION_NUMBERS GREATER 2) - set (OCC_SOVERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}") -elseif (BUILD_SOVERSION_NUMBERS GREATER 1) - set (OCC_SOVERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}") -elseif (BUILD_SOVERSION_NUMBERS GREATER 0) - set (OCC_SOVERSION "${OCC_VERSION_MAJOR}") -endif() -set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}" - SOVERSION "${OCC_SOVERSION}" - VERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}") - -set (USED_TOOLKITS_BY_CURRENT_PROJECT) -set (USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT) - -# parse EXTERNLIB file -if (CUSTOM_EXTERNLIB) - set (USED_EXTERNLIB_AND_TOOLKITS ${CUSTOM_EXTERNLIB}) -else() - FILE_TO_LIST ("${RELATIVE_SOURCES_DIR}/${PROJECT_NAME}/EXTERNLIB" USED_EXTERNLIB_AND_TOOLKITS) -endif() -foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS}) - string (REGEX MATCH "^ *#" COMMENT_FOUND ${USED_ITEM}) - if (NOT COMMENT_FOUND) - string (REGEX MATCH "^TK" TK_FOUND ${USED_ITEM}) - string (REGEX MATCH "^vtk" VTK_FOUND ${USED_ITEM}) - - if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "") - list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT ${USED_ITEM}) - if (NOT "${VTK_FOUND}" STREQUAL "" AND BUILD_SHARED_LIBS AND INSTALL_VTK AND COMMAND OCCT_INSTALL_VTK) - OCCT_INSTALL_VTK(${USED_ITEM}) - endif() - else() - string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM}) - if ("${CSF_FOUND}" STREQUAL "") - message (STATUS "Info: ${USED_ITEM} from ${PROJECT_NAME} skipped due to it is empty") - else() # get CSF_ value - set (CURRENT_CSF ${${USED_ITEM}}) - if (NOT "x${CURRENT_CSF}" STREQUAL "x") - if ("${CURRENT_CSF}" STREQUAL "${CSF_OpenGlLibs}") - add_definitions (-DHAVE_OPENGL) - endif() - if ("${CURRENT_CSF}" STREQUAL "${CSF_OpenGlesLibs}") - add_definitions (-DHAVE_GLES2) - endif() - - set (LIBRARY_FROM_CACHE 0) - separate_arguments (CURRENT_CSF) - foreach (CSF_LIBRARY ${CURRENT_CSF}) - string (TOLOWER "${CSF_LIBRARY}" CSF_LIBRARY) - string (REPLACE "+" "[+]" CSF_LIBRARY "${CSF_LIBRARY}") - string (REPLACE "." "" CSF_LIBRARY "${CSF_LIBRARY}") - get_cmake_property(ALL_CACHE_VARIABLES CACHE_VARIABLES) - string (REGEX MATCHALL "(^|;)3RDPARTY_[^;]+_LIBRARY[^;]*" ALL_CACHE_VARIABLES "${ALL_CACHE_VARIABLES}") - foreach (CACHE_VARIABLE ${ALL_CACHE_VARIABLES}) - set (CURRENT_CACHE_LIBRARY ${${CACHE_VARIABLE}}) - string (TOLOWER "${CACHE_VARIABLE}" CACHE_VARIABLE) - - if (EXISTS "${CURRENT_CACHE_LIBRARY}" AND NOT IS_DIRECTORY "${CURRENT_CACHE_LIBRARY}") - string (REGEX MATCH "_${CSF_LIBRARY}$" IS_ENDING "${CACHE_VARIABLE}") - string (REGEX MATCH "^([a-z]+)" CSF_WO_VERSION "${CSF_LIBRARY}") - string (REGEX MATCH "_${CSF_WO_VERSION}$" IS_ENDING_WO_VERSION "${CACHE_VARIABLE}") - if ("3rdparty_${CSF_LIBRARY}_library" STREQUAL "${CACHE_VARIABLE}" OR - "3rdparty_${CSF_WO_VERSION}_library" STREQUAL "${CACHE_VARIABLE}" OR - NOT "x${IS_ENDING}" STREQUAL "x" OR - NOT "x${IS_ENDING_WO_VERSION}" STREQUAL "x") - list (APPEND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT "${CURRENT_CACHE_LIBRARY}") - set (LIBRARY_FROM_CACHE 1) - endif() - endif() - endforeach() - endforeach() - - if (NOT ${LIBRARY_FROM_CACHE}) - # prepare a list from a string with whitespaces - separate_arguments (CURRENT_CSF) - list (APPEND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT ${CURRENT_CSF}) - endif() - endif() - endif() - endif() - endif() -endforeach() - -if (APPLE) - list (FIND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT X11 IS_X11_FOUND) - if (NOT ${IS_X11_FOUND} EQUAL -1) - find_package (X11 COMPONENTS X11) - if (NOT X11_FOUND) - message (STATUS "Warning: X11 is not found. It's required to install The XQuartz project: http://www.xquartz.org") - endif() - endif() -endif() - -# Update list of used VTK libraries if OpenGL2 Rendering BackEnd is used. -# Add VTK_OPENGL2_BACKEND definition. -if("${VTK_RENDERING_BACKEND}" STREQUAL "OpenGL2" OR IS_VTK_9XX) - add_definitions(-DVTK_OPENGL2_BACKEND) - foreach (VTK_EXCLUDE_LIBRARY vtkRenderingOpenGL vtkRenderingFreeTypeOpenGL) - list (FIND USED_TOOLKITS_BY_CURRENT_PROJECT "${VTK_EXCLUDE_LIBRARY}" IS_VTK_OPENGL_FOUND) - if (NOT ${IS_VTK_OPENGL_FOUND} EQUAL -1) - list (REMOVE_ITEM USED_TOOLKITS_BY_CURRENT_PROJECT ${VTK_EXCLUDE_LIBRARY}) - if (${VTK_EXCLUDE_LIBRARY} STREQUAL vtkRenderingOpenGL) - list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT vtkRenderingOpenGL2) - if(VTK_MAJOR_VERSION GREATER 6) - list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT vtkRenderingGL2PSOpenGL2) - endif() - endif() - endif() - endforeach() -else() - if(VTK_MAJOR_VERSION EQUAL 6 AND VTK_MINOR_VERSION GREATER 2 OR VTK_MAJOR_VERSION GREATER 6) - list (FIND USED_TOOLKITS_BY_CURRENT_PROJECT "vtkRenderingFreeTypeOpenGL" IS_VTK_RENDER_FREETYPE_FOUND) - if (NOT ${IS_VTK_RENDER_FREETYPE_FOUND} EQUAL -1) - list (REMOVE_ITEM USED_TOOLKITS_BY_CURRENT_PROJECT "vtkRenderingFreeTypeOpenGL") - endif() - endif() -endif() - -if (BUILD_SHARED_LIBS OR EXECUTABLE_PROJECT) - if(IS_VTK_9XX) - string (REGEX REPLACE "vtk" "VTK::" USED_TOOLKITS_BY_CURRENT_PROJECT "${USED_TOOLKITS_BY_CURRENT_PROJECT}") - endif() - target_link_libraries (${PROJECT_NAME} ${USED_TOOLKITS_BY_CURRENT_PROJECT} ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT}) -endif() - -if (USE_QT) - foreach (PROJECT_LIBRARY_DEBUG ${PROJECT_LIBRARIES_DEBUG}) - target_link_libraries (${PROJECT_NAME} debug ${PROJECT_LIBRARY_DEBUG}) - endforeach() - foreach (PROJECT_LIBRARY_RELEASE ${PROJECT_LIBRARIES_RELEASE}) - target_link_libraries (${PROJECT_NAME} optimized ${PROJECT_LIBRARY_RELEASE}) - endforeach() -endif() - -# suppress deprecation warnings inside OCCT itself for old gcc versions with unavailable Standard_DISABLE_DEPRECATION_WARNINGS -if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6.0) - add_definitions("-DOCCT_NO_DEPRECATED") - message (STATUS "Warning: internal deprecation warnings by Standard_DEPRECATED have been disabled due to old gcc version being used") - endif() -endif() - -# use Cotire to accelerate build via usage of precompiled headers -if (BUILD_USE_PCH) - if (WIN32) - # prevent definition of min and max macros through inclusion of Windows.h - # (for cotire builds) - add_definitions("-DNOMINMAX") - # avoid warnings on deprecated names from standard C library (see strsafe.h) - add_definitions("-DSTRSAFE_NO_DEPRECATE") - # avoid "std::Equal1" warning in QANCollection_Stl.cxx in debug mode - # suggesting using msvc "Checked Iterators" - add_definitions("-D_SCL_SECURE_NO_WARNINGS") - endif() - - # Exclude system-provided glext.h. - # These macros are already defined within OpenGl_GlFunctions.hxx, - # however we have to duplicate them here for building TKOpenGl with PCH. - add_definitions("-DGL_GLEXT_LEGACY") - add_definitions("-DGLX_GLXEXT_LEGACY") - - # workaround for old gcc - if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - add_definitions("-D__STDC_CONSTANT_MACROS") - add_definitions("-D__STDC_FORMAT_MACROS") - endif() - - # unity builds are not used since they do not add speed but cause conflicts - # in TKV3d - set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) - - cotire(${PROJECT_NAME}) -endif() +# script for each OCCT toolkit + +# filling some variables by default values(src) or using custom(tools, samples) +set (RELATIVE_SOURCES_DIR "${RELATIVE_DIR}") +if ("${RELATIVE_SOURCES_DIR}" STREQUAL "") + #if it is not defined, use default directory + set (RELATIVE_SOURCES_DIR "src") +endif() + +set (OCC_MODULES_LIST "${MODULES_LIST}") +if ("${OCC_MODULES_LIST}" STREQUAL "") + set (OCC_MODULES_LIST ${OCCT_MODULES}) +endif() + +set (OCC_TARGET_FOLDER "${TARGET_FOLDER}") +if ("${OCC_TARGET_FOLDER}" STREQUAL "") + set (OCC_TARGET_FOLDER "Modules") +endif() + +set (OCCT_TOOLKITS_NAME_SUFFIX "${TOOLKITS_NAME_SUFFIX}") +if ("${OCCT_TOOLKITS_NAME_SUFFIX}" STREQUAL "") + set (OCCT_TOOLKITS_NAME_SUFFIX "TOOLKITS") +endif() + +# parse PACKAGES file +FILE_TO_LIST ("${RELATIVE_SOURCES_DIR}/${PROJECT_NAME}/PACKAGES" USED_PACKAGES) +if ("${USED_PACKAGES}" STREQUAL "") + set (USED_PACKAGES ${PROJECT_NAME}) +endif() + +if (USE_QT) + # Qt dependencies + OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt_macro) + FIND_QT_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES) + include_directories("${PROJECT_INCLUDES}") +endif(USE_QT) + +set (PRECOMPILED_DEFS) + +if (NOT BUILD_SHARED_LIBS) + list (APPEND PRECOMPILED_DEFS "-DOCCT_NO_PLUGINS") + if (WIN32 AND NOT EXECUTABLE_PROJECT) + list (APPEND PRECOMPILED_DEFS "-DOCCT_STATIC_BUILD") + endif() +endif() + +# Get all used packages from toolkit +UNSET(RESOURCE_FILES) +foreach (OCCT_PACKAGE ${USED_PACKAGES}) + + #remove part after "/" in the OCCT_PACKAGE variable if exists + string (FIND "${OCCT_PACKAGE}" "/" _index) + if (_index GREATER -1) + math (EXPR _index "${_index}") + string (SUBSTRING "${OCCT_PACKAGE}" 0 ${_index} OCCT_PACKAGE_NAME) + else() + set (OCCT_PACKAGE_NAME "${OCCT_PACKAGE}") + endif() + + if (WIN32) + list (APPEND PRECOMPILED_DEFS "-D__${OCCT_PACKAGE_NAME}_DLL") + endif() + + set (SOURCE_FILES) + set (HEADER_FILES) + + # Generate Flex and Bison files + if (${BUILD_YACCLEX}) + # flex files + OCCT_ORIGIN_AND_PATCHED_FILES ("${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}" "*[.]lex" SOURCE_FILES_FLEX) + list (LENGTH SOURCE_FILES_FLEX SOURCE_FILES_FLEX_LEN) + + # bison files + OCCT_ORIGIN_AND_PATCHED_FILES ("${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}" "*[.]yacc" SOURCE_FILES_BISON) + list (LENGTH SOURCE_FILES_BISON SOURCE_FILES_BISON_LEN) + + if (${SOURCE_FILES_FLEX_LEN} EQUAL ${SOURCE_FILES_BISON_LEN} AND NOT ${SOURCE_FILES_FLEX_LEN} EQUAL 0) + + list (SORT SOURCE_FILES_FLEX) + list (SORT SOURCE_FILES_BISON) + + math (EXPR SOURCE_FILES_FLEX_LEN "${SOURCE_FILES_FLEX_LEN} - 1") + foreach (FLEX_FILE_INDEX RANGE ${SOURCE_FILES_FLEX_LEN}) + + list (GET SOURCE_FILES_FLEX ${FLEX_FILE_INDEX} CURRENT_FLEX_FILE) + get_filename_component (CURRENT_FLEX_FILE_NAME ${CURRENT_FLEX_FILE} NAME_WE) + + list (GET SOURCE_FILES_BISON ${FLEX_FILE_INDEX} CURRENT_BISON_FILE) + get_filename_component (CURRENT_BISON_FILE_NAME ${CURRENT_BISON_FILE} NAME_WE) + + string (COMPARE EQUAL ${CURRENT_FLEX_FILE_NAME} ${CURRENT_BISON_FILE_NAME} ARE_FILES_EQUAL) + + if (EXISTS "${CURRENT_FLEX_FILE}" AND EXISTS "${CURRENT_BISON_FILE}" AND ${ARE_FILES_EQUAL}) + + # Note: files are generated in original source directory (not in patch!) + set (FLEX_BISON_TARGET_DIR "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}") + + # choose appropriate extension for generated files: "cxx" if source file contains + # instruction to generate C++ code, "c" otherwise + set (BISON_OUTPUT_FILE_EXT "c") + set (FLEX_OUTPUT_FILE_EXT "c") + file (STRINGS "${CURRENT_BISON_FILE}" FILE_BISON_CONTENT) + foreach (FILE_BISON_CONTENT_LINE ${FILE_BISON_CONTENT}) + string (REGEX MATCH "%language \"C\\+\\+\"" CXX_BISON_LANGUAGE_FOUND ${FILE_BISON_CONTENT_LINE}) + if (CXX_BISON_LANGUAGE_FOUND) + set (BISON_OUTPUT_FILE_EXT "cxx") + endif() + endforeach() + + if (EXISTS ${FLEX_BISON_TARGET_DIR}/FlexLexer.h) + message (STATUS "Info: remove old FLEX header file: ${FLEX_BISON_TARGET_DIR}/FlexLexer.h") + file(REMOVE ${FLEX_BISON_TARGET_DIR}/FlexLexer.h) + endif() + + file (STRINGS "${CURRENT_FLEX_FILE}" FILE_FLEX_CONTENT) + foreach (FILE_FLEX_CONTENT_LINE ${FILE_FLEX_CONTENT}) + string (REGEX MATCH "%option c\\+\\+" CXX_FLEX_LANGUAGE_FOUND ${FILE_FLEX_CONTENT_LINE}) + if (CXX_FLEX_LANGUAGE_FOUND) + set (FLEX_OUTPUT_FILE_EXT "cxx") + + # install copy of FlexLexer.h locally to allow further building without flex + if (FLEX_INCLUDE_DIR AND EXISTS "${FLEX_INCLUDE_DIR}/FlexLexer.h") + configure_file("${FLEX_INCLUDE_DIR}/FlexLexer.h" "${FLEX_BISON_TARGET_DIR}/FlexLexer.h" @ONLY NEWLINE_STYLE LF) + endif() + endif() + endforeach() + set (BISON_OUTPUT_FILE ${CURRENT_BISON_FILE_NAME}.tab.${BISON_OUTPUT_FILE_EXT}) + set (FLEX_OUTPUT_FILE lex.${CURRENT_FLEX_FILE_NAME}.${FLEX_OUTPUT_FILE_EXT}) + + if (EXISTS ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.${BISON_OUTPUT_FILE_EXT}) + message (STATUS "Info: remove old output BISON file: ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.${BISON_OUTPUT_FILE_EXT}") + file(REMOVE ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.${BISON_OUTPUT_FILE_EXT}) + endif() + if (EXISTS ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.hxx) + message (STATUS "Info: remove old output BISON file: ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.hxx") + file(REMOVE ${FLEX_BISON_TARGET_DIR}/${CURRENT_BISON_FILE_NAME}.tab.hxx) + endif() + if (EXISTS ${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}) + message (STATUS "Info: remove old output FLEX file: ${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}") + file(REMOVE ${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}) + endif() + + BISON_TARGET (Parser_${CURRENT_BISON_FILE_NAME} ${CURRENT_BISON_FILE} "${FLEX_BISON_TARGET_DIR}/${BISON_OUTPUT_FILE}" + COMPILE_FLAGS "-p ${CURRENT_BISON_FILE_NAME} -l -M ${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/=") + FLEX_TARGET (Scanner_${CURRENT_FLEX_FILE_NAME} ${CURRENT_FLEX_FILE} "${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}" + COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME} -L") + ADD_FLEX_BISON_DEPENDENCY (Scanner_${CURRENT_FLEX_FILE_NAME} Parser_${CURRENT_BISON_FILE_NAME}) + + list (APPEND SOURCE_FILES ${BISON_OUTPUT_FILE} ${FLEX_OUTPUT_FILE}) + endif() + endforeach() + endif() + endif() + + # header files + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES") + file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h") + file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx") + file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx") + + file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c") + if(APPLE) + file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm") + endif() + else() + file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h") + file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx") + file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx") + + file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c") + if(APPLE) + file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm") + endif() + endif() + + list (APPEND HEADER_FILES ${HEADER_FILES_M} ${HEADER_FILES_LXX} ${SOURCE_FILES_GXX}) + list (APPEND SOURCE_FILES ${SOURCE_FILES_C}) + if(APPLE) + list (APPEND SOURCE_FILES ${SOURCE_FILES_M}) + endif() + + foreach(HEADER_FILE ${HEADER_FILES}) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") + message (STATUS "Info: consider patched file: ${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") + list (APPEND USED_INCFILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") + SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE_NAME}" FILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") + else() + list (APPEND USED_INCFILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") + SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE_NAME}" FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}") + endif() + endforeach() + + foreach(SOURCE_FILE ${SOURCE_FILES}) + if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") + message (STATUS "Info: consider patched file: ${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") + list (APPEND USED_SRCFILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") + SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE_NAME}" FILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") + else() + list (APPEND USED_SRCFILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") + SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE_NAME}" FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}") + endif() + endforeach() + + if (USE_QT) + FIND_AND_INSTALL_QT_RESOURCES (${OCCT_PACKAGE} RESOURCE_FILES) + #message("Qt Resource files are: ${QT_RESOURCE_FILES} in ${OCCT_PACKAGE}") + endif(USE_QT) + + #message("Resource files are: ${RESOURCE_FILES} in ${OCCT_PACKAGE}") + foreach(RESOURCE_FILE ${RESOURCE_FILES}) + SOURCE_GROUP ("Resource Files\\${OCCT_PACKAGE_NAME}" FILES "${RESOURCE_FILE}") + endforeach() +endforeach() +string (REGEX REPLACE ";" " " PRECOMPILED_DEFS "${PRECOMPILED_DEFS}") + +set (USED_RCFILE "") +if (MSVC) + set (USED_RCFILE "${CMAKE_BINARY_DIR}/resources/${PROJECT_NAME}.rc") + + if (APPLY_OCCT_PATCH_DIR AND EXISTS "${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in") + configure_file("${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY) + else() + configure_file("${CMAKE_SOURCE_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY) + endif() +endif() + +set (CURRENT_MODULE) +foreach (OCCT_MODULE ${OCC_MODULES_LIST}) + list (FIND ${OCCT_MODULE}_${OCCT_TOOLKITS_NAME_SUFFIX} ${PROJECT_NAME} CURRENT_PROJECT_IS_BUILT) + + if (NOT ${CURRENT_PROJECT_IS_BUILT} EQUAL -1) + set (CURRENT_MODULE ${OCCT_MODULE}) + endif() +endforeach() + +if (MSVC) + OCCT_INSERT_CODE_FOR_TARGET () +endif() + +if (USE_QT) + FIND_AND_WRAP_MOC_FILES("${USED_INCFILES}" "${PROJECT_NAME}_MOC_FILES") + #message("MOC files: ${${PROJECT_NAME}_MOC_FILES}") +endif (USE_QT) + +if (EXECUTABLE_PROJECT) + add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES}) + + if (DEFINED ${PROJECT_NAME}_DISABLE_COTIRE AND ${PROJECT_NAME}_DISABLE_COTIRE) + set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER FALSE) + set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) + else() + # To avoid excluding of PROJECT_NAME from cotire tool, we may use cotire + # COTIRE_PREFIX_HEADER_IGNORE_PATH instead. But, practically it causes many 'undefined symbols' error. + # So, we just exclude PROJECT_NAME from cotire list. + # if (DEFINED ${PROJECT_NAME}_COTIRE_IGNORE_PATH) + # set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_PREFIX_HEADER_IGNORE_PATH "${${PROJECT_NAME}_COTIRE_IGNORE_PATH}") + # endif() + endif() + + install (TARGETS ${PROJECT_NAME} + DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}") + + if (EMSCRIPTEN) + install(FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.wasm DESTINATION "${INSTALL_DIR_BIN}/${OCCT_INSTALL_BIN_LETTER}") + endif() +else() + add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES}) + + if (DEFINED ${PROJECT_NAME}_DISABLE_COTIRE AND ${PROJECT_NAME}_DISABLE_COTIRE) + set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER FALSE) + set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) + else() + # To avoid excluding of PROJECT_NAME from cotire tool, we may use cotire + # COTIRE_PREFIX_HEADER_IGNORE_PATH instead. But, practically it causes many 'undefined symbols' error. + # So, we just exclude PROJECT_NAME from cotire list. + # if (DEFINED ${PROJECT_NAME}_COTIRE_IGNORE_PATH) + # set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_PREFIX_HEADER_IGNORE_PATH "${${PROJECT_NAME}_COTIRE_IGNORE_PATH}") + # endif() + endif() + + if (MSVC) + if (BUILD_FORCE_RelWithDebInfo) + set (aReleasePdbConf "Release") + else() + set (aReleasePdbConf) + endif() + install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.pdb + CONFIGURATIONS Debug ${aReleasePdbConf} RelWithDebInfo + DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}") + endif() + + if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "") + set (CMAKE_SHARED_LIBRARY_SUFFIX_DEFAULT ${CMAKE_SHARED_LIBRARY_SUFFIX}) + set (CMAKE_SHARED_LIBRARY_SUFFIX "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX}") + endif() + + install (TARGETS ${PROJECT_NAME} + EXPORT OpenCASCADE${CURRENT_MODULE}Targets + RUNTIME DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}" + ARCHIVE DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}" + LIBRARY DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}" + INCLUDES DESTINATION ${INSTALL_DIR_INCLUDE}) + + if (NOT WIN32) + if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "") + set (LINK_NAME "${INSTALL_DIR}/${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}/lib${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX_DEFAULT}") + set (LIBRARY_NAME "${INSTALL_DIR}/${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}/lib${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}") + OCCT_CREATE_SYMLINK_TO_FILE (${LIBRARY_NAME} ${LINK_NAME}) + endif() + endif() +endif() + +if (CURRENT_MODULE) + set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "${OCC_TARGET_FOLDER}/${CURRENT_MODULE}") + set_target_properties (${PROJECT_NAME} PROPERTIES MODULE "${CURRENT_MODULE}") + if (APPLE) + if (NOT "${INSTALL_NAME_DIR}" STREQUAL "") + set_target_properties (${PROJECT_NAME} PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "${INSTALL_NAME_DIR}") + endif() + endif() +endif() + +get_property (OCC_VERSION_MAJOR GLOBAL PROPERTY OCC_VERSION_MAJOR) +get_property (OCC_VERSION_MINOR GLOBAL PROPERTY OCC_VERSION_MINOR) +get_property (OCC_VERSION_MAINTENANCE GLOBAL PROPERTY OCC_VERSION_MAINTENANCE) + +set (OCC_SOVERSION "") +if (BUILD_SOVERSION_NUMBERS GREATER 2) + set (OCC_SOVERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}") +elseif (BUILD_SOVERSION_NUMBERS GREATER 1) + set (OCC_SOVERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}") +elseif (BUILD_SOVERSION_NUMBERS GREATER 0) + set (OCC_SOVERSION "${OCC_VERSION_MAJOR}") +endif() +set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}" + SOVERSION "${OCC_SOVERSION}" + VERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}") + +set (USED_TOOLKITS_BY_CURRENT_PROJECT) +set (USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT) + +# parse EXTERNLIB file +if (CUSTOM_EXTERNLIB) + set (USED_EXTERNLIB_AND_TOOLKITS ${CUSTOM_EXTERNLIB}) +else() + FILE_TO_LIST ("${RELATIVE_SOURCES_DIR}/${PROJECT_NAME}/EXTERNLIB" USED_EXTERNLIB_AND_TOOLKITS) +endif() +foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS}) + string (REGEX MATCH "^ *#" COMMENT_FOUND ${USED_ITEM}) + if (NOT COMMENT_FOUND) + string (REGEX MATCH "^TK" TK_FOUND ${USED_ITEM}) + string (REGEX MATCH "^vtk" VTK_FOUND ${USED_ITEM}) + + if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "") + list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT ${USED_ITEM}) + if (NOT "${VTK_FOUND}" STREQUAL "" AND BUILD_SHARED_LIBS AND INSTALL_VTK AND COMMAND OCCT_INSTALL_VTK) + OCCT_INSTALL_VTK(${USED_ITEM}) + endif() + else() + string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM}) + if ("${CSF_FOUND}" STREQUAL "") + message (STATUS "Info: ${USED_ITEM} from ${PROJECT_NAME} skipped due to it is empty") + else() # get CSF_ value + set (CURRENT_CSF ${${USED_ITEM}}) + if (NOT "x${CURRENT_CSF}" STREQUAL "x") + if ("${CURRENT_CSF}" STREQUAL "${CSF_OpenGlLibs}") + add_definitions (-DHAVE_OPENGL) + endif() + if ("${CURRENT_CSF}" STREQUAL "${CSF_OpenGlesLibs}") + add_definitions (-DHAVE_GLES2) + endif() + + set (LIBRARY_FROM_CACHE 0) + separate_arguments (CURRENT_CSF) + foreach (CSF_LIBRARY ${CURRENT_CSF}) + string (TOLOWER "${CSF_LIBRARY}" CSF_LIBRARY) + string (REPLACE "+" "[+]" CSF_LIBRARY "${CSF_LIBRARY}") + string (REPLACE "." "" CSF_LIBRARY "${CSF_LIBRARY}") + get_cmake_property(ALL_CACHE_VARIABLES CACHE_VARIABLES) + string (REGEX MATCHALL "(^|;)3RDPARTY_[^;]+_LIBRARY[^;]*" ALL_CACHE_VARIABLES "${ALL_CACHE_VARIABLES}") + foreach (CACHE_VARIABLE ${ALL_CACHE_VARIABLES}) + set (CURRENT_CACHE_LIBRARY ${${CACHE_VARIABLE}}) + string (TOLOWER "${CACHE_VARIABLE}" CACHE_VARIABLE) + + if (EXISTS "${CURRENT_CACHE_LIBRARY}" AND NOT IS_DIRECTORY "${CURRENT_CACHE_LIBRARY}") + string (REGEX MATCH "_${CSF_LIBRARY}$" IS_ENDING "${CACHE_VARIABLE}") + string (REGEX MATCH "^([a-z]+)" CSF_WO_VERSION "${CSF_LIBRARY}") + string (REGEX MATCH "_${CSF_WO_VERSION}$" IS_ENDING_WO_VERSION "${CACHE_VARIABLE}") + if ("3rdparty_${CSF_LIBRARY}_library" STREQUAL "${CACHE_VARIABLE}" OR + "3rdparty_${CSF_WO_VERSION}_library" STREQUAL "${CACHE_VARIABLE}" OR + NOT "x${IS_ENDING}" STREQUAL "x" OR + NOT "x${IS_ENDING_WO_VERSION}" STREQUAL "x") + list (APPEND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT "${CURRENT_CACHE_LIBRARY}") + set (LIBRARY_FROM_CACHE 1) + endif() + endif() + endforeach() + endforeach() + + if (NOT ${LIBRARY_FROM_CACHE}) + # prepare a list from a string with whitespaces + separate_arguments (CURRENT_CSF) + list (APPEND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT ${CURRENT_CSF}) + endif() + endif() + endif() + endif() + endif() +endforeach() + +if (APPLE) + list (FIND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT X11 IS_X11_FOUND) + if (NOT ${IS_X11_FOUND} EQUAL -1) + find_package (X11 COMPONENTS X11) + if (NOT X11_FOUND) + message (STATUS "Warning: X11 is not found. It's required to install The XQuartz project: http://www.xquartz.org") + endif() + endif() +endif() + +# Update list of used VTK libraries if OpenGL2 Rendering BackEnd is used. +# Add VTK_OPENGL2_BACKEND definition. +if("${VTK_RENDERING_BACKEND}" STREQUAL "OpenGL2" OR IS_VTK_9XX) + add_definitions(-DVTK_OPENGL2_BACKEND) + foreach (VTK_EXCLUDE_LIBRARY vtkRenderingOpenGL vtkRenderingFreeTypeOpenGL) + list (FIND USED_TOOLKITS_BY_CURRENT_PROJECT "${VTK_EXCLUDE_LIBRARY}" IS_VTK_OPENGL_FOUND) + if (NOT ${IS_VTK_OPENGL_FOUND} EQUAL -1) + list (REMOVE_ITEM USED_TOOLKITS_BY_CURRENT_PROJECT ${VTK_EXCLUDE_LIBRARY}) + if (${VTK_EXCLUDE_LIBRARY} STREQUAL vtkRenderingOpenGL) + list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT vtkRenderingOpenGL2) + if(VTK_MAJOR_VERSION GREATER 6) + list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT vtkRenderingGL2PSOpenGL2) + endif() + endif() + endif() + endforeach() +else() + if(VTK_MAJOR_VERSION EQUAL 6 AND VTK_MINOR_VERSION GREATER 2 OR VTK_MAJOR_VERSION GREATER 6) + list (FIND USED_TOOLKITS_BY_CURRENT_PROJECT "vtkRenderingFreeTypeOpenGL" IS_VTK_RENDER_FREETYPE_FOUND) + if (NOT ${IS_VTK_RENDER_FREETYPE_FOUND} EQUAL -1) + list (REMOVE_ITEM USED_TOOLKITS_BY_CURRENT_PROJECT "vtkRenderingFreeTypeOpenGL") + endif() + endif() +endif() + +if (BUILD_SHARED_LIBS OR EXECUTABLE_PROJECT) + if(IS_VTK_9XX) + string (REGEX REPLACE "vtk" "VTK::" USED_TOOLKITS_BY_CURRENT_PROJECT "${USED_TOOLKITS_BY_CURRENT_PROJECT}") + endif() + target_link_libraries (${PROJECT_NAME} ${USED_TOOLKITS_BY_CURRENT_PROJECT} ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT}) +endif() + +if (USE_QT) + foreach (PROJECT_LIBRARY_DEBUG ${PROJECT_LIBRARIES_DEBUG}) + target_link_libraries (${PROJECT_NAME} debug ${PROJECT_LIBRARY_DEBUG}) + endforeach() + foreach (PROJECT_LIBRARY_RELEASE ${PROJECT_LIBRARIES_RELEASE}) + target_link_libraries (${PROJECT_NAME} optimized ${PROJECT_LIBRARY_RELEASE}) + endforeach() +endif() + +# suppress deprecation warnings inside OCCT itself for old gcc versions with unavailable Standard_DISABLE_DEPRECATION_WARNINGS +if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6.0) + add_definitions("-DOCCT_NO_DEPRECATED") + message (STATUS "Warning: internal deprecation warnings by Standard_DEPRECATED have been disabled due to old gcc version being used") + endif() +endif() + +# use Cotire to accelerate build via usage of precompiled headers +if (BUILD_USE_PCH) + if (WIN32) + # prevent definition of min and max macros through inclusion of Windows.h + # (for cotire builds) + add_definitions("-DNOMINMAX") + # avoid warnings on deprecated names from standard C library (see strsafe.h) + add_definitions("-DSTRSAFE_NO_DEPRECATE") + # avoid "std::Equal1" warning in QANCollection_Stl.cxx in debug mode + # suggesting using msvc "Checked Iterators" + add_definitions("-D_SCL_SECURE_NO_WARNINGS") + endif() + + # Exclude system-provided glext.h. + # These macros are already defined within OpenGl_GlFunctions.hxx, + # however we have to duplicate them here for building TKOpenGl with PCH. + add_definitions("-DGL_GLEXT_LEGACY") + add_definitions("-DGLX_GLXEXT_LEGACY") + + # workaround for old gcc + if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + add_definitions("-D__STDC_CONSTANT_MACROS") + add_definitions("-D__STDC_FORMAT_MACROS") + endif() + + # unity builds are not used since they do not add speed but cause conflicts + # in TKV3d + set_target_properties(${PROJECT_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) + + cotire(${PROJECT_NAME}) +endif() diff --git a/adm/cmake/occt_toolkit_prepare_sample.cmake b/adm/cmake/occt_toolkit_prepare_sample.cmake index ecc5ba0683..e00ff04420 100644 --- a/adm/cmake/occt_toolkit_prepare_sample.cmake +++ b/adm/cmake/occt_toolkit_prepare_sample.cmake @@ -1,18 +1,18 @@ -if ("${TARGET_FOLDER}" STREQUAL "") - set (EXECUTABLE_PROJECT ON) - set (USE_QT ON) - - set (RELATIVE_DIR "samples/qt") - set (MODULES_LIST ${OCCT_SAMPLES}) - set (TARGET_FOLDER "Samples") - set (TOOLKITS_NAME_SUFFIX "SAMPLES_TOOLKITS") - - include_directories("${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}/${RELATIVE_DIR}") -else() - unset (USE_QT) - unset (RELATIVE_DIR) - unset (EXECUTABLE_PROJECT) - unset (MODULES_LIST) - unset (TARGET_FOLDER) - unset (TOOLKITS_NAME_SUFFIX) -endif("${TARGET_FOLDER}" STREQUAL "") +if ("${TARGET_FOLDER}" STREQUAL "") + set (EXECUTABLE_PROJECT ON) + set (USE_QT ON) + + set (RELATIVE_DIR "samples/qt") + set (MODULES_LIST ${OCCT_SAMPLES}) + set (TARGET_FOLDER "Samples") + set (TOOLKITS_NAME_SUFFIX "SAMPLES_TOOLKITS") + + include_directories("${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}/${RELATIVE_DIR}") +else() + unset (USE_QT) + unset (RELATIVE_DIR) + unset (EXECUTABLE_PROJECT) + unset (MODULES_LIST) + unset (TARGET_FOLDER) + unset (TOOLKITS_NAME_SUFFIX) +endif("${TARGET_FOLDER}" STREQUAL "") diff --git a/adm/cmake/occt_toolkit_prepare_tool.cmake b/adm/cmake/occt_toolkit_prepare_tool.cmake index eed173ae63..173521a7d3 100644 --- a/adm/cmake/occt_toolkit_prepare_tool.cmake +++ b/adm/cmake/occt_toolkit_prepare_tool.cmake @@ -1,13 +1,13 @@ -if ("${TARGET_FOLDER}" STREQUAL "") - set (USE_QT ON) - set (RELATIVE_DIR "tools") - set (MODULES_LIST ${OCCT_TOOLS}) - set (TARGET_FOLDER "Tools") - set (TOOLKITS_NAME_SUFFIX "TOOL_TOOLKITS") -else() - unset (USE_QT) - unset (RELATIVE_DIR) - unset (MODULES_LIST) - unset (TARGET_FOLDER) - unset (TOOLKITS_NAME_SUFFIX) -endif("${TARGET_FOLDER}" STREQUAL "") +if ("${TARGET_FOLDER}" STREQUAL "") + set (USE_QT ON) + set (RELATIVE_DIR "tools") + set (MODULES_LIST ${OCCT_TOOLS}) + set (TARGET_FOLDER "Tools") + set (TOOLKITS_NAME_SUFFIX "TOOL_TOOLKITS") +else() + unset (USE_QT) + unset (RELATIVE_DIR) + unset (MODULES_LIST) + unset (TARGET_FOLDER) + unset (TOOLKITS_NAME_SUFFIX) +endif("${TARGET_FOLDER}" STREQUAL "") diff --git a/adm/cmake/opencl.cmake b/adm/cmake/opencl.cmake index 59bcbcd452..bafc723fe4 100644 --- a/adm/cmake/opencl.cmake +++ b/adm/cmake/opencl.cmake @@ -1,27 +1,27 @@ -#OpenCl - -SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_HEADER $ENV{AMDAPPSDKROOT}/include - $ENV{INTELOCLSDKROOT}/include - $ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/inc - $ENV{ATISTREAMSDKROOT}/include) - - -IF(${COMPILER_BITNESS} STREQUAL 32) - SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB $ENV{AMDAPPSDKROOT}/lib/x86 - $ENV{INTELOCLSDKROOT}/lib/x86 - $ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/lib/Win32 - $ENV{ATISTREAMSDKROOT}/lib/x86) -ELSEIF(${COMPILER_BITNESS} STREQUAL 64) - SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB $ENV{AMDAPPSDKROOT}/lib/x86_64 - $ENV{INTELOCLSDKROOT}/lib/x64 - $ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/lib/x64 - $ENV{ATISTREAMSDKROOT}/lib/x86_64) -ENDIF() - -THIRDPARTY_PRODUCT("OPENCL" "CL/cl.h" "OpenCL" "OpenCLd") - -# if CL/cl.h isn't found (and 3RDPARTY_OPENCL_INCLUDE_DIR isn't defined) -# then try to find OpenCL/cl.h (all other variable won't be changed) -IF(NOT 3RDPARTY_OPENCL_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_OPENCL_INCLUDE_DIR}") - THIRDPARTY_PRODUCT("OPENCL" "OpenCL/cl.h" "OpenCL" "OpenCLd") +#OpenCl + +SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_HEADER $ENV{AMDAPPSDKROOT}/include + $ENV{INTELOCLSDKROOT}/include + $ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/inc + $ENV{ATISTREAMSDKROOT}/include) + + +IF(${COMPILER_BITNESS} STREQUAL 32) + SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB $ENV{AMDAPPSDKROOT}/lib/x86 + $ENV{INTELOCLSDKROOT}/lib/x86 + $ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/lib/Win32 + $ENV{ATISTREAMSDKROOT}/lib/x86) +ELSEIF(${COMPILER_BITNESS} STREQUAL 64) + SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB $ENV{AMDAPPSDKROOT}/lib/x86_64 + $ENV{INTELOCLSDKROOT}/lib/x64 + $ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/lib/x64 + $ENV{ATISTREAMSDKROOT}/lib/x86_64) +ENDIF() + +THIRDPARTY_PRODUCT("OPENCL" "CL/cl.h" "OpenCL" "OpenCLd") + +# if CL/cl.h isn't found (and 3RDPARTY_OPENCL_INCLUDE_DIR isn't defined) +# then try to find OpenCL/cl.h (all other variable won't be changed) +IF(NOT 3RDPARTY_OPENCL_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_OPENCL_INCLUDE_DIR}") + THIRDPARTY_PRODUCT("OPENCL" "OpenCL/cl.h" "OpenCL" "OpenCLd") ENDIF() \ No newline at end of file diff --git a/adm/cmake/openvr.cmake b/adm/cmake/openvr.cmake index b61fbe11ac..7943a2f074 100644 --- a/adm/cmake/openvr.cmake +++ b/adm/cmake/openvr.cmake @@ -1,5 +1,5 @@ -# OpenVR SDK -# OpenVR is an API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting. -# https://github.com/ValveSoftware/openvr - -THIRDPARTY_PRODUCT("OPENVR" "openvr.h" "CSF_OpenVR" "") +# OpenVR SDK +# OpenVR is an API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting. +# https://github.com/ValveSoftware/openvr + +THIRDPARTY_PRODUCT("OPENVR" "openvr.h" "CSF_OpenVR" "") diff --git a/adm/cmake/qt.cmake b/adm/cmake/qt.cmake index 535e6a2038..e498a5d28b 100644 --- a/adm/cmake/qt.cmake +++ b/adm/cmake/qt.cmake @@ -1,41 +1,41 @@ -#qt - -# Qt is searched manually first (just determine root) -message (STATUS "Processing Qt 3-rd party") - -if (NOT DEFINED ${3RDPARTY_QT_DIR} AND ${3RDPARTY_QT_DIR} STREQUAL "") - FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" Qt 3RDPARTY_QT_DIR_NAME) - - if (NOT DEFINED ${3RDPARTY_QT_DIR_NAME} AND ${3RDPARTY_QT_DIR_NAME} STREQUAL "") - set (3RDPARTY_QT_DIR "" CACHE PATH "The directory containing qt") - message (FATAL_ERROR "Could not find used third-party product: 3RDPARTY_QT_DIR") - endif() - - # Combine directory name with absolute path and show in GUI - set (3RDPARTY_QT_DIR "${3RDPARTY_DIR}/${3RDPARTY_QT_DIR_NAME}" CACHE PATH "The directory containing Qt" FORCE) - message (STATUS "Info: Qt is used from folder: ${3RDPARTY_QT_DIR}") -endif() - -set (USED_3RDPARTY_QT_DIR "${3RDPARTY_QT_DIR}") - -# Now set CMAKE_PREFIX_PATH to point to local Qt installation. -# Without this setting find_package() will not work -set(CMAKE_PREFIX_PATH ${3RDPARTY_QT_DIR}) - -# Now we can apply standard CMake finder for Qt5. We do this mostly -# to have qt5_wrap_cpp() function available and Qt5_FOUND variable filled -find_package(Qt5 QUIET COMPONENTS Widgets Quick Xml PATHS ${3RDPARTY_QT_DIR} NO_DEFAULT_PATH) -if (NOT ${Qt5_FOUND}) - # Now we can apply standard CMake finder for Qt. We do this mostly - # to have qt4_wrap_cpp() function available - find_package(Qt4) - #message (STATUS "Qt4 cmake configuration") -else() - #message (STATUS "Qt5 cmake configuration") -endif() - -if (3RDPARTY_QT_DIR OR EXISTS "${3RDPARTY_QT_DIR}") - list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_QT_DIR}/bin") -else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_QT_DLL_DIR) -endif() +#qt + +# Qt is searched manually first (just determine root) +message (STATUS "Processing Qt 3-rd party") + +if (NOT DEFINED ${3RDPARTY_QT_DIR} AND ${3RDPARTY_QT_DIR} STREQUAL "") + FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" Qt 3RDPARTY_QT_DIR_NAME) + + if (NOT DEFINED ${3RDPARTY_QT_DIR_NAME} AND ${3RDPARTY_QT_DIR_NAME} STREQUAL "") + set (3RDPARTY_QT_DIR "" CACHE PATH "The directory containing qt") + message (FATAL_ERROR "Could not find used third-party product: 3RDPARTY_QT_DIR") + endif() + + # Combine directory name with absolute path and show in GUI + set (3RDPARTY_QT_DIR "${3RDPARTY_DIR}/${3RDPARTY_QT_DIR_NAME}" CACHE PATH "The directory containing Qt" FORCE) + message (STATUS "Info: Qt is used from folder: ${3RDPARTY_QT_DIR}") +endif() + +set (USED_3RDPARTY_QT_DIR "${3RDPARTY_QT_DIR}") + +# Now set CMAKE_PREFIX_PATH to point to local Qt installation. +# Without this setting find_package() will not work +set(CMAKE_PREFIX_PATH ${3RDPARTY_QT_DIR}) + +# Now we can apply standard CMake finder for Qt5. We do this mostly +# to have qt5_wrap_cpp() function available and Qt5_FOUND variable filled +find_package(Qt5 QUIET COMPONENTS Widgets Quick Xml PATHS ${3RDPARTY_QT_DIR} NO_DEFAULT_PATH) +if (NOT ${Qt5_FOUND}) + # Now we can apply standard CMake finder for Qt. We do this mostly + # to have qt4_wrap_cpp() function available + find_package(Qt4) + #message (STATUS "Qt4 cmake configuration") +else() + #message (STATUS "Qt5 cmake configuration") +endif() + +if (3RDPARTY_QT_DIR OR EXISTS "${3RDPARTY_QT_DIR}") + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_QT_DIR}/bin") +else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_QT_DLL_DIR) +endif() diff --git a/adm/cmake/qt_macro.cmake b/adm/cmake/qt_macro.cmake index ec897384ae..d1f8175c00 100644 --- a/adm/cmake/qt_macro.cmake +++ b/adm/cmake/qt_macro.cmake @@ -1,117 +1,117 @@ -#qt - -macro (FIND_QT_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES) - - if ("${3RDPARTY_QT_DIR}" STREQUAL "") - message (FATAL_ERROR "Empty Qt dir") - endif() - - if (${Qt5_FOUND}) - #message (STATUS "Qt5 cmake configuration") - - set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}" "${Qt5Quick_INCLUDE_DIRS}" "${Qt5Xml_INCLUDE_DIRS}") - set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}") - set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}") - - # processing *.ts files to generate *.qm - find_package(Qt5LinguistTools) - get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease LOCATION) - mark_as_advanced(QT_LRELEASE_EXECUTABLE) - - GET_FILENAME_COMPONENT(QT_BINARY_DIR ${QT_LRELEASE_EXECUTABLE} DIRECTORY) - MARK_AS_ADVANCED(QT_BINARY_DIR) - else() - #message (STATUS "Qt4 cmake configuration") - set(PROJECT_INCLUDES ${QT_INCLUDES}) - if (WIN32) - set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib;${3RDPARTY_QT_DIR}/lib/QtXmld4.lib") - set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/QtCore4.lib;${3RDPARTY_QT_DIR}/lib/QtGui4.lib;${3RDPARTY_QT_DIR}/lib/QtXml4.lib") - else() - set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so") - set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so") - endif(WIN32) - find_program(QT_LRELEASE_EXECUTABLE lrelease) - endif() -endmacro() - - -macro (FIND_AND_WRAP_MOC_FILES HEADER_FILES GENERATED_MOC_FILES) - set (GENERATED_MOC_FILES "") - foreach (FILE ${HEADER_FILES}) - # processing only files where Q_OBJECT exists - file(STRINGS "${FILE}" LINES REGEX "Q_OBJECT") - if(LINES) - unset (MOC_FILE) - if (${Qt5_FOUND}) - qt5_wrap_cpp(MOC_FILE ${FILE}) - else() - qt4_wrap_cpp(MOC_FILE ${FILE}) - endif() - #message (STATUS "... Info: next MOC file ${MOC_FILE}") - list(APPEND ${GENERATED_MOC_FILES} ${MOC_FILE}) - endif(LINES) - endforeach (FILE) - -endmacro() - -macro (FIND_AND_WRAP_RESOURCE_FILE RESOURCE_FILE_NAME RCC_FILES) - if(EXISTS "${RESOURCE_FILE_NAME}") - if (${Qt5_FOUND}) - qt5_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}") - else() - qt4_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}") - # suppress some GCC warnings coming from source files generated from .qrc resources - if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") - endif() - endif() - endif() -endmacro() - -macro (FIND_AND_WRAP_TS_FILE RESOURCE_FILE_NAME TARGET_FOLDER QM_FILES) - if(EXISTS "${RESOURCE_FILE_NAME}") - if (${Qt5_FOUND}) - qt5_add_translation(QM_FILES "${RESOURCE_FILE_NAME}") - else() - qt4_add_translation(QM_FILES "${RESOURCE_FILE_NAME}") - endif() - endif() -endmacro() - -macro (FIND_AND_INSTALL_QT_RESOURCES OCCT_PACKAGE RESOURCE_FILES) - file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" TS_FILES REGEX ".+[.]ts") - file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" QRC_FILES REGEX ".+[.]qrc") - - string (FIND "${OCCT_PACKAGE}" "/" _index) - if (_index GREATER -1) - math (EXPR _index "${_index}") - string (SUBSTRING "${OCCT_PACKAGE}" 0 ${_index} OCCT_PACKAGE_NAME) - else() - set (OCCT_PACKAGE_NAME "${OCCT_PACKAGE}") - endif(_index GREATER -1) - - #message("QRC files are: ${QRC_FILES} in ${OCCT_PACKAGE}") - foreach (QRC_FILE ${QRC_FILES}) - set (QRC_FILE_RELATIVE "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${QRC_FILE}") - if (EXISTS ${QRC_FILE_RELATIVE}) - FIND_AND_WRAP_RESOURCE_FILE(${QRC_FILE_RELATIVE} RCC_FILES) - list (APPEND ${RESOURCE_FILES} "${RCC_FILES}") - endif() - endforeach() - - #message("TS files are: ${TS_FILES} in ${OCCT_PACKAGE}") - foreach (TS_FILE ${TS_FILES}) - set (TS_FILE_RELATIVE "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${TS_FILE}") - FIND_AND_WRAP_TS_FILE(${TS_FILE_RELATIVE} "${TARGET_FOLDER}/${CURRENT_MODULE}" QM_FILES) - if (EXISTS ${TS_FILE_RELATIVE}) - list (APPEND ${RESOURCE_FILES} "${TS_FILE_RELATIVE}") - list (APPEND ${RESOURCE_FILES} "${QM_FILES}") - endif() - endforeach() - - foreach (QM_FILE ${QM_FILES}) - INSTALL(FILES ${QM_FILE} DESTINATION "${INSTALL_DIR_RESOURCE}/samples") - #message("install *.qm files (${QM_FILE}) to: ${INSTALL_DIR_RESOURCE}/samples") - endforeach (QM_FILE ${QM_FILES}) -endmacro() - +#qt + +macro (FIND_QT_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES) + + if ("${3RDPARTY_QT_DIR}" STREQUAL "") + message (FATAL_ERROR "Empty Qt dir") + endif() + + if (${Qt5_FOUND}) + #message (STATUS "Qt5 cmake configuration") + + set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}" "${Qt5Quick_INCLUDE_DIRS}" "${Qt5Xml_INCLUDE_DIRS}") + set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}") + set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}") + + # processing *.ts files to generate *.qm + find_package(Qt5LinguistTools) + get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease LOCATION) + mark_as_advanced(QT_LRELEASE_EXECUTABLE) + + GET_FILENAME_COMPONENT(QT_BINARY_DIR ${QT_LRELEASE_EXECUTABLE} DIRECTORY) + MARK_AS_ADVANCED(QT_BINARY_DIR) + else() + #message (STATUS "Qt4 cmake configuration") + set(PROJECT_INCLUDES ${QT_INCLUDES}) + if (WIN32) + set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib;${3RDPARTY_QT_DIR}/lib/QtXmld4.lib") + set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/QtCore4.lib;${3RDPARTY_QT_DIR}/lib/QtGui4.lib;${3RDPARTY_QT_DIR}/lib/QtXml4.lib") + else() + set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so") + set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so") + endif(WIN32) + find_program(QT_LRELEASE_EXECUTABLE lrelease) + endif() +endmacro() + + +macro (FIND_AND_WRAP_MOC_FILES HEADER_FILES GENERATED_MOC_FILES) + set (GENERATED_MOC_FILES "") + foreach (FILE ${HEADER_FILES}) + # processing only files where Q_OBJECT exists + file(STRINGS "${FILE}" LINES REGEX "Q_OBJECT") + if(LINES) + unset (MOC_FILE) + if (${Qt5_FOUND}) + qt5_wrap_cpp(MOC_FILE ${FILE}) + else() + qt4_wrap_cpp(MOC_FILE ${FILE}) + endif() + #message (STATUS "... Info: next MOC file ${MOC_FILE}") + list(APPEND ${GENERATED_MOC_FILES} ${MOC_FILE}) + endif(LINES) + endforeach (FILE) + +endmacro() + +macro (FIND_AND_WRAP_RESOURCE_FILE RESOURCE_FILE_NAME RCC_FILES) + if(EXISTS "${RESOURCE_FILE_NAME}") + if (${Qt5_FOUND}) + qt5_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}") + else() + qt4_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}") + # suppress some GCC warnings coming from source files generated from .qrc resources + if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") + endif() + endif() + endif() +endmacro() + +macro (FIND_AND_WRAP_TS_FILE RESOURCE_FILE_NAME TARGET_FOLDER QM_FILES) + if(EXISTS "${RESOURCE_FILE_NAME}") + if (${Qt5_FOUND}) + qt5_add_translation(QM_FILES "${RESOURCE_FILE_NAME}") + else() + qt4_add_translation(QM_FILES "${RESOURCE_FILE_NAME}") + endif() + endif() +endmacro() + +macro (FIND_AND_INSTALL_QT_RESOURCES OCCT_PACKAGE RESOURCE_FILES) + file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" TS_FILES REGEX ".+[.]ts") + file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" QRC_FILES REGEX ".+[.]qrc") + + string (FIND "${OCCT_PACKAGE}" "/" _index) + if (_index GREATER -1) + math (EXPR _index "${_index}") + string (SUBSTRING "${OCCT_PACKAGE}" 0 ${_index} OCCT_PACKAGE_NAME) + else() + set (OCCT_PACKAGE_NAME "${OCCT_PACKAGE}") + endif(_index GREATER -1) + + #message("QRC files are: ${QRC_FILES} in ${OCCT_PACKAGE}") + foreach (QRC_FILE ${QRC_FILES}) + set (QRC_FILE_RELATIVE "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${QRC_FILE}") + if (EXISTS ${QRC_FILE_RELATIVE}) + FIND_AND_WRAP_RESOURCE_FILE(${QRC_FILE_RELATIVE} RCC_FILES) + list (APPEND ${RESOURCE_FILES} "${RCC_FILES}") + endif() + endforeach() + + #message("TS files are: ${TS_FILES} in ${OCCT_PACKAGE}") + foreach (TS_FILE ${TS_FILES}) + set (TS_FILE_RELATIVE "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${TS_FILE}") + FIND_AND_WRAP_TS_FILE(${TS_FILE_RELATIVE} "${TARGET_FOLDER}/${CURRENT_MODULE}" QM_FILES) + if (EXISTS ${TS_FILE_RELATIVE}) + list (APPEND ${RESOURCE_FILES} "${TS_FILE_RELATIVE}") + list (APPEND ${RESOURCE_FILES} "${QM_FILES}") + endif() + endforeach() + + foreach (QM_FILE ${QM_FILES}) + INSTALL(FILES ${QM_FILE} DESTINATION "${INSTALL_DIR_RESOURCE}/samples") + #message("install *.qm files (${QM_FILE}) to: ${INSTALL_DIR_RESOURCE}/samples") + endforeach (QM_FILE ${QM_FILES}) +endmacro() + diff --git a/adm/cmake/rapidjson.cmake b/adm/cmake/rapidjson.cmake index de8fae24e8..5132d48af1 100644 --- a/adm/cmake/rapidjson.cmake +++ b/adm/cmake/rapidjson.cmake @@ -1,86 +1,86 @@ -# RapidJSON - -if (NOT DEFINED INSTALL_RAPIDJSON) - set (INSTALL_RAPIDJSON OFF CACHE BOOL "${INSTALL_RAPIDJSON_DESCR}") -endif() - -# RapidJSON directory -if (NOT DEFINED 3RDPARTY_RAPIDJSON_DIR) - set (3RDPARTY_RAPIDJSON_DIR "" CACHE PATH "The directory containing RapidJSON") -endif() - -# search for RapidJSON in user defined directory -if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - if (NOT 3RDPARTY_RAPIDJSON_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_DIR}") - FIND_PRODUCT_DIR("${3RDPARTY_DIR}" RapidJSON RAPIDJSON_DIR_NAME) - if (RAPIDJSON_DIR_NAME) - set (3RDPARTY_RAPIDJSON_DIR "${3RDPARTY_DIR}/${RAPIDJSON_DIR_NAME}" CACHE PATH "The directory containing RapidJSON" FORCE) - endif() - endif() -endif() - -if (NOT DEFINED 3RDPARTY_RAPIDJSON_INCLUDE_DIR) - set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of the RAPIDJSON") -endif() - -if (NOT 3RDPARTY_RAPIDJSON_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}") - - set (HEADER_NAMES rapidjson/rapidjson.h) - - set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "3RDPARTY_RAPIDJSON_INCLUDE_DIR-NOTFOUND" CACHE PATH "the path to RapidJSON header file" FORCE) - - if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}") - find_path (3RDPARTY_RAPIDJSON_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATHS ${3RDPARTY_RAPIDJSON_DIR} - PATH_SUFFIXES include rapidjson - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_path (3RDPARTY_RAPIDJSON_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATH_SUFFIXES include rapidjson - CMAKE_FIND_ROOT_PATH_BOTH) - endif() - - # use default (CMake) RapidJSON search - if (NOT 3RDPARTY_RAPIDJSON_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}") - if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}") - set (CACHED_RAPIDJSON_DIR $ENV{RapidJSON_DIR}) - set (ENV{RapidJSON_DIR} "${3RDPARTY_RAPIDJSON_DIR}") - endif() - - find_package(RapidJSON QUIET) - - # restore ENV{RapidJSON_DIR} - if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}") - set (ENV{RapidJSON_DIR} ${CACHED_RAPIDJSON_DIR}) - endif() - - if (${RAPIDJSON_FOUND}) - set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "${RAPIDJSON_INCLUDE_DIR}" CACHE PATH "the path to RapidJSON header file" FORCE) - set (3RDPARTY_RAPIDJSON_DIR "${RAPIDJSON_ROOT_DIR}" CACHE PATH "The directory containing RapidJSON" FORCE) - endif() - endif() -endif() - -if (3RDPARTY_RAPIDJSON_INCLUDE_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}") - - # Install header files - if (INSTALL_RAPIDJSON) - file(GLOB RAPIDJSON_SUBDIRS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}/*") - foreach(SUBDIR ${RAPIDJSON_SUBDIRS}) - if(IS_DIRECTORY "${SUBDIR}") - install (DIRECTORY "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}") - else() - install (FILES "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}") - endif() - endforeach() - endif() -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_RAPIDJSON_INCLUDE_DIR) - - set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "" CACHE PATH "the path to RapidJSON header file" FORCE) -endif() - -# unset all redundant variables -OCCT_CHECK_AND_UNSET(RapidJSON_DIR) +# RapidJSON + +if (NOT DEFINED INSTALL_RAPIDJSON) + set (INSTALL_RAPIDJSON OFF CACHE BOOL "${INSTALL_RAPIDJSON_DESCR}") +endif() + +# RapidJSON directory +if (NOT DEFINED 3RDPARTY_RAPIDJSON_DIR) + set (3RDPARTY_RAPIDJSON_DIR "" CACHE PATH "The directory containing RapidJSON") +endif() + +# search for RapidJSON in user defined directory +if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") + if (NOT 3RDPARTY_RAPIDJSON_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_DIR}") + FIND_PRODUCT_DIR("${3RDPARTY_DIR}" RapidJSON RAPIDJSON_DIR_NAME) + if (RAPIDJSON_DIR_NAME) + set (3RDPARTY_RAPIDJSON_DIR "${3RDPARTY_DIR}/${RAPIDJSON_DIR_NAME}" CACHE PATH "The directory containing RapidJSON" FORCE) + endif() + endif() +endif() + +if (NOT DEFINED 3RDPARTY_RAPIDJSON_INCLUDE_DIR) + set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of the RAPIDJSON") +endif() + +if (NOT 3RDPARTY_RAPIDJSON_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}") + + set (HEADER_NAMES rapidjson/rapidjson.h) + + set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "3RDPARTY_RAPIDJSON_INCLUDE_DIR-NOTFOUND" CACHE PATH "the path to RapidJSON header file" FORCE) + + if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}") + find_path (3RDPARTY_RAPIDJSON_INCLUDE_DIR NAMES ${HEADER_NAMES} + PATHS ${3RDPARTY_RAPIDJSON_DIR} + PATH_SUFFIXES include rapidjson + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + else() + find_path (3RDPARTY_RAPIDJSON_INCLUDE_DIR NAMES ${HEADER_NAMES} + PATH_SUFFIXES include rapidjson + CMAKE_FIND_ROOT_PATH_BOTH) + endif() + + # use default (CMake) RapidJSON search + if (NOT 3RDPARTY_RAPIDJSON_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}") + if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}") + set (CACHED_RAPIDJSON_DIR $ENV{RapidJSON_DIR}) + set (ENV{RapidJSON_DIR} "${3RDPARTY_RAPIDJSON_DIR}") + endif() + + find_package(RapidJSON QUIET) + + # restore ENV{RapidJSON_DIR} + if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}") + set (ENV{RapidJSON_DIR} ${CACHED_RAPIDJSON_DIR}) + endif() + + if (${RAPIDJSON_FOUND}) + set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "${RAPIDJSON_INCLUDE_DIR}" CACHE PATH "the path to RapidJSON header file" FORCE) + set (3RDPARTY_RAPIDJSON_DIR "${RAPIDJSON_ROOT_DIR}" CACHE PATH "The directory containing RapidJSON" FORCE) + endif() + endif() +endif() + +if (3RDPARTY_RAPIDJSON_INCLUDE_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}") + + # Install header files + if (INSTALL_RAPIDJSON) + file(GLOB RAPIDJSON_SUBDIRS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}/*") + foreach(SUBDIR ${RAPIDJSON_SUBDIRS}) + if(IS_DIRECTORY "${SUBDIR}") + install (DIRECTORY "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}") + else() + install (FILES "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}") + endif() + endforeach() + endif() +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_RAPIDJSON_INCLUDE_DIR) + + set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "" CACHE PATH "the path to RapidJSON header file" FORCE) +endif() + +# unset all redundant variables +OCCT_CHECK_AND_UNSET(RapidJSON_DIR) diff --git a/adm/cmake/tbb.cmake b/adm/cmake/tbb.cmake index 4e5f724ac2..979bef8c31 100644 --- a/adm/cmake/tbb.cmake +++ b/adm/cmake/tbb.cmake @@ -1,240 +1,240 @@ -# tbb - -if (MSVC AND BUILD_SHARED_LIBS) - add_definitions (-D__TBB_NO_IMPLICIT_LINKAGE) - add_definitions (-D__TBBMALLOC_NO_IMPLICIT_LINKAGE) -endif() - -if (NOT DEFINED INSTALL_TBB AND BUILD_SHARED_LIBS) - set (INSTALL_TBB OFF CACHE BOOL "${INSTALL_TBB_DESCR}") -endif() - -# Initialize tbb directory. -if (NOT DEFINED 3RDPARTY_TBB_DIR) - set (3RDPARTY_TBB_DIR "" CACHE PATH "The directory containing tbb") -endif() - -if (WIN32) - if (NOT DEFINED 3RDPARTY_DIR) - message (FATAL_ERROR "3RDPARTY_DIR is not defined.") - endif() - if ("${3RDPARTY_DIR}" STREQUAL "") - message (FATAL_ERROR "3RDPARTY_DIR is empty string.") - endif() - if (NOT EXISTS "${3RDPARTY_DIR}") - message (FATAL_ERROR "3RDPARTY_DIR is not exist.") - endif() - - # Below, we have correct 3RDPARTY_DIR. - - # Initialize TBB folder in connectin with 3RDPARTY_DIR. - if (("${3RDPARTY_TBB_DIR}" STREQUAL "") OR (NOT EXISTS "${3RDPARTY_TBB_DIR}")) - FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" TBB TBB_DIR_NAME) - if (TBB_DIR_NAME) - set (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" CACHE PATH "The directory containing tbb" FORCE) - endif() - endif() - - # Here we have full path name to installation directory of TBB. - # Employ it. - if (EXISTS "${3RDPARTY_TBB_DIR}") - find_package ( - TBB 2021.5 - PATHS "${3RDPARTY_TBB_DIR}" NO_DEFAULT_PATH - REQUIRED - CONFIG) - - # Achive include directory - get_target_property (TBB_INCLUDE_DIR TBB::tbb INTERFACE_INCLUDE_DIRECTORIES) - if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR) - set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the TBB") - endif() - if (EXISTS "${TBB_INCLUDE_DIR}") - set (3RDPARTY_TBB_INCLUDE_DIR "${TBB_INCLUDE_DIR}" CACHE PATH "The directory containing headers of the TBB" FORCE) - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TBB_INCLUDE_DIR}") - else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR) - endif() - - separate_arguments (CSF_TBB) - foreach (LIB IN LISTS CSF_TBB) - string(TOLOWER "${LIB}" LIB_LOWER) - string(TOUPPER "${LIB}" LIB_UPPER) - - # Achive *.lib files and directory containing it. - get_target_property (TBB_LIB_FILE "TBB::${LIB_LOWER}" IMPORTED_IMPLIB_RELEASE) - # Reserve cache variable for *.lib. - if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY) - set (3RDPARTY_${LIB_UPPER}_LIBRARY "" CACHE FILEPATH "${LIB_UPPER} library (*.lib)") - endif() - # Reserve cache variable for directory containing *.lib file. - if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) - set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.lib)") - endif() - if (EXISTS "${TBB_LIB_FILE}") - set (3RDPARTY_${LIB_UPPER}_LIBRARY - "${TBB_LIB_FILE}" - CACHE FILEPATH - "${LIB_UPPER} library (*.lib)" - FORCE) - get_filename_component (TBB_LIB_FILE_DIRECTORY "${TBB_LIB_FILE}" DIRECTORY) - set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR - "${TBB_LIB_FILE_DIRECTORY}" - CACHE PATH - "The directory containing ${LIB_UPPER} library (*.lib)" - FORCE) - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIB_UPPER}_LIBRARY_DIR}") - else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) - endif() - - # Achive *.dll files and directory containing it. - get_target_property (TBB_DLL_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_RELEASE) - # Reserve cache variable for *.dll. - if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_DLL) - set (3RDPARTY_${LIB_UPPER}_DLL "" CACHE FILEPATH "${LIB_UPPER} library (*.dll)") - endif() - # Reserve cache variable for directory containing *.dll file. - if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_DLL_DIR) - set (3RDPARTY_${LIB_UPPER}_DLL_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.dll)") - endif() - if (EXISTS "${TBB_DLL_FILE}") - set (3RDPARTY_${LIB_UPPER}_DLL - "${TBB_DLL_FILE}" - CACHE FILEPATH - "${LIB_UPPER} library (*.dll)" - FORCE) - get_filename_component (TBB_DLL_FILE_DIRECTORY "${TBB_DLL_FILE}" DIRECTORY) - set (3RDPARTY_${LIB_UPPER}_DLL_DIR - "${TBB_DLL_FILE_DIRECTORY}" - CACHE PATH - "The directory containing ${LIB_UPPER} library (*.dll)" - FORCE) - list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${LIB_UPPER}_DLL_DIR}") - else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${LIB_UPPER}_DLL_DIR) - endif() - - # install *.dll (tbb & tbbmalloc) - if (INSTALL_TBB) - OCCT_MAKE_OS_WITH_BITNESS() - OCCT_MAKE_COMPILER_SHORT_NAME() - - if (SINGLE_GENERATOR) - install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} DESTINATION "${INSTALL_DIR_BIN}") - else() - install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS Release DESTINATION "${INSTALL_DIR_BIN}") - install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS RelWithDebInfo DESTINATION "${INSTALL_DIR_BIN}i") - install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS Debug DESTINATION "${INSTALL_DIR_BIN}d") - endif() - endif() - mark_as_advanced (3RDPARTY_${LIB_UPPER}_LIBRARY 3RDPARTY_${LIB_UPPER}_DLL) - endforeach() - if (INSTALL_TBB) - set (USED_3RDPARTY_TBB_DIR "") - else() - # the *.dll/*.so* directory for using by the executable - set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_DLL_DIR}) - endif() - else() - message (FATAL_ERROR "Installation directory with TBB is not exist.") - endif() -else () - # NOT WIN32 branch - if ((DEFINED 3RDPARTY_DIR) AND (NOT "${3RDPARTY_DIR}" STREQUAL "") AND (EXISTS "${3RDPARTY_DIR}")) - # Here, we have correct 3RDPARTY_DIR. - # Trying to specify TBB folder in connection with 3RDPARTY_DIR - if (("${3RDPARTY_TBB_DIR}" STREQUAL "") OR (NOT EXISTS "${3RDPARTY_TBB_DIR}")) - FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" TBB TBB_DIR_NAME) - if (TBB_DIR_NAME) - set (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" CACHE PATH "The directory containing tbb" FORCE) - endif() - endif() - if ((NOT "${3RDPARTY_TBB_DIR}" STREQUAL "") AND (EXISTS "${3RDPARTY_TBB_DIR}")) - # Find TBB 2021.5 in existing directory. - find_package ( - TBB 2021.5 - PATHS "${3RDPARTY_TBB_DIR}" NO_DEFAULT_PATH - REQUIRED - CONFIG) - else() - # Find TBB 2021.5 in system directory. - find_package ( - TBB 2021.5 - REQUIRED - CONFIG) - endif() - else() - # Find TBB 2021.5 in system directory. - find_package ( - TBB 2021.5 - REQUIRED - CONFIG) - endif() - # TBB has been configured (in other case FATAL_ERROR occures). - - # Achive include directory. - get_target_property (TBB_INCLUDE_DIR TBB::tbb INTERFACE_INCLUDE_DIRECTORIES) - if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR) - set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the TBB") - endif() - if (EXISTS "${TBB_INCLUDE_DIR}") - set (3RDPARTY_TBB_INCLUDE_DIR "${TBB_INCLUDE_DIR}" CACHE PATH "The directory containing headers of the TBB" FORCE) - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TBB_INCLUDE_DIR}") - else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR) - endif() - - separate_arguments (CSF_TBB) - foreach (LIB IN LISTS CSF_TBB) - string(TOLOWER "${LIB}" LIB_LOWER) - string(TOUPPER "${LIB}" LIB_UPPER) - - # Achive *.so files and directory containing it. - get_target_property (TBB_SO_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_RELEASE) - # Reserve cache variable for *.so. - if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY) - set (3RDPARTY_${LIB_UPPER}_LIBRARY "" CACHE FILEPATH "${LIB_UPPER} library (*.so)") - endif() - # Reserve cache variable for directory containing *.so file. - if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) - set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.so)") - endif() - if (EXISTS "${TBB_SO_FILE}") - set (3RDPARTY_${LIB_UPPER}_LIBRARY - "${TBB_SO_FILE}" - CACHE FILEPATH - "${LIB_UPPER} library (*.so)" - FORCE) - get_filename_component (TBB_SO_FILE_DIRECTORY "${TBB_SO_FILE}" DIRECTORY) - set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR - "${TBB_SO_FILE_DIRECTORY}" - CACHE PATH - "The directory containing ${LIB_UPPER} library (*.so)" - FORCE) - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIB_UPPER}_LIBRARY_DIR}") - else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) - endif() - - # install *.so* (tbb & tbbmalloc) - if (INSTALL_TBB) - OCCT_MAKE_OS_WITH_BITNESS() - OCCT_MAKE_COMPILER_SHORT_NAME() - - if (SINGLE_GENERATOR) - install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} DESTINATION "${INSTALL_DIR_LIB}") - else() - install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS Release DESTINATION "${INSTALL_DIR_LIB}") - install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS RelWithDebInfo DESTINATION "${INSTALL_DIR_LIB}i") - install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS Debug DESTINATION "${INSTALL_DIR_LIB}d") - endif() - endif() - endforeach() - if (INSTALL_TBB) - set (USED_3RDPARTY_TBB_DIR "") - else() - # the *.so* directory for using by the executable - set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_LIBRARY_DIR}) - endif() -endif() +# tbb + +if (MSVC AND BUILD_SHARED_LIBS) + add_definitions (-D__TBB_NO_IMPLICIT_LINKAGE) + add_definitions (-D__TBBMALLOC_NO_IMPLICIT_LINKAGE) +endif() + +if (NOT DEFINED INSTALL_TBB AND BUILD_SHARED_LIBS) + set (INSTALL_TBB OFF CACHE BOOL "${INSTALL_TBB_DESCR}") +endif() + +# Initialize tbb directory. +if (NOT DEFINED 3RDPARTY_TBB_DIR) + set (3RDPARTY_TBB_DIR "" CACHE PATH "The directory containing tbb") +endif() + +if (WIN32) + if (NOT DEFINED 3RDPARTY_DIR) + message (FATAL_ERROR "3RDPARTY_DIR is not defined.") + endif() + if ("${3RDPARTY_DIR}" STREQUAL "") + message (FATAL_ERROR "3RDPARTY_DIR is empty string.") + endif() + if (NOT EXISTS "${3RDPARTY_DIR}") + message (FATAL_ERROR "3RDPARTY_DIR is not exist.") + endif() + + # Below, we have correct 3RDPARTY_DIR. + + # Initialize TBB folder in connectin with 3RDPARTY_DIR. + if (("${3RDPARTY_TBB_DIR}" STREQUAL "") OR (NOT EXISTS "${3RDPARTY_TBB_DIR}")) + FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" TBB TBB_DIR_NAME) + if (TBB_DIR_NAME) + set (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" CACHE PATH "The directory containing tbb" FORCE) + endif() + endif() + + # Here we have full path name to installation directory of TBB. + # Employ it. + if (EXISTS "${3RDPARTY_TBB_DIR}") + find_package ( + TBB 2021.5 + PATHS "${3RDPARTY_TBB_DIR}" NO_DEFAULT_PATH + REQUIRED + CONFIG) + + # Achive include directory + get_target_property (TBB_INCLUDE_DIR TBB::tbb INTERFACE_INCLUDE_DIRECTORIES) + if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR) + set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the TBB") + endif() + if (EXISTS "${TBB_INCLUDE_DIR}") + set (3RDPARTY_TBB_INCLUDE_DIR "${TBB_INCLUDE_DIR}" CACHE PATH "The directory containing headers of the TBB" FORCE) + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TBB_INCLUDE_DIR}") + else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR) + endif() + + separate_arguments (CSF_TBB) + foreach (LIB IN LISTS CSF_TBB) + string(TOLOWER "${LIB}" LIB_LOWER) + string(TOUPPER "${LIB}" LIB_UPPER) + + # Achive *.lib files and directory containing it. + get_target_property (TBB_LIB_FILE "TBB::${LIB_LOWER}" IMPORTED_IMPLIB_RELEASE) + # Reserve cache variable for *.lib. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY) + set (3RDPARTY_${LIB_UPPER}_LIBRARY "" CACHE FILEPATH "${LIB_UPPER} library (*.lib)") + endif() + # Reserve cache variable for directory containing *.lib file. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) + set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.lib)") + endif() + if (EXISTS "${TBB_LIB_FILE}") + set (3RDPARTY_${LIB_UPPER}_LIBRARY + "${TBB_LIB_FILE}" + CACHE FILEPATH + "${LIB_UPPER} library (*.lib)" + FORCE) + get_filename_component (TBB_LIB_FILE_DIRECTORY "${TBB_LIB_FILE}" DIRECTORY) + set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR + "${TBB_LIB_FILE_DIRECTORY}" + CACHE PATH + "The directory containing ${LIB_UPPER} library (*.lib)" + FORCE) + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIB_UPPER}_LIBRARY_DIR}") + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) + endif() + + # Achive *.dll files and directory containing it. + get_target_property (TBB_DLL_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_RELEASE) + # Reserve cache variable for *.dll. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_DLL) + set (3RDPARTY_${LIB_UPPER}_DLL "" CACHE FILEPATH "${LIB_UPPER} library (*.dll)") + endif() + # Reserve cache variable for directory containing *.dll file. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_DLL_DIR) + set (3RDPARTY_${LIB_UPPER}_DLL_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.dll)") + endif() + if (EXISTS "${TBB_DLL_FILE}") + set (3RDPARTY_${LIB_UPPER}_DLL + "${TBB_DLL_FILE}" + CACHE FILEPATH + "${LIB_UPPER} library (*.dll)" + FORCE) + get_filename_component (TBB_DLL_FILE_DIRECTORY "${TBB_DLL_FILE}" DIRECTORY) + set (3RDPARTY_${LIB_UPPER}_DLL_DIR + "${TBB_DLL_FILE_DIRECTORY}" + CACHE PATH + "The directory containing ${LIB_UPPER} library (*.dll)" + FORCE) + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${LIB_UPPER}_DLL_DIR}") + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${LIB_UPPER}_DLL_DIR) + endif() + + # install *.dll (tbb & tbbmalloc) + if (INSTALL_TBB) + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + + if (SINGLE_GENERATOR) + install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} DESTINATION "${INSTALL_DIR_BIN}") + else() + install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS Release DESTINATION "${INSTALL_DIR_BIN}") + install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS RelWithDebInfo DESTINATION "${INSTALL_DIR_BIN}i") + install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS Debug DESTINATION "${INSTALL_DIR_BIN}d") + endif() + endif() + mark_as_advanced (3RDPARTY_${LIB_UPPER}_LIBRARY 3RDPARTY_${LIB_UPPER}_DLL) + endforeach() + if (INSTALL_TBB) + set (USED_3RDPARTY_TBB_DIR "") + else() + # the *.dll/*.so* directory for using by the executable + set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_DLL_DIR}) + endif() + else() + message (FATAL_ERROR "Installation directory with TBB is not exist.") + endif() +else () + # NOT WIN32 branch + if ((DEFINED 3RDPARTY_DIR) AND (NOT "${3RDPARTY_DIR}" STREQUAL "") AND (EXISTS "${3RDPARTY_DIR}")) + # Here, we have correct 3RDPARTY_DIR. + # Trying to specify TBB folder in connection with 3RDPARTY_DIR + if (("${3RDPARTY_TBB_DIR}" STREQUAL "") OR (NOT EXISTS "${3RDPARTY_TBB_DIR}")) + FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" TBB TBB_DIR_NAME) + if (TBB_DIR_NAME) + set (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" CACHE PATH "The directory containing tbb" FORCE) + endif() + endif() + if ((NOT "${3RDPARTY_TBB_DIR}" STREQUAL "") AND (EXISTS "${3RDPARTY_TBB_DIR}")) + # Find TBB 2021.5 in existing directory. + find_package ( + TBB 2021.5 + PATHS "${3RDPARTY_TBB_DIR}" NO_DEFAULT_PATH + REQUIRED + CONFIG) + else() + # Find TBB 2021.5 in system directory. + find_package ( + TBB 2021.5 + REQUIRED + CONFIG) + endif() + else() + # Find TBB 2021.5 in system directory. + find_package ( + TBB 2021.5 + REQUIRED + CONFIG) + endif() + # TBB has been configured (in other case FATAL_ERROR occures). + + # Achive include directory. + get_target_property (TBB_INCLUDE_DIR TBB::tbb INTERFACE_INCLUDE_DIRECTORIES) + if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR) + set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the TBB") + endif() + if (EXISTS "${TBB_INCLUDE_DIR}") + set (3RDPARTY_TBB_INCLUDE_DIR "${TBB_INCLUDE_DIR}" CACHE PATH "The directory containing headers of the TBB" FORCE) + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TBB_INCLUDE_DIR}") + else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR) + endif() + + separate_arguments (CSF_TBB) + foreach (LIB IN LISTS CSF_TBB) + string(TOLOWER "${LIB}" LIB_LOWER) + string(TOUPPER "${LIB}" LIB_UPPER) + + # Achive *.so files and directory containing it. + get_target_property (TBB_SO_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_RELEASE) + # Reserve cache variable for *.so. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY) + set (3RDPARTY_${LIB_UPPER}_LIBRARY "" CACHE FILEPATH "${LIB_UPPER} library (*.so)") + endif() + # Reserve cache variable for directory containing *.so file. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) + set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.so)") + endif() + if (EXISTS "${TBB_SO_FILE}") + set (3RDPARTY_${LIB_UPPER}_LIBRARY + "${TBB_SO_FILE}" + CACHE FILEPATH + "${LIB_UPPER} library (*.so)" + FORCE) + get_filename_component (TBB_SO_FILE_DIRECTORY "${TBB_SO_FILE}" DIRECTORY) + set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR + "${TBB_SO_FILE_DIRECTORY}" + CACHE PATH + "The directory containing ${LIB_UPPER} library (*.so)" + FORCE) + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIB_UPPER}_LIBRARY_DIR}") + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) + endif() + + # install *.so* (tbb & tbbmalloc) + if (INSTALL_TBB) + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + + if (SINGLE_GENERATOR) + install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} DESTINATION "${INSTALL_DIR_LIB}") + else() + install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS Release DESTINATION "${INSTALL_DIR_LIB}") + install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS RelWithDebInfo DESTINATION "${INSTALL_DIR_LIB}i") + install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS Debug DESTINATION "${INSTALL_DIR_LIB}d") + endif() + endif() + endforeach() + if (INSTALL_TBB) + set (USED_3RDPARTY_TBB_DIR "") + else() + # the *.so* directory for using by the executable + set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_LIBRARY_DIR}) + endif() +endif() diff --git a/adm/cmake/tcl.cmake b/adm/cmake/tcl.cmake index fdfc3e42c6..f36c4d8e1a 100644 --- a/adm/cmake/tcl.cmake +++ b/adm/cmake/tcl.cmake @@ -1,281 +1,281 @@ -# tcl - -if (NOT DEFINED INSTALL_TCL) - set (INSTALL_TCL OFF CACHE BOOL "${INSTALL_TCL_DESCR}") -endif() - -# tcl directory -if (NOT DEFINED 3RDPARTY_TCL_DIR) - set (3RDPARTY_TCL_DIR "" CACHE PATH "The directory containing tcl") -endif() - -# tcl include directory -if (NOT DEFINED 3RDPARTY_TCL_INCLUDE_DIR) - set (3RDPARTY_TCL_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tcl") -endif() - - -# tcl library file (with absolute path) -if (NOT DEFINED 3RDPARTY_TCL_LIBRARY OR NOT 3RDPARTY_TCL_LIBRARY_DIR) - set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "tcl library" FORCE) -endif() - -# tcl library directory -if (NOT DEFINED 3RDPARTY_TCL_LIBRARY_DIR) - set (3RDPARTY_TCL_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tcl library") -endif() - -# tcl shared library (with absolute path) -if (WIN32) - if (NOT DEFINED 3RDPARTY_TCL_DLL OR NOT 3RDPARTY_TCL_DLL_DIR) - set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "tcl shared library" FORCE) - endif() -endif() - -# tcl shared library directory -if (WIN32 AND NOT DEFINED 3RDPARTY_TCL_DLL_DIR) - set (3RDPARTY_TCL_DLL_DIR "" CACHE FILEPATH "The directory containing tcl shared library") -endif() - - -# search for tcl in user defined directory -if (NOT 3RDPARTY_TCL_DIR AND 3RDPARTY_DIR) - FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tcl TCL_DIR_NAME) - if (TCL_DIR_NAME) - set (3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" CACHE PATH "The directory containing tcl" FORCE) - endif() -endif() - -# define paths for default engine -if (3RDPARTY_TCL_DIR AND EXISTS "${3RDPARTY_TCL_DIR}") - set (TCL_INCLUDE_PATH "${3RDPARTY_TCL_DIR}/include") -endif() - -# check tcl include dir, library dir and shared library dir -COMPLIANCE_PRODUCT_CONSISTENCY(TCL) - -# use default (CMake) TCL search -find_package(TCL QUIET) - -# tcl include dir -if (NOT 3RDPARTY_TCL_INCLUDE_DIR) - if (TCL_INCLUDE_PATH AND EXISTS "${TCL_INCLUDE_PATH}") - set (3RDPARTY_TCL_INCLUDE_DIR "${TCL_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of TCL" FORCE) - endif() -endif() - -# tcl dir and library -if (NOT 3RDPARTY_TCL_LIBRARY) - if (TCL_LIBRARY AND EXISTS "${TCL_LIBRARY}") - set (3RDPARTY_TCL_LIBRARY "${TCL_LIBRARY}" CACHE FILEPATH "TCL library" FORCE) - - if (NOT 3RDPARTY_TCL_LIBRARY_DIR) - get_filename_component (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH) - set (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TCL library" FORCE) - endif() - endif() -endif() - -if (WIN32) - if (NOT 3RDPARTY_TCL_DLL) - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll .a) - - set (DLL_FOLDER_FOR_SEARCH "") - if (3RDPARTY_TCL_DLL_DIR) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DLL_DIR}") - elseif (3RDPARTY_TCL_DIR) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DIR}/bin") - elseif (3RDPARTY_TCL_LIBRARY_DIR) - get_filename_component (3RDPARTY_TCL_LIBRARY_DIR_PARENT "${3RDPARTY_TCL_LIBRARY_DIR}" PATH) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_LIBRARY_DIR_PARENT}/bin") - endif() - - set (3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "TCL shared library" FORCE) - find_library (3RDPARTY_TCL_DLL NAMES ${CSF_TclLibs} - PATHS "${DLL_FOLDER_FOR_SEARCH}" - NO_DEFAULT_PATH) - endif() -endif() - -COMPLIANCE_PRODUCT_CONSISTENCY(TCL) - -# tcl dir and library -if (NOT 3RDPARTY_TCL_LIBRARY) - set (3RDPARTY_TCL_LIBRARY "3RDPARTY_TCL_LIBRARY-NOTFOUND" CACHE FILEPATH "TCL library" FORCE) - find_library (3RDPARTY_TCL_LIBRARY NAMES ${CSF_TclLibs} - PATHS "${3RDPARTY_TCL_LIBRARY_DIR}" - NO_DEFAULT_PATH) - - # search in another place if previous search doesn't find anything - find_library (3RDPARTY_TCL_LIBRARY NAMES ${CSF_TclLibs} - PATHS "${3RDPARTY_TCL_DIR}/lib" - NO_DEFAULT_PATH) - - if (NOT 3RDPARTY_TCL_LIBRARY OR NOT EXISTS "${3RDPARTY_TCL_LIBRARY}") - set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "TCL library" FORCE) - endif() - - if (NOT 3RDPARTY_TCL_LIBRARY_DIR AND 3RDPARTY_TCL_LIBRARY) - get_filename_component (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH) - set (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TCL library" FORCE) - endif() -endif() - -set (3RDPARTY_TCL_LIBRARY_VERSION "") -if (3RDPARTY_TCL_LIBRARY AND EXISTS "${3RDPARTY_TCL_LIBRARY}") - get_filename_component (TCL_LIBRARY_NAME "${3RDPARTY_TCL_LIBRARY}" NAME) - string(REGEX REPLACE "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY_NAME}") - - if (NOT "${TCL_LIBRARY_VERSION}" STREQUAL "${TCL_LIBRARY_NAME}") - set (3RDPARTY_TCL_LIBRARY_VERSION "${TCL_LIBRARY_VERSION}") - else() # if the version isn't found - seek other library with 8.6 or 8.5 version in the same dir - message (STATUS "Info: TCL version isn't found") - endif() -endif() - -set (3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT "") -if (3RDPARTY_TCL_LIBRARY_VERSION) - string (REGEX REPLACE "^.*([0-9])[^0-9]*[0-9].*$" "\\1" 3RDPARTY_TCL_MAJOR_VERSION "${3RDPARTY_TCL_LIBRARY_VERSION}") - string (REGEX REPLACE "^.*[0-9][^0-9]*([0-9]).*$" "\\1" 3RDPARTY_TCL_MINOR_VERSION "${3RDPARTY_TCL_LIBRARY_VERSION}") - set (3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT "${3RDPARTY_TCL_MAJOR_VERSION}.${3RDPARTY_TCL_MINOR_VERSION}") -endif() - -if (WIN32) - if (NOT 3RDPARTY_TCL_DLL) - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll .a) - - set (DLL_FOLDER_FOR_SEARCH "") - if (3RDPARTY_TCL_DLL_DIR) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DLL_DIR}") - elseif (3RDPARTY_TCL_DIR) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DIR}/bin") - else() - get_filename_component (3RDPARTY_TCL_LIBRARY_DIR_PARENT "${3RDPARTY_TCL_LIBRARY_DIR}" PATH) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_LIBRARY_DIR_PARENT}/bin") - endif() - - set (3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "TCL shared library" FORCE) - find_library (3RDPARTY_TCL_DLL NAMES tcl${3RDPARTY_TCL_LIBRARY_VERSION} - PATHS "${DLL_FOLDER_FOR_SEARCH}" - NO_DEFAULT_PATH) - - if (NOT 3RDPARTY_TCL_DLL OR NOT EXISTS "${3RDPARTY_TCL_DLL}") - set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "TCL shared library" FORCE) - endif() - endif() - if (NOT 3RDPARTY_TCL_DLL_DIR AND 3RDPARTY_TCL_DLL) - get_filename_component (3RDPARTY_TCL_DLL_DIR "${3RDPARTY_TCL_DLL}" PATH) - set (3RDPARTY_TCL_DLL_DIR "${3RDPARTY_TCL_DLL_DIR}" CACHE FILEPATH "The directory containing TCL shared library" FORCE) - endif() -endif() - -# include found paths to common variables -if (3RDPARTY_TCL_INCLUDE_DIR AND EXISTS "${3RDPARTY_TCL_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TCL_INCLUDE_DIR}") -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_INCLUDE_DIR) -endif() - -if (3RDPARTY_TCL_LIBRARY AND EXISTS "${3RDPARTY_TCL_LIBRARY}") - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_TCL_LIBRARY_DIR}") -else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_TCL_LIBRARY_DIR) -endif() - -if (WIN32) - if (3RDPARTY_TCL_DLL OR EXISTS "${3RDPARTY_TCL_DLL}") - list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_TCL_DLL_DIR}") - else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_TCL_DLL_DIR) - endif() -endif() - -# install tcl -if (INSTALL_TCL) - # include occt macros. compiler_bitness, os_wiht_bit, compiler - OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") - - OCCT_MAKE_OS_WITH_BITNESS() - OCCT_MAKE_COMPILER_SHORT_NAME() - - if (WIN32) - # tcl 8.6 requires zlib. install all dlls from tcl bin folder that may contain zlib also - - # collect and install all dlls from tcl dll dirs - file (GLOB TCL_DLLS "${3RDPARTY_TCL_DLL_DIR}/*.dll") - - if (SINGLE_GENERATOR) - install (FILES ${TCL_DLLS} DESTINATION "${INSTALL_DIR_BIN}") - else() - install (FILES ${TCL_DLLS} - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_BIN}") - install (FILES ${TCL_DLLS} - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_BIN}i") - install (FILES ${TCL_DLLS} - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_BIN}d") - endif() - else() - get_filename_component(3RDPARTY_TCL_LIBRARY_REALPATH ${3RDPARTY_TCL_LIBRARY} REALPATH) - - if (SINGLE_GENERATOR) - install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR_LIB}") - else() - install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_LIB}") - install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_LIB}i") - install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_LIB}d") - endif() - endif() - - if (TCL_TCLSH_VERSION) - # tcl is required to install in lib folder (without) - install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl8" DESTINATION "${INSTALL_DIR_LIB}") - install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR_LIB}") - else() - message (STATUS "\nWarning: tclX.X subdir won't be copied during the installation process.") - message (STATUS "Try seeking tcl within another folder by changing 3RDPARTY_TCL_DIR variable.") - endif() - - set (USED_3RDPARTY_TCL_DIR "") -else() - # the library directory for using by the executable - if (WIN32) - set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_DLL_DIR}) - else() - set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_LIBRARY_DIR}) - endif() -endif() - -mark_as_advanced (3RDPARTY_TCL_LIBRARY 3RDPARTY_TCL_DLL) - -if (TK_FOUND AND 3RDPARTY_TCL_DIR) - - get_filename_component (TK_WISH_ABSOLUTE "${TK_WISH}" ABSOLUTE) - get_filename_component (3RDPARTY_TCL_DIR_ABSOLUTE "${3RDPARTY_TCL_DIR}" ABSOLUTE) - - string (FIND "${TK_WISH_ABSOLUTE}" "${3RDPARTY_TCL_DIR_ABSOLUTE}" THE_SAME_FOLDER) - - if (${THE_SAME_FOLDER} EQUAL 0) - set (3RDPARTY_TCLTK_DIR "${3RDPARTY_TCL_DIR}") - message (STATUS "Info: TK is used from TCL folder: ${3RDPARTY_TCLTK_DIR}") - endif() -endif() - -# unset all redundant variables -#TCL -OCCT_CHECK_AND_UNSET (TCL_LIBRARY) -OCCT_CHECK_AND_UNSET (TCL_INCLUDE_PATH) -OCCT_CHECK_AND_UNSET (TCL_TCLSH) -#TK -OCCT_CHECK_AND_UNSET (TK_LIBRARY) -OCCT_CHECK_AND_UNSET (TK_INCLUDE_PATH) -OCCT_CHECK_AND_UNSET (TK_WISH) - +# tcl + +if (NOT DEFINED INSTALL_TCL) + set (INSTALL_TCL OFF CACHE BOOL "${INSTALL_TCL_DESCR}") +endif() + +# tcl directory +if (NOT DEFINED 3RDPARTY_TCL_DIR) + set (3RDPARTY_TCL_DIR "" CACHE PATH "The directory containing tcl") +endif() + +# tcl include directory +if (NOT DEFINED 3RDPARTY_TCL_INCLUDE_DIR) + set (3RDPARTY_TCL_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tcl") +endif() + + +# tcl library file (with absolute path) +if (NOT DEFINED 3RDPARTY_TCL_LIBRARY OR NOT 3RDPARTY_TCL_LIBRARY_DIR) + set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "tcl library" FORCE) +endif() + +# tcl library directory +if (NOT DEFINED 3RDPARTY_TCL_LIBRARY_DIR) + set (3RDPARTY_TCL_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tcl library") +endif() + +# tcl shared library (with absolute path) +if (WIN32) + if (NOT DEFINED 3RDPARTY_TCL_DLL OR NOT 3RDPARTY_TCL_DLL_DIR) + set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "tcl shared library" FORCE) + endif() +endif() + +# tcl shared library directory +if (WIN32 AND NOT DEFINED 3RDPARTY_TCL_DLL_DIR) + set (3RDPARTY_TCL_DLL_DIR "" CACHE FILEPATH "The directory containing tcl shared library") +endif() + + +# search for tcl in user defined directory +if (NOT 3RDPARTY_TCL_DIR AND 3RDPARTY_DIR) + FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tcl TCL_DIR_NAME) + if (TCL_DIR_NAME) + set (3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" CACHE PATH "The directory containing tcl" FORCE) + endif() +endif() + +# define paths for default engine +if (3RDPARTY_TCL_DIR AND EXISTS "${3RDPARTY_TCL_DIR}") + set (TCL_INCLUDE_PATH "${3RDPARTY_TCL_DIR}/include") +endif() + +# check tcl include dir, library dir and shared library dir +COMPLIANCE_PRODUCT_CONSISTENCY(TCL) + +# use default (CMake) TCL search +find_package(TCL QUIET) + +# tcl include dir +if (NOT 3RDPARTY_TCL_INCLUDE_DIR) + if (TCL_INCLUDE_PATH AND EXISTS "${TCL_INCLUDE_PATH}") + set (3RDPARTY_TCL_INCLUDE_DIR "${TCL_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of TCL" FORCE) + endif() +endif() + +# tcl dir and library +if (NOT 3RDPARTY_TCL_LIBRARY) + if (TCL_LIBRARY AND EXISTS "${TCL_LIBRARY}") + set (3RDPARTY_TCL_LIBRARY "${TCL_LIBRARY}" CACHE FILEPATH "TCL library" FORCE) + + if (NOT 3RDPARTY_TCL_LIBRARY_DIR) + get_filename_component (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH) + set (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TCL library" FORCE) + endif() + endif() +endif() + +if (WIN32) + if (NOT 3RDPARTY_TCL_DLL) + set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll .a) + + set (DLL_FOLDER_FOR_SEARCH "") + if (3RDPARTY_TCL_DLL_DIR) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DLL_DIR}") + elseif (3RDPARTY_TCL_DIR) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DIR}/bin") + elseif (3RDPARTY_TCL_LIBRARY_DIR) + get_filename_component (3RDPARTY_TCL_LIBRARY_DIR_PARENT "${3RDPARTY_TCL_LIBRARY_DIR}" PATH) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_LIBRARY_DIR_PARENT}/bin") + endif() + + set (3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "TCL shared library" FORCE) + find_library (3RDPARTY_TCL_DLL NAMES ${CSF_TclLibs} + PATHS "${DLL_FOLDER_FOR_SEARCH}" + NO_DEFAULT_PATH) + endif() +endif() + +COMPLIANCE_PRODUCT_CONSISTENCY(TCL) + +# tcl dir and library +if (NOT 3RDPARTY_TCL_LIBRARY) + set (3RDPARTY_TCL_LIBRARY "3RDPARTY_TCL_LIBRARY-NOTFOUND" CACHE FILEPATH "TCL library" FORCE) + find_library (3RDPARTY_TCL_LIBRARY NAMES ${CSF_TclLibs} + PATHS "${3RDPARTY_TCL_LIBRARY_DIR}" + NO_DEFAULT_PATH) + + # search in another place if previous search doesn't find anything + find_library (3RDPARTY_TCL_LIBRARY NAMES ${CSF_TclLibs} + PATHS "${3RDPARTY_TCL_DIR}/lib" + NO_DEFAULT_PATH) + + if (NOT 3RDPARTY_TCL_LIBRARY OR NOT EXISTS "${3RDPARTY_TCL_LIBRARY}") + set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "TCL library" FORCE) + endif() + + if (NOT 3RDPARTY_TCL_LIBRARY_DIR AND 3RDPARTY_TCL_LIBRARY) + get_filename_component (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH) + set (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TCL library" FORCE) + endif() +endif() + +set (3RDPARTY_TCL_LIBRARY_VERSION "") +if (3RDPARTY_TCL_LIBRARY AND EXISTS "${3RDPARTY_TCL_LIBRARY}") + get_filename_component (TCL_LIBRARY_NAME "${3RDPARTY_TCL_LIBRARY}" NAME) + string(REGEX REPLACE "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY_NAME}") + + if (NOT "${TCL_LIBRARY_VERSION}" STREQUAL "${TCL_LIBRARY_NAME}") + set (3RDPARTY_TCL_LIBRARY_VERSION "${TCL_LIBRARY_VERSION}") + else() # if the version isn't found - seek other library with 8.6 or 8.5 version in the same dir + message (STATUS "Info: TCL version isn't found") + endif() +endif() + +set (3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT "") +if (3RDPARTY_TCL_LIBRARY_VERSION) + string (REGEX REPLACE "^.*([0-9])[^0-9]*[0-9].*$" "\\1" 3RDPARTY_TCL_MAJOR_VERSION "${3RDPARTY_TCL_LIBRARY_VERSION}") + string (REGEX REPLACE "^.*[0-9][^0-9]*([0-9]).*$" "\\1" 3RDPARTY_TCL_MINOR_VERSION "${3RDPARTY_TCL_LIBRARY_VERSION}") + set (3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT "${3RDPARTY_TCL_MAJOR_VERSION}.${3RDPARTY_TCL_MINOR_VERSION}") +endif() + +if (WIN32) + if (NOT 3RDPARTY_TCL_DLL) + set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll .a) + + set (DLL_FOLDER_FOR_SEARCH "") + if (3RDPARTY_TCL_DLL_DIR) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DLL_DIR}") + elseif (3RDPARTY_TCL_DIR) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DIR}/bin") + else() + get_filename_component (3RDPARTY_TCL_LIBRARY_DIR_PARENT "${3RDPARTY_TCL_LIBRARY_DIR}" PATH) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_LIBRARY_DIR_PARENT}/bin") + endif() + + set (3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "TCL shared library" FORCE) + find_library (3RDPARTY_TCL_DLL NAMES tcl${3RDPARTY_TCL_LIBRARY_VERSION} + PATHS "${DLL_FOLDER_FOR_SEARCH}" + NO_DEFAULT_PATH) + + if (NOT 3RDPARTY_TCL_DLL OR NOT EXISTS "${3RDPARTY_TCL_DLL}") + set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "TCL shared library" FORCE) + endif() + endif() + if (NOT 3RDPARTY_TCL_DLL_DIR AND 3RDPARTY_TCL_DLL) + get_filename_component (3RDPARTY_TCL_DLL_DIR "${3RDPARTY_TCL_DLL}" PATH) + set (3RDPARTY_TCL_DLL_DIR "${3RDPARTY_TCL_DLL_DIR}" CACHE FILEPATH "The directory containing TCL shared library" FORCE) + endif() +endif() + +# include found paths to common variables +if (3RDPARTY_TCL_INCLUDE_DIR AND EXISTS "${3RDPARTY_TCL_INCLUDE_DIR}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TCL_INCLUDE_DIR}") +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_INCLUDE_DIR) +endif() + +if (3RDPARTY_TCL_LIBRARY AND EXISTS "${3RDPARTY_TCL_LIBRARY}") + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_TCL_LIBRARY_DIR}") +else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_TCL_LIBRARY_DIR) +endif() + +if (WIN32) + if (3RDPARTY_TCL_DLL OR EXISTS "${3RDPARTY_TCL_DLL}") + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_TCL_DLL_DIR}") + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_TCL_DLL_DIR) + endif() +endif() + +# install tcl +if (INSTALL_TCL) + # include occt macros. compiler_bitness, os_wiht_bit, compiler + OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") + + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + + if (WIN32) + # tcl 8.6 requires zlib. install all dlls from tcl bin folder that may contain zlib also + + # collect and install all dlls from tcl dll dirs + file (GLOB TCL_DLLS "${3RDPARTY_TCL_DLL_DIR}/*.dll") + + if (SINGLE_GENERATOR) + install (FILES ${TCL_DLLS} DESTINATION "${INSTALL_DIR_BIN}") + else() + install (FILES ${TCL_DLLS} + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_BIN}") + install (FILES ${TCL_DLLS} + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_BIN}i") + install (FILES ${TCL_DLLS} + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_BIN}d") + endif() + else() + get_filename_component(3RDPARTY_TCL_LIBRARY_REALPATH ${3RDPARTY_TCL_LIBRARY} REALPATH) + + if (SINGLE_GENERATOR) + install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR_LIB}") + else() + install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_LIB}") + install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_LIB}i") + install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_LIB}d") + endif() + endif() + + if (TCL_TCLSH_VERSION) + # tcl is required to install in lib folder (without) + install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl8" DESTINATION "${INSTALL_DIR_LIB}") + install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR_LIB}") + else() + message (STATUS "\nWarning: tclX.X subdir won't be copied during the installation process.") + message (STATUS "Try seeking tcl within another folder by changing 3RDPARTY_TCL_DIR variable.") + endif() + + set (USED_3RDPARTY_TCL_DIR "") +else() + # the library directory for using by the executable + if (WIN32) + set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_DLL_DIR}) + else() + set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_LIBRARY_DIR}) + endif() +endif() + +mark_as_advanced (3RDPARTY_TCL_LIBRARY 3RDPARTY_TCL_DLL) + +if (TK_FOUND AND 3RDPARTY_TCL_DIR) + + get_filename_component (TK_WISH_ABSOLUTE "${TK_WISH}" ABSOLUTE) + get_filename_component (3RDPARTY_TCL_DIR_ABSOLUTE "${3RDPARTY_TCL_DIR}" ABSOLUTE) + + string (FIND "${TK_WISH_ABSOLUTE}" "${3RDPARTY_TCL_DIR_ABSOLUTE}" THE_SAME_FOLDER) + + if (${THE_SAME_FOLDER} EQUAL 0) + set (3RDPARTY_TCLTK_DIR "${3RDPARTY_TCL_DIR}") + message (STATUS "Info: TK is used from TCL folder: ${3RDPARTY_TCLTK_DIR}") + endif() +endif() + +# unset all redundant variables +#TCL +OCCT_CHECK_AND_UNSET (TCL_LIBRARY) +OCCT_CHECK_AND_UNSET (TCL_INCLUDE_PATH) +OCCT_CHECK_AND_UNSET (TCL_TCLSH) +#TK +OCCT_CHECK_AND_UNSET (TK_LIBRARY) +OCCT_CHECK_AND_UNSET (TK_INCLUDE_PATH) +OCCT_CHECK_AND_UNSET (TK_WISH) + diff --git a/adm/cmake/tk.cmake b/adm/cmake/tk.cmake index a30081270c..3e0b4d71c2 100644 --- a/adm/cmake/tk.cmake +++ b/adm/cmake/tk.cmake @@ -1,286 +1,286 @@ -# tk - -if (NOT DEFINED INSTALL_TK AND BUILD_SHARED_LIBS) - set (INSTALL_TK OFF CACHE BOOL "${INSTALL_TK_DESCR}") -endif() - -# tk directory -if (NOT DEFINED 3RDPARTY_TK_DIR) - set (3RDPARTY_TK_DIR "" CACHE PATH "The directory containing tk") -endif () - -if (NOT 3RDPARTY_TK_DIR AND 3RDPARTY_TCLTK_DIR) - set (3RDPARTY_TK_DIR "${3RDPARTY_TCLTK_DIR}" CACHE PATH "The directory containing tk" FORCE) -endif() - -# tk include directory -if (NOT DEFINED 3RDPARTY_TK_INCLUDE_DIR) - set (3RDPARTY_TK_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tk") -endif() - -if (BUILD_SHARED_LIBS) - # tk library file (with absolute path) - if (NOT DEFINED 3RDPARTY_TK_LIBRARY OR NOT 3RDPARTY_TK_LIBRARY_DIR) - set (3RDPARTY_TK_LIBRARY "" CACHE FILEPATH "tk library" FORCE) - endif() - - # tk library directory - if (NOT DEFINED 3RDPARTY_TK_LIBRARY_DIR) - set (3RDPARTY_TK_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tk library") - endif() - - # tk shared library (with absolute path) - if (WIN32) - if (NOT DEFINED 3RDPARTY_TK_DLL OR NOT 3RDPARTY_TK_DLL_DIR) - set (3RDPARTY_TK_DLL "" CACHE FILEPATH "tk shared library" FORCE) - endif() - endif() - - # tk shared library directory - if (WIN32 AND NOT DEFINED 3RDPARTY_TK_DLL_DIR) - set (3RDPARTY_TK_DLL_DIR "" CACHE FILEPATH "The directory containing tk shared library") - endif() -endif() - -# search for tk in user defined directory -if (NOT 3RDPARTY_TK_DIR AND 3RDPARTY_DIR) - FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tk TK_DIR_NAME) - if (TK_DIR_NAME) - set (3RDPARTY_TK_DIR "${3RDPARTY_DIR}/${TK_DIR_NAME}" CACHE PATH "The directory containing tk" FORCE) - endif() -endif() - -# define paths for default engine -if (3RDPARTY_TK_DIR AND EXISTS "${3RDPARTY_TK_DIR}") - set (TK_INCLUDE_PATH "${3RDPARTY_TK_DIR}/include") -endif() - -# check tk include dir, library dir and shared library dir -COMPLIANCE_PRODUCT_CONSISTENCY(TK) - -# use default (CMake) TCL search -find_package(TCL QUIET) - -# tk include dir -if (NOT 3RDPARTY_TK_INCLUDE_DIR) - if (TK_INCLUDE_PATH AND EXISTS "${TK_INCLUDE_PATH}") - set (3RDPARTY_TK_INCLUDE_DIR "${TK_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of TK" FORCE) - endif() -endif() - -if (BUILD_SHARED_LIBS) - # tk dir and library - if (NOT 3RDPARTY_TK_LIBRARY) - if (TK_LIBRARY AND EXISTS "${TK_LIBRARY}") - set (3RDPARTY_TK_LIBRARY "${TK_LIBRARY}" CACHE FILEPATH "TK library" FORCE) - - if (NOT 3RDPARTY_TK_LIBRARY_DIR) - get_filename_component (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY}" PATH) - set (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TK library" FORCE) - endif() - endif() - endif() - - - if (WIN32) - if (NOT 3RDPARTY_TK_DLL) - set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll" ".a") - - set (DLL_FOLDER_FOR_SEARCH "") - if (3RDPARTY_TK_DLL_DIR) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_DLL_DIR}") - elseif (3RDPARTY_TK_DIR) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_DIR}/bin") - elseif (3RDPARTY_TK_LIBRARY_DIR) - get_filename_component (3RDPARTY_TK_LIBRARY_DIR_PARENT "${3RDPARTY_TK_LIBRARY_DIR}" PATH) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_LIBRARY_DIR_PARENT}/bin") - endif() - - set (3RDPARTY_TK_DLL "3RDPARTY_TK_DLL-NOTFOUND" CACHE FILEPATH "TK shared library" FORCE) - find_library (3RDPARTY_TK_DLL NAMES ${CSF_TclTkLibs} - PATHS "${DLL_FOLDER_FOR_SEARCH}" - NO_DEFAULT_PATH) - endif() - endif() -endif() - -COMPLIANCE_PRODUCT_CONSISTENCY(TK) - -if (BUILD_SHARED_LIBS) - # tk dir and library - if (NOT 3RDPARTY_TK_LIBRARY) - set (3RDPARTY_TK_LIBRARY "3RDPARTY_TK_LIBRARY-NOTFOUND" CACHE FILEPATH "TK library" FORCE) - find_library (3RDPARTY_TK_LIBRARY NAMES ${CSF_TclTkLibs} - PATHS "${3RDPARTY_TK_LIBRARY_DIR}" - NO_DEFAULT_PATH) - - # search in another place if previous search doesn't find anything - find_library (3RDPARTY_TK_LIBRARY NAMES ${CSF_TclTkLibs} - PATHS "${3RDPARTY_TK_DIR}/lib" - NO_DEFAULT_PATH) - - - if (NOT 3RDPARTY_TK_LIBRARY OR NOT EXISTS "${3RDPARTY_TK_LIBRARY}") - set (3RDPARTY_TK_LIBRARY "" CACHE FILEPATH "TK library" FORCE) - endif() - - if (NOT 3RDPARTY_TK_LIBRARY_DIR AND 3RDPARTY_TK_LIBRARY) - get_filename_component (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY}" PATH) - set (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TK library" FORCE) - endif() - endif() - - set (3RDPARTY_TK_LIBRARY_VERSION "") - if (3RDPARTY_TK_LIBRARY AND EXISTS "${3RDPARTY_TK_LIBRARY}") - get_filename_component (TK_LIBRARY_NAME "${3RDPARTY_TK_LIBRARY}" NAME) - string(REGEX REPLACE "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY_NAME}") - - if (NOT "${TK_LIBRARY_VERSION}" STREQUAL "${TK_LIBRARY_NAME}") - set (3RDPARTY_TK_LIBRARY_VERSION "${TK_LIBRARY_VERSION}") - else() # if the version isn't found - seek other library with 8.6 or 8.5 version in the same dir - message (STATUS "Info: TK version isn't found") - endif() - endif() - - set (3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT "") - if (3RDPARTY_TK_LIBRARY_VERSION) - string (REGEX REPLACE "^.*([0-9])[^0-9]*[0-9].*$" "\\1" 3RDPARTY_TK_MAJOR_VERSION "${3RDPARTY_TK_LIBRARY_VERSION}") - string (REGEX REPLACE "^.*[0-9][^0-9]*([0-9]).*$" "\\1" 3RDPARTY_TK_MINOR_VERSION "${3RDPARTY_TK_LIBRARY_VERSION}") - set (3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT "${3RDPARTY_TK_MAJOR_VERSION}.${3RDPARTY_TK_MINOR_VERSION}") - endif() - - if (WIN32) - if (NOT 3RDPARTY_TK_DLL) - set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll" ".a") - - set (DLL_FOLDER_FOR_SEARCH "") - if (3RDPARTY_TK_DLL_DIR) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_DLL_DIR}") - elseif (3RDPARTY_TK_DIR) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_DIR}/bin") - else() - get_filename_component (3RDPARTY_TK_LIBRARY_DIR_PARENT "${3RDPARTY_TK_LIBRARY_DIR}" PATH) - set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_LIBRARY_DIR_PARENT}/bin") - endif() - - set (3RDPARTY_TK_DLL "3RDPARTY_TK_DLL-NOTFOUND" CACHE FILEPATH "TK shared library" FORCE) - find_library (3RDPARTY_TK_DLL NAMES tk${3RDPARTY_TK_LIBRARY_VERSION} - PATHS "${DLL_FOLDER_FOR_SEARCH}" - NO_DEFAULT_PATH) - - if (NOT 3RDPARTY_TK_DLL OR NOT EXISTS "${3RDPARTY_TK_DLL}") - set (3RDPARTY_TK_DLL "" CACHE FILEPATH "TK shared library" FORCE) - endif() - endif() - if (NOT 3RDPARTY_TK_DLL_DIR AND 3RDPARTY_TK_DLL) - get_filename_component (3RDPARTY_TK_DLL_DIR "${3RDPARTY_TK_DLL}" PATH) - set (3RDPARTY_TK_DLL_DIR "${3RDPARTY_TK_DLL_DIR}" CACHE FILEPATH "The directory containing TK shared library" FORCE) - endif() - endif() -endif() - -# include found paths to common variables -if (3RDPARTY_TK_INCLUDE_DIR AND EXISTS "${3RDPARTY_TK_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TK_INCLUDE_DIR}") -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TK_INCLUDE_DIR) -endif() - -if (BUILD_SHARED_LIBS) - if (3RDPARTY_TK_LIBRARY AND EXISTS "${3RDPARTY_TK_LIBRARY}") - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_TK_LIBRARY_DIR}") - else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_TK_LIBRARY_DIR) - endif() - - if (WIN32) - if (3RDPARTY_TK_DLL OR EXISTS "${3RDPARTY_TK_DLL}") - list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_TK_DLL_DIR}") - else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_TK_DLL_DIR) - endif() - endif() - - # install tk - if (INSTALL_TK) - # include occt macros. compiler_bitness, os_wiht_bit, compiler - OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") - - OCCT_MAKE_OS_WITH_BITNESS() - OCCT_MAKE_COMPILER_SHORT_NAME() - - if (WIN32) - # tk 8.6 requires zlib. install all dlls from tk bin folder that may contain zlib also - - # collect and install all dlls from tk dll dirs - file (GLOB TK_DLLS "${3RDPARTY_TK_DLL_DIR}/*.dll") - - if (SINGLE_GENERATOR) - install (FILES ${TK_DLLS} DESTINATION "${INSTALL_DIR_BIN}") - else() - install (FILES ${TK_DLLS} - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_BIN}") - install (FILES ${TK_DLLS} - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_BIN}i") - install (FILES ${TK_DLLS} - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_BIN}d") - endif() - else() - get_filename_component(3RDPARTY_TK_LIBRARY_REALPATH ${3RDPARTY_TK_LIBRARY} REALPATH) - - if (SINGLE_GENERATOR) - install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR_LIB}") - else() - install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_LIB}/") - install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_LIB}/i") - install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_LIB}d") - endif() - endif() - - if (TCL_TCLSH_VERSION) - # tk is required to install in lib folder (without) - install (DIRECTORY "${3RDPARTY_TK_LIBRARY_DIR}/tk${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR_LIB}") - else() - message (STATUS "\nWarning: tkX.X subdir won't be copied during the installation process.") - message (STATUS "Try seeking tk within another folder by changing 3RDPARTY_TK_DIR variable.") - endif() - - set (USED_3RDPARTY_TK_DIR "") - else() - # the library directory for using by the executable - if (WIN32) - set (USED_3RDPARTY_TK_DIR ${3RDPARTY_TK_DLL_DIR}) - else() - set (USED_3RDPARTY_TK_DIR ${3RDPARTY_TK_LIBRARY_DIR}) - endif() - endif() - - mark_as_advanced (3RDPARTY_TK_LIBRARY 3RDPARTY_TK_DLL) -endif() - -# unset all redundant variables -#TCL -OCCT_CHECK_AND_UNSET (TCL_LIBRARY) -OCCT_CHECK_AND_UNSET (TCL_INCLUDE_PATH) -OCCT_CHECK_AND_UNSET (TCL_TCLSH) -#TK -OCCT_CHECK_AND_UNSET (TK_LIBRARY) -OCCT_CHECK_AND_UNSET (TK_INCLUDE_PATH) -OCCT_CHECK_AND_UNSET (TK_WISH) - -if (NOT BUILD_SHARED_LIBS) - OCCT_CHECK_AND_UNSET (3RDPARTY_TK_LIBRARY) - OCCT_CHECK_AND_UNSET (3RDPARTY_TK_LIBRARY_DIR) - OCCT_CHECK_AND_UNSET (3RDPARTY_TK_DLL) - OCCT_CHECK_AND_UNSET (3RDPARTY_TK_DLL_DIR) - OCCT_CHECK_AND_UNSET (INSTALL_TK) -endif() +# tk + +if (NOT DEFINED INSTALL_TK AND BUILD_SHARED_LIBS) + set (INSTALL_TK OFF CACHE BOOL "${INSTALL_TK_DESCR}") +endif() + +# tk directory +if (NOT DEFINED 3RDPARTY_TK_DIR) + set (3RDPARTY_TK_DIR "" CACHE PATH "The directory containing tk") +endif () + +if (NOT 3RDPARTY_TK_DIR AND 3RDPARTY_TCLTK_DIR) + set (3RDPARTY_TK_DIR "${3RDPARTY_TCLTK_DIR}" CACHE PATH "The directory containing tk" FORCE) +endif() + +# tk include directory +if (NOT DEFINED 3RDPARTY_TK_INCLUDE_DIR) + set (3RDPARTY_TK_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tk") +endif() + +if (BUILD_SHARED_LIBS) + # tk library file (with absolute path) + if (NOT DEFINED 3RDPARTY_TK_LIBRARY OR NOT 3RDPARTY_TK_LIBRARY_DIR) + set (3RDPARTY_TK_LIBRARY "" CACHE FILEPATH "tk library" FORCE) + endif() + + # tk library directory + if (NOT DEFINED 3RDPARTY_TK_LIBRARY_DIR) + set (3RDPARTY_TK_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tk library") + endif() + + # tk shared library (with absolute path) + if (WIN32) + if (NOT DEFINED 3RDPARTY_TK_DLL OR NOT 3RDPARTY_TK_DLL_DIR) + set (3RDPARTY_TK_DLL "" CACHE FILEPATH "tk shared library" FORCE) + endif() + endif() + + # tk shared library directory + if (WIN32 AND NOT DEFINED 3RDPARTY_TK_DLL_DIR) + set (3RDPARTY_TK_DLL_DIR "" CACHE FILEPATH "The directory containing tk shared library") + endif() +endif() + +# search for tk in user defined directory +if (NOT 3RDPARTY_TK_DIR AND 3RDPARTY_DIR) + FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tk TK_DIR_NAME) + if (TK_DIR_NAME) + set (3RDPARTY_TK_DIR "${3RDPARTY_DIR}/${TK_DIR_NAME}" CACHE PATH "The directory containing tk" FORCE) + endif() +endif() + +# define paths for default engine +if (3RDPARTY_TK_DIR AND EXISTS "${3RDPARTY_TK_DIR}") + set (TK_INCLUDE_PATH "${3RDPARTY_TK_DIR}/include") +endif() + +# check tk include dir, library dir and shared library dir +COMPLIANCE_PRODUCT_CONSISTENCY(TK) + +# use default (CMake) TCL search +find_package(TCL QUIET) + +# tk include dir +if (NOT 3RDPARTY_TK_INCLUDE_DIR) + if (TK_INCLUDE_PATH AND EXISTS "${TK_INCLUDE_PATH}") + set (3RDPARTY_TK_INCLUDE_DIR "${TK_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of TK" FORCE) + endif() +endif() + +if (BUILD_SHARED_LIBS) + # tk dir and library + if (NOT 3RDPARTY_TK_LIBRARY) + if (TK_LIBRARY AND EXISTS "${TK_LIBRARY}") + set (3RDPARTY_TK_LIBRARY "${TK_LIBRARY}" CACHE FILEPATH "TK library" FORCE) + + if (NOT 3RDPARTY_TK_LIBRARY_DIR) + get_filename_component (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY}" PATH) + set (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TK library" FORCE) + endif() + endif() + endif() + + + if (WIN32) + if (NOT 3RDPARTY_TK_DLL) + set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll" ".a") + + set (DLL_FOLDER_FOR_SEARCH "") + if (3RDPARTY_TK_DLL_DIR) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_DLL_DIR}") + elseif (3RDPARTY_TK_DIR) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_DIR}/bin") + elseif (3RDPARTY_TK_LIBRARY_DIR) + get_filename_component (3RDPARTY_TK_LIBRARY_DIR_PARENT "${3RDPARTY_TK_LIBRARY_DIR}" PATH) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_LIBRARY_DIR_PARENT}/bin") + endif() + + set (3RDPARTY_TK_DLL "3RDPARTY_TK_DLL-NOTFOUND" CACHE FILEPATH "TK shared library" FORCE) + find_library (3RDPARTY_TK_DLL NAMES ${CSF_TclTkLibs} + PATHS "${DLL_FOLDER_FOR_SEARCH}" + NO_DEFAULT_PATH) + endif() + endif() +endif() + +COMPLIANCE_PRODUCT_CONSISTENCY(TK) + +if (BUILD_SHARED_LIBS) + # tk dir and library + if (NOT 3RDPARTY_TK_LIBRARY) + set (3RDPARTY_TK_LIBRARY "3RDPARTY_TK_LIBRARY-NOTFOUND" CACHE FILEPATH "TK library" FORCE) + find_library (3RDPARTY_TK_LIBRARY NAMES ${CSF_TclTkLibs} + PATHS "${3RDPARTY_TK_LIBRARY_DIR}" + NO_DEFAULT_PATH) + + # search in another place if previous search doesn't find anything + find_library (3RDPARTY_TK_LIBRARY NAMES ${CSF_TclTkLibs} + PATHS "${3RDPARTY_TK_DIR}/lib" + NO_DEFAULT_PATH) + + + if (NOT 3RDPARTY_TK_LIBRARY OR NOT EXISTS "${3RDPARTY_TK_LIBRARY}") + set (3RDPARTY_TK_LIBRARY "" CACHE FILEPATH "TK library" FORCE) + endif() + + if (NOT 3RDPARTY_TK_LIBRARY_DIR AND 3RDPARTY_TK_LIBRARY) + get_filename_component (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY}" PATH) + set (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TK library" FORCE) + endif() + endif() + + set (3RDPARTY_TK_LIBRARY_VERSION "") + if (3RDPARTY_TK_LIBRARY AND EXISTS "${3RDPARTY_TK_LIBRARY}") + get_filename_component (TK_LIBRARY_NAME "${3RDPARTY_TK_LIBRARY}" NAME) + string(REGEX REPLACE "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY_NAME}") + + if (NOT "${TK_LIBRARY_VERSION}" STREQUAL "${TK_LIBRARY_NAME}") + set (3RDPARTY_TK_LIBRARY_VERSION "${TK_LIBRARY_VERSION}") + else() # if the version isn't found - seek other library with 8.6 or 8.5 version in the same dir + message (STATUS "Info: TK version isn't found") + endif() + endif() + + set (3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT "") + if (3RDPARTY_TK_LIBRARY_VERSION) + string (REGEX REPLACE "^.*([0-9])[^0-9]*[0-9].*$" "\\1" 3RDPARTY_TK_MAJOR_VERSION "${3RDPARTY_TK_LIBRARY_VERSION}") + string (REGEX REPLACE "^.*[0-9][^0-9]*([0-9]).*$" "\\1" 3RDPARTY_TK_MINOR_VERSION "${3RDPARTY_TK_LIBRARY_VERSION}") + set (3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT "${3RDPARTY_TK_MAJOR_VERSION}.${3RDPARTY_TK_MINOR_VERSION}") + endif() + + if (WIN32) + if (NOT 3RDPARTY_TK_DLL) + set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll" ".a") + + set (DLL_FOLDER_FOR_SEARCH "") + if (3RDPARTY_TK_DLL_DIR) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_DLL_DIR}") + elseif (3RDPARTY_TK_DIR) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_DIR}/bin") + else() + get_filename_component (3RDPARTY_TK_LIBRARY_DIR_PARENT "${3RDPARTY_TK_LIBRARY_DIR}" PATH) + set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_LIBRARY_DIR_PARENT}/bin") + endif() + + set (3RDPARTY_TK_DLL "3RDPARTY_TK_DLL-NOTFOUND" CACHE FILEPATH "TK shared library" FORCE) + find_library (3RDPARTY_TK_DLL NAMES tk${3RDPARTY_TK_LIBRARY_VERSION} + PATHS "${DLL_FOLDER_FOR_SEARCH}" + NO_DEFAULT_PATH) + + if (NOT 3RDPARTY_TK_DLL OR NOT EXISTS "${3RDPARTY_TK_DLL}") + set (3RDPARTY_TK_DLL "" CACHE FILEPATH "TK shared library" FORCE) + endif() + endif() + if (NOT 3RDPARTY_TK_DLL_DIR AND 3RDPARTY_TK_DLL) + get_filename_component (3RDPARTY_TK_DLL_DIR "${3RDPARTY_TK_DLL}" PATH) + set (3RDPARTY_TK_DLL_DIR "${3RDPARTY_TK_DLL_DIR}" CACHE FILEPATH "The directory containing TK shared library" FORCE) + endif() + endif() +endif() + +# include found paths to common variables +if (3RDPARTY_TK_INCLUDE_DIR AND EXISTS "${3RDPARTY_TK_INCLUDE_DIR}") + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TK_INCLUDE_DIR}") +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TK_INCLUDE_DIR) +endif() + +if (BUILD_SHARED_LIBS) + if (3RDPARTY_TK_LIBRARY AND EXISTS "${3RDPARTY_TK_LIBRARY}") + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_TK_LIBRARY_DIR}") + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_TK_LIBRARY_DIR) + endif() + + if (WIN32) + if (3RDPARTY_TK_DLL OR EXISTS "${3RDPARTY_TK_DLL}") + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_TK_DLL_DIR}") + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_TK_DLL_DIR) + endif() + endif() + + # install tk + if (INSTALL_TK) + # include occt macros. compiler_bitness, os_wiht_bit, compiler + OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") + + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + + if (WIN32) + # tk 8.6 requires zlib. install all dlls from tk bin folder that may contain zlib also + + # collect and install all dlls from tk dll dirs + file (GLOB TK_DLLS "${3RDPARTY_TK_DLL_DIR}/*.dll") + + if (SINGLE_GENERATOR) + install (FILES ${TK_DLLS} DESTINATION "${INSTALL_DIR_BIN}") + else() + install (FILES ${TK_DLLS} + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_BIN}") + install (FILES ${TK_DLLS} + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_BIN}i") + install (FILES ${TK_DLLS} + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_BIN}d") + endif() + else() + get_filename_component(3RDPARTY_TK_LIBRARY_REALPATH ${3RDPARTY_TK_LIBRARY} REALPATH) + + if (SINGLE_GENERATOR) + install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR_LIB}") + else() + install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_LIB}/") + install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_LIB}/i") + install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_LIB}d") + endif() + endif() + + if (TCL_TCLSH_VERSION) + # tk is required to install in lib folder (without) + install (DIRECTORY "${3RDPARTY_TK_LIBRARY_DIR}/tk${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR_LIB}") + else() + message (STATUS "\nWarning: tkX.X subdir won't be copied during the installation process.") + message (STATUS "Try seeking tk within another folder by changing 3RDPARTY_TK_DIR variable.") + endif() + + set (USED_3RDPARTY_TK_DIR "") + else() + # the library directory for using by the executable + if (WIN32) + set (USED_3RDPARTY_TK_DIR ${3RDPARTY_TK_DLL_DIR}) + else() + set (USED_3RDPARTY_TK_DIR ${3RDPARTY_TK_LIBRARY_DIR}) + endif() + endif() + + mark_as_advanced (3RDPARTY_TK_LIBRARY 3RDPARTY_TK_DLL) +endif() + +# unset all redundant variables +#TCL +OCCT_CHECK_AND_UNSET (TCL_LIBRARY) +OCCT_CHECK_AND_UNSET (TCL_INCLUDE_PATH) +OCCT_CHECK_AND_UNSET (TCL_TCLSH) +#TK +OCCT_CHECK_AND_UNSET (TK_LIBRARY) +OCCT_CHECK_AND_UNSET (TK_INCLUDE_PATH) +OCCT_CHECK_AND_UNSET (TK_WISH) + +if (NOT BUILD_SHARED_LIBS) + OCCT_CHECK_AND_UNSET (3RDPARTY_TK_LIBRARY) + OCCT_CHECK_AND_UNSET (3RDPARTY_TK_LIBRARY_DIR) + OCCT_CHECK_AND_UNSET (3RDPARTY_TK_DLL) + OCCT_CHECK_AND_UNSET (3RDPARTY_TK_DLL_DIR) + OCCT_CHECK_AND_UNSET (INSTALL_TK) +endif() diff --git a/adm/cmake/vardescr.cmake b/adm/cmake/vardescr.cmake index 8212a0308b..a907c25477 100644 --- a/adm/cmake/vardescr.cmake +++ b/adm/cmake/vardescr.cmake @@ -1,215 +1,215 @@ -# variable description - -# -set (BUILD_PATCH_DESCR -"Points to the directory recognized as a 'patch' for OCCT. If specified, -the files from this directory take precedence over the corresponding native -OCCT sources. This way you are able to introduce patches to Open CASCADE -Technology not affecting the original source distribution") - - -set (BUILD_LIBRARY_TYPE_DESCR -"Specifies the type of library to be created. 'Shared' libraries -are linked dynamically and loaded at runtime. 'Static' libraries -are archives of object files for use when linking other targets") - -set (BUILD_YACCLEX_DESCR -"Enables Flex/Bison lexical analyzers. OCCT source files relating to STEP reader and -ExprIntrp functionality are generated automatically with Flex/Bison. Checking this options -leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files") - -set (BUILD_RESOURCES_DESCR "Enables regeneration of OCCT resource files") - -set (BUILD_WITH_DEBUG_DESCR -"Enables extended messages of many OCCT algorithms, usually printed to cout. -These include messages on internal errors and special cases encountered, timing etc. -Applies only for Debug configuration.") - -set (BUILD_SHARED_LIBRARY_NAME_POSTFIX_DESCR -"Append the postfix to names of output libraries") - -set (BUILD_SOVERSION_NUMBERS_DESCR -"Version numbers to put into SONAME: 0 - for empty, 1 - for major, 2 - for major.minor, 3 - for major.minor.maintenance") - -set (BUILD_RELEASE_DISABLE_EXCEPTIONS_DESCR -"Disables exceptions like Standard_OutOfRange in Release builds. -Defines No_Exception macros for Release builds when enabled (default). -These exceptions are always enabled in Debug builds, but disable in Release for better performance") - -set (BUILD_ENABLE_FPE_SIGNAL_HANDLER_DESCR -"Enable/Disable the floating point exceptions (FPE) during DRAW execution only. -Corresponding environment variable (CSF_FPE) can be changed manually -in custom.bat/sh scripts without regeneration by CMake.") - -set (BUILD_FORCE_RelWithDebInfo_DESCR -"Generate PDB files within normal Release build.") - -set (BUILD_USE_PCH_DESCR -"Use precompiled headers to accelerate the build. -Precompiled headers are generated automatically by Cotire tool.") - -# install variables -set (INSTALL_DIR_DESCR -"The place where built OCCT libraries, headers, test cases (INSTALL_TEST_CASES variable), -samples (INSTALL_SAMPLES_DESCR variable) and certain 3rdparties (INSTALL_TBB and -other similar variables) will be placed during the installation process (building INSTALL project)") - -set (INSTALL_DIR_WITH_VERSION_DESCR -"Use OCCT version number as suffix for names of directories") - -set (INSTALL_DIR_LAYOUT_DESCR -"Defines structure of OCCT files (binaries, resources, headers etc.) for the install directory. -Two variants are predefined: for Windows (standard OCCT layout) and for Unix operating systems (standard Linux layout). -If needed, layout can be customized with INSTALL_DIR_* variables.") - -set (INSTALL_DIR_BIN_DESCR -"Subdirectory of INSTALL_DIR where binaries will be installed") -set (INSTALL_DIR_INCLUDE_DESCR -"Subdirectory of INSTALL_DIR where OCCT headers will be installed") -set (INSTALL_DIR_DATA_DESCR -"Subdirectory of INSTALL_DIR where sample data files will be installed") -set (INSTALL_DIR_DOC_DESCR -"Subdirectory of INSTALL_DIR where documentation will be installed") -set (INSTALL_DIR_LIB_DESCR -"Subdirectory of INSTALL_DIR where libraries (.so on Linux, .lib on Windows) will be installed") -set (INSTALL_DIR_RESOURCE_DESCR -"Subdirectory of INSTALL_DIR where OCCT resource files will be installed") -set (INSTALL_DIR_SAMPLES_DESCR -"Subdirectory of INSTALL_DIR where samples will be installed") -set (INSTALL_DIR_TESTS_DESCR -"Subdirectory of INSTALL_DIR where test scripts will be installed") -set (INSTALL_DIR_SCRIPT_DESCR -"Subdirectory of INSTALL_DIR where scripts will be installed") -set (INSTALL_DIR_CMAKE_DESCR -"Subdirectory of INSTALL_DIR where CMake configuration files will be installed. -Must be three levels below INSTALL_DIR") - -macro (INSTALL_MESSAGE INSTALL_TARGET_VARIABLE INSTALL_TARGET_STRING) -set (${INSTALL_TARGET_VARIABLE}_DESCR -"Indicates whether ${INSTALL_TARGET_STRING} should be installed (building INSTALL -project) into the installation directory (INSTALL_DIR variable)") -endmacro() - -INSTALL_MESSAGE (INSTALL_SAMPLES "OCCT samples") -INSTALL_MESSAGE (INSTALL_TEST_CASES "non-regression OCCT test scripts") -INSTALL_MESSAGE (INSTALL_DOC_Overview "OCCT overview documentation (HTML format)") -INSTALL_MESSAGE (INSTALL_FFMPEG "FFmpeg binaries") -INSTALL_MESSAGE (INSTALL_FREEIMAGE "FreeImage binaries") -INSTALL_MESSAGE (INSTALL_OPENVR "OpenVR binaries") -INSTALL_MESSAGE (INSTALL_EIGEN "EIGEN header files") -INSTALL_MESSAGE (INSTALL_EGL "EGL binaries") -INSTALL_MESSAGE (INSTALL_GLES2 "OpenGL ES 2.0 binaries") -INSTALL_MESSAGE (INSTALL_FREETYPE "FreeType binaries") -INSTALL_MESSAGE (INSTALL_TBB "TBB binaries") -INSTALL_MESSAGE (INSTALL_RAPIDJSON "RapidJSON header files") -INSTALL_MESSAGE (INSTALL_TCL "TCL binaries") -INSTALL_MESSAGE (INSTALL_TK "TK binaries") -INSTALL_MESSAGE (INSTALL_VTK "VTK binaries ") - -# build variables -macro (BUILD_MODULE_MESSAGE BUILD_MODULE_TARGET_VARIABLE BUILD_MODULE_TARGET_STRING) -set (${BUILD_MODULE_TARGET_VARIABLE}_DESCR -"Indicates whether ${BUILD_MODULE_TARGET_STRING} module should be built or not. -It should be noted that some toolkits of the module can be built even if this module -is not checked (this happens if some other modules depend on these toolkits)") -endmacro() - -BUILD_MODULE_MESSAGE (BUILD_MODULE_ApplicationFramework "ApplicationFramework") -BUILD_MODULE_MESSAGE (BUILD_MODULE_DataExchange "DataExchange") -BUILD_MODULE_MESSAGE (BUILD_MODULE_Draw "Draw") -BUILD_MODULE_MESSAGE (BUILD_MODULE_FoundationClasses "FoundationClasses") -BUILD_MODULE_MESSAGE (BUILD_MODULE_ModelingAlgorithms "ModelingAlgorithms") -BUILD_MODULE_MESSAGE (BUILD_MODULE_ModelingData "ModelingData") -BUILD_MODULE_MESSAGE (BUILD_MODULE_Visualization "Visualization") - - -set (BUILD_ADDITIONAL_TOOLKITS_DESCR -"Semicolon-separated individual toolkits to include into build process. If you -want to build some particular libraries (toolkits) only, then you may uncheck -all modules in the corresponding BUILD_MODUE_* options and provide the list of -necessary libraries here. Of course, all dependencies will be resolved automatically") - -set (BUILD_SAMPLES_MFC_DESCR -"Indicates whether OCCT MFC samples should be built together with OCCT. -These samples show some possibilities of using OCCT and they can be executed -with script samples.bat from the installation directory (INSTALL_DIR)") - -set (BUILD_SAMPLES_QT_DESCR -"Indicates whether OCCT Qt samples should be built together with OCCT. -These samples show some possibilities of using OCCT and they can be executed -with script samples.bat from the installation directory (INSTALL_DIR)") - -set (BUILD_Inspector_DESCR -"Indicates whether OCCT inspector should be built together with OCCT. -This inspector provides functionality to interactively inspect low-level content -of the OCAF data model, OCCT viewer, etc. have been introduced in OCCT. -It can be executed with script inspector.bat from the installation directory (INSTALL_DIR) or -using 'tinspector' command in DRAW interpretator") - -set (BUILD_MODULE_UwpSample_DESCR -"Indicates whether OCCT UWP sample should be built together with OCCT.") - -set (BUILD_DOC_Overview_DESCR -"Indicates whether OCCT overview documentation project (Markdown format) should be -created together with OCCT. It is not built together with OCCT. Checking this options -leads to automatic search of Doxygen binaries. Building of it will be call Doxygen command -to generate the documentation in HTML format. The documentation will be available in the -installation directory (overview.bat script) if INSTALL_DOC_Overview variable is checked") - -set (3RDPARTY_DIR_DESCR -"The root directory where all required third-party products will be searched. If a -third-party product have been found - corresponding CMake variables will be specified -(VTK: 3RDPARTY_VTK_DIR, 3RDPARTY_VTK_INCLUDE_DIR, 3RDPARTY_VTK_LIBRARY_DIR)") - -set (USE_TK_DESCR -"Indicates whether Tk product should be used by Draw Harness for user interface") - -set (USE_FREETYPE_DESCR -"Indicates whether FreeType product should be used in OCCT for text rendering using external font files") - -set (USE_FFMPEG_DESCR -"Indicates whether FFmpeg framework is used or not. FFmpeg stands for -multimedia data handling, open-source software libraries used for video encoding and decoding.") - -set (USE_FREEIMAGE_DESCR -"Indicates whether FreeImage product should be used in OCCT visualization -module for support of popular graphics image formats (PNG, BMP etc)") - -set (USE_OPENVR_DESCR -"Indicates whether OpenVR should be used in OCCT visualization module for VR support") - -set (USE_RAPIDJSON_DESCR -"Indicates whether RapidJSON product should be used in OCCT DataExchange -module for support of JSON-based formats like glTF") - -set (USE_DRACO_DESCR -"Indicates whether Draco mesh decoding library should be used by glTF reader") - -set (USE_EGL_DESCR -"Indicates whether EGL should be used in OCCT visualization -module instead of conventional OpenGL context creation APIs") - -set (USE_OPENGL_DESCR -"Indicates whether OpenGL desktop should be used in OCCT visualization module") -set (USE_GLES2_DESCR -"Indicates whether OpenGL ES 2.0 should be used in OCCT visualization module") - -set (USE_TBB_DESCR -"Indicates whether TBB is used or not. TBB stands for Threading Building Blocks, -the technology of Intel Corp, which comes with different mechanisms and patterns for -injecting parallelism into your application. OCCT remains parallel even without TBB product") - -set (USE_VTK_DESCR -"Indicates whether VTK is used or not. VTK stands for Visualization -ToolKit, the technology of Kitware Inc intended for general-purpose scientific -visualization. OCCT comes with a bridge between CAD data representation and -VTK by means of its dedicated VIS component (VTK Integration Services).") - -set (USE_XLIB_DESCR "Indicates whether X11 is used or not") - -set (USE_D3D_DESCR "Indicates whether optional Direct3D wrapper in OCCT visualization module should be build or not") - -macro (BUILD_MODULE MODULE_NAME) - set (ENABLE_MODULE TRUE) - set (BUILD_MODULE_${MODULE_NAME} ${ENABLE_MODULE} CACHE BOOL "${BUILD_MODULE_${MODULE_NAME}_DESCR}") -endmacro() +# variable description + +# +set (BUILD_PATCH_DESCR +"Points to the directory recognized as a 'patch' for OCCT. If specified, +the files from this directory take precedence over the corresponding native +OCCT sources. This way you are able to introduce patches to Open CASCADE +Technology not affecting the original source distribution") + + +set (BUILD_LIBRARY_TYPE_DESCR +"Specifies the type of library to be created. 'Shared' libraries +are linked dynamically and loaded at runtime. 'Static' libraries +are archives of object files for use when linking other targets") + +set (BUILD_YACCLEX_DESCR +"Enables Flex/Bison lexical analyzers. OCCT source files relating to STEP reader and +ExprIntrp functionality are generated automatically with Flex/Bison. Checking this options +leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files") + +set (BUILD_RESOURCES_DESCR "Enables regeneration of OCCT resource files") + +set (BUILD_WITH_DEBUG_DESCR +"Enables extended messages of many OCCT algorithms, usually printed to cout. +These include messages on internal errors and special cases encountered, timing etc. +Applies only for Debug configuration.") + +set (BUILD_SHARED_LIBRARY_NAME_POSTFIX_DESCR +"Append the postfix to names of output libraries") + +set (BUILD_SOVERSION_NUMBERS_DESCR +"Version numbers to put into SONAME: 0 - for empty, 1 - for major, 2 - for major.minor, 3 - for major.minor.maintenance") + +set (BUILD_RELEASE_DISABLE_EXCEPTIONS_DESCR +"Disables exceptions like Standard_OutOfRange in Release builds. +Defines No_Exception macros for Release builds when enabled (default). +These exceptions are always enabled in Debug builds, but disable in Release for better performance") + +set (BUILD_ENABLE_FPE_SIGNAL_HANDLER_DESCR +"Enable/Disable the floating point exceptions (FPE) during DRAW execution only. +Corresponding environment variable (CSF_FPE) can be changed manually +in custom.bat/sh scripts without regeneration by CMake.") + +set (BUILD_FORCE_RelWithDebInfo_DESCR +"Generate PDB files within normal Release build.") + +set (BUILD_USE_PCH_DESCR +"Use precompiled headers to accelerate the build. +Precompiled headers are generated automatically by Cotire tool.") + +# install variables +set (INSTALL_DIR_DESCR +"The place where built OCCT libraries, headers, test cases (INSTALL_TEST_CASES variable), +samples (INSTALL_SAMPLES_DESCR variable) and certain 3rdparties (INSTALL_TBB and +other similar variables) will be placed during the installation process (building INSTALL project)") + +set (INSTALL_DIR_WITH_VERSION_DESCR +"Use OCCT version number as suffix for names of directories") + +set (INSTALL_DIR_LAYOUT_DESCR +"Defines structure of OCCT files (binaries, resources, headers etc.) for the install directory. +Two variants are predefined: for Windows (standard OCCT layout) and for Unix operating systems (standard Linux layout). +If needed, layout can be customized with INSTALL_DIR_* variables.") + +set (INSTALL_DIR_BIN_DESCR +"Subdirectory of INSTALL_DIR where binaries will be installed") +set (INSTALL_DIR_INCLUDE_DESCR +"Subdirectory of INSTALL_DIR where OCCT headers will be installed") +set (INSTALL_DIR_DATA_DESCR +"Subdirectory of INSTALL_DIR where sample data files will be installed") +set (INSTALL_DIR_DOC_DESCR +"Subdirectory of INSTALL_DIR where documentation will be installed") +set (INSTALL_DIR_LIB_DESCR +"Subdirectory of INSTALL_DIR where libraries (.so on Linux, .lib on Windows) will be installed") +set (INSTALL_DIR_RESOURCE_DESCR +"Subdirectory of INSTALL_DIR where OCCT resource files will be installed") +set (INSTALL_DIR_SAMPLES_DESCR +"Subdirectory of INSTALL_DIR where samples will be installed") +set (INSTALL_DIR_TESTS_DESCR +"Subdirectory of INSTALL_DIR where test scripts will be installed") +set (INSTALL_DIR_SCRIPT_DESCR +"Subdirectory of INSTALL_DIR where scripts will be installed") +set (INSTALL_DIR_CMAKE_DESCR +"Subdirectory of INSTALL_DIR where CMake configuration files will be installed. +Must be three levels below INSTALL_DIR") + +macro (INSTALL_MESSAGE INSTALL_TARGET_VARIABLE INSTALL_TARGET_STRING) +set (${INSTALL_TARGET_VARIABLE}_DESCR +"Indicates whether ${INSTALL_TARGET_STRING} should be installed (building INSTALL +project) into the installation directory (INSTALL_DIR variable)") +endmacro() + +INSTALL_MESSAGE (INSTALL_SAMPLES "OCCT samples") +INSTALL_MESSAGE (INSTALL_TEST_CASES "non-regression OCCT test scripts") +INSTALL_MESSAGE (INSTALL_DOC_Overview "OCCT overview documentation (HTML format)") +INSTALL_MESSAGE (INSTALL_FFMPEG "FFmpeg binaries") +INSTALL_MESSAGE (INSTALL_FREEIMAGE "FreeImage binaries") +INSTALL_MESSAGE (INSTALL_OPENVR "OpenVR binaries") +INSTALL_MESSAGE (INSTALL_EIGEN "EIGEN header files") +INSTALL_MESSAGE (INSTALL_EGL "EGL binaries") +INSTALL_MESSAGE (INSTALL_GLES2 "OpenGL ES 2.0 binaries") +INSTALL_MESSAGE (INSTALL_FREETYPE "FreeType binaries") +INSTALL_MESSAGE (INSTALL_TBB "TBB binaries") +INSTALL_MESSAGE (INSTALL_RAPIDJSON "RapidJSON header files") +INSTALL_MESSAGE (INSTALL_TCL "TCL binaries") +INSTALL_MESSAGE (INSTALL_TK "TK binaries") +INSTALL_MESSAGE (INSTALL_VTK "VTK binaries ") + +# build variables +macro (BUILD_MODULE_MESSAGE BUILD_MODULE_TARGET_VARIABLE BUILD_MODULE_TARGET_STRING) +set (${BUILD_MODULE_TARGET_VARIABLE}_DESCR +"Indicates whether ${BUILD_MODULE_TARGET_STRING} module should be built or not. +It should be noted that some toolkits of the module can be built even if this module +is not checked (this happens if some other modules depend on these toolkits)") +endmacro() + +BUILD_MODULE_MESSAGE (BUILD_MODULE_ApplicationFramework "ApplicationFramework") +BUILD_MODULE_MESSAGE (BUILD_MODULE_DataExchange "DataExchange") +BUILD_MODULE_MESSAGE (BUILD_MODULE_Draw "Draw") +BUILD_MODULE_MESSAGE (BUILD_MODULE_FoundationClasses "FoundationClasses") +BUILD_MODULE_MESSAGE (BUILD_MODULE_ModelingAlgorithms "ModelingAlgorithms") +BUILD_MODULE_MESSAGE (BUILD_MODULE_ModelingData "ModelingData") +BUILD_MODULE_MESSAGE (BUILD_MODULE_Visualization "Visualization") + + +set (BUILD_ADDITIONAL_TOOLKITS_DESCR +"Semicolon-separated individual toolkits to include into build process. If you +want to build some particular libraries (toolkits) only, then you may uncheck +all modules in the corresponding BUILD_MODUE_* options and provide the list of +necessary libraries here. Of course, all dependencies will be resolved automatically") + +set (BUILD_SAMPLES_MFC_DESCR +"Indicates whether OCCT MFC samples should be built together with OCCT. +These samples show some possibilities of using OCCT and they can be executed +with script samples.bat from the installation directory (INSTALL_DIR)") + +set (BUILD_SAMPLES_QT_DESCR +"Indicates whether OCCT Qt samples should be built together with OCCT. +These samples show some possibilities of using OCCT and they can be executed +with script samples.bat from the installation directory (INSTALL_DIR)") + +set (BUILD_Inspector_DESCR +"Indicates whether OCCT inspector should be built together with OCCT. +This inspector provides functionality to interactively inspect low-level content +of the OCAF data model, OCCT viewer, etc. have been introduced in OCCT. +It can be executed with script inspector.bat from the installation directory (INSTALL_DIR) or +using 'tinspector' command in DRAW interpretator") + +set (BUILD_MODULE_UwpSample_DESCR +"Indicates whether OCCT UWP sample should be built together with OCCT.") + +set (BUILD_DOC_Overview_DESCR +"Indicates whether OCCT overview documentation project (Markdown format) should be +created together with OCCT. It is not built together with OCCT. Checking this options +leads to automatic search of Doxygen binaries. Building of it will be call Doxygen command +to generate the documentation in HTML format. The documentation will be available in the +installation directory (overview.bat script) if INSTALL_DOC_Overview variable is checked") + +set (3RDPARTY_DIR_DESCR +"The root directory where all required third-party products will be searched. If a +third-party product have been found - corresponding CMake variables will be specified +(VTK: 3RDPARTY_VTK_DIR, 3RDPARTY_VTK_INCLUDE_DIR, 3RDPARTY_VTK_LIBRARY_DIR)") + +set (USE_TK_DESCR +"Indicates whether Tk product should be used by Draw Harness for user interface") + +set (USE_FREETYPE_DESCR +"Indicates whether FreeType product should be used in OCCT for text rendering using external font files") + +set (USE_FFMPEG_DESCR +"Indicates whether FFmpeg framework is used or not. FFmpeg stands for +multimedia data handling, open-source software libraries used for video encoding and decoding.") + +set (USE_FREEIMAGE_DESCR +"Indicates whether FreeImage product should be used in OCCT visualization +module for support of popular graphics image formats (PNG, BMP etc)") + +set (USE_OPENVR_DESCR +"Indicates whether OpenVR should be used in OCCT visualization module for VR support") + +set (USE_RAPIDJSON_DESCR +"Indicates whether RapidJSON product should be used in OCCT DataExchange +module for support of JSON-based formats like glTF") + +set (USE_DRACO_DESCR +"Indicates whether Draco mesh decoding library should be used by glTF reader") + +set (USE_EGL_DESCR +"Indicates whether EGL should be used in OCCT visualization +module instead of conventional OpenGL context creation APIs") + +set (USE_OPENGL_DESCR +"Indicates whether OpenGL desktop should be used in OCCT visualization module") +set (USE_GLES2_DESCR +"Indicates whether OpenGL ES 2.0 should be used in OCCT visualization module") + +set (USE_TBB_DESCR +"Indicates whether TBB is used or not. TBB stands for Threading Building Blocks, +the technology of Intel Corp, which comes with different mechanisms and patterns for +injecting parallelism into your application. OCCT remains parallel even without TBB product") + +set (USE_VTK_DESCR +"Indicates whether VTK is used or not. VTK stands for Visualization +ToolKit, the technology of Kitware Inc intended for general-purpose scientific +visualization. OCCT comes with a bridge between CAD data representation and +VTK by means of its dedicated VIS component (VTK Integration Services).") + +set (USE_XLIB_DESCR "Indicates whether X11 is used or not") + +set (USE_D3D_DESCR "Indicates whether optional Direct3D wrapper in OCCT visualization module should be build or not") + +macro (BUILD_MODULE MODULE_NAME) + set (ENABLE_MODULE TRUE) + set (BUILD_MODULE_${MODULE_NAME} ${ENABLE_MODULE} CACHE BOOL "${BUILD_MODULE_${MODULE_NAME}_DESCR}") +endmacro() diff --git a/adm/cmake/vtk.cmake b/adm/cmake/vtk.cmake index a81cdf9bb2..a6109e4089 100644 --- a/adm/cmake/vtk.cmake +++ b/adm/cmake/vtk.cmake @@ -1,307 +1,307 @@ -# vtk - -if (NOT DEFINED INSTALL_VTK) - set (INSTALL_VTK OFF CACHE BOOL "${INSTALL_VTK_DESCR}") -endif() - -# vtk directory -if (NOT DEFINED 3RDPARTY_VTK_DIR) - set (3RDPARTY_VTK_DIR "" CACHE PATH "The directory containing VTK") -endif() - -# include occt macros. compiler_bitness, os_wiht_bit, compiler -OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") - -# specify VTK folder in connectin with 3RDPARTY_DIR -if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - #CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_DIR 3RDPARTY_VTK_DIR PATH "The directory containing VTK") - - if (NOT 3RDPARTY_VTK_DIR OR NOT EXISTS "${3RDPARTY_VTK_DIR}") - FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" VTK VTK_DIR_NAME) - if (VTK_DIR_NAME) - set (3RDPARTY_VTK_DIR "${3RDPARTY_DIR}/${VTK_DIR_NAME}" CACHE PATH "The directory containing VTK" FORCE) - endif() - endif() -else() - #set (3RDPARTY_VTK_DIR "" CACHE PATH "The directory containing VTK" FORCE) -endif() - -# vtk include directory -if (NOT DEFINED 3RDPARTY_VTK_INCLUDE_DIR) - set (3RDPARTY_VTK_INCLUDE_DIR "" CACHE PATH "The directory containing headers of VTK") -endif() - -#if (BUILD_SHARED_LIBS) - # vtk library directory - if (NOT DEFINED 3RDPARTY_VTK_LIBRARY_DIR) - set (3RDPARTY_VTK_LIBRARY_DIR "" CACHE PATH "The directory containing VTK libraries") - endif() - - # vtk dll directory - if (WIN32 AND NOT DEFINED 3RDPARTY_VTK_DLL_DIR) - set (3RDPARTY_VTK_DLL_DIR "" CACHE PATH "The directory containing VTK shared libraries") - endif() -#endif() - -# check 3RDPARTY_VTK_ paths for consistency with specified 3RDPARTY_VTK_DIR -if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}") - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_VTK_DIR 3RDPARTY_VTK_INCLUDE_DIR PATH "The directory containing headers of VTK") - if (BUILD_SHARED_LIBS) - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_VTK_DIR 3RDPARTY_VTK_LIBRARY_DIR PATH "The directory containing VTK libraries") - - if (WIN32) - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_VTK_DIR 3RDPARTY_VTK_DLL_DIR PATH "The directory containing VTK shared library") - endif() - endif() -endif() - -if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}") - set (CACHED_VTK_DIR $ENV{VTK_DIR}) - set (ENV{VTK_DIR} "${3RDPARTY_VTK_DIR}") -endif() - -find_package(VTK QUIET) - -if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}") - set (ENV{VTK_DIR} ${CACHED_VTK_DIR}) -endif() - -unset (IS_VTK_9XX) -if (VTK_FOUND) - message ("VTK version (${VTK_VERSION})") - if(VTK_MAJOR_VERSION EQUAL 8 AND VTK_MINOR_VERSION GREATER 9 OR VTK_MAJOR_VERSION GREATER 8) - set (IS_VTK_9XX 1) - else() - # add compiler flags, preprocessor definitions, include and link dirs - include (${VTK_USE_FILE}) - endif() - - if (VTK_LIBRARIES) - - set (3RDPARTY_VTK_INCLUDE_DIRS) - -# if (BUILD_SHARED_LIBS) - set (3RDPARTY_VTK_LIBRARY_DIRS) - set (3RDPARTY_VTK_DLL_DIRS) -# endif() - - foreach (VTK_LIBRARY ${VTK_LIBRARIES}) - if (IS_VTK_9XX) - string (REGEX MATCH "^VTK::" IS_VTK_LIBRARY ${VTK_LIBRARY}) - else() - string (REGEX MATCH "^vtk" IS_VTK_LIBRARY ${VTK_LIBRARY}) - endif() - if (NOT IS_VTK_LIBRARY OR NOT TARGET ${VTK_LIBRARY}) - continue() - endif() - - # get paths from corresponding variables - if (${VTK_LIBRARY}_INCLUDE_DIRS AND EXISTS "${${VTK_LIBRARY}_INCLUDE_DIRS}") - list (APPEND 3RDPARTY_VTK_INCLUDE_DIRS "${${VTK_LIBRARY}_INCLUDE_DIRS}") - endif() - - if (${VTK_LIBRARY}_LIBRARY_DIRS AND EXISTS "${${VTK_LIBRARY}_LIBRARY_DIRS}") - list (APPEND 3RDPARTY_VTK_LIBRARY_DIRS "${${VTK_LIBRARY}_LIBRARY_DIRS}") - endif() - - if (${VTK_LIBRARY}_RUNTIME_LIBRARY_DIRS AND EXISTS "${${VTK_LIBRARY}_RUNTIME_LIBRARY_DIRS}") - list (APPEND 3RDPARTY_VTK_DLL_DIRS "${${VTK_LIBRARY}_RUNTIME_LIBRARY_DIRS}") - if (NOT WIN32) - list (APPEND 3RDPARTY_VTK_LIBRARY_DIRS "${${VTK_LIBRARY}_RUNTIME_LIBRARY_DIRS}") - endif() - endif() - - # get paths from corresponding properties - get_target_property (TARGET_VTK_IMPORT_CONFS ${VTK_LIBRARY} IMPORTED_CONFIGURATIONS) - if (TARGET_VTK_IMPORT_CONFS) - list (GET TARGET_VTK_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF) - - # todo: choose configuration in connection with the build type - #if (CMAKE_BUILD_TYPE) - # foreach (IMPORT_CONF ${TARGET_VTK_IMPORT_CONFS}) - # endforeach() - #endif() - - # Work-around against link failure in case if VTK contains dependency - # on DirectX: its run-time is always present on Windows, but SDK can - # be absent on current workstation, while not actually needed for - # OCCT linking. - # VTK 6.1 for VC 10 - get_target_property (TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES ${VTK_LIBRARY} IMPORTED_LINK_INTERFACE_LIBRARIES_${CHOSEN_IMPORT_CONF}) - if(TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES) - string (REGEX MATCH "[^;]*d3d[0-9]+[.]lib" HARDCODED_D3D9_LIB "${TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES}") - if (HARDCODED_D3D9_LIB) - message (STATUS "Warning: ${HARDCODED_D3D9_LIB} has been removed from imported dependencies of ${VTK_LIBRARY}") - - list (REMOVE_ITEM TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES ${HARDCODED_D3D9_LIB}) - set_target_properties (${VTK_LIBRARY} PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES_${CHOSEN_IMPORT_CONF} "${TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES}") - endif() - endif() - # VTK 6.1 for VC 12, 14 - get_target_property (TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES ${VTK_LIBRARY} INTERFACE_LINK_LIBRARIES) - if(TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES) - string (REGEX MATCH "[^;]*d3d[0-9]+[.]lib" HARDCODED_D3D9_LIB "${TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES}") - if (HARDCODED_D3D9_LIB) - message (STATUS "Warning: ${HARDCODED_D3D9_LIB} has been removed from imported dependencies of ${VTK_LIBRARY}") - - list (REMOVE_ITEM TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES ${HARDCODED_D3D9_LIB}) - set_target_properties (${VTK_LIBRARY} PROPERTIES INTERFACE_LINK_LIBRARIES "${TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES}") - endif() - endif() - - get_target_property (TARGET_PROPERTY_IMP_PATH ${VTK_LIBRARY} IMPORTED_IMPLIB_${CHOSEN_IMPORT_CONF}) - if(TARGET_PROPERTY_IMP_PATH AND EXISTS "${TARGET_PROPERTY_IMP_PATH}") - get_filename_component (TARGET_PROPERTY_IMP_DIR "${TARGET_PROPERTY_IMP_PATH}" PATH) - list (APPEND 3RDPARTY_VTK_LIBRARY_DIRS "${TARGET_PROPERTY_IMP_DIR}") - endif() - - get_target_property (TARGET_PROPERTY_LOCATION_PATH ${VTK_LIBRARY} IMPORTED_LOCATION_${CHOSEN_IMPORT_CONF}) - if(TARGET_PROPERTY_LOCATION_PATH AND EXISTS "${TARGET_PROPERTY_LOCATION_PATH}") - get_filename_component (TARGET_PROPERTY_LOCATION_DIR "${TARGET_PROPERTY_LOCATION_PATH}" PATH) - - if (WIN32) - list (APPEND 3RDPARTY_VTK_DLL_DIRS "${TARGET_PROPERTY_LOCATION_DIR}") - else() - list (APPEND 3RDPARTY_VTK_LIBRARY_DIRS "${TARGET_PROPERTY_LOCATION_DIR}") - endif() - endif() - endif() - endforeach() - endif() - - if (3RDPARTY_VTK_INCLUDE_DIRS) - list (REMOVE_DUPLICATES 3RDPARTY_VTK_INCLUDE_DIRS) - list (APPEND 3RDPARTY_INCLUDE_DIRS ${3RDPARTY_VTK_INCLUDE_DIRS}) - - list (GET 3RDPARTY_VTK_INCLUDE_DIRS 0 3RDPARTY_VTK_INCLUDE_DIR) - set (3RDPARTY_VTK_INCLUDE_DIR "${3RDPARTY_VTK_INCLUDE_DIR}" CACHE PATH "The directory containing headers of VTK" FORCE) - endif() - -# if (BUILD_SHARED_LIBS) - if (3RDPARTY_VTK_LIBRARY_DIRS) - list (REMOVE_DUPLICATES 3RDPARTY_VTK_LIBRARY_DIRS) - list (APPEND 3RDPARTY_LIBRARY_DIRS ${3RDPARTY_VTK_LIBRARY_DIRS}) - - list (GET 3RDPARTY_VTK_LIBRARY_DIRS 0 3RDPARTY_VTK_LIBRARY_DIR) - set (3RDPARTY_VTK_LIBRARY_DIR "${3RDPARTY_VTK_LIBRARY_DIR}" CACHE PATH "The directory containing VTK libraries" FORCE) - endif() - - if (WIN32) - if (3RDPARTY_VTK_DLL_DIRS) - list (REMOVE_DUPLICATES 3RDPARTY_VTK_DLL_DIRS) - list (APPEND 3RDPARTY_DLL_DIRS ${3RDPARTY_VTK_DLL_DIRS}) - - list (GET 3RDPARTY_VTK_DLL_DIRS 0 3RDPARTY_VTK_DLL_DIR) - set (3RDPARTY_VTK_DLL_DIR "${3RDPARTY_VTK_DLL_DIR}" CACHE PATH "The directory containing VTK shared libraries" FORCE) - endif() - endif() -# endif() -endif() - -if (3RDPARTY_VTK_INCLUDE_DIR AND EXISTS "${3RDPARTY_VTK_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS ${3RDPARTY_VTK_INCLUDE_DIR}) -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_VTK_INCLUDE_DIR) -endif() - -if (BUILD_SHARED_LIBS) - if (3RDPARTY_VTK_LIBRARY_DIR AND EXISTS "${3RDPARTY_VTK_LIBRARY_DIR}") - list (APPEND 3RDPARTY_LIBRARY_DIRS ${3RDPARTY_VTK_LIBRARY_DIR}) - else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_VTK_LIBRARY_DIR) - endif() - - if (WIN32) - if (3RDPARTY_VTK_DLL_DIR OR EXISTS "${3RDPARTY_VTK_DLL_DIR}") - list (APPEND 3RDPARTY_DLL_DIRS ${3RDPARTY_VTK_DLL_DIR}) - else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_VTK_DLL_DIR) - endif() - endif() -endif() - -# Install vtk library using vtk targets -macro (OCCT_INSTALL_VTK VTK_LIBRARY_NAME) - # Check that input library name contains "vtk" prefix - string (REGEX MATCH "^vtk" IS_VTK_LIBRARY ${VTK_LIBRARY_NAME}) - # Check that input library was not already installed - list (FIND OCCT_VTK_USED_TARGETS ${VTK_LIBRARY_NAME} VTK_LIBRARY_IS_USED) - if (BUILD_SHARED_LIBS AND INSTALL_VTK AND TARGET ${VTK_LIBRARY_NAME} AND VTK_LIBRARY_IS_USED EQUAL -1 AND IS_VTK_LIBRARY) - OCCT_MAKE_OS_WITH_BITNESS() - - # Get configuration of vtk - get_target_property (TARGET_VTK_IMPORT_CONFS ${VTK_LIBRARY_NAME} IMPORTED_CONFIGURATIONS) - list (GET TARGET_VTK_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF) - - # Get dependencies for current input library - get_property(VTK_LIBRARY_PATH TARGET ${VTK_LIBRARY_NAME} PROPERTY LOCATION) - get_property(VTK_DEPEND TARGET ${VTK_LIBRARY_NAME} PROPERTY IMPORTED_LINK_DEPENDENT_LIBRARIES_${CHOSEN_IMPORT_CONF}) - get_property(VTK_IMPORTED_INTERFACE TARGET ${VTK_LIBRARY_NAME} PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_${CHOSEN_IMPORT_CONF}) - get_property(VTK_INTERFACE TARGET ${VTK_LIBRARY_NAME} PROPERTY INTERFACE_LINK_LIBRARIES) - list (APPEND VTK_DEPEND ${VTK_INTERFACE} ${VTK_IMPORTED_INTERFACE}) - - # Install - if (WIN32) - if (SINGLE_GENERATOR) - install (FILES "${VTK_LIBRARY_PATH}" DESTINATION "${INSTALL_DIR_BIN}") - else() - install (FILES "${VTK_LIBRARY_PATH}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_BIN}") - install (FILES "${VTK_LIBRARY_PATH}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_BIN}i") - install (FILES "${VTK_LIBRARY_PATH}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_BIN}d") - endif() - else() - get_filename_component(3RDPARTY_VTK_LIBRARY_ABS ${VTK_LIBRARY_PATH} REALPATH) - - if (SINGLE_GENERATOR) - install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}" - DESTINATION "${INSTALL_DIR_LIB}") - else() - install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_LIB}") - install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_LIB}i") - install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_LIB}d") - endif() - endif() - - set (USED_3RDPARTY_VTK_DIR "") - - # Mark current library as already installed - list (APPEND OCCT_VTK_USED_TARGETS ${VTK_LIBRARY_NAME}) - set (OCCT_VTK_USED_TARGETS "${OCCT_VTK_USED_TARGETS}" CACHE INTERNAL "" FORCE) - - # Recursively install all depended libraries - foreach(VTK_TARGET ${VTK_DEPEND}) - OCCT_INSTALL_VTK(${VTK_TARGET}) - endforeach() - endif() -endmacro() - -if (NOT BUILD_SHARED_LIBS) - OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_DLL_DIR) - OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_LIBRARY_DIR) - OCCT_CHECK_AND_UNSET(INSTALL_VTK) -endif() - -# the library directory for using by the executable -if (NOT INSTALL_VTK) - if (WIN32) - set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_DLL_DIR}) - else() - set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_LIBRARY_DIR}) - endif() -endif() - -OCCT_CHECK_AND_UNSET (VTK_INCLUDE_DIRS) -OCCT_CHECK_AND_UNSET (VTK_LIBRARY_DIRS) -OCCT_CHECK_AND_UNSET (VTK_DIR) +# vtk + +if (NOT DEFINED INSTALL_VTK) + set (INSTALL_VTK OFF CACHE BOOL "${INSTALL_VTK_DESCR}") +endif() + +# vtk directory +if (NOT DEFINED 3RDPARTY_VTK_DIR) + set (3RDPARTY_VTK_DIR "" CACHE PATH "The directory containing VTK") +endif() + +# include occt macros. compiler_bitness, os_wiht_bit, compiler +OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") + +# specify VTK folder in connectin with 3RDPARTY_DIR +if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") + #CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_DIR 3RDPARTY_VTK_DIR PATH "The directory containing VTK") + + if (NOT 3RDPARTY_VTK_DIR OR NOT EXISTS "${3RDPARTY_VTK_DIR}") + FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" VTK VTK_DIR_NAME) + if (VTK_DIR_NAME) + set (3RDPARTY_VTK_DIR "${3RDPARTY_DIR}/${VTK_DIR_NAME}" CACHE PATH "The directory containing VTK" FORCE) + endif() + endif() +else() + #set (3RDPARTY_VTK_DIR "" CACHE PATH "The directory containing VTK" FORCE) +endif() + +# vtk include directory +if (NOT DEFINED 3RDPARTY_VTK_INCLUDE_DIR) + set (3RDPARTY_VTK_INCLUDE_DIR "" CACHE PATH "The directory containing headers of VTK") +endif() + +#if (BUILD_SHARED_LIBS) + # vtk library directory + if (NOT DEFINED 3RDPARTY_VTK_LIBRARY_DIR) + set (3RDPARTY_VTK_LIBRARY_DIR "" CACHE PATH "The directory containing VTK libraries") + endif() + + # vtk dll directory + if (WIN32 AND NOT DEFINED 3RDPARTY_VTK_DLL_DIR) + set (3RDPARTY_VTK_DLL_DIR "" CACHE PATH "The directory containing VTK shared libraries") + endif() +#endif() + +# check 3RDPARTY_VTK_ paths for consistency with specified 3RDPARTY_VTK_DIR +if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}") + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_VTK_DIR 3RDPARTY_VTK_INCLUDE_DIR PATH "The directory containing headers of VTK") + if (BUILD_SHARED_LIBS) + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_VTK_DIR 3RDPARTY_VTK_LIBRARY_DIR PATH "The directory containing VTK libraries") + + if (WIN32) + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_VTK_DIR 3RDPARTY_VTK_DLL_DIR PATH "The directory containing VTK shared library") + endif() + endif() +endif() + +if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}") + set (CACHED_VTK_DIR $ENV{VTK_DIR}) + set (ENV{VTK_DIR} "${3RDPARTY_VTK_DIR}") +endif() + +find_package(VTK QUIET) + +if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}") + set (ENV{VTK_DIR} ${CACHED_VTK_DIR}) +endif() + +unset (IS_VTK_9XX) +if (VTK_FOUND) + message ("VTK version (${VTK_VERSION})") + if(VTK_MAJOR_VERSION EQUAL 8 AND VTK_MINOR_VERSION GREATER 9 OR VTK_MAJOR_VERSION GREATER 8) + set (IS_VTK_9XX 1) + else() + # add compiler flags, preprocessor definitions, include and link dirs + include (${VTK_USE_FILE}) + endif() + + if (VTK_LIBRARIES) + + set (3RDPARTY_VTK_INCLUDE_DIRS) + +# if (BUILD_SHARED_LIBS) + set (3RDPARTY_VTK_LIBRARY_DIRS) + set (3RDPARTY_VTK_DLL_DIRS) +# endif() + + foreach (VTK_LIBRARY ${VTK_LIBRARIES}) + if (IS_VTK_9XX) + string (REGEX MATCH "^VTK::" IS_VTK_LIBRARY ${VTK_LIBRARY}) + else() + string (REGEX MATCH "^vtk" IS_VTK_LIBRARY ${VTK_LIBRARY}) + endif() + if (NOT IS_VTK_LIBRARY OR NOT TARGET ${VTK_LIBRARY}) + continue() + endif() + + # get paths from corresponding variables + if (${VTK_LIBRARY}_INCLUDE_DIRS AND EXISTS "${${VTK_LIBRARY}_INCLUDE_DIRS}") + list (APPEND 3RDPARTY_VTK_INCLUDE_DIRS "${${VTK_LIBRARY}_INCLUDE_DIRS}") + endif() + + if (${VTK_LIBRARY}_LIBRARY_DIRS AND EXISTS "${${VTK_LIBRARY}_LIBRARY_DIRS}") + list (APPEND 3RDPARTY_VTK_LIBRARY_DIRS "${${VTK_LIBRARY}_LIBRARY_DIRS}") + endif() + + if (${VTK_LIBRARY}_RUNTIME_LIBRARY_DIRS AND EXISTS "${${VTK_LIBRARY}_RUNTIME_LIBRARY_DIRS}") + list (APPEND 3RDPARTY_VTK_DLL_DIRS "${${VTK_LIBRARY}_RUNTIME_LIBRARY_DIRS}") + if (NOT WIN32) + list (APPEND 3RDPARTY_VTK_LIBRARY_DIRS "${${VTK_LIBRARY}_RUNTIME_LIBRARY_DIRS}") + endif() + endif() + + # get paths from corresponding properties + get_target_property (TARGET_VTK_IMPORT_CONFS ${VTK_LIBRARY} IMPORTED_CONFIGURATIONS) + if (TARGET_VTK_IMPORT_CONFS) + list (GET TARGET_VTK_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF) + + # todo: choose configuration in connection with the build type + #if (CMAKE_BUILD_TYPE) + # foreach (IMPORT_CONF ${TARGET_VTK_IMPORT_CONFS}) + # endforeach() + #endif() + + # Work-around against link failure in case if VTK contains dependency + # on DirectX: its run-time is always present on Windows, but SDK can + # be absent on current workstation, while not actually needed for + # OCCT linking. + # VTK 6.1 for VC 10 + get_target_property (TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES ${VTK_LIBRARY} IMPORTED_LINK_INTERFACE_LIBRARIES_${CHOSEN_IMPORT_CONF}) + if(TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES) + string (REGEX MATCH "[^;]*d3d[0-9]+[.]lib" HARDCODED_D3D9_LIB "${TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES}") + if (HARDCODED_D3D9_LIB) + message (STATUS "Warning: ${HARDCODED_D3D9_LIB} has been removed from imported dependencies of ${VTK_LIBRARY}") + + list (REMOVE_ITEM TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES ${HARDCODED_D3D9_LIB}) + set_target_properties (${VTK_LIBRARY} PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES_${CHOSEN_IMPORT_CONF} "${TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES}") + endif() + endif() + # VTK 6.1 for VC 12, 14 + get_target_property (TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES ${VTK_LIBRARY} INTERFACE_LINK_LIBRARIES) + if(TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES) + string (REGEX MATCH "[^;]*d3d[0-9]+[.]lib" HARDCODED_D3D9_LIB "${TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES}") + if (HARDCODED_D3D9_LIB) + message (STATUS "Warning: ${HARDCODED_D3D9_LIB} has been removed from imported dependencies of ${VTK_LIBRARY}") + + list (REMOVE_ITEM TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES ${HARDCODED_D3D9_LIB}) + set_target_properties (${VTK_LIBRARY} PROPERTIES INTERFACE_LINK_LIBRARIES "${TARGET_PROPERTY_IMP_LINK_INTERFACE_LIBRARIES}") + endif() + endif() + + get_target_property (TARGET_PROPERTY_IMP_PATH ${VTK_LIBRARY} IMPORTED_IMPLIB_${CHOSEN_IMPORT_CONF}) + if(TARGET_PROPERTY_IMP_PATH AND EXISTS "${TARGET_PROPERTY_IMP_PATH}") + get_filename_component (TARGET_PROPERTY_IMP_DIR "${TARGET_PROPERTY_IMP_PATH}" PATH) + list (APPEND 3RDPARTY_VTK_LIBRARY_DIRS "${TARGET_PROPERTY_IMP_DIR}") + endif() + + get_target_property (TARGET_PROPERTY_LOCATION_PATH ${VTK_LIBRARY} IMPORTED_LOCATION_${CHOSEN_IMPORT_CONF}) + if(TARGET_PROPERTY_LOCATION_PATH AND EXISTS "${TARGET_PROPERTY_LOCATION_PATH}") + get_filename_component (TARGET_PROPERTY_LOCATION_DIR "${TARGET_PROPERTY_LOCATION_PATH}" PATH) + + if (WIN32) + list (APPEND 3RDPARTY_VTK_DLL_DIRS "${TARGET_PROPERTY_LOCATION_DIR}") + else() + list (APPEND 3RDPARTY_VTK_LIBRARY_DIRS "${TARGET_PROPERTY_LOCATION_DIR}") + endif() + endif() + endif() + endforeach() + endif() + + if (3RDPARTY_VTK_INCLUDE_DIRS) + list (REMOVE_DUPLICATES 3RDPARTY_VTK_INCLUDE_DIRS) + list (APPEND 3RDPARTY_INCLUDE_DIRS ${3RDPARTY_VTK_INCLUDE_DIRS}) + + list (GET 3RDPARTY_VTK_INCLUDE_DIRS 0 3RDPARTY_VTK_INCLUDE_DIR) + set (3RDPARTY_VTK_INCLUDE_DIR "${3RDPARTY_VTK_INCLUDE_DIR}" CACHE PATH "The directory containing headers of VTK" FORCE) + endif() + +# if (BUILD_SHARED_LIBS) + if (3RDPARTY_VTK_LIBRARY_DIRS) + list (REMOVE_DUPLICATES 3RDPARTY_VTK_LIBRARY_DIRS) + list (APPEND 3RDPARTY_LIBRARY_DIRS ${3RDPARTY_VTK_LIBRARY_DIRS}) + + list (GET 3RDPARTY_VTK_LIBRARY_DIRS 0 3RDPARTY_VTK_LIBRARY_DIR) + set (3RDPARTY_VTK_LIBRARY_DIR "${3RDPARTY_VTK_LIBRARY_DIR}" CACHE PATH "The directory containing VTK libraries" FORCE) + endif() + + if (WIN32) + if (3RDPARTY_VTK_DLL_DIRS) + list (REMOVE_DUPLICATES 3RDPARTY_VTK_DLL_DIRS) + list (APPEND 3RDPARTY_DLL_DIRS ${3RDPARTY_VTK_DLL_DIRS}) + + list (GET 3RDPARTY_VTK_DLL_DIRS 0 3RDPARTY_VTK_DLL_DIR) + set (3RDPARTY_VTK_DLL_DIR "${3RDPARTY_VTK_DLL_DIR}" CACHE PATH "The directory containing VTK shared libraries" FORCE) + endif() + endif() +# endif() +endif() + +if (3RDPARTY_VTK_INCLUDE_DIR AND EXISTS "${3RDPARTY_VTK_INCLUDE_DIR}") + list (APPEND 3RDPARTY_INCLUDE_DIRS ${3RDPARTY_VTK_INCLUDE_DIR}) +else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_VTK_INCLUDE_DIR) +endif() + +if (BUILD_SHARED_LIBS) + if (3RDPARTY_VTK_LIBRARY_DIR AND EXISTS "${3RDPARTY_VTK_LIBRARY_DIR}") + list (APPEND 3RDPARTY_LIBRARY_DIRS ${3RDPARTY_VTK_LIBRARY_DIR}) + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_VTK_LIBRARY_DIR) + endif() + + if (WIN32) + if (3RDPARTY_VTK_DLL_DIR OR EXISTS "${3RDPARTY_VTK_DLL_DIR}") + list (APPEND 3RDPARTY_DLL_DIRS ${3RDPARTY_VTK_DLL_DIR}) + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_VTK_DLL_DIR) + endif() + endif() +endif() + +# Install vtk library using vtk targets +macro (OCCT_INSTALL_VTK VTK_LIBRARY_NAME) + # Check that input library name contains "vtk" prefix + string (REGEX MATCH "^vtk" IS_VTK_LIBRARY ${VTK_LIBRARY_NAME}) + # Check that input library was not already installed + list (FIND OCCT_VTK_USED_TARGETS ${VTK_LIBRARY_NAME} VTK_LIBRARY_IS_USED) + if (BUILD_SHARED_LIBS AND INSTALL_VTK AND TARGET ${VTK_LIBRARY_NAME} AND VTK_LIBRARY_IS_USED EQUAL -1 AND IS_VTK_LIBRARY) + OCCT_MAKE_OS_WITH_BITNESS() + + # Get configuration of vtk + get_target_property (TARGET_VTK_IMPORT_CONFS ${VTK_LIBRARY_NAME} IMPORTED_CONFIGURATIONS) + list (GET TARGET_VTK_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF) + + # Get dependencies for current input library + get_property(VTK_LIBRARY_PATH TARGET ${VTK_LIBRARY_NAME} PROPERTY LOCATION) + get_property(VTK_DEPEND TARGET ${VTK_LIBRARY_NAME} PROPERTY IMPORTED_LINK_DEPENDENT_LIBRARIES_${CHOSEN_IMPORT_CONF}) + get_property(VTK_IMPORTED_INTERFACE TARGET ${VTK_LIBRARY_NAME} PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_${CHOSEN_IMPORT_CONF}) + get_property(VTK_INTERFACE TARGET ${VTK_LIBRARY_NAME} PROPERTY INTERFACE_LINK_LIBRARIES) + list (APPEND VTK_DEPEND ${VTK_INTERFACE} ${VTK_IMPORTED_INTERFACE}) + + # Install + if (WIN32) + if (SINGLE_GENERATOR) + install (FILES "${VTK_LIBRARY_PATH}" DESTINATION "${INSTALL_DIR_BIN}") + else() + install (FILES "${VTK_LIBRARY_PATH}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_BIN}") + install (FILES "${VTK_LIBRARY_PATH}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_BIN}i") + install (FILES "${VTK_LIBRARY_PATH}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_BIN}d") + endif() + else() + get_filename_component(3RDPARTY_VTK_LIBRARY_ABS ${VTK_LIBRARY_PATH} REALPATH) + + if (SINGLE_GENERATOR) + install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}" + DESTINATION "${INSTALL_DIR_LIB}") + else() + install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_LIB}") + install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_LIB}i") + install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_LIB}d") + endif() + endif() + + set (USED_3RDPARTY_VTK_DIR "") + + # Mark current library as already installed + list (APPEND OCCT_VTK_USED_TARGETS ${VTK_LIBRARY_NAME}) + set (OCCT_VTK_USED_TARGETS "${OCCT_VTK_USED_TARGETS}" CACHE INTERNAL "" FORCE) + + # Recursively install all depended libraries + foreach(VTK_TARGET ${VTK_DEPEND}) + OCCT_INSTALL_VTK(${VTK_TARGET}) + endforeach() + endif() +endmacro() + +if (NOT BUILD_SHARED_LIBS) + OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_DLL_DIR) + OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_LIBRARY_DIR) + OCCT_CHECK_AND_UNSET(INSTALL_VTK) +endif() + +# the library directory for using by the executable +if (NOT INSTALL_VTK) + if (WIN32) + set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_DLL_DIR}) + else() + set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_LIBRARY_DIR}) + endif() +endif() + +OCCT_CHECK_AND_UNSET (VTK_INCLUDE_DIRS) +OCCT_CHECK_AND_UNSET (VTK_LIBRARY_DIRS) +OCCT_CHECK_AND_UNSET (VTK_DIR) diff --git a/adm/qmake/OccCppConfig.pri b/adm/qmake/OccCppConfig.pri index 9464d8bcf4..0097ab84bc 100644 --- a/adm/qmake/OccCppConfig.pri +++ b/adm/qmake/OccCppConfig.pri @@ -1,165 +1,165 @@ -# This is project defines C++ compilation rules for building an OCCT Toolkit. - -exists(custom.auto.pri) { include(custom.auto.pri) } -exists(custom.pri) { include(custom.pri) } - -# Disable some dummy Qt defaults -QT -= core gui -CONFIG -= qt app_bundle -CONFIG -= qml_debug -CONFIG -= debug_and_release - -OccGitRoot = $$_PRO_FILE_PWD_/../../../.. - -# Define compilation flags -CONFIG += warn_on -QMAKE_CFLAGS_WARN_ON = -Wall -Wextra -QMAKE_CXXFLAGS_WARN_ON = -Wall -Wextra -win32 { - QMAKE_CFLAGS_WARN_ON = -W4 - QMAKE_CXXFLAGS_WARN_ON = -W4 - QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa - QMAKE_CXXFLAGS_STL_ON = /EHa - - QMAKE_CXXFLAGS += -fp:precise - #QMAKE_CXXFLAGS -= -Zc:throwingNew - #QMAKE_CXXFLAGS -= -Zc:rvalueCast - - QMAKE_LFLAGS += -INCREMENTAL:NO - - CONFIG(debug, debug|release) { - QMAKE_CXXFLAGS += -Od - QMAKE_CXXFLAGS += -Ob1 - } - - DEFINES -= WIN32 - DEFINES -= WIN64 - DEFINES += _CRT_SECURE_NO_WARNINGS - DEFINES += _CRT_NONSTDC_NO_DEPRECATE - DEFINES += _SCL_SECURE_NO_WARNINGS -} else { - CONFIG += c++11 - clang { - QMAKE_CFLAGS_WARN_ON += -Wshorten-64-to-32 - QMAKE_CXXFLAGS_WARN_ON += -Wshorten-64-to-32 - } - QMAKE_CFLAGS += -fexceptions - QMAKE_CXXFLAGS += -fexceptions - QMAKE_CXXFLAGS += -fvisibility=default - DEFINES += OCC_CONVERT_SIGNALS - mac { - iphoneos { - QMAKE_IOS_DEPLOYMENT_TARGET = 8.0 - } else { - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.14 - } - } else:gcc { - # ask linker to report missing library dependencies - QMAKE_LFLAGS += -Wl,-z,defs - } -} -!CONFIG(debug, debug|release) { - # disable exceptions in Release builds - DEFINES += No_Exception - HAVE_RelWithDebInfo { - win32 { - CONFIG += force_debug_info - } - } -} - -# Define output folder depending on compiler name -MY_BITNESS = 32 - -equals(QMAKE_TARGET.arch, x86_64) | equals(QMAKE_HOST.arch, x86_64) { MY_BITNESS = 64 } -equals(ANDROID_TARGET_ARCH, arm64-v8a) { MY_BITNESS = 64 } -has64Target = $$find(QMAKE_TARGET.arch, "x64") -count(has64Target, 1) { MY_BITNESS = 64 } - -MY_PLATFORM = platform -CONFIG(iphonesimulator, iphoneos|iphonesimulator) { MY_PLATFORM = iphonesimulator -} else:CONFIG(iphoneos, iphoneos|iphonesimulator) { MY_PLATFORM = iphoneos -} else:android { MY_PLATFORM = android-$$ANDROID_TARGET_ARCH -} else:win32 { MY_PLATFORM = win$$MY_BITNESS -} else:mac { MY_PLATFORM = mac -} else:linux { MY_PLATFORM = lin -} else:unix { MY_PLATFORM = unix -} else { warning (Unknown platform. "$$MY_PLATFORM" is used) } - -MY_COMPILER = compiler -MY_VC_VER = 0 -android-g++ { - MY_COMPILER = gcc -} else:clang { - MY_COMPILER = clang -} else:gcc { - MY_COMPILER = gcc -} else:win32-msvc2010 { - MY_COMPILER = vc10 - MY_VC_VER = 10 -} else:win32-msvc2012 { - MY_COMPILER = vc11 - MY_VC_VER = 11 -} else:win32-msvc2013 { - MY_COMPILER = vc12 - MY_VC_VER = 12 -} else:win32-msvc2015 { - MY_COMPILER = vc14 - MY_VC_VER = 14 -} else:win32-msvc2017 { - MY_COMPILER = vc14 - MY_VC_VER = 14 -} else:win32-msvc { - MY_COMPILER = vc14 - MY_VC_VER = 14 - aMsvcVer = $$(VisualStudioVersion) - equals(aMsvcVer, 14.0){ - # VS2015, vc140 - } else:equals(aMsvcVer, 15.0){ - # VS2015, vc141 - } else:equals(aMsvcVer, 16.0){ - # VS2019, vc142 - } else:equals(aMsvcVer, 17.0){ - # VS2022, vc143 - } else { - warning (Unknown msvc version. "$$MY_COMPILER" is used) - } -} else { - warning (Unknown compiler. "$$MY_COMPILER" is used) -} -MY_PLATFORM_AND_COMPILER = $$MY_PLATFORM/$$MY_COMPILER -#warning (The platform is "$$MY_PLATFORM"; bitness is "$$MY_BITNESS"; compiler is "$$MY_COMPILER") - -CONFIG(debug, debug|release) { MY_BUILDTYPE = d } - -DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/lib$${MY_BUILDTYPE} -win32 { - DESTDIR = $$OccGitRoot/win$${MY_BITNESS}/vc$${MY_VC_VER}/bin$${MY_BUILDTYPE} - aLibDest = $$DESTDIR/../lib$${MY_BUILDTYPE} - #DLLDESTDIR = $$DESTDIR/../bin$${MY_BUILDTYPE} - - # dummy target creating lib/libd folder - occtkgen_libfolder.input = $$_PRO_FILE_PWD_/../../OcctDummy.in - occtkgen_libfolder.output = $$aLibDest/dummy.tmp - occtkgen_libfolder.config = verbatim - QMAKE_SUBSTITUTES += occtkgen_libfolder - - LIBS += -L$$aLibDest - equals(TEMPLATE, lib) { - QMAKE_CLEAN += $$DESTDIR/$${TARGET}.dll - QMAKE_CLEAN += $$aLibDest/$${TARGET}.lib - QMAKE_CLEAN += $$aLibDest/$${TARGET}.exp - } else { - QMAKE_CLEAN += $$DESTDIR/$${TARGET}.exe - } - QMAKE_CLEAN += $$DESTDIR/$${TARGET}.pdb - QMAKE_LFLAGS += -PDB:"$$DESTDIR/$${TARGET}.pdb" - QMAKE_LFLAGS += -IMPLIB:"$$aLibDest/$${TARGET}.lib" -} else { - LIBS += -L$$DESTDIR - equals(TEMPLATE, app) { - DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/bin$${MY_BUILDTYPE} - } -} - -OBJECTS_DIR = $$DESTDIR/../obj$${MY_BUILDTYPE}/$${TARGET} +# This is project defines C++ compilation rules for building an OCCT Toolkit. + +exists(custom.auto.pri) { include(custom.auto.pri) } +exists(custom.pri) { include(custom.pri) } + +# Disable some dummy Qt defaults +QT -= core gui +CONFIG -= qt app_bundle +CONFIG -= qml_debug +CONFIG -= debug_and_release + +OccGitRoot = $$_PRO_FILE_PWD_/../../../.. + +# Define compilation flags +CONFIG += warn_on +QMAKE_CFLAGS_WARN_ON = -Wall -Wextra +QMAKE_CXXFLAGS_WARN_ON = -Wall -Wextra +win32 { + QMAKE_CFLAGS_WARN_ON = -W4 + QMAKE_CXXFLAGS_WARN_ON = -W4 + QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa + QMAKE_CXXFLAGS_STL_ON = /EHa + + QMAKE_CXXFLAGS += -fp:precise + #QMAKE_CXXFLAGS -= -Zc:throwingNew + #QMAKE_CXXFLAGS -= -Zc:rvalueCast + + QMAKE_LFLAGS += -INCREMENTAL:NO + + CONFIG(debug, debug|release) { + QMAKE_CXXFLAGS += -Od + QMAKE_CXXFLAGS += -Ob1 + } + + DEFINES -= WIN32 + DEFINES -= WIN64 + DEFINES += _CRT_SECURE_NO_WARNINGS + DEFINES += _CRT_NONSTDC_NO_DEPRECATE + DEFINES += _SCL_SECURE_NO_WARNINGS +} else { + CONFIG += c++11 + clang { + QMAKE_CFLAGS_WARN_ON += -Wshorten-64-to-32 + QMAKE_CXXFLAGS_WARN_ON += -Wshorten-64-to-32 + } + QMAKE_CFLAGS += -fexceptions + QMAKE_CXXFLAGS += -fexceptions + QMAKE_CXXFLAGS += -fvisibility=default + DEFINES += OCC_CONVERT_SIGNALS + mac { + iphoneos { + QMAKE_IOS_DEPLOYMENT_TARGET = 8.0 + } else { + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.14 + } + } else:gcc { + # ask linker to report missing library dependencies + QMAKE_LFLAGS += -Wl,-z,defs + } +} +!CONFIG(debug, debug|release) { + # disable exceptions in Release builds + DEFINES += No_Exception + HAVE_RelWithDebInfo { + win32 { + CONFIG += force_debug_info + } + } +} + +# Define output folder depending on compiler name +MY_BITNESS = 32 + +equals(QMAKE_TARGET.arch, x86_64) | equals(QMAKE_HOST.arch, x86_64) { MY_BITNESS = 64 } +equals(ANDROID_TARGET_ARCH, arm64-v8a) { MY_BITNESS = 64 } +has64Target = $$find(QMAKE_TARGET.arch, "x64") +count(has64Target, 1) { MY_BITNESS = 64 } + +MY_PLATFORM = platform +CONFIG(iphonesimulator, iphoneos|iphonesimulator) { MY_PLATFORM = iphonesimulator +} else:CONFIG(iphoneos, iphoneos|iphonesimulator) { MY_PLATFORM = iphoneos +} else:android { MY_PLATFORM = android-$$ANDROID_TARGET_ARCH +} else:win32 { MY_PLATFORM = win$$MY_BITNESS +} else:mac { MY_PLATFORM = mac +} else:linux { MY_PLATFORM = lin +} else:unix { MY_PLATFORM = unix +} else { warning (Unknown platform. "$$MY_PLATFORM" is used) } + +MY_COMPILER = compiler +MY_VC_VER = 0 +android-g++ { + MY_COMPILER = gcc +} else:clang { + MY_COMPILER = clang +} else:gcc { + MY_COMPILER = gcc +} else:win32-msvc2010 { + MY_COMPILER = vc10 + MY_VC_VER = 10 +} else:win32-msvc2012 { + MY_COMPILER = vc11 + MY_VC_VER = 11 +} else:win32-msvc2013 { + MY_COMPILER = vc12 + MY_VC_VER = 12 +} else:win32-msvc2015 { + MY_COMPILER = vc14 + MY_VC_VER = 14 +} else:win32-msvc2017 { + MY_COMPILER = vc14 + MY_VC_VER = 14 +} else:win32-msvc { + MY_COMPILER = vc14 + MY_VC_VER = 14 + aMsvcVer = $$(VisualStudioVersion) + equals(aMsvcVer, 14.0){ + # VS2015, vc140 + } else:equals(aMsvcVer, 15.0){ + # VS2015, vc141 + } else:equals(aMsvcVer, 16.0){ + # VS2019, vc142 + } else:equals(aMsvcVer, 17.0){ + # VS2022, vc143 + } else { + warning (Unknown msvc version. "$$MY_COMPILER" is used) + } +} else { + warning (Unknown compiler. "$$MY_COMPILER" is used) +} +MY_PLATFORM_AND_COMPILER = $$MY_PLATFORM/$$MY_COMPILER +#warning (The platform is "$$MY_PLATFORM"; bitness is "$$MY_BITNESS"; compiler is "$$MY_COMPILER") + +CONFIG(debug, debug|release) { MY_BUILDTYPE = d } + +DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/lib$${MY_BUILDTYPE} +win32 { + DESTDIR = $$OccGitRoot/win$${MY_BITNESS}/vc$${MY_VC_VER}/bin$${MY_BUILDTYPE} + aLibDest = $$DESTDIR/../lib$${MY_BUILDTYPE} + #DLLDESTDIR = $$DESTDIR/../bin$${MY_BUILDTYPE} + + # dummy target creating lib/libd folder + occtkgen_libfolder.input = $$_PRO_FILE_PWD_/../../OcctDummy.in + occtkgen_libfolder.output = $$aLibDest/dummy.tmp + occtkgen_libfolder.config = verbatim + QMAKE_SUBSTITUTES += occtkgen_libfolder + + LIBS += -L$$aLibDest + equals(TEMPLATE, lib) { + QMAKE_CLEAN += $$DESTDIR/$${TARGET}.dll + QMAKE_CLEAN += $$aLibDest/$${TARGET}.lib + QMAKE_CLEAN += $$aLibDest/$${TARGET}.exp + } else { + QMAKE_CLEAN += $$DESTDIR/$${TARGET}.exe + } + QMAKE_CLEAN += $$DESTDIR/$${TARGET}.pdb + QMAKE_LFLAGS += -PDB:"$$DESTDIR/$${TARGET}.pdb" + QMAKE_LFLAGS += -IMPLIB:"$$aLibDest/$${TARGET}.lib" +} else { + LIBS += -L$$DESTDIR + equals(TEMPLATE, app) { + DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/bin$${MY_BUILDTYPE} + } +} + +OBJECTS_DIR = $$DESTDIR/../obj$${MY_BUILDTYPE}/$${TARGET} diff --git a/adm/qmake/OccModule.pri b/adm/qmake/OccModule.pri index 1fcd67fe5c..587acbb43f 100644 --- a/adm/qmake/OccModule.pri +++ b/adm/qmake/OccModule.pri @@ -1,42 +1,42 @@ -# This is a project template file defining an OCCT Module. -# This project should be included with predefined OCC_MODULE_NAME variable. -TEMPLATE = subdirs -exists(custom.auto.pri) { include(custom.auto.pri) } -exists(custom.pri) { include(custom.pri) } - -# Iterate over Toolkits within current Module and generate sub-project per Toolkit -aModuleList = $$cat(../MODULES, lines) -for (aModuleIter, aModuleList) { - #aTkList = $$list($$aModuleIter) - this doesn't work, qmake bug? - aModule = $$first($$list($$aModuleIter)) - equals (aModule, $$OCC_MODULE_NAME) { - for (aToolKit, $$list($$aModuleIter)) { - toSkipToolkit = 0 - equals (aToolKit, $$OCC_MODULE_NAME) { toSkipToolkit = 1 } - !HAVE_VTK:equals (aToolKit, "TKIVtk") { toSkipToolkit = 1 } - !HAVE_VTK:equals (aToolKit, "TKIVtkDraw") { toSkipToolkit = 1 } - #!HAVE_OPENGL: equals (aToolKit, "TKOpenGl") { toSkipToolkit = 1 } - #!HAVE_OPENGL: equals (aToolKit, "TKOpenGlTest") { toSkipToolkit = 1 } - !HAVE_GLES2: equals (aToolKit, "TKOpenGles") { toSkipToolkit = 1 } - !HAVE_GLES2: equals (aToolKit, "TKOpenGlesTest") { toSkipToolkit = 1 } - !win32: equals (aToolKit, "TKD3DHost") { toSkipToolkit = 1 } - !win32: equals (aToolKit, "TKD3DHostTest") { toSkipToolkit = 1 } - equals (toSkipToolkit, 0) { - - #warning(aToolKit($$OCC_MODULE_NAME)=$$aToolKit) - eval(occtkgen_$${aToolKit}.input = $$_PRO_FILE_PWD_/../OccToolkit.pro.in) - eval(occtkgen_$${aToolKit}.output = $$_PRO_FILE_PWD_/$${aToolKit}/$${aToolKit}.pro) - eval(occtkgen_$${aToolKit}.config = verbatim) - eval(QMAKE_SUBSTITUTES += occtkgen_$${aToolKit}) - SUBDIRS += $${aToolKit} - - aModExtList = $$cat(../../src/$${aToolKit}/EXTERNLIB, lines) - aTkDepends = $${aToolKit}.depends - for (aModExtIter, aModExtList) { - contains ($$list($$aModuleIter), $$aModExtIter) { eval ($${aTkDepends} += $$aModExtIter) } - } - #warning($$aToolKit depends on: $$reverse($${aTkDepends})) - } - } - } -} +# This is a project template file defining an OCCT Module. +# This project should be included with predefined OCC_MODULE_NAME variable. +TEMPLATE = subdirs +exists(custom.auto.pri) { include(custom.auto.pri) } +exists(custom.pri) { include(custom.pri) } + +# Iterate over Toolkits within current Module and generate sub-project per Toolkit +aModuleList = $$cat(../MODULES, lines) +for (aModuleIter, aModuleList) { + #aTkList = $$list($$aModuleIter) - this doesn't work, qmake bug? + aModule = $$first($$list($$aModuleIter)) + equals (aModule, $$OCC_MODULE_NAME) { + for (aToolKit, $$list($$aModuleIter)) { + toSkipToolkit = 0 + equals (aToolKit, $$OCC_MODULE_NAME) { toSkipToolkit = 1 } + !HAVE_VTK:equals (aToolKit, "TKIVtk") { toSkipToolkit = 1 } + !HAVE_VTK:equals (aToolKit, "TKIVtkDraw") { toSkipToolkit = 1 } + #!HAVE_OPENGL: equals (aToolKit, "TKOpenGl") { toSkipToolkit = 1 } + #!HAVE_OPENGL: equals (aToolKit, "TKOpenGlTest") { toSkipToolkit = 1 } + !HAVE_GLES2: equals (aToolKit, "TKOpenGles") { toSkipToolkit = 1 } + !HAVE_GLES2: equals (aToolKit, "TKOpenGlesTest") { toSkipToolkit = 1 } + !win32: equals (aToolKit, "TKD3DHost") { toSkipToolkit = 1 } + !win32: equals (aToolKit, "TKD3DHostTest") { toSkipToolkit = 1 } + equals (toSkipToolkit, 0) { + + #warning(aToolKit($$OCC_MODULE_NAME)=$$aToolKit) + eval(occtkgen_$${aToolKit}.input = $$_PRO_FILE_PWD_/../OccToolkit.pro.in) + eval(occtkgen_$${aToolKit}.output = $$_PRO_FILE_PWD_/$${aToolKit}/$${aToolKit}.pro) + eval(occtkgen_$${aToolKit}.config = verbatim) + eval(QMAKE_SUBSTITUTES += occtkgen_$${aToolKit}) + SUBDIRS += $${aToolKit} + + aModExtList = $$cat(../../src/$${aToolKit}/EXTERNLIB, lines) + aTkDepends = $${aToolKit}.depends + for (aModExtIter, aModExtList) { + contains ($$list($$aModuleIter), $$aModExtIter) { eval ($${aTkDepends} += $$aModExtIter) } + } + #warning($$aToolKit depends on: $$reverse($${aTkDepends})) + } + } + } +} diff --git a/adm/qmake/OccModule.pro.in b/adm/qmake/OccModule.pro.in index 9af19874a5..3bd8995092 100644 --- a/adm/qmake/OccModule.pro.in +++ b/adm/qmake/OccModule.pro.in @@ -1,2 +1,2 @@ -OCC_MODULE_NAME = \$\$TARGET -include(../OccModule.pri) +OCC_MODULE_NAME = \$\$TARGET +include(../OccModule.pri) diff --git a/adm/qmake/OccToolkit.pri b/adm/qmake/OccToolkit.pri index 3f18edb1cf..289d819386 100644 --- a/adm/qmake/OccToolkit.pri +++ b/adm/qmake/OccToolkit.pri @@ -1,166 +1,166 @@ -# This is a project template file defining an OCCT Toolkit. -# This project should be included with predefined OCC_TOOLKIT_NAME variable. - -TEMPLATE = lib -!exists(../../src/$$OCC_TOOLKIT_NAME/PACKAGES) { - TEMPLATE = app - CONFIG += console -} -win32 { - # do not append version to DLL name - CONFIG += skip_target_version_ext -} - -include(OccCppConfig.pri) - -aSrcRoot = $$OccGitRoot/src -aHxxRoot = $$OccGitRoot/inc -INCLUDEPATH += $$aHxxRoot - -# CSF variables -HAVE_FREETYPE { CSF_FREETYPE = -lfreetype } -CSF_TclLibs = -ltcl8.6 -CSF_TclTkLibs = -ltk8.6 -HAVE_FREEIMAGE { CSF_FreeImagePlus = -lfreeimage } else:win32 { CSF_FreeImagePlus = -lwindowscodecs -lole32 } -HAVE_FFMPEG { CSF_FFmpeg = -lavcodec -lavformat -lswscale -lavutil } -HAVE_TBB { CSF_TBB = -ltbb -ltbbmalloc } -HAVE_ZLIB { CSF_ZLIB = -lzlib } -HAVE_LIBLZMA { CSF_LIBLZMA = -lliblzma } -HAVE_DRACO { CSF_Draco = -ldraco } -win32 { - CSF_kernel32 = -lkernel32 - CSF_advapi32 = -ladvapi32 - CSF_gdi32 = -lgdi32 - CSF_user32 = -luser32 -lcomdlg32 - CSF_shell32 = -lShell32 - CSF_opengl32 = -lopengl32 - CSF_wsock32 = -lwsock32 - CSF_netapi32 = -lnetapi32 - CSF_OpenGlLibs = -lopengl32 - CSF_OpenGlesLibs = -llibEGL -llibGLESv2 - CSF_psapi = -lPsapi - CSF_winmm = -lwinmm - CSF_d3d9 = -ld3d9 - CSF_TclLibs = -ltcl86 - CSF_TclTkLibs = -ltk86 - CSF_TBB = -} else:mac { - CSF_dl = -ldl - CSF_objc = -lobjc - CSF_OpenGlLibs = -framework OpenGL - CSF_OpenGlesLibs = -framework OpenGLES - iphoneos { - CSF_Appkit = -framework UIKit - } else { - CSF_Appkit = -framework AppKit - } - CSF_IOKit = -framework IOKit - CSF_TclLibs = -framework Tcl - CSF_TclTkLibs = -framework Tk -} else { - CSF_dl = -ldl - CSF_ThreadLibs = -lpthread -lrt - CSF_OpenGlesLibs = -lEGL -lGLESv2 - CSF_TclTkLibs = -ltk8.6 - HAVE_XLIB { - CSF_OpenGlLibs = -lGL - CSF_XwLibs = -lX11 - } else { - CSF_OpenGlLibs = -lGL -lEGL - } - HAVE_FREETYPE { CSF_fontconfig = -lfontconfig } -} - -for (aCfgIter, CONFIG) { - aRes = $$find(aCfgIter, "^HAVE_") - !equals(aCfgIter, "HAVE_GLES2") { - count(aRes, 1) { - DEFINES += $$aCfgIter - } - } -} - -# Define the list of standard OCCT file extensions -aHxxRegex = ^.*\.(hxx|h|lxx|gxx)$ -aPxxRegex = ^.*\.(pxx)$ -aCxxRegex = ^.*\.(cxx|cpp|c)$ -mac { aCxxRegex = ^.*\.(cxx|cpp|c|m|mm)$ } - -# Auxiliary function for probing file extension -defineTest (occCheckExtension) { - aProbe = $$find(1, "$$2") - count(aProbe, 1) { return(true) } else { return(false) } -} - -# Auxiliary function for probing compilable files -defineTest (occIsCxxFile) { occCheckExtension ($$1, $$aCxxRegex) { return(true) } else { return(false) } } - -# Auxiliary function for probing header files -defineTest (occIsHxxFile) { occCheckExtension ($$1, $$aHxxRegex) { return(true) } else { return(false) } } - -aTkFiles = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/FILES, lines) -aTkFiles += CMakeLists.txt -aPackages = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/PACKAGES, lines) -anExternLibs = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/EXTERNLIB, lines) - -for (aTkFileIter, aTkFiles) { OTHER_FILES += $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aTkFileIter } -for (anExternLib, anExternLibs) { - hasCsf = $$find(anExternLib, CSF_) - count(hasCsf, 1) { - aList = $$split($$anExternLib, "\n") - LIBS += $$aList - equals(anExternLib, "CSF_OpenGlLibs") { - DEFINES += "HAVE_OPENGL" - } - equals(anExternLib, "CSF_OpenGlesLibs") { - DEFINES += "HAVE_GLES2" - } - } else { - LIBS += -l$$anExternLib - } -} - -# Iterate over Packages and add compilable files into this project -isEmpty (aPackages) { aPackages = $$OCC_TOOLKIT_NAME } -for (aPackage, aPackages) { - aPackageFolder = $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aPackage - aPackageFiles = $$cat($$aSrcRoot/$$aPackage/FILES, lines) - for (aFileIter, aPackageFiles) { - occIsCxxFile($$aFileIter) { - SOURCES += $$aSrcRoot/$$aPackage/$$aFileIter - } - } -} - -!win32 { - aVerList = $$split(VERSION, ".") - aVerMaj = $$member(aVerList, 0) - aVerMin = $$member(aVerList, 1) - aVerMic = $$member(aVerList, 2) - - equals(TEMPLATE, app) { - QMAKE_CLEAN += $$DESTDIR/$${TARGET} - } else { - mac { - # override qmake soname versionong logic - QMAKE_LFLAGS_SONAME = - QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.dylib.$${aVerMaj}.$${aVerMin} - - # extend clean with versioned .dylib files - QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.dylib - QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.dylib - QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.dylib - QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.$${aVerMic}.dylib - } else { - # override qmake soname versionong logic - QMAKE_LFLAGS_SONAME = - QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.so.$${aVerMaj}.$${aVerMin} - - # extend clean with versioned .so files - QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so - QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj} - QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin} - QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}.$${aVerMic} - } - } -} +# This is a project template file defining an OCCT Toolkit. +# This project should be included with predefined OCC_TOOLKIT_NAME variable. + +TEMPLATE = lib +!exists(../../src/$$OCC_TOOLKIT_NAME/PACKAGES) { + TEMPLATE = app + CONFIG += console +} +win32 { + # do not append version to DLL name + CONFIG += skip_target_version_ext +} + +include(OccCppConfig.pri) + +aSrcRoot = $$OccGitRoot/src +aHxxRoot = $$OccGitRoot/inc +INCLUDEPATH += $$aHxxRoot + +# CSF variables +HAVE_FREETYPE { CSF_FREETYPE = -lfreetype } +CSF_TclLibs = -ltcl8.6 +CSF_TclTkLibs = -ltk8.6 +HAVE_FREEIMAGE { CSF_FreeImagePlus = -lfreeimage } else:win32 { CSF_FreeImagePlus = -lwindowscodecs -lole32 } +HAVE_FFMPEG { CSF_FFmpeg = -lavcodec -lavformat -lswscale -lavutil } +HAVE_TBB { CSF_TBB = -ltbb -ltbbmalloc } +HAVE_ZLIB { CSF_ZLIB = -lzlib } +HAVE_LIBLZMA { CSF_LIBLZMA = -lliblzma } +HAVE_DRACO { CSF_Draco = -ldraco } +win32 { + CSF_kernel32 = -lkernel32 + CSF_advapi32 = -ladvapi32 + CSF_gdi32 = -lgdi32 + CSF_user32 = -luser32 -lcomdlg32 + CSF_shell32 = -lShell32 + CSF_opengl32 = -lopengl32 + CSF_wsock32 = -lwsock32 + CSF_netapi32 = -lnetapi32 + CSF_OpenGlLibs = -lopengl32 + CSF_OpenGlesLibs = -llibEGL -llibGLESv2 + CSF_psapi = -lPsapi + CSF_winmm = -lwinmm + CSF_d3d9 = -ld3d9 + CSF_TclLibs = -ltcl86 + CSF_TclTkLibs = -ltk86 + CSF_TBB = +} else:mac { + CSF_dl = -ldl + CSF_objc = -lobjc + CSF_OpenGlLibs = -framework OpenGL + CSF_OpenGlesLibs = -framework OpenGLES + iphoneos { + CSF_Appkit = -framework UIKit + } else { + CSF_Appkit = -framework AppKit + } + CSF_IOKit = -framework IOKit + CSF_TclLibs = -framework Tcl + CSF_TclTkLibs = -framework Tk +} else { + CSF_dl = -ldl + CSF_ThreadLibs = -lpthread -lrt + CSF_OpenGlesLibs = -lEGL -lGLESv2 + CSF_TclTkLibs = -ltk8.6 + HAVE_XLIB { + CSF_OpenGlLibs = -lGL + CSF_XwLibs = -lX11 + } else { + CSF_OpenGlLibs = -lGL -lEGL + } + HAVE_FREETYPE { CSF_fontconfig = -lfontconfig } +} + +for (aCfgIter, CONFIG) { + aRes = $$find(aCfgIter, "^HAVE_") + !equals(aCfgIter, "HAVE_GLES2") { + count(aRes, 1) { + DEFINES += $$aCfgIter + } + } +} + +# Define the list of standard OCCT file extensions +aHxxRegex = ^.*\.(hxx|h|lxx|gxx)$ +aPxxRegex = ^.*\.(pxx)$ +aCxxRegex = ^.*\.(cxx|cpp|c)$ +mac { aCxxRegex = ^.*\.(cxx|cpp|c|m|mm)$ } + +# Auxiliary function for probing file extension +defineTest (occCheckExtension) { + aProbe = $$find(1, "$$2") + count(aProbe, 1) { return(true) } else { return(false) } +} + +# Auxiliary function for probing compilable files +defineTest (occIsCxxFile) { occCheckExtension ($$1, $$aCxxRegex) { return(true) } else { return(false) } } + +# Auxiliary function for probing header files +defineTest (occIsHxxFile) { occCheckExtension ($$1, $$aHxxRegex) { return(true) } else { return(false) } } + +aTkFiles = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/FILES, lines) +aTkFiles += CMakeLists.txt +aPackages = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/PACKAGES, lines) +anExternLibs = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/EXTERNLIB, lines) + +for (aTkFileIter, aTkFiles) { OTHER_FILES += $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aTkFileIter } +for (anExternLib, anExternLibs) { + hasCsf = $$find(anExternLib, CSF_) + count(hasCsf, 1) { + aList = $$split($$anExternLib, "\n") + LIBS += $$aList + equals(anExternLib, "CSF_OpenGlLibs") { + DEFINES += "HAVE_OPENGL" + } + equals(anExternLib, "CSF_OpenGlesLibs") { + DEFINES += "HAVE_GLES2" + } + } else { + LIBS += -l$$anExternLib + } +} + +# Iterate over Packages and add compilable files into this project +isEmpty (aPackages) { aPackages = $$OCC_TOOLKIT_NAME } +for (aPackage, aPackages) { + aPackageFolder = $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aPackage + aPackageFiles = $$cat($$aSrcRoot/$$aPackage/FILES, lines) + for (aFileIter, aPackageFiles) { + occIsCxxFile($$aFileIter) { + SOURCES += $$aSrcRoot/$$aPackage/$$aFileIter + } + } +} + +!win32 { + aVerList = $$split(VERSION, ".") + aVerMaj = $$member(aVerList, 0) + aVerMin = $$member(aVerList, 1) + aVerMic = $$member(aVerList, 2) + + equals(TEMPLATE, app) { + QMAKE_CLEAN += $$DESTDIR/$${TARGET} + } else { + mac { + # override qmake soname versionong logic + QMAKE_LFLAGS_SONAME = + QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.dylib.$${aVerMaj}.$${aVerMin} + + # extend clean with versioned .dylib files + QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.dylib + QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.dylib + QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.dylib + QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.$${aVerMic}.dylib + } else { + # override qmake soname versionong logic + QMAKE_LFLAGS_SONAME = + QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.so.$${aVerMaj}.$${aVerMin} + + # extend clean with versioned .so files + QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so + QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj} + QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin} + QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}.$${aVerMic} + } + } +} diff --git a/adm/qmake/OccToolkit.pro.in b/adm/qmake/OccToolkit.pro.in index 70dfd30967..23e0f69309 100644 --- a/adm/qmake/OccToolkit.pro.in +++ b/adm/qmake/OccToolkit.pro.in @@ -1,2 +1,2 @@ -OCC_TOOLKIT_NAME = \$\$TARGET -include(../../OccToolkit.pri) +OCC_TOOLKIT_NAME = \$\$TARGET +include(../../OccToolkit.pri) diff --git a/adm/qmake/Occt.pro b/adm/qmake/Occt.pro index 90b83a89a3..b8cdb23bfd 100644 --- a/adm/qmake/Occt.pro +++ b/adm/qmake/Occt.pro @@ -1,45 +1,45 @@ -# This is an experimental Solution project for building entire OCCT framework using qmake. -# It can be also used for just source code navigation in Qt Creator without actually building OCCT. -# Note, as this is an experimental project, compiler flags might differ from official builds - use it on your own risk! -# Building OCCT using CMake is a preferred solution. -# -# This project GENERATES sub-projects (OCCT modules) dynamically, so to start using it: -# - Launch genconf, select Project Format "Qt Project" and configure dependencies; this will also generate "custom.auto.pri". -# - Launch genproj to fill in "inc" folder with links to header files. -# - Open project in Qt Creator, and call "Run qmake". -# - Close the project in Qt Creator, open it again so that you should see the sub-modules in Project tree; call "Run qmake" again. -# - "Run qmake" and perform Build. -# -# Within Debian-based Linux repository Qt Creator can be installed like this: -# > sudo apt-get install qtcreator qtbase5-dev - -TEMPLATE = subdirs -exists(custom.auto.pri) { include(custom.auto.pri) } -exists(custom.pri) { include(custom.pri) } - -OTHER_FILES += OccModule.pro.in \ - OcctHeaderLink.hxx.in \ - OccToolkit.pro.in \ - OccCppConfig.pri \ - OccModule.pri \ - OccToolkit.pri \ - custom.pri.template - -# Iterate over Modules and generate sub-projects -aSolModuleList = $$cat(../MODULES, lines) -for (aSolModuleIter, aSolModuleList) { - aSolModule = $$first($$list($$aSolModuleIter)) - eval(occtkgen_$${aSolModule}.input = $$_PRO_FILE_PWD_/OccModule.pro.in) - eval(occtkgen_$${aSolModule}.output = $$_PRO_FILE_PWD_/$${aSolModule}/$${aSolModule}.pro) - eval(occtkgen_$${aSolModule}.config = verbatim) - eval(QMAKE_SUBSTITUTES += occtkgen_$${aSolModule}) - SUBDIRS += $${aSolModule} -} - -# These dependencies are manually defined -ModelingData.depends = FoundationClasses -ModelingAlgorithms.depends = FoundationClasses ModelingData -Visualization.depends = FoundationClasses ModelingData ModelingAlgorithms -ApplicationFramework.depends = FoundationClasses ModelingData ModelingAlgorithms Visualization -DataExchange.depends = FoundationClasses ModelingData ModelingAlgorithms ApplicationFramework -Draw.depends = FoundationClasses ModelingData ModelingAlgorithms ApplicationFramework DataExchange Visualization +# This is an experimental Solution project for building entire OCCT framework using qmake. +# It can be also used for just source code navigation in Qt Creator without actually building OCCT. +# Note, as this is an experimental project, compiler flags might differ from official builds - use it on your own risk! +# Building OCCT using CMake is a preferred solution. +# +# This project GENERATES sub-projects (OCCT modules) dynamically, so to start using it: +# - Launch genconf, select Project Format "Qt Project" and configure dependencies; this will also generate "custom.auto.pri". +# - Launch genproj to fill in "inc" folder with links to header files. +# - Open project in Qt Creator, and call "Run qmake". +# - Close the project in Qt Creator, open it again so that you should see the sub-modules in Project tree; call "Run qmake" again. +# - "Run qmake" and perform Build. +# +# Within Debian-based Linux repository Qt Creator can be installed like this: +# > sudo apt-get install qtcreator qtbase5-dev + +TEMPLATE = subdirs +exists(custom.auto.pri) { include(custom.auto.pri) } +exists(custom.pri) { include(custom.pri) } + +OTHER_FILES += OccModule.pro.in \ + OcctHeaderLink.hxx.in \ + OccToolkit.pro.in \ + OccCppConfig.pri \ + OccModule.pri \ + OccToolkit.pri \ + custom.pri.template + +# Iterate over Modules and generate sub-projects +aSolModuleList = $$cat(../MODULES, lines) +for (aSolModuleIter, aSolModuleList) { + aSolModule = $$first($$list($$aSolModuleIter)) + eval(occtkgen_$${aSolModule}.input = $$_PRO_FILE_PWD_/OccModule.pro.in) + eval(occtkgen_$${aSolModule}.output = $$_PRO_FILE_PWD_/$${aSolModule}/$${aSolModule}.pro) + eval(occtkgen_$${aSolModule}.config = verbatim) + eval(QMAKE_SUBSTITUTES += occtkgen_$${aSolModule}) + SUBDIRS += $${aSolModule} +} + +# These dependencies are manually defined +ModelingData.depends = FoundationClasses +ModelingAlgorithms.depends = FoundationClasses ModelingData +Visualization.depends = FoundationClasses ModelingData ModelingAlgorithms +ApplicationFramework.depends = FoundationClasses ModelingData ModelingAlgorithms Visualization +DataExchange.depends = FoundationClasses ModelingData ModelingAlgorithms ApplicationFramework +Draw.depends = FoundationClasses ModelingData ModelingAlgorithms ApplicationFramework DataExchange Visualization diff --git a/adm/qmake/OcctHeaderLink.hxx.in b/adm/qmake/OcctHeaderLink.hxx.in index 096be33403..9670f185bf 100644 --- a/adm/qmake/OcctHeaderLink.hxx.in +++ b/adm/qmake/OcctHeaderLink.hxx.in @@ -1 +1 @@ -#include \"../src/$${OCCT_PACKAGE}/$${OCCT_HEADER}\" +#include \"../src/$${OCCT_PACKAGE}/$${OCCT_HEADER}\" diff --git a/adm/qmake/custom.pri.template b/adm/qmake/custom.pri.template index 7fbfb5f65d..c7fc7e16e4 100644 --- a/adm/qmake/custom.pri.template +++ b/adm/qmake/custom.pri.template @@ -1,17 +1,17 @@ -PRODUCTS_PATH = c:/3rdparty/vc14 - -#CONFIG += HAVE_FREEIMAGE -#CONFIG += HAVE_FFMPEG -#CONFIG += HAVE_TBB -#CONFIG += HAVE_GLES2 -#CONFIG += HAVE_D3D -#CONFIG += HAVE_VTK - -aFreeType = $$PRODUCTS_PATH/freetype-2.5.5-vc14-64 -aTclTk = $$PRODUCTS_PATH/tcltk-86-64 - -INCLUDEPATH += $$aFreeType/include -LIBS += -L$$aFreeType/lib - -INCLUDEPATH += $$aTclTk/include -LIBS += -L$$aTclTk/lib +PRODUCTS_PATH = c:/3rdparty/vc14 + +#CONFIG += HAVE_FREEIMAGE +#CONFIG += HAVE_FFMPEG +#CONFIG += HAVE_TBB +#CONFIG += HAVE_GLES2 +#CONFIG += HAVE_D3D +#CONFIG += HAVE_VTK + +aFreeType = $$PRODUCTS_PATH/freetype-2.5.5-vc14-64 +aTclTk = $$PRODUCTS_PATH/tcltk-86-64 + +INCLUDEPATH += $$aFreeType/include +LIBS += -L$$aFreeType/lib + +INCLUDEPATH += $$aTclTk/include +LIBS += -L$$aTclTk/lib diff --git a/adm/qmake/qtcreator-occt-cpp.xml b/adm/qmake/qtcreator-occt-cpp.xml index 133ca00197..55bcea63bc 100644 --- a/adm/qmake/qtcreator-occt-cpp.xml +++ b/adm/qmake/qtcreator-occt-cpp.xml @@ -1,39 +1,39 @@ - - - - - - CodeStyleData - - true - false - false - true - false - true - true - false - true - false - true - false - true - true - false - true - false - true - false - 2 - true - true - 2 - true - 2 - - - - DisplayName - occt - - + + + + + + CodeStyleData + + true + false + false + true + false + true + true + false + true + false + true + false + true + true + false + true + false + true + false + 2 + true + true + 2 + true + 2 + + + + DisplayName + occt + + diff --git a/adm/scripts/android_custom.bat.template b/adm/scripts/android_custom.bat.template index 45881c6d40..e26453fa05 100644 --- a/adm/scripts/android_custom.bat.template +++ b/adm/scripts/android_custom.bat.template @@ -1,33 +1,33 @@ -rem Environment configuration template for android_build.bat (to be renamed as android_custom.bat) - -rem Paths to 3rd-party tools and libraries -rem call c:\TDM-GCC-64\mingwvars.bat -rem set "PATH=c:\CMake\bin;%PATH%" -rem set "anNdkPath=c:/android-ndk-r12" -rem set "aFreeType=c:/freetype-2.7.1-android" -rem set "aRapidJson=c:/rapidjson-1.1.0" -rem set "aDraco=c:/draco-1.4.1-android" - -rem Uncomment to customize building steps -rem set "aBuildRoot=%~dp0..\..\work" -rem set "toCMake=1" -rem set "toClean=0" -rem set "toMake=1" -rem set "toInstall=1" -rem set "toPack=1" -rem set "isStatic=0" - -rem Minimal Android platform and CPU architectures -rem set "anNdkApiLevel=21" -rem set "anNdkAbiList=arm64-v8a x86_64" - -rem OCCT Modules to build -rem set "BUILD_ModelingData=ON" -rem set "BUILD_ModelingAlgorithms=ON" -rem set "BUILD_Visualization=ON" -rem set "BUILD_ApplicationFramework=ON" -rem set "BUILD_DataExchange=ON" - -rem Optional 3rd-party libraries to enable -rem set "USE_RAPIDJSON=ON" -rem set "USE_DRACO=ON" +rem Environment configuration template for android_build.bat (to be renamed as android_custom.bat) + +rem Paths to 3rd-party tools and libraries +rem call c:\TDM-GCC-64\mingwvars.bat +rem set "PATH=c:\CMake\bin;%PATH%" +rem set "anNdkPath=c:/android-ndk-r12" +rem set "aFreeType=c:/freetype-2.7.1-android" +rem set "aRapidJson=c:/rapidjson-1.1.0" +rem set "aDraco=c:/draco-1.4.1-android" + +rem Uncomment to customize building steps +rem set "aBuildRoot=%~dp0..\..\work" +rem set "toCMake=1" +rem set "toClean=0" +rem set "toMake=1" +rem set "toInstall=1" +rem set "toPack=1" +rem set "isStatic=0" + +rem Minimal Android platform and CPU architectures +rem set "anNdkApiLevel=21" +rem set "anNdkAbiList=arm64-v8a x86_64" + +rem OCCT Modules to build +rem set "BUILD_ModelingData=ON" +rem set "BUILD_ModelingAlgorithms=ON" +rem set "BUILD_Visualization=ON" +rem set "BUILD_ApplicationFramework=ON" +rem set "BUILD_DataExchange=ON" + +rem Optional 3rd-party libraries to enable +rem set "USE_RAPIDJSON=ON" +rem set "USE_DRACO=ON" diff --git a/adm/scripts/cmake_custom.bat.template b/adm/scripts/cmake_custom.bat.template index eabc8290b0..011246d58d 100644 --- a/adm/scripts/cmake_custom.bat.template +++ b/adm/scripts/cmake_custom.bat.template @@ -1,48 +1,48 @@ -rem Environment configuration template for cmake_gen.bat (to be renamed as cmake_gen_custom.bat) - -set "OCCT3RDPARTY=%SrcRoot%\..\3rdparty" - -set VS=14 -set VSDATA=2015 - -rem Leave VSPLATFORM empty to build for x86 platform -set VSPLATFORM=Win64 - -rem ------------------------------------ -rem Uncomment to customize building steps -rem ------------------------------------ - -rem set "BUILD_DIR=build-vs%VS%-%VSPLATFORM%" -rem set "INSTALL_DIR=%SrcRoot%\install" - -rem set BUILD_DOC_Overview=OFF -rem set BUILD_Inspector=OFF -rem set BUILD_LIBRARY_TYPE=Shared -rem set BUILD_RELEASE_DISABLE_EXCEPTIONS=ON -rem set BUILD_WITH_DEBUG=OFF -rem set BUILD_ENABLE_FPE_SIGNAL_HANDLER=ON -rem set BUILD_USE_PCH=OFF -rem set BUILD_FORCE_RelWithDebInfo=OFF - -rem Use semicolon-separated list of toolkits if you want to disable all modules -rem and build only some toolkits. -rem set BUILD_ADDITIONAL_TOOLKITS= - -rem Set a directory recognized as a patch for OCCT. -rem set BUILD_PATCH= - -rem set BUILD_MODULE_ApplicationFramework=ON -rem set BUILD_MODULE_DataExchange=ON -rem set BUILD_MODULE_Draw=ON -rem set BUILD_MODULE_ModelingAlgorithms=ON -rem set BUILD_MODULE_ModelingData=ON -rem set BUILD_MODULE_Visualization=ON - -rem set USE_D3D=OFF -rem set USE_FFMPEG=OFF -rem set USE_FREEIMAGE=OFF -rem set USE_GLES2=OFF -rem set USE_RAPIDJSON=OFF -rem set USE_DRACO=OFF -rem set USE_TBB=OFF -rem set USE_VTK=OFF +rem Environment configuration template for cmake_gen.bat (to be renamed as cmake_gen_custom.bat) + +set "OCCT3RDPARTY=%SrcRoot%\..\3rdparty" + +set VS=14 +set VSDATA=2015 + +rem Leave VSPLATFORM empty to build for x86 platform +set VSPLATFORM=Win64 + +rem ------------------------------------ +rem Uncomment to customize building steps +rem ------------------------------------ + +rem set "BUILD_DIR=build-vs%VS%-%VSPLATFORM%" +rem set "INSTALL_DIR=%SrcRoot%\install" + +rem set BUILD_DOC_Overview=OFF +rem set BUILD_Inspector=OFF +rem set BUILD_LIBRARY_TYPE=Shared +rem set BUILD_RELEASE_DISABLE_EXCEPTIONS=ON +rem set BUILD_WITH_DEBUG=OFF +rem set BUILD_ENABLE_FPE_SIGNAL_HANDLER=ON +rem set BUILD_USE_PCH=OFF +rem set BUILD_FORCE_RelWithDebInfo=OFF + +rem Use semicolon-separated list of toolkits if you want to disable all modules +rem and build only some toolkits. +rem set BUILD_ADDITIONAL_TOOLKITS= + +rem Set a directory recognized as a patch for OCCT. +rem set BUILD_PATCH= + +rem set BUILD_MODULE_ApplicationFramework=ON +rem set BUILD_MODULE_DataExchange=ON +rem set BUILD_MODULE_Draw=ON +rem set BUILD_MODULE_ModelingAlgorithms=ON +rem set BUILD_MODULE_ModelingData=ON +rem set BUILD_MODULE_Visualization=ON + +rem set USE_D3D=OFF +rem set USE_FFMPEG=OFF +rem set USE_FREEIMAGE=OFF +rem set USE_GLES2=OFF +rem set USE_RAPIDJSON=OFF +rem set USE_DRACO=OFF +rem set USE_TBB=OFF +rem set USE_VTK=OFF diff --git a/adm/scripts/cmake_custom.sh.template b/adm/scripts/cmake_custom.sh.template index 6ed63c7f13..86943284c9 100644 --- a/adm/scripts/cmake_custom.sh.template +++ b/adm/scripts/cmake_custom.sh.template @@ -1,43 +1,43 @@ -# Environment configuration template for cmake_gen.sh (to be renamed as cmake_gen_custom.sh) - -OCCT3RDPARTY="$SrcRoot/../3rdparty" -FREETYPE_DIR="$OCCT3RDPARTY/freetype-2.7.1" - -# ------------------------------------ -# Uncomment to customize building steps -# ------------------------------------ - -#BUILD_DIR=build -#INSTALL_DIR="$SrcRoot/install" - -#BUILD_DOC_Overview=OFF -#BUILD_Inspector=OFF -#BUILD_LIBRARY_TYPE=Shared -#BUILD_RELEASE_DISABLE_EXCEPTIONS=ON -#BUILD_WITH_DEBUG=OFF -#BUILD_ENABLE_FPE_SIGNAL_HANDLER=ON - -# Use semicolon-separated list of toolkits if you want to disable all modules -# and build only some toolkits. -#BUILD_ADDITIONAL_TOOLKITS= - -# Set a directory recognized as a patch for OCCT. -#BUILD_PATCH= - -#BUILD_MODULE_ApplicationFramework=ON -#BUILD_MODULE_DataExchange=ON -#BUILD_MODULE_Draw=ON -#BUILD_MODULE_ModelingAlgorithms=ON -#BUILD_MODULE_ModelingData=ON -#BUILD_MODULE_Visualization=ON - -#USE_FFMPEG=OFF -#USE_FREEIMAGE=OFF -#USE_GLES2=OFF -#USE_RAPIDJSON=OFF -#USE_DRACO=OFF -#USE_TBB=OFF -#USE_VTK=OFF - -# This is to add any additional arguments to cmake -#AUX_ARGS= +# Environment configuration template for cmake_gen.sh (to be renamed as cmake_gen_custom.sh) + +OCCT3RDPARTY="$SrcRoot/../3rdparty" +FREETYPE_DIR="$OCCT3RDPARTY/freetype-2.7.1" + +# ------------------------------------ +# Uncomment to customize building steps +# ------------------------------------ + +#BUILD_DIR=build +#INSTALL_DIR="$SrcRoot/install" + +#BUILD_DOC_Overview=OFF +#BUILD_Inspector=OFF +#BUILD_LIBRARY_TYPE=Shared +#BUILD_RELEASE_DISABLE_EXCEPTIONS=ON +#BUILD_WITH_DEBUG=OFF +#BUILD_ENABLE_FPE_SIGNAL_HANDLER=ON + +# Use semicolon-separated list of toolkits if you want to disable all modules +# and build only some toolkits. +#BUILD_ADDITIONAL_TOOLKITS= + +# Set a directory recognized as a patch for OCCT. +#BUILD_PATCH= + +#BUILD_MODULE_ApplicationFramework=ON +#BUILD_MODULE_DataExchange=ON +#BUILD_MODULE_Draw=ON +#BUILD_MODULE_ModelingAlgorithms=ON +#BUILD_MODULE_ModelingData=ON +#BUILD_MODULE_Visualization=ON + +#USE_FFMPEG=OFF +#USE_FREEIMAGE=OFF +#USE_GLES2=OFF +#USE_RAPIDJSON=OFF +#USE_DRACO=OFF +#USE_TBB=OFF +#USE_VTK=OFF + +# This is to add any additional arguments to cmake +#AUX_ARGS= diff --git a/adm/scripts/ios_custom.sh.template b/adm/scripts/ios_custom.sh.template index c54624ebf6..16839a56a2 100644 --- a/adm/scripts/ios_custom.sh.template +++ b/adm/scripts/ios_custom.sh.template @@ -1,30 +1,30 @@ -# environment configuration template for ios_build.sh (to be renamed as ios_custom_env.sh) -export PATH=/Applications/CMake.app/Contents/bin:$PATH -export aFreeType="$aSrcRoot/../3rdparty/freetype-2.10.4-ios" -export aFreeImage="$aSrcRoot/../3rdparty/freeimage-3.18-ios" -export aRapidJson="$aSrcRoot/../3rdparty/rapidjson-1.1.0" -export aDraco="$aSrcRoot/../3rdparty/draco-1.4.1-ios" - -# Uncomment to customize building steps -#export isStatic=0 -#export toCMake=1 -#export toClean=1 -#export toMake=1 -#export toInstall=1 -#export toPack=0 -#export toPackFat=1 -#export toDebug=0 - -#export BUILD_ModelingData=ON -#export BUILD_ModelingAlgorithms=ON -#export BUILD_Visualization=ON -#export BUILD_ApplicationFramework=ON -#export BUILD_DataExchange=ON - -#export USE_RAPIDJSON=ON -#export USE_DRACO=ON -#export USE_FREEIMAGE=ON - -#export IPHONEOS_DEPLOYMENT_TARGET=8.0 -#export anAbiList="iPhoneOS|arm64 iPhoneSimulator|arm64 iPhoneSimulator|x86_64" -#export anAbiList="iPhoneOS|arm64" +# environment configuration template for ios_build.sh (to be renamed as ios_custom_env.sh) +export PATH=/Applications/CMake.app/Contents/bin:$PATH +export aFreeType="$aSrcRoot/../3rdparty/freetype-2.10.4-ios" +export aFreeImage="$aSrcRoot/../3rdparty/freeimage-3.18-ios" +export aRapidJson="$aSrcRoot/../3rdparty/rapidjson-1.1.0" +export aDraco="$aSrcRoot/../3rdparty/draco-1.4.1-ios" + +# Uncomment to customize building steps +#export isStatic=0 +#export toCMake=1 +#export toClean=1 +#export toMake=1 +#export toInstall=1 +#export toPack=0 +#export toPackFat=1 +#export toDebug=0 + +#export BUILD_ModelingData=ON +#export BUILD_ModelingAlgorithms=ON +#export BUILD_Visualization=ON +#export BUILD_ApplicationFramework=ON +#export BUILD_DataExchange=ON + +#export USE_RAPIDJSON=ON +#export USE_DRACO=ON +#export USE_FREEIMAGE=ON + +#export IPHONEOS_DEPLOYMENT_TARGET=8.0 +#export anAbiList="iPhoneOS|arm64 iPhoneSimulator|arm64 iPhoneSimulator|x86_64" +#export anAbiList="iPhoneOS|arm64" diff --git a/adm/scripts/macos_custom.sh.template b/adm/scripts/macos_custom.sh.template index 740c24f640..1902b9d662 100644 --- a/adm/scripts/macos_custom.sh.template +++ b/adm/scripts/macos_custom.sh.template @@ -1,31 +1,31 @@ -# environment configuration template for macos_build.sh (to be renamed as macos_custom_env.sh) -export PATH=/Applications/CMake.app/Contents/bin:$PATH -export aFreeType="$aSrcRoot/../3rdparty/freetype-2.10.4-macos" -export aFreeImage="$aSrcRoot/../3rdparty/freeimage-3.18-macos" -export aRapidJson="$aSrcRoot/../3rdparty/rapidjson-1.1.0" -export aDraco="$aSrcRoot/../3rdparty/draco-1.4.1-macos" - -# Uncomment to customize building steps -#export aBuildRoot=work -#export toCMake=1 -#export toClean=1 -#export toMake=1 -#export toInstall=1 -#export toPack=1 -#export toPackFat=1 - -#export BUILD_ModelingData=ON -#export BUILD_ModelingAlgorithms=ON -#export BUILD_Visualization=ON -#export BUILD_ApplicationFramework=ON -#export BUILD_DataExchange=ON -#export BUILD_Draw=ON - -#export USE_RAPIDJSON=ON -#export USE_DRACO=ON -#export USE_FREEIMAGE=ON - -#export MACOSX_DEPLOYMENT_TARGET=10.10 -#export anAbiList=arm64 -#export anAbiList=x86_64 -#export anAbiList="arm64 x86_64" +# environment configuration template for macos_build.sh (to be renamed as macos_custom_env.sh) +export PATH=/Applications/CMake.app/Contents/bin:$PATH +export aFreeType="$aSrcRoot/../3rdparty/freetype-2.10.4-macos" +export aFreeImage="$aSrcRoot/../3rdparty/freeimage-3.18-macos" +export aRapidJson="$aSrcRoot/../3rdparty/rapidjson-1.1.0" +export aDraco="$aSrcRoot/../3rdparty/draco-1.4.1-macos" + +# Uncomment to customize building steps +#export aBuildRoot=work +#export toCMake=1 +#export toClean=1 +#export toMake=1 +#export toInstall=1 +#export toPack=1 +#export toPackFat=1 + +#export BUILD_ModelingData=ON +#export BUILD_ModelingAlgorithms=ON +#export BUILD_Visualization=ON +#export BUILD_ApplicationFramework=ON +#export BUILD_DataExchange=ON +#export BUILD_Draw=ON + +#export USE_RAPIDJSON=ON +#export USE_DRACO=ON +#export USE_FREEIMAGE=ON + +#export MACOSX_DEPLOYMENT_TARGET=10.10 +#export anAbiList=arm64 +#export anAbiList=x86_64 +#export anAbiList="arm64 x86_64" diff --git a/adm/scripts/mingw_custom.bat.template b/adm/scripts/mingw_custom.bat.template index 0a7f6c6750..8dc21e80e3 100644 --- a/adm/scripts/mingw_custom.bat.template +++ b/adm/scripts/mingw_custom.bat.template @@ -1,29 +1,29 @@ -rem Environment configuration template for mingw_build.bat (to be renamed as mingw_custom.bat) -set "aCmakeBin=%ProgramW6432%\CMake\bin" -set "aFreeType=%aCasSrc%/../3rdparty/freetype-2.6.3-mingw-64" -set "aTclTk=%aCasSrc%/../3rdparty/tcltk-8.6.4-mingw-64" -set "aFreeImage=%aCasSrc%/../3rdparty/freeimage-3.17-0-mingw-64" -set "aRapidJson=%aCasSrc%/../3rdparty/rapidjson-1.1.0" -set "aDraco=%aCasSrc%/../3rdparty/draco-1.4-1-mingw-64" - -set "aMingwVars=c:\mingw-8.3.0-msys2\mingwvars.bat" - -rem Uncomment to customize building steps -rem set "aBuildRoot=work" -rem set "toCMake=1" -rem set "toClean=1" -rem set "toMake=1" -rem set "toInstall=1" -rem set "toPack=1" -rem set "toDebug=0" - -rem set "BUILD_ModelingData=ON" -rem set "BUILD_ModelingAlgorithms=ON" -rem set "BUILD_Visualization=ON" -rem set "BUILD_ApplicationFramework=ON" -rem set "BUILD_DataExchange=ON" -rem set "BUILD_Draw=ON" - -rem set "USE_RAPIDJSON=ON" -rem set "USE_DRACO=ON" -rem set "USE_FREEIMAGE=ON" +rem Environment configuration template for mingw_build.bat (to be renamed as mingw_custom.bat) +set "aCmakeBin=%ProgramW6432%\CMake\bin" +set "aFreeType=%aCasSrc%/../3rdparty/freetype-2.6.3-mingw-64" +set "aTclTk=%aCasSrc%/../3rdparty/tcltk-8.6.4-mingw-64" +set "aFreeImage=%aCasSrc%/../3rdparty/freeimage-3.17-0-mingw-64" +set "aRapidJson=%aCasSrc%/../3rdparty/rapidjson-1.1.0" +set "aDraco=%aCasSrc%/../3rdparty/draco-1.4-1-mingw-64" + +set "aMingwVars=c:\mingw-8.3.0-msys2\mingwvars.bat" + +rem Uncomment to customize building steps +rem set "aBuildRoot=work" +rem set "toCMake=1" +rem set "toClean=1" +rem set "toMake=1" +rem set "toInstall=1" +rem set "toPack=1" +rem set "toDebug=0" + +rem set "BUILD_ModelingData=ON" +rem set "BUILD_ModelingAlgorithms=ON" +rem set "BUILD_Visualization=ON" +rem set "BUILD_ApplicationFramework=ON" +rem set "BUILD_DataExchange=ON" +rem set "BUILD_Draw=ON" + +rem set "USE_RAPIDJSON=ON" +rem set "USE_DRACO=ON" +rem set "USE_FREEIMAGE=ON" diff --git a/adm/scripts/wasm_custom.bat.template b/adm/scripts/wasm_custom.bat.template index 0c52467a6a..139df16496 100644 --- a/adm/scripts/wasm_custom.bat.template +++ b/adm/scripts/wasm_custom.bat.template @@ -1,29 +1,29 @@ -rem Environment configuration template for wasm_build.bat (to be renamed as wasm_custom.bat) -set "EMSDK_ROOT=%aCasSrc%\..\emsdk" -set "aFreeType=%aCasSrc%\..\3rdparty\freetype-2.7.1-wasm32" -rem set "aRapidJson=%aCasSrc%\..\3rdparty\rapidjson-1.1.0" -rem set "aDraco=%aCasSrc%\..\3rdparty\draco-1.4.1-wasm32" -rem set "aCmakeBin=%ProgramW6432%\CMake\bin" - -rem Uncomment to customize building steps -rem set "aBuildRoot=work" -rem set "toCMake=1" -rem set "toClean=1" -rem set "toMake=1" -rem set "toInstall=1" -rem set "toPack=1" -rem set "toDebug=1" -rem set "toBuildSample=1" -rem Source map base (should point to server where C++ sources will be copied) -rem enables -g4 debug building option for WebGL sample and allows navigating C++ source code within JavaScript debugger. -rem set "sourceMapBase=http://localhost:9090/" - -rem set "BUILD_ModelingData=ON" -rem set "BUILD_ModelingAlgorithms=ON" -rem set "BUILD_Visualization=ON" -rem set "BUILD_ApplicationFramework=ON" -rem set "BUILD_DataExchange=ON" - -rem set "USE_RAPIDJSON=ON" -rem set "USE_DRACO=ON" -rem set "USE_PTHREADS=ON" +rem Environment configuration template for wasm_build.bat (to be renamed as wasm_custom.bat) +set "EMSDK_ROOT=%aCasSrc%\..\emsdk" +set "aFreeType=%aCasSrc%\..\3rdparty\freetype-2.7.1-wasm32" +rem set "aRapidJson=%aCasSrc%\..\3rdparty\rapidjson-1.1.0" +rem set "aDraco=%aCasSrc%\..\3rdparty\draco-1.4.1-wasm32" +rem set "aCmakeBin=%ProgramW6432%\CMake\bin" + +rem Uncomment to customize building steps +rem set "aBuildRoot=work" +rem set "toCMake=1" +rem set "toClean=1" +rem set "toMake=1" +rem set "toInstall=1" +rem set "toPack=1" +rem set "toDebug=1" +rem set "toBuildSample=1" +rem Source map base (should point to server where C++ sources will be copied) +rem enables -g4 debug building option for WebGL sample and allows navigating C++ source code within JavaScript debugger. +rem set "sourceMapBase=http://localhost:9090/" + +rem set "BUILD_ModelingData=ON" +rem set "BUILD_ModelingAlgorithms=ON" +rem set "BUILD_Visualization=ON" +rem set "BUILD_ApplicationFramework=ON" +rem set "BUILD_DataExchange=ON" + +rem set "USE_RAPIDJSON=ON" +rem set "USE_DRACO=ON" +rem set "USE_PTHREADS=ON" diff --git a/adm/scripts/wasm_custom.sh.template b/adm/scripts/wasm_custom.sh.template index 29157c92c7..6220390f26 100644 --- a/adm/scripts/wasm_custom.sh.template +++ b/adm/scripts/wasm_custom.sh.template @@ -1,16 +1,16 @@ -# environment configuration template for occ_build_wasm.sh (to be renamed as wasm_custom_env.sh) -export aFreeType="$aSrcRoot/../3rdparty/freetype-2.7.1-wasm" -export EMSDK_ROOT="$aSrcRoot/../emsdk" - -# Uncomment to customize building steps -#export aBuildRoot=work -#export toCMake=1 -#export toClean=0 -#export toMake=1 -#export toInstall=1 - -#export BUILD_ModelingData=ON -#export BUILD_ModelingAlgorithms=ON -#export BUILD_Visualization=ON -#export BUILD_ApplicationFramework=ON -#export BUILD_DataExchange=ON +# environment configuration template for occ_build_wasm.sh (to be renamed as wasm_custom_env.sh) +export aFreeType="$aSrcRoot/../3rdparty/freetype-2.7.1-wasm" +export EMSDK_ROOT="$aSrcRoot/../emsdk" + +# Uncomment to customize building steps +#export aBuildRoot=work +#export toCMake=1 +#export toClean=0 +#export toMake=1 +#export toInstall=1 + +#export BUILD_ModelingData=ON +#export BUILD_ModelingAlgorithms=ON +#export BUILD_Visualization=ON +#export BUILD_ApplicationFramework=ON +#export BUILD_DataExchange=ON diff --git a/adm/templates/OpenCASCADECompileDefinitionsAndFlags.cmake.in b/adm/templates/OpenCASCADECompileDefinitionsAndFlags.cmake.in index e08d046f22..790c938096 100644 --- a/adm/templates/OpenCASCADECompileDefinitionsAndFlags.cmake.in +++ b/adm/templates/OpenCASCADECompileDefinitionsAndFlags.cmake.in @@ -1,14 +1,14 @@ -#----------------------------------------------------------------------------- -# -# OpenCASCADECompileDefinitionsAndFlags-@OCCT_CONFIGURATION_LOWER@.cmake - OpenCASCADE CMake file -# with compile definitions and C/C++ flags for @OCCT_CONFIGURATION@ configuration. -# -# This file is configured by OpenCASCADE. -# - -# The C and C++ flags added by OpenCASCADE to the cmake-configured flags. -set (OpenCASCADE_C_FLAGS_@OCCT_CONFIGURATION_UPPER@ "@SET_OpenCASCADE_CMAKE_C_FLAGS@") -set (OpenCASCADE_CXX_FLAGS_@OCCT_CONFIGURATION_UPPER@ "@SET_OpenCASCADE_CMAKE_CXX_FLAGS@") - -# The compile definitions used by OpenCASCADE. -@SET_OpenCASCADE_COMPILE_DEFINITIONS@ +#----------------------------------------------------------------------------- +# +# OpenCASCADECompileDefinitionsAndFlags-@OCCT_CONFIGURATION_LOWER@.cmake - OpenCASCADE CMake file +# with compile definitions and C/C++ flags for @OCCT_CONFIGURATION@ configuration. +# +# This file is configured by OpenCASCADE. +# + +# The C and C++ flags added by OpenCASCADE to the cmake-configured flags. +set (OpenCASCADE_C_FLAGS_@OCCT_CONFIGURATION_UPPER@ "@SET_OpenCASCADE_CMAKE_C_FLAGS@") +set (OpenCASCADE_CXX_FLAGS_@OCCT_CONFIGURATION_UPPER@ "@SET_OpenCASCADE_CMAKE_CXX_FLAGS@") + +# The compile definitions used by OpenCASCADE. +@SET_OpenCASCADE_COMPILE_DEFINITIONS@ diff --git a/adm/templates/OpenCASCADEConfig.cmake.in b/adm/templates/OpenCASCADEConfig.cmake.in index e391ddfe8e..205495db08 100644 --- a/adm/templates/OpenCASCADEConfig.cmake.in +++ b/adm/templates/OpenCASCADEConfig.cmake.in @@ -1,94 +1,94 @@ -#----------------------------------------------------------------------------- -# -# OpenCASCADEConfig.cmake - OpenCASCADE CMake configuration file for external projects. -# -# This file is configured by OpenCASCADE. -# - -if(OpenCASCADE_ALREADY_INCLUDED) - return() -endif() -set(OpenCASCADE_ALREADY_INCLUDED 1) - -# The OpenCASCADE version number -set (OpenCASCADE_MAJOR_VERSION "@OCC_VERSION_MAJOR@") -set (OpenCASCADE_MINOR_VERSION "@OCC_VERSION_MINOR@") -set (OpenCASCADE_MAINTENANCE_VERSION "@OCC_VERSION_MAINTENANCE@") -set (OpenCASCADE_DEVELOPMENT_VERSION "@OCC_VERSION_DEVELOPMENT@") - -# Compute the installation prefix from this OpenCASCADEConfig.cmake file -# location, by going up one level + one level if "cmake" + one level if "lib". -# This is made to support different locations of CMake files: -# - in UNIX style: $INSTALL_DIR/lib/cmake/opencascade- -# - in Windows style: $INSTALL_DIR/cmake -# - in Android style: $INSTALL_DIR/libs/$CMAKE_ANDROID_ARCH_ABI/cmake/opencascade- -get_filename_component (OpenCASCADE_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) -if (OpenCASCADE_INSTALL_PREFIX MATCHES "/cmake$") - get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) -endif() -if (OpenCASCADE_INSTALL_PREFIX MATCHES "/lib$") - get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) -endif() -if (OpenCASCADE_INSTALL_PREFIX MATCHES "/libs/${CMAKE_ANDROID_ARCH_ABI}$") - get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) - get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) -endif() - -# Set OpenCASCADE paths to headers, binaries, libraries, resources, tests, samples, data -set (OpenCASCADE_BINARY_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_BIN@") -set (OpenCASCADE_LIBRARY_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_LIB@") -set (OpenCASCADE_SCRIPT_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_SCRIPT@") -set (OpenCASCADE_INCLUDE_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_INCLUDE@") -set (OpenCASCADE_RESOURCE_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_RESOURCE@") - -# The C and C++ flags added by OpenCASCADE to the cmake-configured flags. -set (OpenCASCADE_C_FLAGS "@CMAKE_C_FLAGS@") -set (OpenCASCADE_CXX_FLAGS "@CMAKE_CXX_FLAGS@") -@SET_OpenCASCADE_LINKER_FLAGS@ - -# List of available OpenCASCADE modules. -set (OpenCASCADE_MODULES @OCCT_MODULES_ENABLED@) -@SET_OpenCASCADE_MODULES_TOOLKITS@ -# List of available OpenCASCADE libraries. -set (OpenCASCADE_LIBRARIES @OCCT_LIBRARIES@) - -# OpenCASCADE global configuration options. -set (OpenCASCADE_COMPILER "@COMPILER@") -set (OpenCASCADE_BUILD_WITH_DEBUG @BUILD_WITH_DEBUG@) -set (OpenCASCADE_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@) -@SET_OpenCASCADE_BUILD_TYPE@ - -# Use of third-party libraries. -set (OpenCASCADE_WITH_TCL @USE_TCL@) -set (OpenCASCADE_WITH_FREETYPE @USE_FREETYPE@) -set (OpenCASCADE_WITH_FREEIMAGE @USE_FREEIMAGE@) -set (OpenCASCADE_WITH_TBB @USE_TBB@) -set (OpenCASCADE_WITH_VTK @USE_VTK@) -set (OpenCASCADE_WITH_FFMPEG @USE_FFMPEG@) -set (OpenCASCADE_WITH_GLES2 @USE_GLES2@) -@SET_OpenCASCADE_WITH_D3D@ -@SET_OpenCASCADE_WITH_GLX@ - -# Import OpenCASCADE compile definitions, C and C++ flags for each installed configuration. -file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/OpenCASCADECompileDefinitionsAndFlags-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -if (NOT OpenCASCADE_FIND_COMPONENTS) - set (OpenCASCADE_FIND_COMPONENTS ${OpenCASCADE_MODULES}) -endif () - -# Import OpenCASCADE targets. -foreach(_comp ${OpenCASCADE_FIND_COMPONENTS}) - if (NOT ";${OpenCASCADE_MODULES};" MATCHES "${_comp}") - set(OpenCASCADE_FOUND False) - set(OpenCASCADE_NOTFOUND_MESSAGE "Specified unsupported component: ${_comp}") - if (NOT OpenCASCADE_FIND_QUIETLY) - message (ERROR ": ${OpenCASCADE_NOTFOUND_MESSAGE}") - endif() - else() - include("${CMAKE_CURRENT_LIST_DIR}/OpenCASCADE${_comp}Targets.cmake") - endif() -endforeach() +#----------------------------------------------------------------------------- +# +# OpenCASCADEConfig.cmake - OpenCASCADE CMake configuration file for external projects. +# +# This file is configured by OpenCASCADE. +# + +if(OpenCASCADE_ALREADY_INCLUDED) + return() +endif() +set(OpenCASCADE_ALREADY_INCLUDED 1) + +# The OpenCASCADE version number +set (OpenCASCADE_MAJOR_VERSION "@OCC_VERSION_MAJOR@") +set (OpenCASCADE_MINOR_VERSION "@OCC_VERSION_MINOR@") +set (OpenCASCADE_MAINTENANCE_VERSION "@OCC_VERSION_MAINTENANCE@") +set (OpenCASCADE_DEVELOPMENT_VERSION "@OCC_VERSION_DEVELOPMENT@") + +# Compute the installation prefix from this OpenCASCADEConfig.cmake file +# location, by going up one level + one level if "cmake" + one level if "lib". +# This is made to support different locations of CMake files: +# - in UNIX style: $INSTALL_DIR/lib/cmake/opencascade- +# - in Windows style: $INSTALL_DIR/cmake +# - in Android style: $INSTALL_DIR/libs/$CMAKE_ANDROID_ARCH_ABI/cmake/opencascade- +get_filename_component (OpenCASCADE_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) +if (OpenCASCADE_INSTALL_PREFIX MATCHES "/cmake$") + get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) +endif() +if (OpenCASCADE_INSTALL_PREFIX MATCHES "/lib$") + get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) +endif() +if (OpenCASCADE_INSTALL_PREFIX MATCHES "/libs/${CMAKE_ANDROID_ARCH_ABI}$") + get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) + get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) +endif() + +# Set OpenCASCADE paths to headers, binaries, libraries, resources, tests, samples, data +set (OpenCASCADE_BINARY_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_BIN@") +set (OpenCASCADE_LIBRARY_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_LIB@") +set (OpenCASCADE_SCRIPT_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_SCRIPT@") +set (OpenCASCADE_INCLUDE_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_INCLUDE@") +set (OpenCASCADE_RESOURCE_DIR "${OpenCASCADE_INSTALL_PREFIX}/@INSTALL_DIR_RESOURCE@") + +# The C and C++ flags added by OpenCASCADE to the cmake-configured flags. +set (OpenCASCADE_C_FLAGS "@CMAKE_C_FLAGS@") +set (OpenCASCADE_CXX_FLAGS "@CMAKE_CXX_FLAGS@") +@SET_OpenCASCADE_LINKER_FLAGS@ + +# List of available OpenCASCADE modules. +set (OpenCASCADE_MODULES @OCCT_MODULES_ENABLED@) +@SET_OpenCASCADE_MODULES_TOOLKITS@ +# List of available OpenCASCADE libraries. +set (OpenCASCADE_LIBRARIES @OCCT_LIBRARIES@) + +# OpenCASCADE global configuration options. +set (OpenCASCADE_COMPILER "@COMPILER@") +set (OpenCASCADE_BUILD_WITH_DEBUG @BUILD_WITH_DEBUG@) +set (OpenCASCADE_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@) +@SET_OpenCASCADE_BUILD_TYPE@ + +# Use of third-party libraries. +set (OpenCASCADE_WITH_TCL @USE_TCL@) +set (OpenCASCADE_WITH_FREETYPE @USE_FREETYPE@) +set (OpenCASCADE_WITH_FREEIMAGE @USE_FREEIMAGE@) +set (OpenCASCADE_WITH_TBB @USE_TBB@) +set (OpenCASCADE_WITH_VTK @USE_VTK@) +set (OpenCASCADE_WITH_FFMPEG @USE_FFMPEG@) +set (OpenCASCADE_WITH_GLES2 @USE_GLES2@) +@SET_OpenCASCADE_WITH_D3D@ +@SET_OpenCASCADE_WITH_GLX@ + +# Import OpenCASCADE compile definitions, C and C++ flags for each installed configuration. +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/OpenCASCADECompileDefinitionsAndFlags-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +if (NOT OpenCASCADE_FIND_COMPONENTS) + set (OpenCASCADE_FIND_COMPONENTS ${OpenCASCADE_MODULES}) +endif () + +# Import OpenCASCADE targets. +foreach(_comp ${OpenCASCADE_FIND_COMPONENTS}) + if (NOT ";${OpenCASCADE_MODULES};" MATCHES "${_comp}") + set(OpenCASCADE_FOUND False) + set(OpenCASCADE_NOTFOUND_MESSAGE "Specified unsupported component: ${_comp}") + if (NOT OpenCASCADE_FIND_QUIETLY) + message (ERROR ": ${OpenCASCADE_NOTFOUND_MESSAGE}") + endif() + else() + include("${CMAKE_CURRENT_LIST_DIR}/OpenCASCADE${_comp}Targets.cmake") + endif() +endforeach() diff --git a/adm/templates/android.toolchain.config.cmake b/adm/templates/android.toolchain.config.cmake index 3c5c70d563..2fd2bcad96 100644 --- a/adm/templates/android.toolchain.config.cmake +++ b/adm/templates/android.toolchain.config.cmake @@ -1,8 +1,8 @@ -# A toolchain file to configure a Makefile Generators or the Ninja generator to target Android for cross-compiling. -# Set CMAKE_ANDROID_NDK variable equal to your Android NDK path. - -set (CMAKE_SYSTEM_NAME Android) -set (CMAKE_SYSTEM_VERSION 15) # API level -set (CMAKE_ANDROID_ARCH_ABI armeabi-v7a) -set (CMAKE_ANDROID_NDK "") -set (CMAKE_ANDROID_STL_TYPE gnustl_shared) +# A toolchain file to configure a Makefile Generators or the Ninja generator to target Android for cross-compiling. +# Set CMAKE_ANDROID_NDK variable equal to your Android NDK path. + +set (CMAKE_SYSTEM_NAME Android) +set (CMAKE_SYSTEM_VERSION 15) # API level +set (CMAKE_ANDROID_ARCH_ABI armeabi-v7a) +set (CMAKE_ANDROID_NDK "") +set (CMAKE_ANDROID_STL_TYPE gnustl_shared) diff --git a/adm/templates/custom.bat.main b/adm/templates/custom.bat.main index 328c03067a..c88ef02b32 100644 --- a/adm/templates/custom.bat.main +++ b/adm/templates/custom.bat.main @@ -1,5 +1,5 @@ -echo off - -rem include other custom.bat files with specific 3rdparty paths -@ADDITIONAL_CUSTOM_CONTENT@ - +echo off + +rem include other custom.bat files with specific 3rdparty paths +@ADDITIONAL_CUSTOM_CONTENT@ + diff --git a/adm/templates/custom.build.bat.in b/adm/templates/custom.build.bat.in index 39ad45085b..5aebf10517 100644 --- a/adm/templates/custom.build.bat.in +++ b/adm/templates/custom.build.bat.in @@ -1,46 +1,46 @@ -echo off - -if /I "%VCVER%" == "@COMPILER@" ( - if "%ARCH%" == "@COMPILER_BITNESS@" ( - rem set environment variables used by OCCT - set CSF_FPE=@BUILD_ENABLE_FPE_SIGNAL_HANDLER@ - - set "TCL_DIR=@3RDPARTY_TCL_DLL_DIR@" - set "TK_DIR=@3RDPARTY_TK_DLL_DIR@" - set "FREETYPE_DIR=@3RDPARTY_FREETYPE_DLL_DIR@" - set "FREEIMAGE_DIR=@3RDPARTY_FREEIMAGE_DLL_DIRS@" - set "EGL_DIR=@3RDPARTY_EGL_DLL_DIRS@" - set "GLES2_DIR=@3RDPARTY_GLES2_DLL_DIRS@" - set "TBB_DIR=@3RDPARTY_TBB_DLL_DIR@" - set "VTK_DIR=@3RDPARTY_VTK_DLL_DIR@" - set "FFMPEG_DIR=@3RDPARTY_FFMPEG_DLL_DIR@" - set "OPENVR_DIR=@3RDPARTY_OPENVR_DLL_DIRS@" - - if not "@3RDPARTY_QT_DIR@" == "" ( - set "QTDIR=@3RDPARTY_QT_DIR@" - ) - set "TCL_VERSION_WITH_DOT=@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" - set "TK_VERSION_WITH_DOT=@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" - - rem CSF_OCCTBinPath and CSF_OCCTLibPath are defined differently for - rem multiple and single configuration builds - set "CSF_OCCTBinPath=@CMAKE_RUNTIME_OUTPUT_DIRECTORY@" - if ["@CMAKE_RUNTIME_OUTPUT_DIRECTORY@"] == [""] ( - set "CSF_OCCTBinPath=@CMAKE_BINARY_DIR@/win%ARCH%/%VCVER%/bin%3" - ) - set "CSF_OCCTLibPath=@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@" - if ["@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@"] == [""] ( - set "CSF_OCCTLibPath=@CMAKE_BINARY_DIR@/win%ARCH%/%VCVER%/lib%3" - ) - - set "CSF_OCCTIncludePath=@CMAKE_BINARY_DIR@/inc" - set "CSF_OCCTResourcePath=@CMAKE_SOURCE_DIR@/src" - set "CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data" - set "CSF_OCCTSamplesPath=@CMAKE_SOURCE_DIR@/samples" - set "CSF_OCCTTestsPath=@CMAKE_SOURCE_DIR@/tests" - set "CSF_OCCTDocPath=@CMAKE_SOURCE_DIR@/doc" - - rem for compatibility with external application using CASROOT - set "CASROOT=@CMAKE_SOURCE_DIR@" - ) -) +echo off + +if /I "%VCVER%" == "@COMPILER@" ( + if "%ARCH%" == "@COMPILER_BITNESS@" ( + rem set environment variables used by OCCT + set CSF_FPE=@BUILD_ENABLE_FPE_SIGNAL_HANDLER@ + + set "TCL_DIR=@3RDPARTY_TCL_DLL_DIR@" + set "TK_DIR=@3RDPARTY_TK_DLL_DIR@" + set "FREETYPE_DIR=@3RDPARTY_FREETYPE_DLL_DIR@" + set "FREEIMAGE_DIR=@3RDPARTY_FREEIMAGE_DLL_DIRS@" + set "EGL_DIR=@3RDPARTY_EGL_DLL_DIRS@" + set "GLES2_DIR=@3RDPARTY_GLES2_DLL_DIRS@" + set "TBB_DIR=@3RDPARTY_TBB_DLL_DIR@" + set "VTK_DIR=@3RDPARTY_VTK_DLL_DIR@" + set "FFMPEG_DIR=@3RDPARTY_FFMPEG_DLL_DIR@" + set "OPENVR_DIR=@3RDPARTY_OPENVR_DLL_DIRS@" + + if not "@3RDPARTY_QT_DIR@" == "" ( + set "QTDIR=@3RDPARTY_QT_DIR@" + ) + set "TCL_VERSION_WITH_DOT=@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" + set "TK_VERSION_WITH_DOT=@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" + + rem CSF_OCCTBinPath and CSF_OCCTLibPath are defined differently for + rem multiple and single configuration builds + set "CSF_OCCTBinPath=@CMAKE_RUNTIME_OUTPUT_DIRECTORY@" + if ["@CMAKE_RUNTIME_OUTPUT_DIRECTORY@"] == [""] ( + set "CSF_OCCTBinPath=@CMAKE_BINARY_DIR@/win%ARCH%/%VCVER%/bin%3" + ) + set "CSF_OCCTLibPath=@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@" + if ["@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@"] == [""] ( + set "CSF_OCCTLibPath=@CMAKE_BINARY_DIR@/win%ARCH%/%VCVER%/lib%3" + ) + + set "CSF_OCCTIncludePath=@CMAKE_BINARY_DIR@/inc" + set "CSF_OCCTResourcePath=@CMAKE_SOURCE_DIR@/src" + set "CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data" + set "CSF_OCCTSamplesPath=@CMAKE_SOURCE_DIR@/samples" + set "CSF_OCCTTestsPath=@CMAKE_SOURCE_DIR@/tests" + set "CSF_OCCTDocPath=@CMAKE_SOURCE_DIR@/doc" + + rem for compatibility with external application using CASROOT + set "CASROOT=@CMAKE_SOURCE_DIR@" + ) +) diff --git a/adm/templates/custom.build.sh.in b/adm/templates/custom.build.sh.in index 1f3d2018be..058b6cfffd 100644 --- a/adm/templates/custom.build.sh.in +++ b/adm/templates/custom.build.sh.in @@ -1,36 +1,36 @@ -#!/bin/bash - -if [ "$1" == "@BIN_LETTER@" ]; then - if [ "$2" == "@COMPILER_BITNESS@" ]; then - # set environment variables used by OCCT - export CSF_FPE=@BUILD_ENABLE_FPE_SIGNAL_HANDLER@ - - export TCL_DIR="@3RDPARTY_TCL_LIBRARY_DIR@" - export TK_DIR="@3RDPARTY_TK_LIBRARY_DIR@" - export FREETYPE_DIR="@3RDPARTY_FREETYPE_LIBRARY_DIR@" - export FREEIMAGE_DIR="@3RDPARTY_FREEIMAGE_LIBRARY_DIRS@" - export TBB_DIR="@3RDPARTY_TBB_LIBRARY_DIR@" - export VTK_DIR="@3RDPARTY_VTK_LIBRARY_DIR@" - export FFMPEG_DIR="@3RDPARTY_FFMPEG_LIBRARY_DIR@" - - if [ "x@3RDPARTY_QT_DIR" != "x" ]; then - export QTDIR="@3RDPARTY_QT_DIR@" - fi - - export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" - export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" - - export CSF_OCCTBinPath="@CMAKE_RUNTIME_OUTPUT_DIRECTORY@" - export CSF_OCCTLibPath="@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@" - export CSF_OCCTIncludePath="@CMAKE_BINARY_DIR@/inc" - export CSF_OCCTResourcePath="@CMAKE_SOURCE_DIR@/src" - export CSF_OCCTDataPath="@CMAKE_SOURCE_DIR@/data" - export CSF_OCCTSamplesPath="@CMAKE_SOURCE_DIR@/samples" - export CSF_OCCTTestsPath="@CMAKE_SOURCE_DIR@/tests" - export CSF_OCCTDocPath="@CMAKE_SOURCE_DIR@/doc" - - # for compatibility with external application using CASROOT - export CASROOT="@CMAKE_SOURCE_DIR@" - fi -fi - +#!/bin/bash + +if [ "$1" == "@BIN_LETTER@" ]; then + if [ "$2" == "@COMPILER_BITNESS@" ]; then + # set environment variables used by OCCT + export CSF_FPE=@BUILD_ENABLE_FPE_SIGNAL_HANDLER@ + + export TCL_DIR="@3RDPARTY_TCL_LIBRARY_DIR@" + export TK_DIR="@3RDPARTY_TK_LIBRARY_DIR@" + export FREETYPE_DIR="@3RDPARTY_FREETYPE_LIBRARY_DIR@" + export FREEIMAGE_DIR="@3RDPARTY_FREEIMAGE_LIBRARY_DIRS@" + export TBB_DIR="@3RDPARTY_TBB_LIBRARY_DIR@" + export VTK_DIR="@3RDPARTY_VTK_LIBRARY_DIR@" + export FFMPEG_DIR="@3RDPARTY_FFMPEG_LIBRARY_DIR@" + + if [ "x@3RDPARTY_QT_DIR" != "x" ]; then + export QTDIR="@3RDPARTY_QT_DIR@" + fi + + export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" + export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" + + export CSF_OCCTBinPath="@CMAKE_RUNTIME_OUTPUT_DIRECTORY@" + export CSF_OCCTLibPath="@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@" + export CSF_OCCTIncludePath="@CMAKE_BINARY_DIR@/inc" + export CSF_OCCTResourcePath="@CMAKE_SOURCE_DIR@/src" + export CSF_OCCTDataPath="@CMAKE_SOURCE_DIR@/data" + export CSF_OCCTSamplesPath="@CMAKE_SOURCE_DIR@/samples" + export CSF_OCCTTestsPath="@CMAKE_SOURCE_DIR@/tests" + export CSF_OCCTDocPath="@CMAKE_SOURCE_DIR@/doc" + + # for compatibility with external application using CASROOT + export CASROOT="@CMAKE_SOURCE_DIR@" + fi +fi + diff --git a/adm/templates/custom.install.bat.in b/adm/templates/custom.install.bat.in index 041152bdda..c5343ec702 100644 --- a/adm/templates/custom.install.bat.in +++ b/adm/templates/custom.install.bat.in @@ -1,38 +1,38 @@ -echo off - -rem CASDEB comes as third argument - -if /I "%VCVER%" == "@COMPILER@" ( - if "%ARCH%" == "@COMPILER_BITNESS@" ( - rem set environment variables used by OCCT - set CSF_FPE=@BUILD_ENABLE_FPE_SIGNAL_HANDLER@ - - set "TCL_DIR=@USED_3RDPARTY_TCL_DIR@" - set "TK_DIR=@USED_3RDPARTY_TK_DIR@" - set "FREETYPE_DIR=@USED_3RDPARTY_FREETYPE_DIR@" - set "FREEIMAGE_DIR=@USED_3RDPARTY_FREEIMAGE_DIR@" - set "EGL_DIR=@USED_3RDPARTY_EGL_DIRS@" - set "GLES2_DIR=@USED_3RDPARTY_GLES2_DIRS@" - set "TBB_DIR=@USED_3RDPARTY_TBB_DIR@" - set "VTK_DIR=@USED_3RDPARTY_VTK_DIR@" - set "FFMPEG_DIR=@USED_3RDPARTY_FFMPEG_DIR@" - set "OPENVR_DIR=@USED_3RDPARTY_OPENVR_DIR@" - - if not "@USED_3RDPARTY_QT_DIR@" == "" ( - set "QTDIR=@USED_3RDPARTY_QT_DIR@" - ) - set "TCL_VERSION_WITH_DOT=@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" - set "TK_VERSION_WITH_DOT=@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" - - set "CSF_OCCTBinPath=%CASROOT%/@INSTALL_DIR_BIN@%3" - set "CSF_OCCTLibPath=%CASROOT%/@INSTALL_DIR_LIB@%3" - - set "CSF_OCCTIncludePath=%CASROOT%/@INSTALL_DIR_INCLUDE@" - set "CSF_OCCTResourcePath=%CASROOT%/@INSTALL_DIR_RESOURCE@" - set "CSF_OCCTDataPath=%CASROOT%/@INSTALL_DIR_DATA@" - set "CSF_OCCTSamplesPath=%CASROOT%/@INSTALL_DIR_SAMPLES@" - set "CSF_OCCTTestsPath=%CASROOT%/@INSTALL_DIR_TESTS@" - set "CSF_OCCTDocPath=%CASROOT%/@INSTALL_DIR_DOC@" - ) -) - +echo off + +rem CASDEB comes as third argument + +if /I "%VCVER%" == "@COMPILER@" ( + if "%ARCH%" == "@COMPILER_BITNESS@" ( + rem set environment variables used by OCCT + set CSF_FPE=@BUILD_ENABLE_FPE_SIGNAL_HANDLER@ + + set "TCL_DIR=@USED_3RDPARTY_TCL_DIR@" + set "TK_DIR=@USED_3RDPARTY_TK_DIR@" + set "FREETYPE_DIR=@USED_3RDPARTY_FREETYPE_DIR@" + set "FREEIMAGE_DIR=@USED_3RDPARTY_FREEIMAGE_DIR@" + set "EGL_DIR=@USED_3RDPARTY_EGL_DIRS@" + set "GLES2_DIR=@USED_3RDPARTY_GLES2_DIRS@" + set "TBB_DIR=@USED_3RDPARTY_TBB_DIR@" + set "VTK_DIR=@USED_3RDPARTY_VTK_DIR@" + set "FFMPEG_DIR=@USED_3RDPARTY_FFMPEG_DIR@" + set "OPENVR_DIR=@USED_3RDPARTY_OPENVR_DIR@" + + if not "@USED_3RDPARTY_QT_DIR@" == "" ( + set "QTDIR=@USED_3RDPARTY_QT_DIR@" + ) + set "TCL_VERSION_WITH_DOT=@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" + set "TK_VERSION_WITH_DOT=@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" + + set "CSF_OCCTBinPath=%CASROOT%/@INSTALL_DIR_BIN@%3" + set "CSF_OCCTLibPath=%CASROOT%/@INSTALL_DIR_LIB@%3" + + set "CSF_OCCTIncludePath=%CASROOT%/@INSTALL_DIR_INCLUDE@" + set "CSF_OCCTResourcePath=%CASROOT%/@INSTALL_DIR_RESOURCE@" + set "CSF_OCCTDataPath=%CASROOT%/@INSTALL_DIR_DATA@" + set "CSF_OCCTSamplesPath=%CASROOT%/@INSTALL_DIR_SAMPLES@" + set "CSF_OCCTTestsPath=%CASROOT%/@INSTALL_DIR_TESTS@" + set "CSF_OCCTDocPath=%CASROOT%/@INSTALL_DIR_DOC@" + ) +) + diff --git a/adm/templates/custom.install.sh.in b/adm/templates/custom.install.sh.in index 79a4fa3a70..f3e546356a 100644 --- a/adm/templates/custom.install.sh.in +++ b/adm/templates/custom.install.sh.in @@ -1,33 +1,33 @@ -#!/bin/bash - -if [ "$1" == "@BIN_LETTER@" ]; then - if [ "$2" == "@COMPILER_BITNESS@" ]; then - # set environment variables used by OCCT - export CSF_FPE=@BUILD_ENABLE_FPE_SIGNAL_HANDLER@ - - export TCL_DIR="@USED_3RDPARTY_TCL_DIR@" - export TK_DIR="@USED_3RDPARTY_TK_DIR@" - export FREETYPE_DIR="@USED_3RDPARTY_FREETYPE_DIR@" - export FREEIMAGE_DIR="@USED_3RDPARTY_FREEIMAGE_DIRS@" - export TBB_DIR="@USED_3RDPARTY_TBB_DIR@" - export VTK_DIR="@USED_3RDPARTY_VTK_DIR@" - export FFMPEG_DIR="@USED_3RDPARTY_FFMPEG_DIR@" - - if [ "x@USED_3RDPARTY_QT_DIR@" != "x" ]; then - export QTDIR="@USED_3RDPARTY_QT_DIR@" - fi - - export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" - export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" - - export CSF_OCCTBinPath="${CASROOT}/@INSTALL_DIR_BIN@" - export CSF_OCCTLibPath="${CASROOT}/@INSTALL_DIR_LIB@" - export CSF_OCCTIncludePath="${CASROOT}/@INSTALL_DIR_INCLUDE@" - export CSF_OCCTResourcePath="${CASROOT}/@INSTALL_DIR_RESOURCE@" - export CSF_OCCTDataPath="${CASROOT}/@INSTALL_DIR_DATA@" - export CSF_OCCTSamplesPath="${CASROOT}/@INSTALL_DIR_SAMPLES@" - export CSF_OCCTTestsPath="${CASROOT}/@INSTALL_DIR_TESTS@" - export CSF_OCCTDocPath="${CASROOT}/@INSTALL_DIR_DOC@" - fi -fi - +#!/bin/bash + +if [ "$1" == "@BIN_LETTER@" ]; then + if [ "$2" == "@COMPILER_BITNESS@" ]; then + # set environment variables used by OCCT + export CSF_FPE=@BUILD_ENABLE_FPE_SIGNAL_HANDLER@ + + export TCL_DIR="@USED_3RDPARTY_TCL_DIR@" + export TK_DIR="@USED_3RDPARTY_TK_DIR@" + export FREETYPE_DIR="@USED_3RDPARTY_FREETYPE_DIR@" + export FREEIMAGE_DIR="@USED_3RDPARTY_FREEIMAGE_DIRS@" + export TBB_DIR="@USED_3RDPARTY_TBB_DIR@" + export VTK_DIR="@USED_3RDPARTY_VTK_DIR@" + export FFMPEG_DIR="@USED_3RDPARTY_FFMPEG_DIR@" + + if [ "x@USED_3RDPARTY_QT_DIR@" != "x" ]; then + export QTDIR="@USED_3RDPARTY_QT_DIR@" + fi + + export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" + export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" + + export CSF_OCCTBinPath="${CASROOT}/@INSTALL_DIR_BIN@" + export CSF_OCCTLibPath="${CASROOT}/@INSTALL_DIR_LIB@" + export CSF_OCCTIncludePath="${CASROOT}/@INSTALL_DIR_INCLUDE@" + export CSF_OCCTResourcePath="${CASROOT}/@INSTALL_DIR_RESOURCE@" + export CSF_OCCTDataPath="${CASROOT}/@INSTALL_DIR_DATA@" + export CSF_OCCTSamplesPath="${CASROOT}/@INSTALL_DIR_SAMPLES@" + export CSF_OCCTTestsPath="${CASROOT}/@INSTALL_DIR_TESTS@" + export CSF_OCCTDocPath="${CASROOT}/@INSTALL_DIR_DOC@" + fi +fi + diff --git a/adm/templates/custom.sh.main b/adm/templates/custom.sh.main index 7f8928a202..1d47fce1e1 100644 --- a/adm/templates/custom.sh.main +++ b/adm/templates/custom.sh.main @@ -1,4 +1,4 @@ -#!/bin/bash - -@ADDITIONAL_CUSTOM_CONTENT@ - +#!/bin/bash + +@ADDITIONAL_CUSTOM_CONTENT@ + diff --git a/adm/templates/env.bat.in b/adm/templates/env.bat.in index 354a177cd1..5965c311ab 100644 --- a/adm/templates/env.bat.in +++ b/adm/templates/env.bat.in @@ -1,195 +1,195 @@ -echo off - -set "SCRIPTROOT=%~dp0" -set "SCRIPTROOT=%SCRIPTROOT:~0,-1%" - -rem ----- Reset values to defaults ----- -set "VCVER=@COMPILER@" -set "ARCH=@COMPILER_BITNESS@" -set "CASDEB=" - -if not ["%1"] == [""] set "VCVER=%1" -if not ["%2"] == [""] set "ARCH=%2" -if /I ["%ARCH%"] == ["win32"] set "ARCH=32" -if /I ["%ARCH%"] == ["win64"] set "ARCH=64" -if /I ["%3"] == ["debug"] set "CASDEB=d" -if /I ["%3"] == ["d"] set "CASDEB=d" -if /I ["%3"] == ["i"] set "CASDEB=i" -if /I ["%3"] == ["relwithdeb"] set "CASDEB=i" - -rem ----- Decode VCVER variable and define related ones ----- -rem -rem VCFMT - "vc" followed by full version number of Visual Studio toolset -rem (same as VCVER without optional suffix "-uwp") -rem VCLIB - name of folder contining binaries -rem (same as VCVER except without third version in number) -rem VCPROP - name of required Visual Studion Workload (starting with VS 2017) -rem -rem Note that for VS before 2015 (vc14) always -rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop - -rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined -rem any more, we can only use vswhere.exe tool to find Visual Studio. -rem Add path to vswhere.exe -if /I not "%VCFMT%" == "gcc" ( - set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer" -) - -rem for vc10-12, interpretation is trivial -set VCFMT=%VCVER% -set VCLIB=%VCVER:~0,4% -set VCPROP=NativeDesktop -rem vc14 and later can have optional suffix "-uwp" -if "%VCVER:~-4%" == "-uwp" ( - set VCFMT=%VCVER:~0,-4% - set VCLIB=%VCLIB%-uwp - set VCPROP=Universal -) -rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP% - -rem ----- Parsing of Visual Studio platform ----- -set "VisualStudioExpressName=VCExpress" - -if not "%DevEnvDir%" == "" ( - rem If DevEnvDir is already defined (e.g. in custom.bat), use that value -) else if /I "%VCFMT%" == "vc9" ( - set "DevEnvDir=%VS90COMNTOOLS%..\IDE" -) else if /I "%VCFMT%" == "vc10" ( - set "DevEnvDir=%VS100COMNTOOLS%..\IDE" -) else if /I "%VCFMT%" == "vc11" ( - set "DevEnvDir=%VS110COMNTOOLS%..\IDE" - rem Visual Studio Express starting from VS 2012 is called "for Windows Desktop" - rem and has a new name for executable - WDExpress - set "VisualStudioExpressName=WDExpress" -) else if /I "%VCFMT%" == "vc12" ( - set "DevEnvDir=%VS120COMNTOOLS%..\IDE" - set "VisualStudioExpressName=WDExpress" -) else if /I "%VCFMT%" == "vc14" ( - set "DevEnvDir=%VS140COMNTOOLS%..\IDE" -) else if /I "%VCFMT%" == "vc141" ( - for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( - set "DevEnvDir=%%i\Common7\IDE\" - ) -) else if /I "%VCFMT%" == "vc142" ( - for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( - set "DevEnvDir=%%i\Common7\IDE\" - ) -) else if /I "%VCFMT%" == "vc143" ( - for /f "usebackq delims=" %%i in (`vswhere.exe -version "[17.0,17.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( - set "DevEnvDir=%%i\Common7\IDE\" - ) -) else if /I "%VCFMT%" == "gcc" ( - rem MinGW -) else ( - echo Error: wrong VS identifier - exit /B -) - -rem ----- Parsing vcvarsall for qt samples and define PlatformToolset ----- -if /I "%VCFMT%" == "vc9" ( - set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat" - set "VCPlatformToolSet=v90" -) else if /I "%VCFMT%" == "vc10" ( - set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" - set "VCPlatformToolSet=v100" -) else if /I "%VCFMT%" == "vc11" ( - set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat" - set "VCPlatformToolSet=v110" -) else if /I "%VCFMT%" == "vc12" ( - set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat" - set "VCPlatformToolSet=v120" -) else if /I "%VCFMT%" == "vc14" ( - set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" - set "VCPlatformToolSet=v140" -) else if /I "%VCFMT%" == "vc141" ( - for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( - set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat" - ) - set "VCPlatformToolSet=v141" -) else if /I "%VCFMT%" == "vc142" ( - for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( - set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat" - ) - set "VCPlatformToolSet=v142" -) else if /I "%VCFMT%" == "vc143" ( - for /f "usebackq delims=" %%i in (`vswhere.exe -version "[17.0,17.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( - set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat" - ) - set "VCPlatformToolSet=v142" -) else if /I "%VCFMT%" == "gcc" ( - rem MinGW -) else ( - echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++, - echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^) - exit -) - -rem ----- For compatibility with external application using CASROOT ----- -if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%" - -rem ----- Define path to 3rdparty products ----- -if ["%THIRDPARTY_DIR%"] == [""] set "THIRDPARTY_DIR=@3RDPARTY_DIR@" - -if ["%ARCH%"] == ["32"] set VCARCH=x86 -if ["%ARCH%"] == ["64"] set VCARCH=amd64 - -if /I ["%1"] == ["vc141"] set "VCVER=vc14" -if /I ["%1"] == ["vc142"] set "VCVER=vc14" -if /I ["%1"] == ["vc143"] set "VCVER=vc14" - -if exist "%CASROOT%\custom.bat" ( - call "%CASROOT%\custom.bat" %VCVER% %ARCH% %CASDEB% -) - -if not ["%QTDIR%"] == [""] ( - set "PATH=%QTDIR%/bin;%PATH%" - set "QT_PLUGIN_PATH=%QTDIR%/plugins" -) -if not ["%TCL_DIR%"] == [""] set "PATH=%TCL_DIR%;%PATH%" -if not ["%TK_DIR%"] == [""] set "PATH=%TK_DIR%;%PATH%" -if not ["%FREETYPE_DIR%"] == [""] set "PATH=%FREETYPE_DIR%;%PATH%" -if not ["%FREEIMAGE_DIR%"] == [""] set "PATH=%FREEIMAGE_DIR%;%PATH%" -if not ["%EGL_DIR%"] == [""] set "PATH=%EGL_DIR%;%PATH%" -if not ["%GLES2_DIR%"] == [""] set "PATH=%GLES2_DIR%;%PATH%" -if not ["%TBB_DIR%"] == [""] set "PATH=%TBB_DIR%;%PATH%" -if not ["%VTK_DIR%"] == [""] set "PATH=%VTK_DIR%;%PATH%" -if not ["%FFMPEG_DIR%"] == [""] set "PATH=%FFMPEG_DIR%;%PATH%" -if not ["%OPENVR_DIR%"] == [""] set "PATH=%OPENVR_DIR%;%PATH%" - -rem ----- Set path to 3rd party and OCCT libraries ----- -if not "%CSF_OCCTBinPath%" == "" ( - set "PATH=%CSF_OCCTBinPath%;%PATH%" -) - -if not ["%TK_DIR%"] == ["%TCL_DIR%"] ( - if not ["%TK_DIR%"] == [""] set "TK_LIBRARY=%TK_DIR%/../lib/tk%TK_VERSION_WITH_DOT%" - if not ["%TCL_DIR%"] == [""] set "TCL_LIBRARY=%TCL_DIR%/../lib/tcl%TCL_VERSION_WITH_DOT%" -) - -rem ----- Set envoronment variables used by OCCT ----- -set CSF_LANGUAGE=us -set MMGT_CLEAR=1 -set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage" -set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures" -set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders" -set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage" -set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj" -set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource" -set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource" -set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource" -set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource" -set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource" -set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource" -set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource" -set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource" -set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt" - -rem ----- Draw Harness special stuff ----- -if exist "%CSF_OCCTResourcePath%\DrawResources" ( - set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources" - set "CSF_DrawPluginDefaults=%CSF_OCCTResourcePath%\DrawResources" - - if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" ( - set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault" - ) -) +echo off + +set "SCRIPTROOT=%~dp0" +set "SCRIPTROOT=%SCRIPTROOT:~0,-1%" + +rem ----- Reset values to defaults ----- +set "VCVER=@COMPILER@" +set "ARCH=@COMPILER_BITNESS@" +set "CASDEB=" + +if not ["%1"] == [""] set "VCVER=%1" +if not ["%2"] == [""] set "ARCH=%2" +if /I ["%ARCH%"] == ["win32"] set "ARCH=32" +if /I ["%ARCH%"] == ["win64"] set "ARCH=64" +if /I ["%3"] == ["debug"] set "CASDEB=d" +if /I ["%3"] == ["d"] set "CASDEB=d" +if /I ["%3"] == ["i"] set "CASDEB=i" +if /I ["%3"] == ["relwithdeb"] set "CASDEB=i" + +rem ----- Decode VCVER variable and define related ones ----- +rem +rem VCFMT - "vc" followed by full version number of Visual Studio toolset +rem (same as VCVER without optional suffix "-uwp") +rem VCLIB - name of folder contining binaries +rem (same as VCVER except without third version in number) +rem VCPROP - name of required Visual Studion Workload (starting with VS 2017) +rem +rem Note that for VS before 2015 (vc14) always +rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop + +rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined +rem any more, we can only use vswhere.exe tool to find Visual Studio. +rem Add path to vswhere.exe +if /I not "%VCFMT%" == "gcc" ( + set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer" +) + +rem for vc10-12, interpretation is trivial +set VCFMT=%VCVER% +set VCLIB=%VCVER:~0,4% +set VCPROP=NativeDesktop +rem vc14 and later can have optional suffix "-uwp" +if "%VCVER:~-4%" == "-uwp" ( + set VCFMT=%VCVER:~0,-4% + set VCLIB=%VCLIB%-uwp + set VCPROP=Universal +) +rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP% + +rem ----- Parsing of Visual Studio platform ----- +set "VisualStudioExpressName=VCExpress" + +if not "%DevEnvDir%" == "" ( + rem If DevEnvDir is already defined (e.g. in custom.bat), use that value +) else if /I "%VCFMT%" == "vc9" ( + set "DevEnvDir=%VS90COMNTOOLS%..\IDE" +) else if /I "%VCFMT%" == "vc10" ( + set "DevEnvDir=%VS100COMNTOOLS%..\IDE" +) else if /I "%VCFMT%" == "vc11" ( + set "DevEnvDir=%VS110COMNTOOLS%..\IDE" + rem Visual Studio Express starting from VS 2012 is called "for Windows Desktop" + rem and has a new name for executable - WDExpress + set "VisualStudioExpressName=WDExpress" +) else if /I "%VCFMT%" == "vc12" ( + set "DevEnvDir=%VS120COMNTOOLS%..\IDE" + set "VisualStudioExpressName=WDExpress" +) else if /I "%VCFMT%" == "vc14" ( + set "DevEnvDir=%VS140COMNTOOLS%..\IDE" +) else if /I "%VCFMT%" == "vc141" ( + for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( + set "DevEnvDir=%%i\Common7\IDE\" + ) +) else if /I "%VCFMT%" == "vc142" ( + for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( + set "DevEnvDir=%%i\Common7\IDE\" + ) +) else if /I "%VCFMT%" == "vc143" ( + for /f "usebackq delims=" %%i in (`vswhere.exe -version "[17.0,17.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( + set "DevEnvDir=%%i\Common7\IDE\" + ) +) else if /I "%VCFMT%" == "gcc" ( + rem MinGW +) else ( + echo Error: wrong VS identifier + exit /B +) + +rem ----- Parsing vcvarsall for qt samples and define PlatformToolset ----- +if /I "%VCFMT%" == "vc9" ( + set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat" + set "VCPlatformToolSet=v90" +) else if /I "%VCFMT%" == "vc10" ( + set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" + set "VCPlatformToolSet=v100" +) else if /I "%VCFMT%" == "vc11" ( + set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat" + set "VCPlatformToolSet=v110" +) else if /I "%VCFMT%" == "vc12" ( + set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat" + set "VCPlatformToolSet=v120" +) else if /I "%VCFMT%" == "vc14" ( + set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" + set "VCPlatformToolSet=v140" +) else if /I "%VCFMT%" == "vc141" ( + for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( + set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat" + ) + set "VCPlatformToolSet=v141" +) else if /I "%VCFMT%" == "vc142" ( + for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( + set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat" + ) + set "VCPlatformToolSet=v142" +) else if /I "%VCFMT%" == "vc143" ( + for /f "usebackq delims=" %%i in (`vswhere.exe -version "[17.0,17.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( + set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat" + ) + set "VCPlatformToolSet=v142" +) else if /I "%VCFMT%" == "gcc" ( + rem MinGW +) else ( + echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++, + echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^) + exit +) + +rem ----- For compatibility with external application using CASROOT ----- +if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%" + +rem ----- Define path to 3rdparty products ----- +if ["%THIRDPARTY_DIR%"] == [""] set "THIRDPARTY_DIR=@3RDPARTY_DIR@" + +if ["%ARCH%"] == ["32"] set VCARCH=x86 +if ["%ARCH%"] == ["64"] set VCARCH=amd64 + +if /I ["%1"] == ["vc141"] set "VCVER=vc14" +if /I ["%1"] == ["vc142"] set "VCVER=vc14" +if /I ["%1"] == ["vc143"] set "VCVER=vc14" + +if exist "%CASROOT%\custom.bat" ( + call "%CASROOT%\custom.bat" %VCVER% %ARCH% %CASDEB% +) + +if not ["%QTDIR%"] == [""] ( + set "PATH=%QTDIR%/bin;%PATH%" + set "QT_PLUGIN_PATH=%QTDIR%/plugins" +) +if not ["%TCL_DIR%"] == [""] set "PATH=%TCL_DIR%;%PATH%" +if not ["%TK_DIR%"] == [""] set "PATH=%TK_DIR%;%PATH%" +if not ["%FREETYPE_DIR%"] == [""] set "PATH=%FREETYPE_DIR%;%PATH%" +if not ["%FREEIMAGE_DIR%"] == [""] set "PATH=%FREEIMAGE_DIR%;%PATH%" +if not ["%EGL_DIR%"] == [""] set "PATH=%EGL_DIR%;%PATH%" +if not ["%GLES2_DIR%"] == [""] set "PATH=%GLES2_DIR%;%PATH%" +if not ["%TBB_DIR%"] == [""] set "PATH=%TBB_DIR%;%PATH%" +if not ["%VTK_DIR%"] == [""] set "PATH=%VTK_DIR%;%PATH%" +if not ["%FFMPEG_DIR%"] == [""] set "PATH=%FFMPEG_DIR%;%PATH%" +if not ["%OPENVR_DIR%"] == [""] set "PATH=%OPENVR_DIR%;%PATH%" + +rem ----- Set path to 3rd party and OCCT libraries ----- +if not "%CSF_OCCTBinPath%" == "" ( + set "PATH=%CSF_OCCTBinPath%;%PATH%" +) + +if not ["%TK_DIR%"] == ["%TCL_DIR%"] ( + if not ["%TK_DIR%"] == [""] set "TK_LIBRARY=%TK_DIR%/../lib/tk%TK_VERSION_WITH_DOT%" + if not ["%TCL_DIR%"] == [""] set "TCL_LIBRARY=%TCL_DIR%/../lib/tcl%TCL_VERSION_WITH_DOT%" +) + +rem ----- Set envoronment variables used by OCCT ----- +set CSF_LANGUAGE=us +set MMGT_CLEAR=1 +set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage" +set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures" +set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders" +set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage" +set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj" +set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource" +set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource" +set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource" +set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource" +set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource" +set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource" +set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource" +set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource" +set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt" + +rem ----- Draw Harness special stuff ----- +if exist "%CSF_OCCTResourcePath%\DrawResources" ( + set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources" + set "CSF_DrawPluginDefaults=%CSF_OCCTResourcePath%\DrawResources" + + if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" ( + set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault" + ) +) diff --git a/adm/templates/env.build.sh.in b/adm/templates/env.build.sh.in index 7e11c6299e..df1e356772 100644 --- a/adm/templates/env.build.sh.in +++ b/adm/templates/env.build.sh.in @@ -1,137 +1,137 @@ -#!/bin/bash - -aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; - -# ----- For compatibility with external application using CASROOT ----- -if [ "${CASROOT}" == "" ]; then - export CASROOT="${aScriptPath}" -fi - -# ----- Define path to 3rdparty products ----- -export THIRDPARTY_DIR="@3RDPARTY_DIR@" - -# ----- Read script arguments ----- -shopt -s nocasematch -export CASDEB=""; -if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi -if [[ "$1" == "d" ]]; then export CASDEB="d"; fi -if [[ "$1" == "relwithdeb" ]]; then export CASDEB="i"; fi -if [[ "$1" == "i" ]]; then export CASDEB="i"; fi -shopt -u nocasematch - -# ----- Set path to 3rd party and OCCT libraries ----- -anArch=`uname -m` -if [ "$anArch" != "x86_64" ] && [ "$anArch" != "ia64" ]; then - export ARCH="32"; -else - export ARCH="64"; -fi - -aSystem=`uname -s` -if [ "$aSystem" == "Darwin" ]; then - export WOKSTATION="mac"; - export ARCH="64"; -else - export WOKSTATION="lin"; -fi - -# ----- Set local settings ----- -if [ -e "${CASROOT}/custom.sh" ]; then - source "${CASROOT}/custom.sh" "${CASDEB}" "${ARCH}" -fi - -THRDPARTY_PATH="" -if [ "$TCL_DIR" != "" ]; then - THRDPARTY_PATH="${TCL_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$TK_DIR" != "" ]; then - THRDPARTY_PATH="${TK_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$FREETYPE_DIR" != "" ]; then - THRDPARTY_PATH="${FREETYPE_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$FREEIMAGE_DIR" != "" ]; then - THRDPARTY_PATH="${FREEIMAGE_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$TBB_DIR" != "" ]; then - THRDPARTY_PATH="${TBB_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$VTK_DIR" != "" ]; then - THRDPARTY_PATH="${VTK_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$FFMPEG_DIR" != "" ]; then - THRDPARTY_PATH="${FFMPEG_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$QTDIR" != "" ]; then - THRDPARTY_PATH="${QTDIR}/lib:${THRDPARTY_PATH}" -fi - -if [ "$TK_DIR" != "$TCL_DIR" ]; then - if [ "$TK_DIR" != "" ]; then - export TK_LIBRARY="${TK_DIR}/../lib/tk${TK_VERSION_WITH_DOT}" - fi - if [ "$TCL_DIR" != "" ]; then - export TCL_LIBRARY="${TCL_DIR}/../lib/tcl${TCL_VERSION_WITH_DOT}" - fi -fi - -if [ "$LD_LIBRARY_PATH" != "" ]; then - export LD_LIBRARY_PATH="${THRDPARTY_PATH}:${LD_LIBRARY_PATH}" -else - export LD_LIBRARY_PATH="${THRDPARTY_PATH}" -fi - -if [ "$CSF_OCCTBinPath" != "" ]; then - export PATH="${CSF_OCCTBinPath}:${PATH}" -fi - -if [ "$CSF_OCCTLibPath" != "" ]; then - if [ "$LD_LIBRARY_PATH" != "" ]; then - export LD_LIBRARY_PATH="${CSF_OCCTLibPath}:${LD_LIBRARY_PATH}" - else - export LD_LIBRARY_PATH="${CSF_OCCTLibPath}" - fi -fi - -if [ "$WOKSTATION" == "mac" ]; then - if [ "$DYLD_LIBRARY_PATH" != "" ]; then - export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DYLD_LIBRARY_PATH}" - else - export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}" - fi -fi - -# ----- Set envoronment variables used by OCCT ----- -export CSF_LANGUAGE=us -export MMGT_CLEAR=1 -export CSF_SHMessage="${CSF_OCCTResourcePath}/SHMessage" -export CSF_MDTVTexturesDirectory="${CSF_OCCTResourcePath}/Textures" -export CSF_ShadersDirectory="${CSF_OCCTResourcePath}/Shaders" -export CSF_XSMessage="${CSF_OCCTResourcePath}/XSMessage" -export CSF_TObjMessage="${CSF_OCCTResourcePath}/TObj" -export CSF_StandardDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_PluginDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_XCAFDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_TObjDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_StandardLiteDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_IGESDefaults="${CSF_OCCTResourcePath}/XSTEPResource" -export CSF_STEPDefaults="${CSF_OCCTResourcePath}/XSTEPResource" -export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource" -export CSF_MIGRATION_TYPES="${CSF_OCCTResourcePath}/StdResource/MigrationSheet.txt" - -# ----- Draw Harness special stuff ----- -if [ -e "${CSF_OCCTResourcePath}/DrawResources" ]; then - export DRAWHOME="${CSF_OCCTResourcePath}/DrawResources" - export CSF_DrawPluginDefaults="${CSF_OCCTResourcePath}/DrawResources" - - if [ -e "${CSF_OCCTResourcePath}/DrawResources/DrawDefault" ]; then - export DRAWDEFAULT="${CSF_OCCTResourcePath}/DrawResources/DrawDefault" - fi -fi +#!/bin/bash + +aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; + +# ----- For compatibility with external application using CASROOT ----- +if [ "${CASROOT}" == "" ]; then + export CASROOT="${aScriptPath}" +fi + +# ----- Define path to 3rdparty products ----- +export THIRDPARTY_DIR="@3RDPARTY_DIR@" + +# ----- Read script arguments ----- +shopt -s nocasematch +export CASDEB=""; +if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi +if [[ "$1" == "d" ]]; then export CASDEB="d"; fi +if [[ "$1" == "relwithdeb" ]]; then export CASDEB="i"; fi +if [[ "$1" == "i" ]]; then export CASDEB="i"; fi +shopt -u nocasematch + +# ----- Set path to 3rd party and OCCT libraries ----- +anArch=`uname -m` +if [ "$anArch" != "x86_64" ] && [ "$anArch" != "ia64" ]; then + export ARCH="32"; +else + export ARCH="64"; +fi + +aSystem=`uname -s` +if [ "$aSystem" == "Darwin" ]; then + export WOKSTATION="mac"; + export ARCH="64"; +else + export WOKSTATION="lin"; +fi + +# ----- Set local settings ----- +if [ -e "${CASROOT}/custom.sh" ]; then + source "${CASROOT}/custom.sh" "${CASDEB}" "${ARCH}" +fi + +THRDPARTY_PATH="" +if [ "$TCL_DIR" != "" ]; then + THRDPARTY_PATH="${TCL_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$TK_DIR" != "" ]; then + THRDPARTY_PATH="${TK_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FREETYPE_DIR" != "" ]; then + THRDPARTY_PATH="${FREETYPE_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FREEIMAGE_DIR" != "" ]; then + THRDPARTY_PATH="${FREEIMAGE_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$TBB_DIR" != "" ]; then + THRDPARTY_PATH="${TBB_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$VTK_DIR" != "" ]; then + THRDPARTY_PATH="${VTK_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FFMPEG_DIR" != "" ]; then + THRDPARTY_PATH="${FFMPEG_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$QTDIR" != "" ]; then + THRDPARTY_PATH="${QTDIR}/lib:${THRDPARTY_PATH}" +fi + +if [ "$TK_DIR" != "$TCL_DIR" ]; then + if [ "$TK_DIR" != "" ]; then + export TK_LIBRARY="${TK_DIR}/../lib/tk${TK_VERSION_WITH_DOT}" + fi + if [ "$TCL_DIR" != "" ]; then + export TCL_LIBRARY="${TCL_DIR}/../lib/tcl${TCL_VERSION_WITH_DOT}" + fi +fi + +if [ "$LD_LIBRARY_PATH" != "" ]; then + export LD_LIBRARY_PATH="${THRDPARTY_PATH}:${LD_LIBRARY_PATH}" +else + export LD_LIBRARY_PATH="${THRDPARTY_PATH}" +fi + +if [ "$CSF_OCCTBinPath" != "" ]; then + export PATH="${CSF_OCCTBinPath}:${PATH}" +fi + +if [ "$CSF_OCCTLibPath" != "" ]; then + if [ "$LD_LIBRARY_PATH" != "" ]; then + export LD_LIBRARY_PATH="${CSF_OCCTLibPath}:${LD_LIBRARY_PATH}" + else + export LD_LIBRARY_PATH="${CSF_OCCTLibPath}" + fi +fi + +if [ "$WOKSTATION" == "mac" ]; then + if [ "$DYLD_LIBRARY_PATH" != "" ]; then + export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DYLD_LIBRARY_PATH}" + else + export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}" + fi +fi + +# ----- Set envoronment variables used by OCCT ----- +export CSF_LANGUAGE=us +export MMGT_CLEAR=1 +export CSF_SHMessage="${CSF_OCCTResourcePath}/SHMessage" +export CSF_MDTVTexturesDirectory="${CSF_OCCTResourcePath}/Textures" +export CSF_ShadersDirectory="${CSF_OCCTResourcePath}/Shaders" +export CSF_XSMessage="${CSF_OCCTResourcePath}/XSMessage" +export CSF_TObjMessage="${CSF_OCCTResourcePath}/TObj" +export CSF_StandardDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_PluginDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_XCAFDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_TObjDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_StandardLiteDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_IGESDefaults="${CSF_OCCTResourcePath}/XSTEPResource" +export CSF_STEPDefaults="${CSF_OCCTResourcePath}/XSTEPResource" +export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource" +export CSF_MIGRATION_TYPES="${CSF_OCCTResourcePath}/StdResource/MigrationSheet.txt" + +# ----- Draw Harness special stuff ----- +if [ -e "${CSF_OCCTResourcePath}/DrawResources" ]; then + export DRAWHOME="${CSF_OCCTResourcePath}/DrawResources" + export CSF_DrawPluginDefaults="${CSF_OCCTResourcePath}/DrawResources" + + if [ -e "${CSF_OCCTResourcePath}/DrawResources/DrawDefault" ]; then + export DRAWDEFAULT="${CSF_OCCTResourcePath}/DrawResources/DrawDefault" + fi +fi diff --git a/adm/templates/env.install.sh.in b/adm/templates/env.install.sh.in index bdb2dec2fb..87c0767e08 100644 --- a/adm/templates/env.install.sh.in +++ b/adm/templates/env.install.sh.in @@ -1,139 +1,139 @@ -#!/bin/bash - -aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; - -# ----- For compatibility with external application using CASROOT ----- -if [ "${CASROOT}" == "" ]; then - export CASROOT="@INSTALL_DIR@" -fi - -# ----- Define path to 3rdparty products ----- -if [ "${THIRDPARTY_DIR}" == "" ]; then - export THIRDPARTY_DIR="@3RDPARTY_DIR@" -fi - -# ----- Read script arguments ----- -shopt -s nocasematch -export CASDEB=""; -if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi -if [[ "$1" == "d" ]]; then export CASDEB="d"; fi -if [[ "$1" == "relwithdeb" ]]; then export CASDEB="i"; fi -if [[ "$1" == "i" ]]; then export CASDEB="i"; fi -shopt -u nocasematch - -# ----- Set path to 3rd party and OCCT libraries ----- -anArch=`uname -m` -if [ "$anArch" != "x86_64" ] && [ "$anArch" != "ia64" ]; then - export ARCH="32"; -else - export ARCH="64"; -fi - -aSystem=`uname -s` -if [ "$aSystem" == "Darwin" ]; then - export WOKSTATION="mac"; - export ARCH="64"; -else - export WOKSTATION="lin"; -fi - -# ----- Set local settings ----- -if [ -e "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" ]; then - source "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" "${CASDEB}" "${ARCH}" -fi - -THRDPARTY_PATH="" -if [ "$TCL_DIR" != "" ]; then - THRDPARTY_PATH="${TCL_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$TK_DIR" != "" ]; then - THRDPARTY_PATH="${TK_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$FREETYPE_DIR" != "" ]; then - THRDPARTY_PATH="${FREETYPE_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$FREEIMAGE_DIR" != "" ]; then - THRDPARTY_PATH="${FREEIMAGE_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$TBB_DIR" != "" ]; then - THRDPARTY_PATH="${TBB_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$VTK_DIR" != "" ]; then - THRDPARTY_PATH="${VTK_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$FFMPEG_DIR" != "" ]; then - THRDPARTY_PATH="${FFMPEG_DIR}:${THRDPARTY_PATH}" -fi - -if [ "$QTDIR" != "" ]; then - THRDPARTY_PATH="${QTDIR}/lib:${THRDPARTY_PATH}" -fi - -if [ "$TK_DIR" != "$TCL_DIR" ]; then - if [ "$TK_DIR" != "" ]; then - export TK_LIBRARY="${TK_DIR}/../lib/tk${TK_VERSION_WITH_DOT}" - fi - if [ "$TCL_DIR" != "" ]; then - export TCL_LIBRARY="${TCL_DIR}/../lib/tcl${TCL_VERSION_WITH_DOT}" - fi -fi - -if [ "$LD_LIBRARY_PATH" != "" ]; then - export LD_LIBRARY_PATH="${THRDPARTY_PATH}:${LD_LIBRARY_PATH}" -else - export LD_LIBRARY_PATH="${THRDPARTY_PATH}" -fi - -if [ "$CSF_OCCTBinPath" != "" ]; then - export PATH="${CSF_OCCTBinPath}:${PATH}" -fi - -if [ "$CSF_OCCTLibPath" != "" ]; then - if [ "$LD_LIBRARY_PATH" != "" ]; then - export LD_LIBRARY_PATH="${CSF_OCCTLibPath}:${LD_LIBRARY_PATH}" - else - export LD_LIBRARY_PATH="${CSF_OCCTLibPath}" - fi -fi - -if [ "$WOKSTATION" == "mac" ]; then - if [ "$DYLD_LIBRARY_PATH" != "" ]; then - export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DYLD_LIBRARY_PATH}" - else - export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}" - fi -fi - -# ----- Set envoronment variables used by OCCT ----- -export CSF_LANGUAGE=us -export MMGT_CLEAR=1 -export CSF_SHMessage="${CSF_OCCTResourcePath}/SHMessage" -export CSF_MDTVTexturesDirectory="${CSF_OCCTResourcePath}/Textures" -export CSF_ShadersDirectory="${CSF_OCCTResourcePath}/Shaders" -export CSF_XSMessage="${CSF_OCCTResourcePath}/XSMessage" -export CSF_TObjMessage="${CSF_OCCTResourcePath}/TObj" -export CSF_StandardDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_PluginDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_XCAFDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_TObjDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_StandardLiteDefaults="${CSF_OCCTResourcePath}/StdResource" -export CSF_IGESDefaults="${CSF_OCCTResourcePath}/XSTEPResource" -export CSF_STEPDefaults="${CSF_OCCTResourcePath}/XSTEPResource" -export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource" -export CSF_MIGRATION_TYPES="${CSF_OCCTResourcePath}/StdResource/MigrationSheet.txt" - -# ----- Draw Harness special stuff ----- -if [ -e "${CSF_OCCTResourcePath}/DrawResources" ]; then - export DRAWHOME="${CSF_OCCTResourcePath}/DrawResources" - export CSF_DrawPluginDefaults="${CSF_OCCTResourcePath}/DrawResources" - - if [ -e "${CSF_OCCTResourcePath}/DrawResources/DrawDefault" ]; then - export DRAWDEFAULT="${CSF_OCCTResourcePath}/DrawResources/DrawDefault" - fi -fi +#!/bin/bash + +aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; + +# ----- For compatibility with external application using CASROOT ----- +if [ "${CASROOT}" == "" ]; then + export CASROOT="@INSTALL_DIR@" +fi + +# ----- Define path to 3rdparty products ----- +if [ "${THIRDPARTY_DIR}" == "" ]; then + export THIRDPARTY_DIR="@3RDPARTY_DIR@" +fi + +# ----- Read script arguments ----- +shopt -s nocasematch +export CASDEB=""; +if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi +if [[ "$1" == "d" ]]; then export CASDEB="d"; fi +if [[ "$1" == "relwithdeb" ]]; then export CASDEB="i"; fi +if [[ "$1" == "i" ]]; then export CASDEB="i"; fi +shopt -u nocasematch + +# ----- Set path to 3rd party and OCCT libraries ----- +anArch=`uname -m` +if [ "$anArch" != "x86_64" ] && [ "$anArch" != "ia64" ]; then + export ARCH="32"; +else + export ARCH="64"; +fi + +aSystem=`uname -s` +if [ "$aSystem" == "Darwin" ]; then + export WOKSTATION="mac"; + export ARCH="64"; +else + export WOKSTATION="lin"; +fi + +# ----- Set local settings ----- +if [ -e "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" ]; then + source "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" "${CASDEB}" "${ARCH}" +fi + +THRDPARTY_PATH="" +if [ "$TCL_DIR" != "" ]; then + THRDPARTY_PATH="${TCL_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$TK_DIR" != "" ]; then + THRDPARTY_PATH="${TK_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FREETYPE_DIR" != "" ]; then + THRDPARTY_PATH="${FREETYPE_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FREEIMAGE_DIR" != "" ]; then + THRDPARTY_PATH="${FREEIMAGE_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$TBB_DIR" != "" ]; then + THRDPARTY_PATH="${TBB_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$VTK_DIR" != "" ]; then + THRDPARTY_PATH="${VTK_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FFMPEG_DIR" != "" ]; then + THRDPARTY_PATH="${FFMPEG_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$QTDIR" != "" ]; then + THRDPARTY_PATH="${QTDIR}/lib:${THRDPARTY_PATH}" +fi + +if [ "$TK_DIR" != "$TCL_DIR" ]; then + if [ "$TK_DIR" != "" ]; then + export TK_LIBRARY="${TK_DIR}/../lib/tk${TK_VERSION_WITH_DOT}" + fi + if [ "$TCL_DIR" != "" ]; then + export TCL_LIBRARY="${TCL_DIR}/../lib/tcl${TCL_VERSION_WITH_DOT}" + fi +fi + +if [ "$LD_LIBRARY_PATH" != "" ]; then + export LD_LIBRARY_PATH="${THRDPARTY_PATH}:${LD_LIBRARY_PATH}" +else + export LD_LIBRARY_PATH="${THRDPARTY_PATH}" +fi + +if [ "$CSF_OCCTBinPath" != "" ]; then + export PATH="${CSF_OCCTBinPath}:${PATH}" +fi + +if [ "$CSF_OCCTLibPath" != "" ]; then + if [ "$LD_LIBRARY_PATH" != "" ]; then + export LD_LIBRARY_PATH="${CSF_OCCTLibPath}:${LD_LIBRARY_PATH}" + else + export LD_LIBRARY_PATH="${CSF_OCCTLibPath}" + fi +fi + +if [ "$WOKSTATION" == "mac" ]; then + if [ "$DYLD_LIBRARY_PATH" != "" ]; then + export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DYLD_LIBRARY_PATH}" + else + export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}" + fi +fi + +# ----- Set envoronment variables used by OCCT ----- +export CSF_LANGUAGE=us +export MMGT_CLEAR=1 +export CSF_SHMessage="${CSF_OCCTResourcePath}/SHMessage" +export CSF_MDTVTexturesDirectory="${CSF_OCCTResourcePath}/Textures" +export CSF_ShadersDirectory="${CSF_OCCTResourcePath}/Shaders" +export CSF_XSMessage="${CSF_OCCTResourcePath}/XSMessage" +export CSF_TObjMessage="${CSF_OCCTResourcePath}/TObj" +export CSF_StandardDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_PluginDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_XCAFDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_TObjDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_StandardLiteDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_IGESDefaults="${CSF_OCCTResourcePath}/XSTEPResource" +export CSF_STEPDefaults="${CSF_OCCTResourcePath}/XSTEPResource" +export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource" +export CSF_MIGRATION_TYPES="${CSF_OCCTResourcePath}/StdResource/MigrationSheet.txt" + +# ----- Draw Harness special stuff ----- +if [ -e "${CSF_OCCTResourcePath}/DrawResources" ]; then + export DRAWHOME="${CSF_OCCTResourcePath}/DrawResources" + export CSF_DrawPluginDefaults="${CSF_OCCTResourcePath}/DrawResources" + + if [ -e "${CSF_OCCTResourcePath}/DrawResources/DrawDefault" ]; then + export DRAWDEFAULT="${CSF_OCCTResourcePath}/DrawResources/DrawDefault" + fi +fi diff --git a/adm/templates/env.samples.bat.in b/adm/templates/env.samples.bat.in index a787deed46..d958ce04d8 100644 --- a/adm/templates/env.samples.bat.in +++ b/adm/templates/env.samples.bat.in @@ -1,32 +1,32 @@ -@echo off - -if exist "%~dp0custom.bat" ( - call "%~dp0custom.bat" %1 %2 %3 -) - -call "@INSTALL_DIR_ABSOLUTE@\@INSTALL_DIR_SCRIPT@\env.bat" %1 %2 %3 -if /I ["%1"] == ["vc141"] set "VCVER=vc141" -if /I ["%1"] == ["vc142"] set "VCVER=vc142" -if /I ["%1"] == ["vc143"] set "VCVER=vc143" -set "BIN_DIR=win%ARCH%\%VCVER%\bind" -set "LIB_DIR=win%ARCH%\%VCVER%\libd" - -if ["%CASDEB%"] == [""] ( - set "BIN_DIR=win%ARCH%\%VCVER%\bin" - set "LIB_DIR=win%ARCH%\%VCVER%\lib" -) - -set "PATH=%~dp0%BIN_DIR%;%PATH%" - -if not "%QTDIR%" == "" ( - set "RES_DIR=%~dp0win%ARCH%\%VCVER%\res" - - set "CSF_ResourcesDefaults=!RES_DIR!" - set "CSF_TutorialResourcesDefaults=!RES_DIR!" - set "CSF_IEResourcesDefaults=!RES_DIR!" - - set "PATH=%QTDIR%/bin;%PATH%" - set "QT_QPA_PLATFORM_PLUGIN_PATH=%QTDIR%\plugins\platforms" -) - -set "CSF_OCCTOverviewSampleCodePath=%~dp0..\..\OCCTOverview\code" +@echo off + +if exist "%~dp0custom.bat" ( + call "%~dp0custom.bat" %1 %2 %3 +) + +call "@INSTALL_DIR_ABSOLUTE@\@INSTALL_DIR_SCRIPT@\env.bat" %1 %2 %3 +if /I ["%1"] == ["vc141"] set "VCVER=vc141" +if /I ["%1"] == ["vc142"] set "VCVER=vc142" +if /I ["%1"] == ["vc143"] set "VCVER=vc143" +set "BIN_DIR=win%ARCH%\%VCVER%\bind" +set "LIB_DIR=win%ARCH%\%VCVER%\libd" + +if ["%CASDEB%"] == [""] ( + set "BIN_DIR=win%ARCH%\%VCVER%\bin" + set "LIB_DIR=win%ARCH%\%VCVER%\lib" +) + +set "PATH=%~dp0%BIN_DIR%;%PATH%" + +if not "%QTDIR%" == "" ( + set "RES_DIR=%~dp0win%ARCH%\%VCVER%\res" + + set "CSF_ResourcesDefaults=!RES_DIR!" + set "CSF_TutorialResourcesDefaults=!RES_DIR!" + set "CSF_IEResourcesDefaults=!RES_DIR!" + + set "PATH=%QTDIR%/bin;%PATH%" + set "QT_QPA_PLATFORM_PLUGIN_PATH=%QTDIR%\plugins\platforms" +) + +set "CSF_OCCTOverviewSampleCodePath=%~dp0..\..\OCCTOverview\code" diff --git a/adm/templates/env.samples.sh.in b/adm/templates/env.samples.sh.in index dddd137f21..f290f21cc2 100644 --- a/adm/templates/env.samples.sh.in +++ b/adm/templates/env.samples.sh.in @@ -1,24 +1,24 @@ -#!/bin/bash - -export aSamplePath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -if [ -e "custom.sh" ]; then - source "custom.sh"; -fi - -if [ -e "@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SCRIPT@/env.sh" ]; then - source "@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SCRIPT@/env.sh"; -fi - -if test "${QTDIR}" == ""; then - echo "Environment variable \"QTDIR\" not defined. Define it in \"custom.sh\" script." - exit 1 -fi - -host=`uname -s` -export STATION=$host -export RES_DIR=${aSamplePath}/${STATION}/res - -export PATH=${QTDIR}/bin:${PATH} - -export "CSF_OCCTOverviewSampleCodePath=${aSamplePath}/../../OCCTOverview/code" +#!/bin/bash + +export aSamplePath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +if [ -e "custom.sh" ]; then + source "custom.sh"; +fi + +if [ -e "@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SCRIPT@/env.sh" ]; then + source "@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SCRIPT@/env.sh"; +fi + +if test "${QTDIR}" == ""; then + echo "Environment variable \"QTDIR\" not defined. Define it in \"custom.sh\" script." + exit 1 +fi + +host=`uname -s` +export STATION=$host +export RES_DIR=${aSamplePath}/${STATION}/res + +export PATH=${QTDIR}/bin:${PATH} + +export "CSF_OCCTOverviewSampleCodePath=${aSamplePath}/../../OCCTOverview/code" diff --git a/adm/templates/header.in b/adm/templates/header.in index 80c75f9cb8..129fda0faa 100644 --- a/adm/templates/header.in +++ b/adm/templates/header.in @@ -1 +1 @@ -@OCCT_HEADER_FILE_CONTENT@ +@OCCT_HEADER_FILE_CONTENT@ diff --git a/adm/templates/occt_toolkit.rc.in b/adm/templates/occt_toolkit.rc.in index 5614d5df5e..98dc218397 100644 --- a/adm/templates/occt_toolkit.rc.in +++ b/adm/templates/occt_toolkit.rc.in @@ -1,30 +1,30 @@ -#include -#include - -VS_VERSION_INFO VERSIONINFO -FILEVERSION OCC_VERSION_MAJOR, OCC_VERSION_MINOR, OCC_VERSION_MAINTENANCE, 0 -PRODUCTVERSION OCC_VERSION_MAJOR, OCC_VERSION_MINOR, OCC_VERSION_MAINTENANCE, 0 -FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG -FILEFLAGS VS_FF_DEBUG -#endif -FILEOS VOS_NT -FILETYPE VFT_DLL -FILESUBTYPE VFT2_UNKNOWN -BEGIN - BLOCK "StringFileInfo" - BEGIN BLOCK "040904E4" // Language type = U.S English(0x0409) and Character Set = Windows, Multilingual(0x04E4) - BEGIN - VALUE "FileDescription", "@PROJECT_NAME@ Toolkit\000" - VALUE "FileVersion", OCC_VERSION_STRING_EXT "\000" - VALUE "LegalCopyright", "\251 OPEN CASCADE SAS\000" - VALUE "ProductName", "Open CASCADE Technology\000" - VALUE "ProductVersion", OCC_VERSION_STRING_EXT "\000" - VALUE "OfficialSite", "www.opencascade.com\000" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 0x04E4 - END -END +#include +#include + +VS_VERSION_INFO VERSIONINFO +FILEVERSION OCC_VERSION_MAJOR, OCC_VERSION_MINOR, OCC_VERSION_MAINTENANCE, 0 +PRODUCTVERSION OCC_VERSION_MAJOR, OCC_VERSION_MINOR, OCC_VERSION_MAINTENANCE, 0 +FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG +FILEFLAGS VS_FF_DEBUG +#endif +FILEOS VOS_NT +FILETYPE VFT_DLL +FILESUBTYPE VFT2_UNKNOWN +BEGIN + BLOCK "StringFileInfo" + BEGIN BLOCK "040904E4" // Language type = U.S English(0x0409) and Character Set = Windows, Multilingual(0x04E4) + BEGIN + VALUE "FileDescription", "@PROJECT_NAME@ Toolkit\000" + VALUE "FileVersion", OCC_VERSION_STRING_EXT "\000" + VALUE "LegalCopyright", "\251 OPEN CASCADE SAS\000" + VALUE "ProductName", "Open CASCADE Technology\000" + VALUE "ProductVersion", OCC_VERSION_STRING_EXT "\000" + VALUE "OfficialSite", "www.opencascade.com\000" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0x04E4 + END +END diff --git a/adm/templates/template.vc10 b/adm/templates/template.vc10 index 282b75f90a..7a509500e3 100644 --- a/adm/templates/template.vc10 +++ b/adm/templates/template.vc10 @@ -1,278 +1,278 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - __PROJECT_GUID__ - __UWP_PROPERTIES__ - - - - DynamicLibrary - __VCVEREXT__ - __VCCHARSET__ - - - DynamicLibrary - __VCVEREXT__ - __VCCHARSET__ - - - DynamicLibrary - __VCVEREXT__ - __VCCHARSET__ - - - DynamicLibrary - __VCVEREXT__ - __VCCHARSET__ - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - .\..\..\..\win32\__VCVER__\bin\ - .\..\..\..\win32\__VCVER__\obj\__TKNAM__\ - false - .\..\..\..\win32\__VCVER__\bind\ - .\..\..\..\win32\__VCVER__\objd\__TKNAM__\ - false - .\..\..\..\win64\__VCVER__\bin\ - .\..\..\..\win64\__VCVER__\obj\__TKNAM__\ - false - .\..\..\..\win64\__VCVER__\bind\ - .\..\..\..\win64\__VCVER__\objd\__TKNAM__\ - false - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\..\..\..\win32\__VCVER__\bin\__TKNAM__.tlb - - - - - /bigobj %(AdditionalOptions) - __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - true - MaxSpeed - OnlyExplicitInline - NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - true - Async - MultiThreadedDLL - true - .\..\..\..\win32\__VCVER__\obj\__TKNAM__/ - .\..\..\..\win32\__VCVER__\obj\__TKNAM__/ - .\..\..\..\win32\__VCVER__\obj\__TKNAM__/ - Level4 - true - 26812 - Precise - NotUsing - __VCMPL32__ - - - ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - NDEBUG;No_Exception;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - - - __TKDEP__ - .\..\..\..\win32\__VCVER__\bin\__TKNAM__.dll - true - ..\..\..\win32\__VCVER__\lib;$(CSF_OPT_LIB32);%(AdditionalLibraryDirectories) - __VCReleasePDB__ - .\..\..\..\win32\__VCVER__\bin\__TKNAM__.pdb - Console - ..\..\..\win32\__VCVER__\lib\__TKNAM__.lib - __VCLNKREL__ - __UWP_GENERATE_METADATA__ - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\..\..\..\win32\__VCVER__\bind\__TKNAM__.tlb - - - - - %(AdditionalOptions) - __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - true - Disabled - OnlyExplicitInline - _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - Async - MultiThreadedDebugDLL - .\..\..\..\win32\__VCVER__\objd\__TKNAM__/ - .\..\..\..\win32\__VCVER__\objd\__TKNAM__/ - .\..\..\..\win32\__VCVER__\objd\__TKNAM__/ - Level4 - true - ProgramDatabase - Default - 26812 - EnableFastChecks - Precise - NotUsing - __VCMPL32__ - - - ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - _DEBUG;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - - - __TKDEP_DEBUG__ - .\..\..\..\win32\__VCVER__\bind\__TKNAM__.dll - true - ..\..\..\win32\__VCVER__\libd;$(CSF_OPT_LIB32D);%(AdditionalLibraryDirectories) - true - ..\..\..\win32\__VCVER__\bind\__TKNAM__.pdb - Console - ..\..\..\win32\__VCVER__\libd\__TKNAM__.lib - __UWP_GENERATE_METADATA__ - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - x64 - .\..\..\..\win64\__VCVER__\bin\__TKNAM__.tlb - - - - - %(AdditionalOptions) - __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - true - MaxSpeed - OnlyExplicitInline - NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - true - Async - MultiThreadedDLL - true - .\..\..\..\win64\__VCVER__\obj\__TKNAM__/ - .\..\..\..\win64\__VCVER__\obj\__TKNAM__/ - .\..\..\..\win64\__VCVER__\obj\__TKNAM__/ - Level4 - true - 26812 - Precise - NotUsing - __VCMPL64__ - - - ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - NDEBUG;No_Exception;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - - - __TKDEP__ - .\..\..\..\win64\__VCVER__\bin\__TKNAM__.dll - true - ..\..\..\win64\__VCVER__\lib;$(CSF_OPT_LIB64);%(AdditionalLibraryDirectories) - __VCReleasePDB__ - .\..\..\..\win64\__VCVER__\bin\__TKNAM__.pdb - Console - ..\..\..\win64\__VCVER__\lib\__TKNAM__.lib - __VCLNKREL__ - __UWP_GENERATE_METADATA__ - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - x64 - .\..\..\..\win64\__VCVER__\bind\__TKNAM__.tlb - - - - - %(AdditionalOptions) - __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - true - Disabled - OnlyExplicitInline - _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - Async - MultiThreadedDebugDLL - .\..\..\..\win64\__VCVER__\objd\__TKNAM__/ - .\..\..\..\win64\__VCVER__\objd\__TKNAM__/ - .\..\..\..\win64\__VCVER__\objd\__TKNAM__/ - Level4 - true - ProgramDatabase - Default - 26812 - EnableFastChecks - Precise - NotUsing - __VCMPL64__ - - - ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - _DEBUG;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - - - __TKDEP_DEBUG__ - .\..\..\..\win64\__VCVER__\bind\__TKNAM__.dll - true - ..\..\..\win64\__VCVER__\libd;$(CSF_OPT_LIB64D);%(AdditionalLibraryDirectories) - true - ..\..\..\win64\__VCVER__\bind\__TKNAM__.pdb - Console - ..\..\..\win64\__VCVER__\libd\__TKNAM__.lib - __UWP_GENERATE_METADATA__ - - - -__FILES__ - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + __PROJECT_GUID__ + __UWP_PROPERTIES__ + + + + DynamicLibrary + __VCVEREXT__ + __VCCHARSET__ + + + DynamicLibrary + __VCVEREXT__ + __VCCHARSET__ + + + DynamicLibrary + __VCVEREXT__ + __VCCHARSET__ + + + DynamicLibrary + __VCVEREXT__ + __VCCHARSET__ + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\..\..\..\win32\__VCVER__\bin\ + .\..\..\..\win32\__VCVER__\obj\__TKNAM__\ + false + .\..\..\..\win32\__VCVER__\bind\ + .\..\..\..\win32\__VCVER__\objd\__TKNAM__\ + false + .\..\..\..\win64\__VCVER__\bin\ + .\..\..\..\win64\__VCVER__\obj\__TKNAM__\ + false + .\..\..\..\win64\__VCVER__\bind\ + .\..\..\..\win64\__VCVER__\objd\__TKNAM__\ + false + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\..\..\..\win32\__VCVER__\bin\__TKNAM__.tlb + + + + + /bigobj %(AdditionalOptions) + __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + true + MaxSpeed + OnlyExplicitInline + NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + true + Async + MultiThreadedDLL + true + .\..\..\..\win32\__VCVER__\obj\__TKNAM__/ + .\..\..\..\win32\__VCVER__\obj\__TKNAM__/ + .\..\..\..\win32\__VCVER__\obj\__TKNAM__/ + Level4 + true + 26812 + Precise + NotUsing + __VCMPL32__ + + + ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + NDEBUG;No_Exception;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + + + __TKDEP__ + .\..\..\..\win32\__VCVER__\bin\__TKNAM__.dll + true + ..\..\..\win32\__VCVER__\lib;$(CSF_OPT_LIB32);%(AdditionalLibraryDirectories) + __VCReleasePDB__ + .\..\..\..\win32\__VCVER__\bin\__TKNAM__.pdb + Console + ..\..\..\win32\__VCVER__\lib\__TKNAM__.lib + __VCLNKREL__ + __UWP_GENERATE_METADATA__ + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\..\..\..\win32\__VCVER__\bind\__TKNAM__.tlb + + + + + %(AdditionalOptions) + __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + true + Disabled + OnlyExplicitInline + _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + Async + MultiThreadedDebugDLL + .\..\..\..\win32\__VCVER__\objd\__TKNAM__/ + .\..\..\..\win32\__VCVER__\objd\__TKNAM__/ + .\..\..\..\win32\__VCVER__\objd\__TKNAM__/ + Level4 + true + ProgramDatabase + Default + 26812 + EnableFastChecks + Precise + NotUsing + __VCMPL32__ + + + ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + _DEBUG;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + + + __TKDEP_DEBUG__ + .\..\..\..\win32\__VCVER__\bind\__TKNAM__.dll + true + ..\..\..\win32\__VCVER__\libd;$(CSF_OPT_LIB32D);%(AdditionalLibraryDirectories) + true + ..\..\..\win32\__VCVER__\bind\__TKNAM__.pdb + Console + ..\..\..\win32\__VCVER__\libd\__TKNAM__.lib + __UWP_GENERATE_METADATA__ + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + x64 + .\..\..\..\win64\__VCVER__\bin\__TKNAM__.tlb + + + + + %(AdditionalOptions) + __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + true + MaxSpeed + OnlyExplicitInline + NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + true + Async + MultiThreadedDLL + true + .\..\..\..\win64\__VCVER__\obj\__TKNAM__/ + .\..\..\..\win64\__VCVER__\obj\__TKNAM__/ + .\..\..\..\win64\__VCVER__\obj\__TKNAM__/ + Level4 + true + 26812 + Precise + NotUsing + __VCMPL64__ + + + ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + NDEBUG;No_Exception;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + + + __TKDEP__ + .\..\..\..\win64\__VCVER__\bin\__TKNAM__.dll + true + ..\..\..\win64\__VCVER__\lib;$(CSF_OPT_LIB64);%(AdditionalLibraryDirectories) + __VCReleasePDB__ + .\..\..\..\win64\__VCVER__\bin\__TKNAM__.pdb + Console + ..\..\..\win64\__VCVER__\lib\__TKNAM__.lib + __VCLNKREL__ + __UWP_GENERATE_METADATA__ + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + x64 + .\..\..\..\win64\__VCVER__\bind\__TKNAM__.tlb + + + + + %(AdditionalOptions) + __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + true + Disabled + OnlyExplicitInline + _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + Async + MultiThreadedDebugDLL + .\..\..\..\win64\__VCVER__\objd\__TKNAM__/ + .\..\..\..\win64\__VCVER__\objd\__TKNAM__/ + .\..\..\..\win64\__VCVER__\objd\__TKNAM__/ + Level4 + true + ProgramDatabase + Default + 26812 + EnableFastChecks + Precise + NotUsing + __VCMPL64__ + + + ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + _DEBUG;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + + + __TKDEP_DEBUG__ + .\..\..\..\win64\__VCVER__\bind\__TKNAM__.dll + true + ..\..\..\win64\__VCVER__\libd;$(CSF_OPT_LIB64D);%(AdditionalLibraryDirectories) + true + ..\..\..\win64\__VCVER__\bind\__TKNAM__.pdb + Console + ..\..\..\win64\__VCVER__\libd\__TKNAM__.lib + __UWP_GENERATE_METADATA__ + + + +__FILES__ + + + + + + + + diff --git a/adm/templates/template.vc10x b/adm/templates/template.vc10x index 843376b2cd..1165eff437 100644 --- a/adm/templates/template.vc10x +++ b/adm/templates/template.vc10x @@ -1,259 +1,259 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - __PROJECT_GUID__ - - - - __CONF__ - __VCVEREXT__ - - - __CONF__ - __VCVEREXT__ - - - __CONF__ - __VCVEREXT__ - - - __CONF__ - __VCVEREXT__ - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - .\..\..\..\win32\__VCVER__\bin\ - .\..\..\..\win32\__VCVER__\obj\__XQTNAM__\ - false - .\..\..\..\win32\__VCVER__\bind\ - .\..\..\..\win32\__VCVER__\objd\__XQTNAM__\ - false - .\..\..\..\win64\__VCVER__\bin\ - .\..\..\..\win64\__VCVER__\obj\__XQTNAM__\ - false - .\..\..\..\win64\__VCVER__\bind\ - .\..\..\..\win64\__VCVER__\objd\__XQTNAM__\ - false - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\..\..\..\win32\__VCVER__\bin\__XQTNAM__.tlb - - - - - %(AdditionalOptions) - __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - true - MaxSpeed - OnlyExplicitInline - NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - true - Async - MultiThreadedDLL - true - .\..\..\..\win32\__VCVER__\obj\__XQTNAM__/ - .\..\..\..\win32\__VCVER__\obj\__XQTNAM__/ - .\..\..\..\win32\__VCVER__\obj\__XQTNAM__/ - Level4 - true - 26812 - Precise__VCMPL32__ - - - ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - NDEBUG;No_Exception;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - - - __TKDEP__ - true - ..\..\..\win32\__VCVER__\lib;$(CSF_OPT_LIB32);%(AdditionalLibraryDirectories) - __VCReleasePDB__ - .\..\..\..\win32\__VCVER__\bin\__XQTNAM__.pdb - Console - ..\..\..\win32\__VCVER__\lib\__XQTNAM__.lib - /LARGEADDRESSAWARE %(AdditionalOptions) - __VCLNKREL__ - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\..\..\..\win32\__VCVER__\bind\__XQTNAM__.tlb - - - - - %(AdditionalOptions) - __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - true - Disabled - OnlyExplicitInline - _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - Async - MultiThreadedDebugDLL - .\..\..\..\win32\__VCVER__\objd\__XQTNAM__/ - .\..\..\..\win32\__VCVER__\objd\__XQTNAM__/ - .\..\..\..\win32\__VCVER__\objd\__XQTNAM__/ - Level4 - true - ProgramDatabase - Default - 26812 - EnableFastChecks - Precise__VCMPL32__ - - - ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - _DEBUG;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - - - __TKDEP_DEBUG__ - true - ..\..\..\win32\__VCVER__\libd;$(CSF_OPT_LIB32D);%(AdditionalLibraryDirectories) - true - ..\..\..\win32\__VCVER__\bind\__XQTNAM__.pdb - Console - ..\..\..\win32\__VCVER__\libd\__XQTNAM__.lib - /LARGEADDRESSAWARE %(AdditionalOptions) - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - x64 - .\..\..\..\win64\__VCVER__\bin\__XQTNAM__.tlb - - - - - %(AdditionalOptions) - __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - true - MaxSpeed - OnlyExplicitInline - NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - true - Async - MultiThreadedDLL - true - .\..\..\..\win64\__VCVER__\obj\__XQTNAM__/ - .\..\..\..\win64\__VCVER__\obj\__XQTNAM__/ - .\..\..\..\win64\__VCVER__\obj\__XQTNAM__/ - Level4 - true - 26812 - Precise__VCMPL64__ - - - ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - NDEBUG;No_Exception;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - - - __TKDEP__ - true - ..\..\..\win64\__VCVER__\lib;$(CSF_OPT_LIB64);%(AdditionalLibraryDirectories) - __VCReleasePDB__ - .\..\..\..\win64\__VCVER__\bin\__XQTNAM__.pdb - Console - ..\..\..\win64\__VCVER__\lib\__XQTNAM__.lib - __VCLNKREL__ - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - x64 - .\..\..\..\win64\__VCVER__\bind\__XQTNAM__.tlb - - - - - %(AdditionalOptions) - __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - true - Disabled - OnlyExplicitInline - _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - Async - MultiThreadedDebugDLL - .\..\..\..\win64\__VCVER__\objd\__XQTNAM__/ - .\..\..\..\win64\__VCVER__\objd\__XQTNAM__/ - .\..\..\..\win64\__VCVER__\objd\__XQTNAM__/ - Level4 - true - ProgramDatabase - Default - 26812 - EnableFastChecks - Precise__VCMPL64__ - - - ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) - _DEBUG;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) - - - __TKDEP_DEBUG__ - true - ..\..\..\win64\__VCVER__\libd;$(CSF_OPT_LIB64D);%(AdditionalLibraryDirectories) - true - ..\..\..\win64\__VCVER__\bind\__XQTNAM__.pdb - Console - ..\..\..\win64\__VCVER__\libd\__XQTNAM__.lib - - - -__FILES__ - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + __PROJECT_GUID__ + + + + __CONF__ + __VCVEREXT__ + + + __CONF__ + __VCVEREXT__ + + + __CONF__ + __VCVEREXT__ + + + __CONF__ + __VCVEREXT__ + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\..\..\..\win32\__VCVER__\bin\ + .\..\..\..\win32\__VCVER__\obj\__XQTNAM__\ + false + .\..\..\..\win32\__VCVER__\bind\ + .\..\..\..\win32\__VCVER__\objd\__XQTNAM__\ + false + .\..\..\..\win64\__VCVER__\bin\ + .\..\..\..\win64\__VCVER__\obj\__XQTNAM__\ + false + .\..\..\..\win64\__VCVER__\bind\ + .\..\..\..\win64\__VCVER__\objd\__XQTNAM__\ + false + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\..\..\..\win32\__VCVER__\bin\__XQTNAM__.tlb + + + + + %(AdditionalOptions) + __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + true + MaxSpeed + OnlyExplicitInline + NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + true + Async + MultiThreadedDLL + true + .\..\..\..\win32\__VCVER__\obj\__XQTNAM__/ + .\..\..\..\win32\__VCVER__\obj\__XQTNAM__/ + .\..\..\..\win32\__VCVER__\obj\__XQTNAM__/ + Level4 + true + 26812 + Precise__VCMPL32__ + + + ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + NDEBUG;No_Exception;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + + + __TKDEP__ + true + ..\..\..\win32\__VCVER__\lib;$(CSF_OPT_LIB32);%(AdditionalLibraryDirectories) + __VCReleasePDB__ + .\..\..\..\win32\__VCVER__\bin\__XQTNAM__.pdb + Console + ..\..\..\win32\__VCVER__\lib\__XQTNAM__.lib + /LARGEADDRESSAWARE %(AdditionalOptions) + __VCLNKREL__ + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\..\..\..\win32\__VCVER__\bind\__XQTNAM__.tlb + + + + + %(AdditionalOptions) + __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + true + Disabled + OnlyExplicitInline + _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + Async + MultiThreadedDebugDLL + .\..\..\..\win32\__VCVER__\objd\__XQTNAM__/ + .\..\..\..\win32\__VCVER__\objd\__XQTNAM__/ + .\..\..\..\win32\__VCVER__\objd\__XQTNAM__/ + Level4 + true + ProgramDatabase + Default + 26812 + EnableFastChecks + Precise__VCMPL32__ + + + ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + _DEBUG;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + + + __TKDEP_DEBUG__ + true + ..\..\..\win32\__VCVER__\libd;$(CSF_OPT_LIB32D);%(AdditionalLibraryDirectories) + true + ..\..\..\win32\__VCVER__\bind\__XQTNAM__.pdb + Console + ..\..\..\win32\__VCVER__\libd\__XQTNAM__.lib + /LARGEADDRESSAWARE %(AdditionalOptions) + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + x64 + .\..\..\..\win64\__VCVER__\bin\__XQTNAM__.tlb + + + + + %(AdditionalOptions) + __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + true + MaxSpeed + OnlyExplicitInline + NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + true + Async + MultiThreadedDLL + true + .\..\..\..\win64\__VCVER__\obj\__XQTNAM__/ + .\..\..\..\win64\__VCVER__\obj\__XQTNAM__/ + .\..\..\..\win64\__VCVER__\obj\__XQTNAM__/ + Level4 + true + 26812 + Precise__VCMPL64__ + + + ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + NDEBUG;No_Exception;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + + + __TKDEP__ + true + ..\..\..\win64\__VCVER__\lib;$(CSF_OPT_LIB64);%(AdditionalLibraryDirectories) + __VCReleasePDB__ + .\..\..\..\win64\__VCVER__\bin\__XQTNAM__.pdb + Console + ..\..\..\win64\__VCVER__\lib\__XQTNAM__.lib + __VCLNKREL__ + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + x64 + .\..\..\..\win64\__VCVER__\bind\__XQTNAM__.tlb + + + + + %(AdditionalOptions) + __TKINC__;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + true + Disabled + OnlyExplicitInline + _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + Async + MultiThreadedDebugDLL + .\..\..\..\win64\__VCVER__\objd\__XQTNAM__/ + .\..\..\..\win64\__VCVER__\objd\__XQTNAM__/ + .\..\..\..\win64\__VCVER__\objd\__XQTNAM__/ + Level4 + true + ProgramDatabase + Default + 26812 + EnableFastChecks + Precise__VCMPL64__ + + + ..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories) + _DEBUG;__TKDEFINES__;$(CSF_DEFINES);%(PreprocessorDefinitions) + + + __TKDEP_DEBUG__ + true + ..\..\..\win64\__VCVER__\libd;$(CSF_OPT_LIB64D);%(AdditionalLibraryDirectories) + true + ..\..\..\win64\__VCVER__\bind\__XQTNAM__.pdb + Console + ..\..\..\win64\__VCVER__\libd\__XQTNAM__.lib + + + +__FILES__ + + + + + + + + diff --git a/adm/templates/template.vc7 b/adm/templates/template.vc7 index 4ce7edcff5..06e178af52 100644 --- a/adm/templates/template.vc7 +++ b/adm/templates/template.vc7 @@ -1,160 +1,160 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -__FILES__ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__FILES__ + + + + + + diff --git a/adm/templates/template.vc7x b/adm/templates/template.vc7x index 78ee434bae..ddc736320b 100644 --- a/adm/templates/template.vc7x +++ b/adm/templates/template.vc7x @@ -1,152 +1,152 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -__FILES__ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__FILES__ + + + + + diff --git a/adm/templates/template.vc8 b/adm/templates/template.vc8 index 4d034191a5..523b51e0d5 100644 --- a/adm/templates/template.vc8 +++ b/adm/templates/template.vc8 @@ -1,428 +1,428 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -__FILES__ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__FILES__ + + + + + + diff --git a/adm/templates/template.vc8x b/adm/templates/template.vc8x index 28c8f7453a..32ca5559a1 100644 --- a/adm/templates/template.vc8x +++ b/adm/templates/template.vc8x @@ -1,413 +1,413 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -__FILES__ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__FILES__ + + + + + diff --git a/adm/templates/template.vc9 b/adm/templates/template.vc9 index 7dd29fff55..02c9cb5acb 100644 --- a/adm/templates/template.vc9 +++ b/adm/templates/template.vc9 @@ -1,419 +1,419 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -__FILES__ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__FILES__ + + + + + + diff --git a/adm/templates/template.vc9x b/adm/templates/template.vc9x index c6bd0280a5..5a4d6e6fb1 100644 --- a/adm/templates/template.vc9x +++ b/adm/templates/template.vc9x @@ -1,400 +1,400 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -__FILES__ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__FILES__ + + + + + diff --git a/adm/templates/template.xcscheme b/adm/templates/template.xcscheme index 11b252881e..5f9b98a0fc 100644 --- a/adm/templates/template.xcscheme +++ b/adm/templates/template.xcscheme @@ -1,58 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adm/templates/uwp.toolchain.config.cmake b/adm/templates/uwp.toolchain.config.cmake index 4dbd2ae6a9..274ba7278d 100644 --- a/adm/templates/uwp.toolchain.config.cmake +++ b/adm/templates/uwp.toolchain.config.cmake @@ -1,5 +1,5 @@ -# A toolchain file to configure a Visual Studio generator for a Windows 10 Universal Application (UWP) -# Specify the CMAKE_SYSTEM_VERSION variable to be 10.0 to build with the latest available Windows 10 SDK. - -set (CMAKE_SYSTEM_NAME WindowsStore) -set (CMAKE_SYSTEM_VERSION 10.0) +# A toolchain file to configure a Visual Studio generator for a Windows 10 Universal Application (UWP) +# Specify the CMAKE_SYSTEM_VERSION variable to be 10.0 to build with the latest available Windows 10 SDK. + +set (CMAKE_SYSTEM_NAME WindowsStore) +set (CMAKE_SYSTEM_VERSION 10.0) diff --git a/adm/templates/vcproj.user.vc9x b/adm/templates/vcproj.user.vc9x index d3485ae7de..a966654305 100644 --- a/adm/templates/vcproj.user.vc9x +++ b/adm/templates/vcproj.user.vc9x @@ -1,41 +1,41 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/adm/templates/vcxproj.user.vc10x b/adm/templates/vcxproj.user.vc10x index 29762143c4..a5f0ddc1c1 100644 --- a/adm/templates/vcxproj.user.vc10x +++ b/adm/templates/vcxproj.user.vc10x @@ -1,23 +1,23 @@ - - - - PATH=..\..\..\win32\__VCVER__\bind;$(CSF_OPT_BIN32D);$(PATH) - WindowsLocalDebugger - $(ProjectDir)\..\..\..\.. - - - PATH=..\..\..\win32\__VCVER__\bin;$(CSF_OPT_BIN32);$(PATH) - WindowsLocalDebugger - $(ProjectDir)\..\..\..\.. - - - PATH=..\..\..\win64\__VCVER__\bin;$(CSF_OPT_BIN64);$(PATH) - WindowsLocalDebugger - $(ProjectDir)\..\..\..\.. - - - PATH=..\..\..\win64\__VCVER__\bind;$(CSF_OPT_BIN64D);$(PATH) - WindowsLocalDebugger - $(ProjectDir)\..\..\..\.. - + + + + PATH=..\..\..\win32\__VCVER__\bind;$(CSF_OPT_BIN32D);$(PATH) + WindowsLocalDebugger + $(ProjectDir)\..\..\..\.. + + + PATH=..\..\..\win32\__VCVER__\bin;$(CSF_OPT_BIN32);$(PATH) + WindowsLocalDebugger + $(ProjectDir)\..\..\..\.. + + + PATH=..\..\..\win64\__VCVER__\bin;$(CSF_OPT_BIN64);$(PATH) + WindowsLocalDebugger + $(ProjectDir)\..\..\..\.. + + + PATH=..\..\..\win64\__VCVER__\bind;$(CSF_OPT_BIN64D);$(PATH) + WindowsLocalDebugger + $(ProjectDir)\..\..\..\.. + \ No newline at end of file diff --git a/adm/upgrade_sample_orig.dat b/adm/upgrade_sample_orig.dat index 96683c7e54..86528ae146 100644 --- a/adm/upgrade_sample_orig.dat +++ b/adm/upgrade_sample_orig.dat @@ -1,67 +1,67 @@ -// This is sample C++ file intended for testing and verifyig automatic upgrade -// script. Copy it with extension .cxx and apply upgrade procedure to see -// the result, as follows: -// > upgrade.bat -src=./adm -inc=./src -recurse -all - -// Include of Geom_Line.hxx and Geom_Plane.hxx should be added below -#include - -//======================================================================== -// OCCT 7.0 -//======================================================================== - -//------------------------------------------------------------------------ -// Option -rtti -//------------------------------------------------------------------------ - -// Should be replaced by -#include - -class A_0 -{ -} - -class B_1 : -public A_0 -{ - // second argument "A_0" should be added - DEFINE_STANDARD_RTTI(B_1) -}; - -class C_2 : public Standard_Transient, B_1 -{ - // second argument "Standard_Transient" should be added - DEFINE_STANDARD_RTTI(C_2) -}; - -void for_rtti () -{ - Handle(Geom_Curve) aCurve = new Geom_Line (gp::Origin(), gp::DZ()); - Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast (aCurve); -} - -// should be removed -IMPLEMENT_DOWNCAST(A) -IMPLEMENT_STANDARD_RTTIEXT(A, B) - -//------------------------------------------------------------------------ -// Option -fwd -//------------------------------------------------------------------------ - -// force safe mode used for Qt objects -Q_OBJECT -slots: - -// these includes should be recognized as corresponding to forward declarations -#include - -// these declarations should be just removed -class Handle(TColStd_HArray1OfReal); - -// should be replaced by include of corresponding header -class TColStd_Array1OfReal; -class Handle(Geom_Curve); - -// check that trailing spaces at the following line are preserved -void ff(); - +// This is sample C++ file intended for testing and verifyig automatic upgrade +// script. Copy it with extension .cxx and apply upgrade procedure to see +// the result, as follows: +// > upgrade.bat -src=./adm -inc=./src -recurse -all + +// Include of Geom_Line.hxx and Geom_Plane.hxx should be added below +#include + +//======================================================================== +// OCCT 7.0 +//======================================================================== + +//------------------------------------------------------------------------ +// Option -rtti +//------------------------------------------------------------------------ + +// Should be replaced by +#include + +class A_0 +{ +} + +class B_1 : +public A_0 +{ + // second argument "A_0" should be added + DEFINE_STANDARD_RTTI(B_1) +}; + +class C_2 : public Standard_Transient, B_1 +{ + // second argument "Standard_Transient" should be added + DEFINE_STANDARD_RTTI(C_2) +}; + +void for_rtti () +{ + Handle(Geom_Curve) aCurve = new Geom_Line (gp::Origin(), gp::DZ()); + Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast (aCurve); +} + +// should be removed +IMPLEMENT_DOWNCAST(A) +IMPLEMENT_STANDARD_RTTIEXT(A, B) + +//------------------------------------------------------------------------ +// Option -fwd +//------------------------------------------------------------------------ + +// force safe mode used for Qt objects +Q_OBJECT +slots: + +// these includes should be recognized as corresponding to forward declarations +#include + +// these declarations should be just removed +class Handle(TColStd_HArray1OfReal); + +// should be replaced by include of corresponding header +class TColStd_Array1OfReal; +class Handle(Geom_Curve); + +// check that trailing spaces at the following line are preserved +void ff(); + diff --git a/data/occ/MAT.pnt b/data/occ/MAT.pnt index d93993a18c..961962257a 100644 --- a/data/occ/MAT.pnt +++ b/data/occ/MAT.pnt @@ -1,6283 +1,6283 @@ -81 78 -821.000000 803.000000 109.405859 -822.000000 803.000000 108.965752 -823.000000 803.000000 108.673359 -824.000000 803.000000 108.392744 -825.000000 803.000000 108.109570 -826.000000 803.000000 107.641240 -827.000000 803.000000 107.344697 -828.000000 803.000000 106.912891 -829.000000 803.000000 106.668662 -830.000000 803.000000 106.491025 -831.000000 803.000000 106.248320 -832.000000 803.000000 106.043086 -833.000000 803.000000 105.891777 -834.000000 803.000000 105.591250 -835.000000 803.000000 105.333721 -836.000000 803.000000 104.924219 -837.000000 803.000000 104.497041 -838.000000 803.000000 104.420029 -839.000000 803.000000 104.565127 -840.000000 803.000000 104.663369 -841.000000 803.000000 104.425996 -842.000000 803.000000 104.013613 -843.000000 803.000000 103.500068 -844.000000 803.000000 103.220527 -845.000000 803.000000 102.949443 -846.000000 803.000000 102.729590 -847.000000 803.000000 102.615225 -848.000000 803.000000 102.658506 -849.000000 803.000000 102.365938 -850.000000 803.000000 101.974355 -851.000000 803.000000 101.711211 -852.000000 803.000000 101.355566 -853.000000 803.000000 101.193096 -854.000000 803.000000 101.116416 -855.000000 803.000000 101.067988 -856.000000 803.000000 100.947285 -857.000000 803.000000 100.751416 -858.000000 803.000000 100.595059 -859.000000 803.000000 100.446768 -860.000000 803.000000 100.288086 -861.000000 803.000000 100.155420 -862.000000 803.000000 99.971738 -863.000000 803.000000 99.836660 -864.000000 803.000000 99.703818 -865.000000 803.000000 99.592334 -866.000000 803.000000 99.559756 -867.000000 803.000000 99.525615 -868.000000 803.000000 99.506113 -869.000000 803.000000 99.480645 -870.000000 803.000000 99.419043 -871.000000 803.000000 99.389824 -872.000000 803.000000 99.359941 -873.000000 803.000000 99.331084 -874.000000 803.000000 99.311260 -875.000000 803.000000 99.313457 -876.000000 803.000000 99.362852 -877.000000 803.000000 99.379316 -878.000000 803.000000 99.342520 -879.000000 803.000000 99.297881 -880.000000 803.000000 99.288857 -881.000000 803.000000 99.312217 -882.000000 803.000000 99.319326 -883.000000 803.000000 99.323945 -884.000000 803.000000 99.318076 -885.000000 803.000000 99.299854 -886.000000 803.000000 99.279463 -887.000000 803.000000 99.281934 -888.000000 803.000000 99.285361 -889.000000 803.000000 99.290879 -890.000000 803.000000 99.296455 -891.000000 803.000000 99.289492 -892.000000 803.000000 99.280820 -893.000000 803.000000 99.272158 -894.000000 803.000000 99.274932 -895.000000 803.000000 99.282217 -896.000000 803.000000 99.289424 -897.000000 803.000000 99.291523 -898.000000 803.000000 99.286660 -821.000000 804.000000 108.507861 -822.000000 804.000000 108.069443 -823.000000 804.000000 107.703115 -824.000000 804.000000 107.371963 -825.000000 804.000000 106.989648 -826.000000 804.000000 106.587275 -827.000000 804.000000 106.172959 -828.000000 804.000000 105.788242 -829.000000 804.000000 105.446289 -830.000000 804.000000 105.166016 -831.000000 804.000000 104.899150 -832.000000 804.000000 104.619834 -833.000000 804.000000 104.262412 -834.000000 804.000000 103.860947 -835.000000 804.000000 103.456475 -836.000000 804.000000 103.128008 -837.000000 804.000000 102.783164 -838.000000 804.000000 102.631299 -839.000000 804.000000 102.718203 -840.000000 804.000000 102.838115 -841.000000 804.000000 102.748779 -842.000000 804.000000 102.314424 -843.000000 804.000000 102.056348 -844.000000 804.000000 101.810586 -845.000000 804.000000 101.665420 -846.000000 804.000000 101.367256 -847.000000 804.000000 101.240635 -848.000000 804.000000 101.196611 -849.000000 804.000000 101.120615 -850.000000 804.000000 101.015967 -851.000000 804.000000 100.904697 -852.000000 804.000000 100.784004 -853.000000 804.000000 100.673379 -854.000000 804.000000 100.606367 -855.000000 804.000000 100.488184 -856.000000 804.000000 100.322305 -857.000000 804.000000 100.213320 -858.000000 804.000000 100.067451 -859.000000 804.000000 99.906748 -860.000000 804.000000 99.784570 -861.000000 804.000000 99.666689 -862.000000 804.000000 99.502080 -863.000000 804.000000 99.497187 -864.000000 804.000000 99.448984 -865.000000 804.000000 99.438271 -866.000000 804.000000 99.400186 -867.000000 804.000000 99.391426 -868.000000 804.000000 99.387910 -869.000000 804.000000 99.380244 -870.000000 804.000000 99.316768 -871.000000 804.000000 99.308301 -872.000000 804.000000 99.305381 -873.000000 804.000000 99.292627 -874.000000 804.000000 99.281738 -875.000000 804.000000 99.270410 -876.000000 804.000000 99.294189 -877.000000 804.000000 99.310420 -878.000000 804.000000 99.288828 -879.000000 804.000000 99.259922 -880.000000 804.000000 99.260137 -881.000000 804.000000 99.262539 -882.000000 804.000000 99.271729 -883.000000 804.000000 99.276719 -884.000000 804.000000 99.277109 -885.000000 804.000000 99.265244 -886.000000 804.000000 99.252471 -887.000000 804.000000 99.244697 -888.000000 804.000000 99.242959 -889.000000 804.000000 99.248799 -890.000000 804.000000 99.249072 -891.000000 804.000000 99.241240 -892.000000 804.000000 99.234873 -893.000000 804.000000 99.235693 -894.000000 804.000000 99.235469 -895.000000 804.000000 99.241348 -896.000000 804.000000 99.248379 -897.000000 804.000000 99.249453 -898.000000 804.000000 99.245039 -821.000000 805.000000 107.448105 -822.000000 805.000000 106.933057 -823.000000 805.000000 106.592588 -824.000000 805.000000 106.215000 -825.000000 805.000000 105.751670 -826.000000 805.000000 105.401113 -827.000000 805.000000 105.033623 -828.000000 805.000000 104.701758 -829.000000 805.000000 104.281318 -830.000000 805.000000 103.906309 -831.000000 805.000000 103.531924 -832.000000 805.000000 103.237002 -833.000000 805.000000 102.909883 -834.000000 805.000000 102.585313 -835.000000 805.000000 102.306230 -836.000000 805.000000 101.936738 -837.000000 805.000000 101.509521 -838.000000 805.000000 101.265117 -839.000000 805.000000 101.225898 -840.000000 805.000000 101.290527 -841.000000 805.000000 101.308535 -842.000000 805.000000 101.195459 -843.000000 805.000000 101.121680 -844.000000 805.000000 101.012715 -845.000000 805.000000 100.975674 -846.000000 805.000000 100.860537 -847.000000 805.000000 100.780156 -848.000000 805.000000 100.696133 -849.000000 805.000000 100.610459 -850.000000 805.000000 100.519238 -851.000000 805.000000 100.412090 -852.000000 805.000000 100.284697 -853.000000 805.000000 100.156680 -854.000000 805.000000 100.078184 -855.000000 805.000000 99.947832 -856.000000 805.000000 99.843467 -857.000000 805.000000 99.715039 -858.000000 805.000000 99.585244 -859.000000 805.000000 99.519492 -860.000000 805.000000 99.481250 -861.000000 805.000000 99.431914 -862.000000 805.000000 99.396982 -863.000000 805.000000 99.376729 -864.000000 805.000000 99.348516 -865.000000 805.000000 99.293516 -866.000000 805.000000 99.314648 -867.000000 805.000000 99.334629 -868.000000 805.000000 99.332695 -869.000000 805.000000 99.327002 -870.000000 805.000000 99.273838 -871.000000 805.000000 99.270547 -872.000000 805.000000 99.268916 -873.000000 805.000000 99.260322 -874.000000 805.000000 99.252207 -875.000000 805.000000 99.245078 -876.000000 805.000000 99.241260 -877.000000 805.000000 99.237900 -878.000000 805.000000 99.235137 -879.000000 805.000000 99.232812 -880.000000 805.000000 99.230664 -881.000000 805.000000 99.228711 -882.000000 805.000000 99.236289 -883.000000 805.000000 99.239951 -884.000000 805.000000 99.240186 -885.000000 805.000000 99.229404 -886.000000 805.000000 99.220703 -887.000000 805.000000 99.214785 -888.000000 805.000000 99.209668 -889.000000 805.000000 99.206240 -890.000000 805.000000 99.206201 -891.000000 805.000000 99.198730 -892.000000 805.000000 99.197305 -893.000000 805.000000 99.198955 -894.000000 805.000000 99.197314 -895.000000 805.000000 99.201641 -896.000000 805.000000 99.208770 -897.000000 805.000000 99.207627 -898.000000 805.000000 99.206445 -821.000000 806.000000 106.133574 -822.000000 806.000000 105.784990 -823.000000 806.000000 105.486064 -824.000000 806.000000 105.145127 -825.000000 806.000000 104.524365 -826.000000 806.000000 104.166279 -827.000000 806.000000 103.943594 -828.000000 806.000000 103.648008 -829.000000 806.000000 103.215469 -830.000000 806.000000 102.770996 -831.000000 806.000000 102.465840 -832.000000 806.000000 102.100166 -833.000000 806.000000 101.706318 -834.000000 806.000000 101.390674 -835.000000 806.000000 101.308408 -836.000000 806.000000 101.185264 -837.000000 806.000000 101.034326 -838.000000 806.000000 100.914746 -839.000000 806.000000 100.859521 -840.000000 806.000000 100.835107 -841.000000 806.000000 100.837715 -842.000000 806.000000 100.789453 -843.000000 806.000000 100.698877 -844.000000 806.000000 100.582168 -845.000000 806.000000 100.513350 -846.000000 806.000000 100.403438 -847.000000 806.000000 100.307305 -848.000000 806.000000 100.210430 -849.000000 806.000000 100.115840 -850.000000 806.000000 100.015029 -851.000000 806.000000 99.901836 -852.000000 806.000000 99.782920 -853.000000 806.000000 99.648018 -854.000000 806.000000 99.591426 -855.000000 806.000000 99.567842 -856.000000 806.000000 99.525928 -857.000000 806.000000 99.468770 -858.000000 806.000000 99.412793 -859.000000 806.000000 99.384990 -860.000000 806.000000 99.343955 -861.000000 806.000000 99.313369 -862.000000 806.000000 99.327871 -863.000000 806.000000 99.332744 -864.000000 806.000000 99.291338 -865.000000 806.000000 99.275098 -866.000000 806.000000 99.271953 -867.000000 806.000000 99.280605 -868.000000 806.000000 99.275361 -869.000000 806.000000 99.265068 -870.000000 806.000000 99.243936 -871.000000 806.000000 99.238008 -872.000000 806.000000 99.232812 -873.000000 806.000000 99.227549 -874.000000 806.000000 99.224795 -875.000000 806.000000 99.218896 -876.000000 806.000000 99.213711 -877.000000 806.000000 99.210811 -878.000000 806.000000 99.207930 -879.000000 806.000000 99.206787 -880.000000 806.000000 99.204961 -881.000000 806.000000 99.203135 -882.000000 806.000000 99.200459 -883.000000 806.000000 99.201514 -884.000000 806.000000 99.200420 -885.000000 806.000000 99.194482 -886.000000 806.000000 99.189531 -887.000000 806.000000 99.185332 -888.000000 806.000000 99.180713 -889.000000 806.000000 99.175977 -890.000000 806.000000 99.173027 -891.000000 806.000000 99.166533 -892.000000 806.000000 99.151318 -893.000000 806.000000 99.151172 -894.000000 806.000000 99.161465 -895.000000 806.000000 99.168809 -896.000000 806.000000 99.173496 -897.000000 806.000000 99.175039 -898.000000 806.000000 99.173564 -821.000000 807.000000 104.952100 -822.000000 807.000000 104.635498 -823.000000 807.000000 104.321729 -824.000000 807.000000 103.751621 -825.000000 807.000000 103.327021 -826.000000 807.000000 103.051787 -827.000000 807.000000 102.816484 -828.000000 807.000000 102.433750 -829.000000 807.000000 101.942178 -830.000000 807.000000 101.640225 -831.000000 807.000000 101.424668 -832.000000 807.000000 101.217988 -833.000000 807.000000 101.048193 -834.000000 807.000000 100.945107 -835.000000 807.000000 100.856338 -836.000000 807.000000 100.757773 -837.000000 807.000000 100.650127 -838.000000 807.000000 100.529229 -839.000000 807.000000 100.465576 -840.000000 807.000000 100.412646 -841.000000 807.000000 100.395977 -842.000000 807.000000 100.347129 -843.000000 807.000000 100.267324 -844.000000 807.000000 100.148926 -845.000000 807.000000 100.060742 -846.000000 807.000000 99.956777 -847.000000 807.000000 99.859580 -848.000000 807.000000 99.779512 -849.000000 807.000000 99.643467 -850.000000 807.000000 99.582539 -851.000000 807.000000 99.527080 -852.000000 807.000000 99.490889 -853.000000 807.000000 99.471709 -854.000000 807.000000 99.458105 -855.000000 807.000000 99.432412 -856.000000 807.000000 99.404229 -857.000000 807.000000 99.355771 -858.000000 807.000000 99.332402 -859.000000 807.000000 99.307285 -860.000000 807.000000 99.277373 -861.000000 807.000000 99.269980 -862.000000 807.000000 99.266025 -863.000000 807.000000 99.255625 -864.000000 807.000000 99.249062 -865.000000 807.000000 99.242217 -866.000000 807.000000 99.242393 -867.000000 807.000000 99.236826 -868.000000 807.000000 99.226240 -869.000000 807.000000 99.217988 -870.000000 807.000000 99.214717 -871.000000 807.000000 99.211670 -872.000000 807.000000 99.206211 -873.000000 807.000000 99.199355 -874.000000 807.000000 99.195430 -875.000000 807.000000 99.193867 -876.000000 807.000000 99.189102 -877.000000 807.000000 99.183779 -878.000000 807.000000 99.180400 -879.000000 807.000000 99.180566 -880.000000 807.000000 99.179297 -881.000000 807.000000 99.178047 -882.000000 807.000000 99.175410 -883.000000 807.000000 99.173301 -884.000000 807.000000 99.169277 -885.000000 807.000000 99.165625 -886.000000 807.000000 99.160967 -887.000000 807.000000 99.156143 -888.000000 807.000000 99.152373 -889.000000 807.000000 99.149023 -890.000000 807.000000 99.148799 -891.000000 807.000000 99.140908 -892.000000 807.000000 99.132227 -893.000000 807.000000 99.132637 -894.000000 807.000000 99.135186 -895.000000 807.000000 99.143369 -896.000000 807.000000 99.147627 -897.000000 807.000000 99.149893 -898.000000 807.000000 99.147969 -821.000000 808.000000 103.746318 -822.000000 808.000000 103.549209 -823.000000 808.000000 103.216035 -824.000000 808.000000 102.742803 -825.000000 808.000000 102.414727 -826.000000 808.000000 101.994160 -827.000000 808.000000 101.704990 -828.000000 808.000000 101.344219 -829.000000 808.000000 101.124424 -830.000000 808.000000 100.998877 -831.000000 808.000000 100.865361 -832.000000 808.000000 100.732588 -833.000000 808.000000 100.569932 -834.000000 808.000000 100.464131 -835.000000 808.000000 100.389687 -836.000000 808.000000 100.331484 -837.000000 808.000000 100.228672 -838.000000 808.000000 100.123936 -839.000000 808.000000 100.027588 -840.000000 808.000000 99.986191 -841.000000 808.000000 99.979521 -842.000000 808.000000 99.924287 -843.000000 808.000000 99.859863 -844.000000 808.000000 99.752363 -845.000000 808.000000 99.674658 -846.000000 808.000000 99.595146 -847.000000 808.000000 99.544131 -848.000000 808.000000 99.488301 -849.000000 808.000000 99.487881 -850.000000 808.000000 99.460420 -851.000000 808.000000 99.420684 -852.000000 808.000000 99.398682 -853.000000 808.000000 99.383369 -854.000000 808.000000 99.379434 -855.000000 808.000000 99.371084 -856.000000 808.000000 99.347393 -857.000000 808.000000 99.283896 -858.000000 808.000000 99.271777 -859.000000 808.000000 99.261738 -860.000000 808.000000 99.252373 -861.000000 808.000000 99.244775 -862.000000 808.000000 99.237891 -863.000000 808.000000 99.231973 -864.000000 808.000000 99.225508 -865.000000 808.000000 99.218652 -866.000000 808.000000 99.211611 -867.000000 808.000000 99.205723 -868.000000 808.000000 99.194814 -869.000000 808.000000 99.189756 -870.000000 808.000000 99.188662 -871.000000 808.000000 99.187031 -872.000000 808.000000 99.182656 -873.000000 808.000000 99.174746 -874.000000 808.000000 99.171719 -875.000000 808.000000 99.170488 -876.000000 808.000000 99.167852 -877.000000 808.000000 99.165039 -878.000000 808.000000 99.162773 -879.000000 808.000000 99.159150 -880.000000 808.000000 99.156152 -881.000000 808.000000 99.154443 -882.000000 808.000000 99.153584 -883.000000 808.000000 99.149893 -884.000000 808.000000 99.145410 -885.000000 808.000000 99.137520 -886.000000 808.000000 99.132256 -887.000000 808.000000 99.126738 -888.000000 808.000000 99.124219 -889.000000 808.000000 99.124043 -890.000000 808.000000 99.125205 -891.000000 808.000000 99.120928 -892.000000 808.000000 99.116768 -893.000000 808.000000 99.114268 -894.000000 808.000000 99.114414 -895.000000 808.000000 99.119697 -896.000000 808.000000 99.123369 -897.000000 808.000000 99.125928 -898.000000 808.000000 99.122129 -821.000000 809.000000 102.771865 -822.000000 809.000000 102.490674 -823.000000 809.000000 102.170312 -824.000000 809.000000 101.847061 -825.000000 809.000000 101.489902 -826.000000 809.000000 101.212451 -827.000000 809.000000 101.011074 -828.000000 809.000000 100.819648 -829.000000 809.000000 100.624199 -830.000000 809.000000 100.463193 -831.000000 809.000000 100.335400 -832.000000 809.000000 100.200596 -833.000000 809.000000 100.063135 -834.000000 809.000000 99.959561 -835.000000 809.000000 99.907998 -836.000000 809.000000 99.893447 -837.000000 809.000000 99.798184 -838.000000 809.000000 99.718955 -839.000000 809.000000 99.640059 -840.000000 809.000000 99.599111 -841.000000 809.000000 99.595684 -842.000000 809.000000 99.581523 -843.000000 809.000000 99.555254 -844.000000 809.000000 99.497637 -845.000000 809.000000 99.486904 -846.000000 809.000000 99.459082 -847.000000 809.000000 99.415859 -848.000000 809.000000 99.412334 -849.000000 809.000000 99.395381 -850.000000 809.000000 99.370566 -851.000000 809.000000 99.345703 -852.000000 809.000000 99.293086 -853.000000 809.000000 99.301338 -854.000000 809.000000 99.313145 -855.000000 809.000000 99.315332 -856.000000 809.000000 99.294092 -857.000000 809.000000 99.255986 -858.000000 809.000000 99.244746 -859.000000 809.000000 99.234980 -860.000000 809.000000 99.226211 -861.000000 809.000000 99.219033 -862.000000 809.000000 99.213682 -863.000000 809.000000 99.208242 -864.000000 809.000000 99.202070 -865.000000 809.000000 99.195791 -866.000000 809.000000 99.188203 -867.000000 809.000000 99.179629 -868.000000 809.000000 99.171357 -869.000000 809.000000 99.161309 -870.000000 809.000000 99.160693 -871.000000 809.000000 99.161699 -872.000000 809.000000 99.160186 -873.000000 809.000000 99.154570 -874.000000 809.000000 99.152148 -875.000000 809.000000 99.150518 -876.000000 809.000000 99.148857 -877.000000 809.000000 99.147070 -878.000000 809.000000 99.145313 -879.000000 809.000000 99.142070 -880.000000 809.000000 99.138389 -881.000000 809.000000 99.135713 -882.000000 809.000000 99.133281 -883.000000 809.000000 99.130498 -884.000000 809.000000 99.125068 -885.000000 809.000000 99.115186 -886.000000 809.000000 99.103779 -887.000000 809.000000 99.095449 -888.000000 809.000000 99.095723 -889.000000 809.000000 99.097021 -890.000000 809.000000 99.099219 -891.000000 809.000000 99.103350 -892.000000 809.000000 99.098916 -893.000000 809.000000 99.091113 -894.000000 809.000000 99.090303 -895.000000 809.000000 99.093428 -896.000000 809.000000 99.097480 -897.000000 809.000000 99.100527 -898.000000 809.000000 99.095547 -821.000000 810.000000 101.885332 -822.000000 810.000000 101.517910 -823.000000 810.000000 101.352344 -824.000000 810.000000 101.098135 -825.000000 810.000000 100.841445 -826.000000 810.000000 100.625088 -827.000000 810.000000 100.455625 -828.000000 810.000000 100.263965 -829.000000 810.000000 100.090234 -830.000000 810.000000 99.938428 -831.000000 810.000000 99.805352 -832.000000 810.000000 99.667646 -833.000000 810.000000 99.598184 -834.000000 810.000000 99.581836 -835.000000 810.000000 99.573564 -836.000000 810.000000 99.563242 -837.000000 810.000000 99.555107 -838.000000 810.000000 99.547227 -839.000000 810.000000 99.514482 -840.000000 810.000000 99.472324 -841.000000 810.000000 99.470537 -842.000000 810.000000 99.470801 -843.000000 810.000000 99.454697 -844.000000 810.000000 99.415674 -845.000000 810.000000 99.384395 -846.000000 810.000000 99.352842 -847.000000 810.000000 99.337559 -848.000000 810.000000 99.336680 -849.000000 810.000000 99.323682 -850.000000 810.000000 99.305459 -851.000000 810.000000 99.283926 -852.000000 810.000000 99.265195 -853.000000 810.000000 99.257891 -854.000000 810.000000 99.263838 -855.000000 810.000000 99.243164 -856.000000 810.000000 99.235352 -857.000000 810.000000 99.227529 -858.000000 810.000000 99.218418 -859.000000 810.000000 99.207910 -860.000000 810.000000 99.200000 -861.000000 810.000000 99.195068 -862.000000 810.000000 99.188750 -863.000000 810.000000 99.183584 -864.000000 810.000000 99.178701 -865.000000 810.000000 99.173066 -866.000000 810.000000 99.165928 -867.000000 810.000000 99.160391 -868.000000 810.000000 99.151719 -869.000000 810.000000 99.141387 -870.000000 810.000000 99.140771 -871.000000 810.000000 99.141094 -872.000000 810.000000 99.138838 -873.000000 810.000000 99.134404 -874.000000 810.000000 99.132734 -875.000000 810.000000 99.131768 -876.000000 810.000000 99.130762 -877.000000 810.000000 99.129395 -878.000000 810.000000 99.128242 -879.000000 810.000000 99.125664 -880.000000 810.000000 99.122334 -881.000000 810.000000 99.118779 -882.000000 810.000000 99.115205 -883.000000 810.000000 99.111748 -884.000000 810.000000 99.105029 -885.000000 810.000000 99.092139 -886.000000 810.000000 99.077549 -887.000000 810.000000 99.069268 -888.000000 810.000000 99.063691 -889.000000 810.000000 99.066455 -890.000000 810.000000 99.065596 -891.000000 810.000000 99.064971 -892.000000 810.000000 99.063809 -893.000000 810.000000 99.061758 -894.000000 810.000000 99.059883 -895.000000 810.000000 99.058066 -896.000000 810.000000 99.057754 -897.000000 810.000000 99.057988 -898.000000 810.000000 99.056553 -821.000000 811.000000 101.240186 -822.000000 811.000000 100.957656 -823.000000 811.000000 100.727871 -824.000000 811.000000 100.482480 -825.000000 811.000000 100.216221 -826.000000 811.000000 100.018770 -827.000000 811.000000 99.868691 -828.000000 811.000000 99.736660 -829.000000 811.000000 99.596602 -830.000000 811.000000 99.575205 -831.000000 811.000000 99.556123 -832.000000 811.000000 99.518018 -833.000000 811.000000 99.501855 -834.000000 811.000000 99.505811 -835.000000 811.000000 99.498545 -836.000000 811.000000 99.483613 -837.000000 811.000000 99.467559 -838.000000 811.000000 99.462559 -839.000000 811.000000 99.443242 -840.000000 811.000000 99.410596 -841.000000 811.000000 99.390781 -842.000000 811.000000 99.369023 -843.000000 811.000000 99.360869 -844.000000 811.000000 99.349463 -845.000000 811.000000 99.320957 -846.000000 811.000000 99.300840 -847.000000 811.000000 99.278789 -848.000000 811.000000 99.276045 -849.000000 811.000000 99.270898 -850.000000 811.000000 99.259570 -851.000000 811.000000 99.246357 -852.000000 811.000000 99.238232 -853.000000 811.000000 99.230830 -854.000000 811.000000 99.223848 -855.000000 811.000000 99.216348 -856.000000 811.000000 99.208809 -857.000000 811.000000 99.201338 -858.000000 811.000000 99.192637 -859.000000 811.000000 99.181846 -860.000000 811.000000 99.175557 -861.000000 811.000000 99.171826 -862.000000 811.000000 99.166367 -863.000000 811.000000 99.162109 -864.000000 811.000000 99.158057 -865.000000 811.000000 99.153184 -866.000000 811.000000 99.147520 -867.000000 811.000000 99.141602 -868.000000 811.000000 99.135059 -869.000000 811.000000 99.129775 -870.000000 811.000000 99.128818 -871.000000 811.000000 99.125762 -872.000000 811.000000 99.122207 -873.000000 811.000000 99.116934 -874.000000 811.000000 99.113447 -875.000000 811.000000 99.112080 -876.000000 811.000000 99.112725 -877.000000 811.000000 99.112549 -878.000000 811.000000 99.111963 -879.000000 811.000000 99.113701 -880.000000 811.000000 99.106221 -881.000000 811.000000 99.102646 -882.000000 811.000000 99.097451 -883.000000 811.000000 99.088184 -884.000000 811.000000 99.075449 -885.000000 811.000000 99.061025 -886.000000 811.000000 99.047148 -887.000000 811.000000 99.037217 -888.000000 811.000000 99.032520 -889.000000 811.000000 99.032988 -890.000000 811.000000 99.030664 -891.000000 811.000000 99.027559 -892.000000 811.000000 99.023467 -893.000000 811.000000 99.020039 -894.000000 811.000000 99.016826 -895.000000 811.000000 99.016143 -896.000000 811.000000 99.016162 -897.000000 811.000000 99.016309 -898.000000 811.000000 99.016016 -821.000000 812.000000 100.770137 -822.000000 812.000000 100.427539 -823.000000 812.000000 100.139854 -824.000000 812.000000 99.926162 -825.000000 812.000000 99.749824 -826.000000 812.000000 99.596055 -827.000000 812.000000 99.491953 -828.000000 812.000000 99.489014 -829.000000 812.000000 99.496484 -830.000000 812.000000 99.501895 -831.000000 812.000000 99.491279 -832.000000 812.000000 99.468662 -833.000000 812.000000 99.461748 -834.000000 812.000000 99.442139 -835.000000 812.000000 99.422715 -836.000000 812.000000 99.401592 -837.000000 812.000000 99.376992 -838.000000 812.000000 99.372910 -839.000000 812.000000 99.358281 -840.000000 812.000000 99.340703 -841.000000 812.000000 99.314297 -842.000000 812.000000 99.294316 -843.000000 812.000000 99.293018 -844.000000 812.000000 99.287813 -845.000000 812.000000 99.268105 -846.000000 812.000000 99.258916 -847.000000 812.000000 99.251133 -848.000000 812.000000 99.244082 -849.000000 812.000000 99.238760 -850.000000 812.000000 99.226807 -851.000000 812.000000 99.218418 -852.000000 812.000000 99.210771 -853.000000 812.000000 99.203447 -854.000000 812.000000 99.197100 -855.000000 812.000000 99.189941 -856.000000 812.000000 99.182783 -857.000000 812.000000 99.175488 -858.000000 812.000000 99.168047 -859.000000 812.000000 99.160586 -860.000000 812.000000 99.154902 -861.000000 812.000000 99.150205 -862.000000 812.000000 99.144404 -863.000000 812.000000 99.140117 -864.000000 812.000000 99.139033 -865.000000 812.000000 99.134199 -866.000000 812.000000 99.131279 -867.000000 812.000000 99.127939 -868.000000 812.000000 99.121006 -869.000000 812.000000 99.114824 -870.000000 812.000000 99.109209 -871.000000 812.000000 99.105049 -872.000000 812.000000 99.107998 -873.000000 812.000000 99.097744 -874.000000 812.000000 99.093066 -875.000000 812.000000 99.090410 -876.000000 812.000000 99.090176 -877.000000 812.000000 99.091025 -878.000000 812.000000 99.093877 -879.000000 812.000000 99.101289 -880.000000 812.000000 99.088057 -881.000000 812.000000 99.078643 -882.000000 812.000000 99.068984 -883.000000 812.000000 99.057666 -884.000000 812.000000 99.042764 -885.000000 812.000000 99.028486 -886.000000 812.000000 99.016260 -887.000000 812.000000 99.005957 -888.000000 812.000000 99.003018 -889.000000 812.000000 98.999404 -890.000000 812.000000 98.997734 -891.000000 812.000000 98.991318 -892.000000 812.000000 98.984160 -893.000000 812.000000 98.979551 -894.000000 812.000000 98.974707 -895.000000 812.000000 98.972773 -896.000000 812.000000 98.973389 -897.000000 812.000000 98.976729 -898.000000 812.000000 98.974434 -821.000000 813.000000 100.395986 -822.000000 813.000000 99.952939 -823.000000 813.000000 99.764346 -824.000000 813.000000 99.575713 -825.000000 813.000000 99.498975 -826.000000 813.000000 99.493740 -827.000000 813.000000 99.492734 -828.000000 813.000000 99.492627 -829.000000 813.000000 99.475986 -830.000000 813.000000 99.462314 -831.000000 813.000000 99.446660 -832.000000 813.000000 99.420420 -833.000000 813.000000 99.399238 -834.000000 813.000000 99.377510 -835.000000 813.000000 99.352803 -836.000000 813.000000 99.328281 -837.000000 813.000000 99.299453 -838.000000 813.000000 99.290342 -839.000000 813.000000 99.286104 -840.000000 813.000000 99.278213 -841.000000 813.000000 99.267910 -842.000000 813.000000 99.261104 -843.000000 813.000000 99.254424 -844.000000 813.000000 99.247129 -845.000000 813.000000 99.235430 -846.000000 813.000000 99.229131 -847.000000 813.000000 99.222813 -848.000000 813.000000 99.216318 -849.000000 813.000000 99.208330 -850.000000 813.000000 99.199629 -851.000000 813.000000 99.191025 -852.000000 813.000000 99.183115 -853.000000 813.000000 99.176816 -854.000000 813.000000 99.170537 -855.000000 813.000000 99.163809 -856.000000 813.000000 99.156768 -857.000000 813.000000 99.150605 -858.000000 813.000000 99.144355 -859.000000 813.000000 99.139453 -860.000000 813.000000 99.135068 -861.000000 813.000000 99.130322 -862.000000 813.000000 99.122520 -863.000000 813.000000 99.116846 -864.000000 813.000000 99.116348 -865.000000 813.000000 99.115020 -866.000000 813.000000 99.113545 -867.000000 813.000000 99.115215 -868.000000 813.000000 99.100967 -869.000000 813.000000 99.089033 -870.000000 813.000000 99.084160 -871.000000 813.000000 99.080449 -872.000000 813.000000 99.079004 -873.000000 813.000000 99.072900 -874.000000 813.000000 99.069717 -875.000000 813.000000 99.067686 -876.000000 813.000000 99.064932 -877.000000 813.000000 99.065684 -878.000000 813.000000 99.065146 -879.000000 813.000000 99.062715 -880.000000 813.000000 99.059131 -881.000000 813.000000 99.048623 -882.000000 813.000000 99.038184 -883.000000 813.000000 99.026406 -884.000000 813.000000 99.012070 -885.000000 813.000000 98.996846 -886.000000 813.000000 98.980186 -887.000000 813.000000 98.976953 -888.000000 813.000000 98.975342 -889.000000 813.000000 98.971836 -890.000000 813.000000 98.967852 -891.000000 813.000000 98.962842 -892.000000 813.000000 98.956865 -893.000000 813.000000 98.947812 -894.000000 813.000000 98.932217 -895.000000 813.000000 98.920107 -896.000000 813.000000 98.920166 -897.000000 813.000000 98.921621 -898.000000 813.000000 98.897119 -821.000000 814.000000 100.055449 -822.000000 814.000000 99.737061 -823.000000 814.000000 99.536992 -824.000000 814.000000 99.493604 -825.000000 814.000000 99.493691 -826.000000 814.000000 99.492314 -827.000000 814.000000 99.494814 -828.000000 814.000000 99.466826 -829.000000 814.000000 99.438545 -830.000000 814.000000 99.418857 -831.000000 814.000000 99.395947 -832.000000 814.000000 99.370986 -833.000000 814.000000 99.345615 -834.000000 814.000000 99.324463 -835.000000 814.000000 99.303662 -836.000000 814.000000 99.282822 -837.000000 814.000000 99.268047 -838.000000 814.000000 99.257842 -839.000000 814.000000 99.249854 -840.000000 814.000000 99.242324 -841.000000 814.000000 99.236025 -842.000000 814.000000 99.229648 -843.000000 814.000000 99.221836 -844.000000 814.000000 99.213320 -845.000000 814.000000 99.204883 -846.000000 814.000000 99.200078 -847.000000 814.000000 99.195527 -848.000000 814.000000 99.190156 -849.000000 814.000000 99.182559 -850.000000 814.000000 99.176436 -851.000000 814.000000 99.169219 -852.000000 814.000000 99.161084 -853.000000 814.000000 99.153750 -854.000000 814.000000 99.146602 -855.000000 814.000000 99.139053 -856.000000 814.000000 99.131387 -857.000000 814.000000 99.125156 -858.000000 814.000000 99.120234 -859.000000 814.000000 99.116143 -860.000000 814.000000 99.114258 -861.000000 814.000000 99.105059 -862.000000 814.000000 99.097842 -863.000000 814.000000 99.093721 -864.000000 814.000000 99.092871 -865.000000 814.000000 99.092412 -866.000000 814.000000 99.092314 -867.000000 814.000000 99.093760 -868.000000 814.000000 99.076807 -869.000000 814.000000 99.064238 -870.000000 814.000000 99.057070 -871.000000 814.000000 99.052314 -872.000000 814.000000 99.047588 -873.000000 814.000000 99.042529 -874.000000 814.000000 99.038047 -875.000000 814.000000 99.034658 -876.000000 814.000000 99.032109 -877.000000 814.000000 99.030371 -878.000000 814.000000 99.028252 -879.000000 814.000000 99.025361 -880.000000 814.000000 99.021973 -881.000000 814.000000 99.016064 -882.000000 814.000000 99.009639 -883.000000 814.000000 98.998555 -884.000000 814.000000 98.983799 -885.000000 814.000000 98.967686 -886.000000 814.000000 98.949766 -887.000000 814.000000 98.953379 -888.000000 814.000000 98.954053 -889.000000 814.000000 98.956377 -890.000000 814.000000 98.945420 -891.000000 814.000000 98.922227 -892.000000 814.000000 98.921777 -893.000000 814.000000 98.933125 -894.000000 814.000000 98.924063 -895.000000 814.000000 98.908086 -896.000000 814.000000 98.900264 -897.000000 814.000000 98.920654 -898.000000 814.000000 98.932461 -821.000000 815.000000 99.832275 -822.000000 815.000000 99.564727 -823.000000 815.000000 99.443223 -824.000000 815.000000 99.447227 -825.000000 815.000000 99.492744 -826.000000 815.000000 99.469902 -827.000000 815.000000 99.453906 -828.000000 815.000000 99.427070 -829.000000 815.000000 99.398174 -830.000000 815.000000 99.371250 -831.000000 815.000000 99.348867 -832.000000 815.000000 99.322979 -833.000000 815.000000 99.299580 -834.000000 815.000000 99.280029 -835.000000 815.000000 99.263652 -836.000000 815.000000 99.249092 -837.000000 815.000000 99.238535 -838.000000 815.000000 99.228018 -839.000000 815.000000 99.217910 -840.000000 815.000000 99.209375 -841.000000 815.000000 99.204385 -842.000000 815.000000 99.200488 -843.000000 815.000000 99.192930 -844.000000 815.000000 99.183428 -845.000000 815.000000 99.177275 -846.000000 815.000000 99.172930 -847.000000 815.000000 99.169199 -848.000000 815.000000 99.165156 -849.000000 815.000000 99.159932 -850.000000 815.000000 99.155537 -851.000000 815.000000 99.147793 -852.000000 815.000000 99.138857 -853.000000 815.000000 99.130811 -854.000000 815.000000 99.122393 -855.000000 815.000000 99.114141 -856.000000 815.000000 99.106084 -857.000000 815.000000 99.098740 -858.000000 815.000000 99.094072 -859.000000 815.000000 99.089990 -860.000000 815.000000 99.085010 -861.000000 815.000000 99.074951 -862.000000 815.000000 99.069258 -863.000000 815.000000 99.066670 -864.000000 815.000000 99.064229 -865.000000 815.000000 99.062168 -866.000000 815.000000 99.060596 -867.000000 815.000000 99.056279 -868.000000 815.000000 99.045752 -869.000000 815.000000 99.034873 -870.000000 815.000000 99.027617 -871.000000 815.000000 99.021523 -872.000000 815.000000 99.015303 -873.000000 815.000000 99.008359 -874.000000 815.000000 99.003975 -875.000000 815.000000 98.999863 -876.000000 815.000000 98.995811 -877.000000 815.000000 98.992988 -878.000000 815.000000 98.990820 -879.000000 815.000000 98.988076 -880.000000 815.000000 98.984111 -881.000000 815.000000 98.980439 -882.000000 815.000000 98.974502 -883.000000 815.000000 98.962793 -884.000000 815.000000 98.954102 -885.000000 815.000000 98.938887 -886.000000 815.000000 98.920928 -887.000000 815.000000 98.895996 -888.000000 815.000000 98.932090 -889.000000 815.000000 98.947314 -890.000000 815.000000 98.951416 -891.000000 815.000000 98.914473 -892.000000 815.000000 98.914326 -893.000000 815.000000 98.941797 -894.000000 815.000000 98.958203 -895.000000 815.000000 98.975547 -896.000000 815.000000 98.989824 -897.000000 815.000000 99.008555 -898.000000 815.000000 99.018145 -821.000000 816.000000 99.584639 -822.000000 816.000000 99.491006 -823.000000 816.000000 99.415986 -824.000000 816.000000 99.489355 -825.000000 816.000000 99.489141 -826.000000 816.000000 99.450635 -827.000000 816.000000 99.416123 -828.000000 816.000000 99.384824 -829.000000 816.000000 99.355537 -830.000000 816.000000 99.331201 -831.000000 816.000000 99.313438 -832.000000 816.000000 99.291533 -833.000000 816.000000 99.271504 -834.000000 816.000000 99.252939 -835.000000 816.000000 99.233633 -836.000000 816.000000 99.221631 -837.000000 816.000000 99.211074 -838.000000 816.000000 99.200527 -839.000000 816.000000 99.189805 -840.000000 816.000000 99.180146 -841.000000 816.000000 99.174473 -842.000000 816.000000 99.172256 -843.000000 816.000000 99.166162 -844.000000 816.000000 99.160371 -845.000000 816.000000 99.155488 -846.000000 816.000000 99.150752 -847.000000 816.000000 99.146797 -848.000000 816.000000 99.142695 -849.000000 816.000000 99.138477 -850.000000 816.000000 99.134102 -851.000000 816.000000 99.127334 -852.000000 816.000000 99.116836 -853.000000 816.000000 99.107002 -854.000000 816.000000 99.096904 -855.000000 816.000000 99.085801 -856.000000 816.000000 99.077451 -857.000000 816.000000 99.071514 -858.000000 816.000000 99.063350 -859.000000 816.000000 99.057920 -860.000000 816.000000 99.050684 -861.000000 816.000000 99.041260 -862.000000 816.000000 99.038535 -863.000000 816.000000 99.035596 -864.000000 816.000000 99.032725 -865.000000 816.000000 99.028252 -866.000000 816.000000 99.027803 -867.000000 816.000000 99.019766 -868.000000 816.000000 99.008252 -869.000000 816.000000 99.000371 -870.000000 816.000000 98.994102 -871.000000 816.000000 98.989297 -872.000000 816.000000 98.973945 -873.000000 816.000000 98.970439 -874.000000 816.000000 98.968965 -875.000000 816.000000 98.964404 -876.000000 816.000000 98.961572 -877.000000 816.000000 98.957832 -878.000000 816.000000 98.950693 -879.000000 816.000000 98.951309 -880.000000 816.000000 98.948037 -881.000000 816.000000 98.939063 -882.000000 816.000000 98.929131 -883.000000 816.000000 98.907783 -884.000000 816.000000 98.914512 -885.000000 816.000000 98.910898 -886.000000 816.000000 98.912256 -887.000000 816.000000 98.914473 -888.000000 816.000000 98.930703 -889.000000 816.000000 98.949775 -890.000000 816.000000 98.970713 -891.000000 816.000000 98.954316 -892.000000 816.000000 98.960928 -893.000000 816.000000 98.985352 -894.000000 816.000000 99.008604 -895.000000 816.000000 99.037441 -896.000000 816.000000 99.076279 -897.000000 816.000000 99.090498 -898.000000 816.000000 99.086191 -821.000000 817.000000 99.449287 -822.000000 817.000000 99.462187 -823.000000 817.000000 99.445967 -824.000000 817.000000 99.450400 -825.000000 817.000000 99.449834 -826.000000 817.000000 99.413574 -827.000000 817.000000 99.373965 -828.000000 817.000000 99.343037 -829.000000 817.000000 99.312627 -830.000000 817.000000 99.290498 -831.000000 817.000000 99.277432 -832.000000 817.000000 99.261201 -833.000000 817.000000 99.244238 -834.000000 817.000000 99.227461 -835.000000 817.000000 99.207080 -836.000000 817.000000 99.185000 -837.000000 817.000000 99.185645 -838.000000 817.000000 99.175098 -839.000000 817.000000 99.163887 -840.000000 817.000000 99.158281 -841.000000 817.000000 99.157715 -842.000000 817.000000 99.150732 -843.000000 817.000000 99.144639 -844.000000 817.000000 99.138857 -845.000000 817.000000 99.133887 -846.000000 817.000000 99.128271 -847.000000 817.000000 99.124492 -848.000000 817.000000 99.121230 -849.000000 817.000000 99.115244 -850.000000 817.000000 99.111074 -851.000000 817.000000 99.108701 -852.000000 817.000000 99.095166 -853.000000 817.000000 99.081758 -854.000000 817.000000 99.067080 -855.000000 817.000000 99.054648 -856.000000 817.000000 99.045801 -857.000000 817.000000 99.036387 -858.000000 817.000000 99.026875 -859.000000 817.000000 99.021602 -860.000000 817.000000 99.015020 -861.000000 817.000000 99.007324 -862.000000 817.000000 99.000293 -863.000000 817.000000 98.994902 -864.000000 817.000000 98.990186 -865.000000 817.000000 98.986260 -866.000000 817.000000 98.993984 -867.000000 817.000000 98.984326 -868.000000 817.000000 98.968750 -869.000000 817.000000 98.961367 -870.000000 817.000000 98.948379 -871.000000 817.000000 98.937139 -872.000000 817.000000 98.922412 -873.000000 817.000000 98.925986 -874.000000 817.000000 98.930645 -875.000000 817.000000 98.928359 -876.000000 817.000000 98.924307 -877.000000 817.000000 98.928643 -878.000000 817.000000 98.917451 -879.000000 817.000000 98.901875 -880.000000 817.000000 98.917451 -881.000000 817.000000 98.920156 -882.000000 817.000000 98.911592 -883.000000 817.000000 98.898613 -884.000000 817.000000 98.914492 -885.000000 817.000000 98.926836 -886.000000 817.000000 98.938213 -887.000000 817.000000 98.953203 -888.000000 817.000000 98.968623 -889.000000 817.000000 98.984180 -890.000000 817.000000 99.004014 -891.000000 817.000000 99.008760 -892.000000 817.000000 99.017695 -893.000000 817.000000 99.033809 -894.000000 817.000000 99.058232 -895.000000 817.000000 99.093223 -896.000000 817.000000 99.115576 -897.000000 817.000000 99.125537 -898.000000 817.000000 99.129883 -821.000000 818.000000 99.421299 -822.000000 818.000000 99.415742 -823.000000 818.000000 99.415742 -824.000000 818.000000 99.416191 -825.000000 818.000000 99.398857 -826.000000 818.000000 99.367461 -827.000000 818.000000 99.326104 -828.000000 818.000000 99.300273 -829.000000 818.000000 99.285586 -830.000000 818.000000 99.266465 -831.000000 818.000000 99.250420 -832.000000 818.000000 99.236172 -833.000000 818.000000 99.218896 -834.000000 818.000000 99.204922 -835.000000 818.000000 99.191904 -836.000000 818.000000 99.174561 -837.000000 818.000000 99.162607 -838.000000 818.000000 99.153594 -839.000000 818.000000 99.141191 -840.000000 818.000000 99.142900 -841.000000 818.000000 99.141289 -842.000000 818.000000 99.131680 -843.000000 818.000000 99.125137 -844.000000 818.000000 99.118096 -845.000000 818.000000 99.111924 -846.000000 818.000000 99.105312 -847.000000 818.000000 99.100635 -848.000000 818.000000 99.095322 -849.000000 818.000000 99.083906 -850.000000 818.000000 99.084531 -851.000000 818.000000 99.088291 -852.000000 818.000000 99.068535 -853.000000 818.000000 99.052080 -854.000000 818.000000 99.033867 -855.000000 818.000000 99.022324 -856.000000 818.000000 99.012002 -857.000000 818.000000 99.001738 -858.000000 818.000000 98.988281 -859.000000 818.000000 98.979297 -860.000000 818.000000 98.969209 -861.000000 818.000000 98.957373 -862.000000 818.000000 98.949648 -863.000000 818.000000 98.956875 -864.000000 818.000000 98.951865 -865.000000 818.000000 98.943730 -866.000000 818.000000 98.952461 -867.000000 818.000000 98.944375 -868.000000 818.000000 98.940059 -869.000000 818.000000 98.929609 -870.000000 818.000000 98.910674 -871.000000 818.000000 98.901660 -872.000000 818.000000 98.895068 -873.000000 818.000000 98.895000 -874.000000 818.000000 98.893711 -875.000000 818.000000 98.895439 -876.000000 818.000000 98.915811 -877.000000 818.000000 98.917158 -878.000000 818.000000 98.905098 -879.000000 818.000000 98.903477 -880.000000 818.000000 98.928242 -881.000000 818.000000 98.928818 -882.000000 818.000000 98.931514 -883.000000 818.000000 98.936982 -884.000000 818.000000 98.955098 -885.000000 818.000000 98.967949 -886.000000 818.000000 98.982021 -887.000000 818.000000 98.993828 -888.000000 818.000000 99.008838 -889.000000 818.000000 99.032285 -890.000000 818.000000 99.058750 -891.000000 818.000000 99.071768 -892.000000 818.000000 99.067979 -893.000000 818.000000 99.080889 -894.000000 818.000000 99.102266 -895.000000 818.000000 99.128564 -896.000000 818.000000 99.140654 -897.000000 818.000000 99.147646 -898.000000 818.000000 99.153291 -821.000000 819.000000 99.395596 -822.000000 819.000000 99.368369 -823.000000 819.000000 99.372979 -824.000000 819.000000 99.372998 -825.000000 819.000000 99.355049 -826.000000 819.000000 99.327822 -827.000000 819.000000 99.288330 -828.000000 819.000000 99.271191 -829.000000 819.000000 99.262510 -830.000000 819.000000 99.245654 -831.000000 819.000000 99.234131 -832.000000 819.000000 99.217275 -833.000000 819.000000 99.198818 -834.000000 819.000000 99.191855 -835.000000 819.000000 99.172227 -836.000000 819.000000 99.156465 -837.000000 819.000000 99.152822 -838.000000 819.000000 99.148770 -839.000000 819.000000 99.129639 -840.000000 819.000000 99.129688 -841.000000 819.000000 99.124795 -842.000000 819.000000 99.119512 -843.000000 819.000000 99.114102 -844.000000 819.000000 99.103799 -845.000000 819.000000 99.090850 -846.000000 819.000000 99.074121 -847.000000 819.000000 99.066172 -848.000000 819.000000 99.058281 -849.000000 819.000000 99.053721 -850.000000 819.000000 99.065439 -851.000000 819.000000 99.071816 -852.000000 819.000000 99.048281 -853.000000 819.000000 99.020615 -854.000000 819.000000 99.001025 -855.000000 819.000000 98.983906 -856.000000 819.000000 98.970645 -857.000000 819.000000 98.950801 -858.000000 819.000000 98.945400 -859.000000 819.000000 98.927158 -860.000000 819.000000 98.919111 -861.000000 819.000000 98.904609 -862.000000 819.000000 98.902031 -863.000000 819.000000 98.900078 -864.000000 819.000000 98.899687 -865.000000 819.000000 98.905205 -866.000000 819.000000 98.913447 -867.000000 819.000000 98.910547 -868.000000 819.000000 98.907061 -869.000000 819.000000 98.900400 -870.000000 819.000000 98.902666 -871.000000 819.000000 98.895459 -872.000000 819.000000 98.895000 -873.000000 819.000000 98.894141 -874.000000 819.000000 98.917295 -875.000000 819.000000 98.895947 -876.000000 819.000000 98.927490 -877.000000 819.000000 98.927012 -878.000000 819.000000 98.916211 -879.000000 819.000000 98.919600 -880.000000 819.000000 98.944424 -881.000000 819.000000 98.959590 -882.000000 819.000000 98.966406 -883.000000 819.000000 98.982012 -884.000000 819.000000 99.000127 -885.000000 819.000000 99.012178 -886.000000 819.000000 99.021611 -887.000000 819.000000 99.030615 -888.000000 819.000000 99.046885 -889.000000 819.000000 99.068857 -890.000000 819.000000 99.102393 -891.000000 819.000000 99.115410 -892.000000 819.000000 99.112422 -893.000000 819.000000 99.119033 -894.000000 819.000000 99.137949 -895.000000 819.000000 99.155215 -896.000000 819.000000 99.163145 -897.000000 819.000000 99.168936 -898.000000 819.000000 99.175469 -821.000000 820.000000 99.345967 -822.000000 820.000000 99.298066 -823.000000 820.000000 99.302646 -824.000000 820.000000 99.308477 -825.000000 820.000000 99.310752 -826.000000 820.000000 99.298916 -827.000000 820.000000 99.257734 -828.000000 820.000000 99.252061 -829.000000 820.000000 99.255234 -830.000000 820.000000 99.251875 -831.000000 820.000000 99.240078 -832.000000 820.000000 99.211934 -833.000000 820.000000 99.195518 -834.000000 820.000000 99.190127 -835.000000 820.000000 99.178281 -836.000000 820.000000 99.182432 -837.000000 820.000000 99.158516 -838.000000 820.000000 99.145576 -839.000000 820.000000 99.130029 -840.000000 820.000000 99.126240 -841.000000 820.000000 99.125391 -842.000000 820.000000 99.121318 -843.000000 820.000000 99.111416 -844.000000 820.000000 99.103291 -845.000000 820.000000 99.096094 -846.000000 820.000000 99.076133 -847.000000 820.000000 99.071426 -848.000000 820.000000 99.065859 -849.000000 820.000000 99.058330 -850.000000 820.000000 99.058037 -851.000000 820.000000 99.057100 -852.000000 820.000000 99.036182 -853.000000 820.000000 99.002041 -854.000000 820.000000 98.972109 -855.000000 820.000000 98.942627 -856.000000 820.000000 98.930664 -857.000000 820.000000 98.903340 -858.000000 820.000000 98.940508 -859.000000 820.000000 98.925469 -860.000000 820.000000 98.929248 -861.000000 820.000000 98.946172 -862.000000 820.000000 98.940977 -863.000000 820.000000 98.945625 -864.000000 820.000000 98.945967 -865.000000 820.000000 98.949043 -866.000000 820.000000 98.941387 -867.000000 820.000000 98.944189 -868.000000 820.000000 98.947520 -869.000000 820.000000 98.944971 -870.000000 820.000000 98.947187 -871.000000 820.000000 98.951162 -872.000000 820.000000 98.950703 -873.000000 820.000000 98.953291 -874.000000 820.000000 98.956436 -875.000000 820.000000 98.944385 -876.000000 820.000000 98.956484 -877.000000 820.000000 98.959385 -878.000000 820.000000 98.963291 -879.000000 820.000000 98.968457 -880.000000 820.000000 98.977031 -881.000000 820.000000 98.990518 -882.000000 820.000000 99.005791 -883.000000 820.000000 99.020166 -884.000000 820.000000 99.034453 -885.000000 820.000000 99.047842 -886.000000 820.000000 99.059258 -887.000000 820.000000 99.069678 -888.000000 820.000000 99.084219 -889.000000 820.000000 99.108115 -890.000000 820.000000 99.125918 -891.000000 820.000000 99.139297 -892.000000 820.000000 99.151875 -893.000000 820.000000 99.163008 -894.000000 820.000000 99.170928 -895.000000 820.000000 99.177969 -896.000000 820.000000 99.184785 -897.000000 820.000000 99.191504 -898.000000 820.000000 99.198262 -821.000000 821.000000 99.388994 -822.000000 821.000000 99.348076 -823.000000 821.000000 99.334844 -824.000000 821.000000 99.336592 -825.000000 821.000000 99.325762 -826.000000 821.000000 99.311592 -827.000000 821.000000 99.294873 -828.000000 821.000000 99.283115 -829.000000 821.000000 99.281348 -830.000000 821.000000 99.272939 -831.000000 821.000000 99.256836 -832.000000 821.000000 99.236650 -833.000000 821.000000 99.234727 -834.000000 821.000000 99.230879 -835.000000 821.000000 99.211006 -836.000000 821.000000 99.190947 -837.000000 821.000000 99.175947 -838.000000 821.000000 99.169873 -839.000000 821.000000 99.158037 -840.000000 821.000000 99.147588 -841.000000 821.000000 99.140996 -842.000000 821.000000 99.134590 -843.000000 821.000000 99.128145 -844.000000 821.000000 99.120693 -845.000000 821.000000 99.112646 -846.000000 821.000000 99.100234 -847.000000 821.000000 99.091816 -848.000000 821.000000 99.083760 -849.000000 821.000000 99.075186 -850.000000 821.000000 99.064775 -851.000000 821.000000 99.060967 -852.000000 821.000000 99.051377 -853.000000 821.000000 99.030000 -854.000000 821.000000 99.004785 -855.000000 821.000000 98.980576 -856.000000 821.000000 98.970195 -857.000000 821.000000 98.980264 -858.000000 821.000000 98.987686 -859.000000 821.000000 98.985723 -860.000000 821.000000 98.986855 -861.000000 821.000000 98.994043 -862.000000 821.000000 98.991016 -863.000000 821.000000 98.990068 -864.000000 821.000000 98.991074 -865.000000 821.000000 98.989883 -866.000000 821.000000 98.983076 -867.000000 821.000000 98.985459 -868.000000 821.000000 98.986016 -869.000000 821.000000 98.989766 -870.000000 821.000000 98.994062 -871.000000 821.000000 98.995908 -872.000000 821.000000 98.991904 -873.000000 821.000000 98.988535 -874.000000 821.000000 98.993389 -875.000000 821.000000 98.994746 -876.000000 821.000000 98.995254 -877.000000 821.000000 98.997783 -878.000000 821.000000 99.002393 -879.000000 821.000000 99.010986 -880.000000 821.000000 99.019316 -881.000000 821.000000 99.031338 -882.000000 821.000000 99.043262 -883.000000 821.000000 99.056143 -884.000000 821.000000 99.068994 -885.000000 821.000000 99.082617 -886.000000 821.000000 99.095986 -887.000000 821.000000 99.106592 -888.000000 821.000000 99.118105 -889.000000 821.000000 99.131826 -890.000000 821.000000 99.146885 -891.000000 821.000000 99.160107 -892.000000 821.000000 99.173340 -893.000000 821.000000 99.185879 -894.000000 821.000000 99.193916 -895.000000 821.000000 99.200898 -896.000000 821.000000 99.208027 -897.000000 821.000000 99.215068 -898.000000 821.000000 99.222607 -821.000000 822.000000 99.458955 -822.000000 822.000000 99.413652 -823.000000 822.000000 99.393018 -824.000000 822.000000 99.378213 -825.000000 822.000000 99.364658 -826.000000 822.000000 99.346279 -827.000000 822.000000 99.329541 -828.000000 822.000000 99.318408 -829.000000 822.000000 99.309160 -830.000000 822.000000 99.296953 -831.000000 822.000000 99.283232 -832.000000 822.000000 99.265723 -833.000000 822.000000 99.252998 -834.000000 822.000000 99.243506 -835.000000 822.000000 99.232725 -836.000000 822.000000 99.218799 -837.000000 822.000000 99.203887 -838.000000 822.000000 99.195078 -839.000000 822.000000 99.184346 -840.000000 822.000000 99.173975 -841.000000 822.000000 99.165361 -842.000000 822.000000 99.158408 -843.000000 822.000000 99.150869 -844.000000 822.000000 99.142236 -845.000000 822.000000 99.132734 -846.000000 822.000000 99.123027 -847.000000 822.000000 99.113242 -848.000000 822.000000 99.104414 -849.000000 822.000000 99.091494 -850.000000 822.000000 99.077295 -851.000000 822.000000 99.058516 -852.000000 822.000000 99.059297 -853.000000 822.000000 99.056035 -854.000000 822.000000 99.044590 -855.000000 822.000000 99.035781 -856.000000 822.000000 99.033486 -857.000000 822.000000 99.033936 -858.000000 822.000000 99.038379 -859.000000 822.000000 99.042920 -860.000000 822.000000 99.042725 -861.000000 822.000000 99.039766 -862.000000 822.000000 99.036123 -863.000000 822.000000 99.033457 -864.000000 822.000000 99.034414 -865.000000 822.000000 99.035938 -866.000000 822.000000 99.032148 -867.000000 822.000000 99.027578 -868.000000 822.000000 99.028164 -869.000000 822.000000 99.031563 -870.000000 822.000000 99.037627 -871.000000 822.000000 99.046123 -872.000000 822.000000 99.055830 -873.000000 822.000000 99.058447 -874.000000 822.000000 99.047803 -875.000000 822.000000 99.040801 -876.000000 822.000000 99.034785 -877.000000 822.000000 99.035410 -878.000000 822.000000 99.039219 -879.000000 822.000000 99.046387 -880.000000 822.000000 99.056025 -881.000000 822.000000 99.064326 -882.000000 822.000000 99.076055 -883.000000 822.000000 99.089033 -884.000000 822.000000 99.103301 -885.000000 822.000000 99.116045 -886.000000 822.000000 99.126260 -887.000000 822.000000 99.133818 -888.000000 822.000000 99.143057 -889.000000 822.000000 99.152764 -890.000000 822.000000 99.167236 -891.000000 822.000000 99.181553 -892.000000 822.000000 99.194580 -893.000000 822.000000 99.207588 -894.000000 822.000000 99.216855 -895.000000 822.000000 99.224424 -896.000000 822.000000 99.232129 -897.000000 822.000000 99.239385 -898.000000 822.000000 99.246475 -821.000000 823.000000 99.542236 -822.000000 823.000000 99.453848 -823.000000 823.000000 99.436055 -824.000000 823.000000 99.420322 -825.000000 823.000000 99.403623 -826.000000 823.000000 99.383008 -827.000000 823.000000 99.367295 -828.000000 823.000000 99.354229 -829.000000 823.000000 99.343281 -830.000000 823.000000 99.329912 -831.000000 823.000000 99.313867 -832.000000 823.000000 99.297354 -833.000000 823.000000 99.281533 -834.000000 823.000000 99.268389 -835.000000 823.000000 99.256768 -836.000000 823.000000 99.244531 -837.000000 823.000000 99.232754 -838.000000 823.000000 99.221611 -839.000000 823.000000 99.211074 -840.000000 823.000000 99.200449 -841.000000 823.000000 99.190566 -842.000000 823.000000 99.181904 -843.000000 823.000000 99.174063 -844.000000 823.000000 99.165049 -845.000000 823.000000 99.155937 -846.000000 823.000000 99.146309 -847.000000 823.000000 99.136660 -848.000000 823.000000 99.127041 -849.000000 823.000000 99.117236 -850.000000 823.000000 99.105811 -851.000000 823.000000 99.095713 -852.000000 823.000000 99.089385 -853.000000 823.000000 99.085908 -854.000000 823.000000 99.090801 -855.000000 823.000000 99.091934 -856.000000 823.000000 99.082705 -857.000000 823.000000 99.078604 -858.000000 823.000000 99.082070 -859.000000 823.000000 99.090264 -860.000000 823.000000 99.092842 -861.000000 823.000000 99.083740 -862.000000 823.000000 99.078906 -863.000000 823.000000 99.075645 -864.000000 823.000000 99.077959 -865.000000 823.000000 99.084775 -866.000000 823.000000 99.083555 -867.000000 823.000000 99.072939 -868.000000 823.000000 99.070078 -869.000000 823.000000 99.072344 -870.000000 823.000000 99.078008 -871.000000 823.000000 99.085361 -872.000000 823.000000 99.095322 -873.000000 823.000000 99.103535 -874.000000 823.000000 99.093213 -875.000000 823.000000 99.080566 -876.000000 823.000000 99.072393 -877.000000 823.000000 99.072051 -878.000000 823.000000 99.075879 -879.000000 823.000000 99.081328 -880.000000 823.000000 99.089111 -881.000000 823.000000 99.096631 -882.000000 823.000000 99.107510 -883.000000 823.000000 99.119619 -884.000000 823.000000 99.132617 -885.000000 823.000000 99.143076 -886.000000 823.000000 99.151104 -887.000000 823.000000 99.158770 -888.000000 823.000000 99.163340 -889.000000 823.000000 99.173311 -890.000000 823.000000 99.189063 -891.000000 823.000000 99.204199 -892.000000 823.000000 99.217812 -893.000000 823.000000 99.230068 -894.000000 823.000000 99.240479 -895.000000 823.000000 99.248760 -896.000000 823.000000 99.256191 -897.000000 823.000000 99.263760 -898.000000 823.000000 99.271162 -821.000000 824.000000 99.666152 -822.000000 824.000000 99.489082 -823.000000 824.000000 99.484326 -824.000000 824.000000 99.445176 -825.000000 824.000000 99.415156 -826.000000 824.000000 99.414102 -827.000000 824.000000 99.399297 -828.000000 824.000000 99.384941 -829.000000 824.000000 99.374609 -830.000000 824.000000 99.363535 -831.000000 824.000000 99.347246 -832.000000 824.000000 99.328398 -833.000000 824.000000 99.311436 -834.000000 824.000000 99.297363 -835.000000 824.000000 99.285039 -836.000000 824.000000 99.273223 -837.000000 824.000000 99.261377 -838.000000 824.000000 99.249629 -839.000000 824.000000 99.238145 -840.000000 824.000000 99.226816 -841.000000 824.000000 99.215420 -842.000000 824.000000 99.205742 -843.000000 824.000000 99.197178 -844.000000 824.000000 99.188076 -845.000000 824.000000 99.178984 -846.000000 824.000000 99.169629 -847.000000 824.000000 99.160352 -848.000000 824.000000 99.151641 -849.000000 824.000000 99.143262 -850.000000 824.000000 99.135107 -851.000000 824.000000 99.126816 -852.000000 824.000000 99.119180 -853.000000 824.000000 99.120420 -854.000000 824.000000 99.124746 -855.000000 824.000000 99.124082 -856.000000 824.000000 99.121113 -857.000000 824.000000 99.119424 -858.000000 824.000000 99.122051 -859.000000 824.000000 99.127715 -860.000000 824.000000 99.126113 -861.000000 824.000000 99.119893 -862.000000 824.000000 99.117695 -863.000000 824.000000 99.116211 -864.000000 824.000000 99.116543 -865.000000 824.000000 99.122539 -866.000000 824.000000 99.118545 -867.000000 824.000000 99.115225 -868.000000 824.000000 99.110332 -869.000000 824.000000 99.110840 -870.000000 824.000000 99.111240 -871.000000 824.000000 99.118242 -872.000000 824.000000 99.124238 -873.000000 824.000000 99.124531 -874.000000 824.000000 99.120527 -875.000000 824.000000 99.113057 -876.000000 824.000000 99.107607 -877.000000 824.000000 99.106436 -878.000000 824.000000 99.110898 -879.000000 824.000000 99.115771 -880.000000 824.000000 99.122139 -881.000000 824.000000 99.128945 -882.000000 824.000000 99.137666 -883.000000 824.000000 99.149189 -884.000000 824.000000 99.160830 -885.000000 824.000000 99.170801 -886.000000 824.000000 99.177842 -887.000000 824.000000 99.183848 -888.000000 824.000000 99.189600 -889.000000 824.000000 99.198838 -890.000000 824.000000 99.212480 -891.000000 824.000000 99.228027 -892.000000 824.000000 99.242695 -893.000000 824.000000 99.253984 -894.000000 824.000000 99.263877 -895.000000 824.000000 99.272793 -896.000000 824.000000 99.280430 -897.000000 824.000000 99.288242 -898.000000 824.000000 99.296846 -821.000000 825.000000 100.169043 -822.000000 825.000000 99.851836 -823.000000 825.000000 99.588916 -824.000000 825.000000 99.452021 -825.000000 825.000000 99.428867 -826.000000 825.000000 99.440537 -827.000000 825.000000 99.426719 -828.000000 825.000000 99.412832 -829.000000 825.000000 99.402207 -830.000000 825.000000 99.394238 -831.000000 825.000000 99.377344 -832.000000 825.000000 99.357559 -833.000000 825.000000 99.340098 -834.000000 825.000000 99.326064 -835.000000 825.000000 99.313740 -836.000000 825.000000 99.301787 -837.000000 825.000000 99.289717 -838.000000 825.000000 99.277441 -839.000000 825.000000 99.265127 -840.000000 825.000000 99.253066 -841.000000 825.000000 99.241045 -842.000000 825.000000 99.229687 -843.000000 825.000000 99.220215 -844.000000 825.000000 99.210898 -845.000000 825.000000 99.201855 -846.000000 825.000000 99.192881 -847.000000 825.000000 99.184473 -848.000000 825.000000 99.176914 -849.000000 825.000000 99.169521 -850.000000 825.000000 99.162021 -851.000000 825.000000 99.154463 -852.000000 825.000000 99.148145 -853.000000 825.000000 99.149639 -854.000000 825.000000 99.152324 -855.000000 825.000000 99.152100 -856.000000 825.000000 99.152295 -857.000000 825.000000 99.156475 -858.000000 825.000000 99.160586 -859.000000 825.000000 99.158242 -860.000000 825.000000 99.156797 -861.000000 825.000000 99.156035 -862.000000 825.000000 99.156611 -863.000000 825.000000 99.152900 -864.000000 825.000000 99.150967 -865.000000 825.000000 99.151152 -866.000000 825.000000 99.150205 -867.000000 825.000000 99.151846 -868.000000 825.000000 99.149805 -869.000000 825.000000 99.147500 -870.000000 825.000000 99.146924 -871.000000 825.000000 99.146758 -872.000000 825.000000 99.147910 -873.000000 825.000000 99.149238 -874.000000 825.000000 99.147588 -875.000000 825.000000 99.143838 -876.000000 825.000000 99.140791 -877.000000 825.000000 99.140234 -878.000000 825.000000 99.142754 -879.000000 825.000000 99.146611 -880.000000 825.000000 99.152734 -881.000000 825.000000 99.160645 -882.000000 825.000000 99.168076 -883.000000 825.000000 99.177373 -884.000000 825.000000 99.187588 -885.000000 825.000000 99.197598 -886.000000 825.000000 99.204355 -887.000000 825.000000 99.211035 -888.000000 825.000000 99.218232 -889.000000 825.000000 99.228955 -890.000000 825.000000 99.240430 -891.000000 825.000000 99.254375 -892.000000 825.000000 99.267471 -893.000000 825.000000 99.278496 -894.000000 825.000000 99.288174 -895.000000 825.000000 99.296777 -896.000000 825.000000 99.306221 -897.000000 825.000000 99.314727 -898.000000 825.000000 99.324609 -821.000000 826.000000 100.836699 -822.000000 826.000000 100.241719 -823.000000 826.000000 99.851758 -824.000000 826.000000 99.618057 -825.000000 826.000000 99.479346 -826.000000 826.000000 99.471045 -827.000000 826.000000 99.454307 -828.000000 826.000000 99.439189 -829.000000 826.000000 99.427627 -830.000000 826.000000 99.417422 -831.000000 826.000000 99.402305 -832.000000 826.000000 99.384463 -833.000000 826.000000 99.368291 -834.000000 826.000000 99.354336 -835.000000 826.000000 99.342324 -836.000000 826.000000 99.330313 -837.000000 826.000000 99.318242 -838.000000 826.000000 99.305713 -839.000000 826.000000 99.292598 -840.000000 826.000000 99.279922 -841.000000 826.000000 99.266357 -842.000000 826.000000 99.253145 -843.000000 826.000000 99.243584 -844.000000 826.000000 99.233994 -845.000000 826.000000 99.224092 -846.000000 826.000000 99.215420 -847.000000 826.000000 99.207578 -848.000000 826.000000 99.201475 -849.000000 826.000000 99.195566 -850.000000 826.000000 99.187959 -851.000000 826.000000 99.181660 -852.000000 826.000000 99.177432 -853.000000 826.000000 99.176680 -854.000000 826.000000 99.177354 -855.000000 826.000000 99.178232 -856.000000 826.000000 99.179434 -857.000000 826.000000 99.181416 -858.000000 826.000000 99.184600 -859.000000 826.000000 99.184062 -860.000000 826.000000 99.183047 -861.000000 826.000000 99.184551 -862.000000 826.000000 99.187432 -863.000000 826.000000 99.189609 -864.000000 826.000000 99.185996 -865.000000 826.000000 99.181475 -866.000000 826.000000 99.179023 -867.000000 826.000000 99.178701 -868.000000 826.000000 99.181553 -869.000000 826.000000 99.183242 -870.000000 826.000000 99.178418 -871.000000 826.000000 99.174951 -872.000000 826.000000 99.174365 -873.000000 826.000000 99.175254 -874.000000 826.000000 99.175791 -875.000000 826.000000 99.172070 -876.000000 826.000000 99.169824 -877.000000 826.000000 99.168965 -878.000000 826.000000 99.171543 -879.000000 826.000000 99.175566 -880.000000 826.000000 99.180674 -881.000000 826.000000 99.186963 -882.000000 826.000000 99.194844 -883.000000 826.000000 99.204219 -884.000000 826.000000 99.213809 -885.000000 826.000000 99.222910 -886.000000 826.000000 99.231182 -887.000000 826.000000 99.238477 -888.000000 826.000000 99.248379 -889.000000 826.000000 99.257803 -890.000000 826.000000 99.269111 -891.000000 826.000000 99.281211 -892.000000 826.000000 99.294551 -893.000000 826.000000 99.304316 -894.000000 826.000000 99.313330 -895.000000 826.000000 99.321924 -896.000000 826.000000 99.330420 -897.000000 826.000000 99.342129 -898.000000 826.000000 99.355000 -821.000000 827.000000 101.663311 -822.000000 827.000000 100.893691 -823.000000 827.000000 100.307178 -824.000000 827.000000 99.927822 -825.000000 827.000000 99.664375 -826.000000 827.000000 99.576104 -827.000000 827.000000 99.493193 -828.000000 827.000000 99.472432 -829.000000 827.000000 99.450508 -830.000000 827.000000 99.438848 -831.000000 827.000000 99.425967 -832.000000 827.000000 99.411230 -833.000000 827.000000 99.396123 -834.000000 827.000000 99.382725 -835.000000 827.000000 99.370840 -836.000000 827.000000 99.359082 -837.000000 827.000000 99.347451 -838.000000 827.000000 99.335127 -839.000000 827.000000 99.321289 -840.000000 827.000000 99.308018 -841.000000 827.000000 99.291914 -842.000000 827.000000 99.276270 -843.000000 827.000000 99.267061 -844.000000 827.000000 99.257451 -845.000000 827.000000 99.246953 -846.000000 827.000000 99.237598 -847.000000 827.000000 99.229355 -848.000000 827.000000 99.222871 -849.000000 827.000000 99.216826 -850.000000 827.000000 99.210986 -851.000000 827.000000 99.205459 -852.000000 827.000000 99.202803 -853.000000 827.000000 99.201309 -854.000000 827.000000 99.201104 -855.000000 827.000000 99.201650 -856.000000 827.000000 99.202197 -857.000000 827.000000 99.203174 -858.000000 827.000000 99.206172 -859.000000 827.000000 99.207734 -860.000000 827.000000 99.208682 -861.000000 827.000000 99.211035 -862.000000 827.000000 99.212930 -863.000000 827.000000 99.214102 -864.000000 827.000000 99.210098 -865.000000 827.000000 99.209443 -866.000000 827.000000 99.207178 -867.000000 827.000000 99.206885 -868.000000 827.000000 99.207207 -869.000000 827.000000 99.206816 -870.000000 827.000000 99.206436 -871.000000 827.000000 99.203965 -872.000000 827.000000 99.202031 -873.000000 827.000000 99.202314 -874.000000 827.000000 99.200078 -875.000000 827.000000 99.197783 -876.000000 827.000000 99.195811 -877.000000 827.000000 99.195391 -878.000000 827.000000 99.197148 -879.000000 827.000000 99.201670 -880.000000 827.000000 99.207012 -881.000000 827.000000 99.213281 -882.000000 827.000000 99.220635 -883.000000 827.000000 99.229639 -884.000000 827.000000 99.239180 -885.000000 827.000000 99.248467 -886.000000 827.000000 99.257568 -887.000000 827.000000 99.266396 -888.000000 827.000000 99.278760 -889.000000 827.000000 99.289082 -890.000000 827.000000 99.297227 -891.000000 827.000000 99.308115 -892.000000 827.000000 99.320664 -893.000000 827.000000 99.330205 -894.000000 827.000000 99.338877 -895.000000 827.000000 99.347451 -896.000000 827.000000 99.355713 -897.000000 827.000000 99.366846 -898.000000 827.000000 99.380986 -821.000000 828.000000 102.464531 -822.000000 828.000000 101.499248 -823.000000 828.000000 100.857187 -824.000000 828.000000 100.273369 -825.000000 828.000000 99.899521 -826.000000 828.000000 99.732324 -827.000000 828.000000 99.632344 -828.000000 828.000000 99.551572 -829.000000 828.000000 99.485576 -830.000000 828.000000 99.459170 -831.000000 828.000000 99.446553 -832.000000 828.000000 99.433682 -833.000000 828.000000 99.420635 -834.000000 828.000000 99.408262 -835.000000 828.000000 99.398789 -836.000000 828.000000 99.387402 -837.000000 828.000000 99.376191 -838.000000 828.000000 99.365117 -839.000000 828.000000 99.351074 -840.000000 828.000000 99.335479 -841.000000 828.000000 99.318672 -842.000000 828.000000 99.297998 -843.000000 828.000000 99.291953 -844.000000 828.000000 99.282236 -845.000000 828.000000 99.270586 -846.000000 828.000000 99.259307 -847.000000 828.000000 99.250635 -848.000000 828.000000 99.244062 -849.000000 828.000000 99.237637 -850.000000 828.000000 99.231504 -851.000000 828.000000 99.226270 -852.000000 828.000000 99.224307 -853.000000 828.000000 99.223721 -854.000000 828.000000 99.224043 -855.000000 828.000000 99.224590 -856.000000 828.000000 99.225127 -857.000000 828.000000 99.225439 -858.000000 828.000000 99.228535 -859.000000 828.000000 99.232998 -860.000000 828.000000 99.237070 -861.000000 828.000000 99.238145 -862.000000 828.000000 99.238340 -863.000000 828.000000 99.238223 -864.000000 828.000000 99.234707 -865.000000 828.000000 99.229883 -866.000000 828.000000 99.227461 -867.000000 828.000000 99.228848 -868.000000 828.000000 99.230889 -869.000000 828.000000 99.230781 -870.000000 828.000000 99.229707 -871.000000 828.000000 99.228447 -872.000000 828.000000 99.226875 -873.000000 828.000000 99.225117 -874.000000 828.000000 99.223428 -875.000000 828.000000 99.222080 -876.000000 828.000000 99.220928 -877.000000 828.000000 99.220498 -878.000000 828.000000 99.221973 -879.000000 828.000000 99.226670 -880.000000 828.000000 99.232227 -881.000000 828.000000 99.237803 -882.000000 828.000000 99.246016 -883.000000 828.000000 99.254775 -884.000000 828.000000 99.264443 -885.000000 828.000000 99.274189 -886.000000 828.000000 99.283467 -887.000000 828.000000 99.299961 -888.000000 828.000000 99.311953 -889.000000 828.000000 99.321973 -890.000000 828.000000 99.330625 -891.000000 828.000000 99.338447 -892.000000 828.000000 99.346748 -893.000000 828.000000 99.356465 -894.000000 828.000000 99.365000 -895.000000 828.000000 99.372803 -896.000000 828.000000 99.380566 -897.000000 828.000000 99.390928 -898.000000 828.000000 99.412979 -821.000000 829.000000 103.149482 -822.000000 829.000000 102.250869 -823.000000 829.000000 101.410449 -824.000000 829.000000 100.744463 -825.000000 829.000000 100.068027 -826.000000 829.000000 99.842920 -827.000000 829.000000 99.747646 -828.000000 829.000000 99.653965 -829.000000 829.000000 99.558623 -830.000000 829.000000 99.483584 -831.000000 829.000000 99.467646 -832.000000 829.000000 99.460830 -833.000000 829.000000 99.443359 -834.000000 829.000000 99.431279 -835.000000 829.000000 99.420771 -836.000000 829.000000 99.411328 -837.000000 829.000000 99.402334 -838.000000 829.000000 99.394219 -839.000000 829.000000 99.383496 -840.000000 829.000000 99.365137 -841.000000 829.000000 99.347168 -842.000000 829.000000 99.330293 -843.000000 829.000000 99.318105 -844.000000 829.000000 99.307842 -845.000000 829.000000 99.296104 -846.000000 829.000000 99.282031 -847.000000 829.000000 99.271289 -848.000000 829.000000 99.265059 -849.000000 829.000000 99.258457 -850.000000 829.000000 99.252246 -851.000000 829.000000 99.247070 -852.000000 829.000000 99.246045 -853.000000 829.000000 99.246191 -854.000000 829.000000 99.246533 -855.000000 829.000000 99.247451 -856.000000 829.000000 99.248467 -857.000000 829.000000 99.250947 -858.000000 829.000000 99.260117 -859.000000 829.000000 99.264297 -860.000000 829.000000 99.265645 -861.000000 829.000000 99.265264 -862.000000 829.000000 99.265342 -863.000000 829.000000 99.264854 -864.000000 829.000000 99.261348 -865.000000 829.000000 99.258516 -866.000000 829.000000 99.256777 -867.000000 829.000000 99.256465 -868.000000 829.000000 99.255947 -869.000000 829.000000 99.254893 -870.000000 829.000000 99.253193 -871.000000 829.000000 99.251631 -872.000000 829.000000 99.249971 -873.000000 829.000000 99.248057 -874.000000 829.000000 99.246152 -875.000000 829.000000 99.244775 -876.000000 829.000000 99.244355 -877.000000 829.000000 99.244248 -878.000000 829.000000 99.246357 -879.000000 829.000000 99.251338 -880.000000 829.000000 99.257324 -881.000000 829.000000 99.263213 -882.000000 829.000000 99.270977 -883.000000 829.000000 99.278301 -884.000000 829.000000 99.288857 -885.000000 829.000000 99.299922 -886.000000 829.000000 99.317422 -887.000000 829.000000 99.334424 -888.000000 829.000000 99.348584 -889.000000 829.000000 99.358350 -890.000000 829.000000 99.365635 -891.000000 829.000000 99.372617 -892.000000 829.000000 99.375674 -893.000000 829.000000 99.383193 -894.000000 829.000000 99.390449 -895.000000 829.000000 99.396943 -896.000000 829.000000 99.437148 -897.000000 829.000000 99.463564 -898.000000 829.000000 99.522275 -821.000000 830.000000 103.488809 -822.000000 830.000000 102.800850 -823.000000 830.000000 102.194785 -824.000000 830.000000 101.499111 -825.000000 830.000000 100.901895 -826.000000 830.000000 100.202588 -827.000000 830.000000 99.884844 -828.000000 830.000000 99.757109 -829.000000 830.000000 99.659102 -830.000000 830.000000 99.577764 -831.000000 830.000000 99.532139 -832.000000 830.000000 99.504775 -833.000000 830.000000 99.481084 -834.000000 830.000000 99.455635 -835.000000 830.000000 99.442949 -836.000000 830.000000 99.436074 -837.000000 830.000000 99.425684 -838.000000 830.000000 99.416934 -839.000000 830.000000 99.408799 -840.000000 830.000000 99.394307 -841.000000 830.000000 99.378115 -842.000000 830.000000 99.362344 -843.000000 830.000000 99.347559 -844.000000 830.000000 99.334141 -845.000000 830.000000 99.320869 -846.000000 830.000000 99.305469 -847.000000 830.000000 99.293945 -848.000000 830.000000 99.286729 -849.000000 830.000000 99.279951 -850.000000 830.000000 99.273457 -851.000000 830.000000 99.268203 -852.000000 830.000000 99.267520 -853.000000 830.000000 99.268125 -854.000000 830.000000 99.268848 -855.000000 830.000000 99.270967 -856.000000 830.000000 99.272891 -857.000000 830.000000 99.278330 -858.000000 830.000000 99.287500 -859.000000 830.000000 99.298076 -860.000000 830.000000 99.296162 -861.000000 830.000000 99.292559 -862.000000 830.000000 99.291914 -863.000000 830.000000 99.290840 -864.000000 830.000000 99.288545 -865.000000 830.000000 99.286680 -866.000000 830.000000 99.285439 -867.000000 830.000000 99.283281 -868.000000 830.000000 99.281514 -869.000000 830.000000 99.280186 -870.000000 830.000000 99.277725 -871.000000 830.000000 99.275059 -872.000000 830.000000 99.273457 -873.000000 830.000000 99.271426 -874.000000 830.000000 99.269180 -875.000000 830.000000 99.267373 -876.000000 830.000000 99.266914 -877.000000 830.000000 99.266777 -878.000000 830.000000 99.270771 -879.000000 830.000000 99.276025 -880.000000 830.000000 99.282168 -881.000000 830.000000 99.288623 -882.000000 830.000000 99.294795 -883.000000 830.000000 99.300713 -884.000000 830.000000 99.315771 -885.000000 830.000000 99.333320 -886.000000 830.000000 99.350439 -887.000000 830.000000 99.368848 -888.000000 830.000000 99.386953 -889.000000 830.000000 99.395342 -890.000000 830.000000 99.402510 -891.000000 830.000000 99.409805 -892.000000 830.000000 99.449229 -893.000000 830.000000 99.454033 -894.000000 830.000000 99.501377 -895.000000 830.000000 99.531914 -896.000000 830.000000 99.579453 -897.000000 830.000000 99.616963 -898.000000 830.000000 99.660801 -821.000000 831.000000 103.828076 -822.000000 831.000000 103.319424 -823.000000 831.000000 102.826641 -824.000000 831.000000 102.446563 -825.000000 831.000000 101.974473 -826.000000 831.000000 101.045947 -827.000000 831.000000 99.995137 -828.000000 831.000000 99.842588 -829.000000 831.000000 99.749180 -830.000000 831.000000 99.666123 -831.000000 831.000000 99.613066 -832.000000 831.000000 99.569941 -833.000000 831.000000 99.522246 -834.000000 831.000000 99.483320 -835.000000 831.000000 99.468809 -836.000000 831.000000 99.469639 -837.000000 831.000000 99.466035 -838.000000 831.000000 99.455176 -839.000000 831.000000 99.436406 -840.000000 831.000000 99.423213 -841.000000 831.000000 99.408125 -842.000000 831.000000 99.392715 -843.000000 831.000000 99.378057 -844.000000 831.000000 99.361836 -845.000000 831.000000 99.346396 -846.000000 831.000000 99.331406 -847.000000 831.000000 99.318750 -848.000000 831.000000 99.308906 -849.000000 831.000000 99.301602 -850.000000 831.000000 99.295078 -851.000000 831.000000 99.288682 -852.000000 831.000000 99.288740 -853.000000 831.000000 99.290078 -854.000000 831.000000 99.291035 -855.000000 831.000000 99.293975 -856.000000 831.000000 99.298564 -857.000000 831.000000 99.304121 -858.000000 831.000000 99.311162 -859.000000 831.000000 99.317637 -860.000000 831.000000 99.319941 -861.000000 831.000000 99.319766 -862.000000 831.000000 99.317988 -863.000000 831.000000 99.316514 -864.000000 831.000000 99.315381 -865.000000 831.000000 99.314414 -866.000000 831.000000 99.312979 -867.000000 831.000000 99.310850 -868.000000 831.000000 99.308896 -869.000000 831.000000 99.306572 -870.000000 831.000000 99.303232 -871.000000 831.000000 99.297998 -872.000000 831.000000 99.296895 -873.000000 831.000000 99.295312 -874.000000 831.000000 99.292764 -875.000000 831.000000 99.290283 -876.000000 831.000000 99.288252 -877.000000 831.000000 99.290850 -878.000000 831.000000 99.295791 -879.000000 831.000000 99.300811 -880.000000 831.000000 99.306963 -881.000000 831.000000 99.314189 -882.000000 831.000000 99.320781 -883.000000 831.000000 99.330020 -884.000000 831.000000 99.345898 -885.000000 831.000000 99.362695 -886.000000 831.000000 99.383447 -887.000000 831.000000 99.402930 -888.000000 831.000000 99.450723 -889.000000 831.000000 99.477852 -890.000000 831.000000 99.508428 -891.000000 831.000000 99.511719 -892.000000 831.000000 99.585322 -893.000000 831.000000 99.660635 -894.000000 831.000000 99.790176 -895.000000 831.000000 99.857617 -896.000000 831.000000 99.886846 -897.000000 831.000000 99.924238 -898.000000 831.000000 99.954326 -821.000000 832.000000 104.437998 -822.000000 832.000000 104.077520 -823.000000 832.000000 103.695547 -824.000000 832.000000 103.307285 -825.000000 832.000000 102.825498 -826.000000 832.000000 101.550439 -827.000000 832.000000 100.383428 -828.000000 832.000000 99.907539 -829.000000 832.000000 99.827363 -830.000000 832.000000 99.751143 -831.000000 832.000000 99.695059 -832.000000 832.000000 99.646641 -833.000000 832.000000 99.599844 -834.000000 832.000000 99.548770 -835.000000 832.000000 99.514424 -836.000000 832.000000 99.510312 -837.000000 832.000000 99.508877 -838.000000 832.000000 99.497285 -839.000000 832.000000 99.477373 -840.000000 832.000000 99.456260 -841.000000 832.000000 99.437695 -842.000000 832.000000 99.421436 -843.000000 832.000000 99.403730 -844.000000 832.000000 99.388057 -845.000000 832.000000 99.372354 -846.000000 832.000000 99.357471 -847.000000 832.000000 99.343389 -848.000000 832.000000 99.331846 -849.000000 832.000000 99.323906 -850.000000 832.000000 99.317744 -851.000000 832.000000 99.310430 -852.000000 832.000000 99.311289 -853.000000 832.000000 99.312881 -854.000000 832.000000 99.314736 -855.000000 832.000000 99.317930 -856.000000 832.000000 99.323066 -857.000000 832.000000 99.328369 -858.000000 832.000000 99.334512 -859.000000 832.000000 99.339766 -860.000000 832.000000 99.343389 -861.000000 832.000000 99.345059 -862.000000 832.000000 99.343184 -863.000000 832.000000 99.341836 -864.000000 832.000000 99.341016 -865.000000 832.000000 99.340273 -866.000000 832.000000 99.339854 -867.000000 832.000000 99.338945 -868.000000 832.000000 99.336641 -869.000000 832.000000 99.333438 -870.000000 832.000000 99.330762 -871.000000 832.000000 99.326816 -872.000000 832.000000 99.323535 -873.000000 832.000000 99.320674 -874.000000 832.000000 99.317871 -875.000000 832.000000 99.315957 -876.000000 832.000000 99.314629 -877.000000 832.000000 99.320068 -878.000000 832.000000 99.325947 -879.000000 832.000000 99.327998 -880.000000 832.000000 99.331475 -881.000000 832.000000 99.339961 -882.000000 832.000000 99.347734 -883.000000 832.000000 99.357500 -884.000000 832.000000 99.369980 -885.000000 832.000000 99.393721 -886.000000 832.000000 99.430742 -887.000000 832.000000 99.484932 -888.000000 832.000000 99.546035 -889.000000 832.000000 99.583027 -890.000000 832.000000 99.640254 -891.000000 832.000000 99.759043 -892.000000 832.000000 99.942236 -893.000000 832.000000 100.106533 -894.000000 832.000000 100.190068 -895.000000 832.000000 100.187500 -896.000000 832.000000 100.224668 -897.000000 832.000000 100.247949 -898.000000 832.000000 100.253701 -821.000000 833.000000 106.534600 -822.000000 833.000000 105.491885 -823.000000 833.000000 104.694336 -824.000000 833.000000 104.077559 -825.000000 833.000000 103.472256 -826.000000 833.000000 102.135234 -827.000000 833.000000 100.820371 -828.000000 833.000000 100.176895 -829.000000 833.000000 99.949053 -830.000000 833.000000 99.858086 -831.000000 833.000000 99.789414 -832.000000 833.000000 99.729727 -833.000000 833.000000 99.667354 -834.000000 833.000000 99.629961 -835.000000 833.000000 99.597197 -836.000000 833.000000 99.569014 -837.000000 833.000000 99.555498 -838.000000 833.000000 99.542549 -839.000000 833.000000 99.519424 -840.000000 833.000000 99.492783 -841.000000 833.000000 99.466992 -842.000000 833.000000 99.446924 -843.000000 833.000000 99.428271 -844.000000 833.000000 99.411475 -845.000000 833.000000 99.396787 -846.000000 833.000000 99.382627 -847.000000 833.000000 99.368574 -848.000000 833.000000 99.356572 -849.000000 833.000000 99.348359 -850.000000 833.000000 99.342021 -851.000000 833.000000 99.336748 -852.000000 833.000000 99.335928 -853.000000 833.000000 99.337432 -854.000000 833.000000 99.339395 -855.000000 833.000000 99.342695 -856.000000 833.000000 99.347549 -857.000000 833.000000 99.352578 -858.000000 833.000000 99.357598 -859.000000 833.000000 99.362480 -860.000000 833.000000 99.365508 -861.000000 833.000000 99.367432 -862.000000 833.000000 99.367676 -863.000000 833.000000 99.366270 -864.000000 833.000000 99.366377 -865.000000 833.000000 99.367393 -866.000000 833.000000 99.368721 -867.000000 833.000000 99.368496 -868.000000 833.000000 99.367295 -869.000000 833.000000 99.364980 -870.000000 833.000000 99.361309 -871.000000 833.000000 99.356963 -872.000000 833.000000 99.351631 -873.000000 833.000000 99.348408 -874.000000 833.000000 99.344668 -875.000000 833.000000 99.342168 -876.000000 833.000000 99.353271 -877.000000 833.000000 99.356904 -878.000000 833.000000 99.362520 -879.000000 833.000000 99.357764 -880.000000 833.000000 99.358311 -881.000000 833.000000 99.370977 -882.000000 833.000000 99.383408 -883.000000 833.000000 99.393838 -884.000000 833.000000 99.420918 -885.000000 833.000000 99.472227 -886.000000 833.000000 99.522939 -887.000000 833.000000 99.574473 -888.000000 833.000000 99.722617 -889.000000 833.000000 99.890537 -890.000000 833.000000 100.040352 -891.000000 833.000000 100.198789 -892.000000 833.000000 100.388662 -893.000000 833.000000 100.513096 -894.000000 833.000000 100.598047 -895.000000 833.000000 100.606455 -896.000000 833.000000 100.623750 -897.000000 833.000000 100.634336 -898.000000 833.000000 100.645576 -821.000000 834.000000 108.286201 -822.000000 834.000000 107.460000 -823.000000 834.000000 106.175225 -824.000000 834.000000 104.986748 -825.000000 834.000000 103.859248 -826.000000 834.000000 102.599961 -827.000000 834.000000 101.413086 -828.000000 834.000000 100.724238 -829.000000 834.000000 100.222783 -830.000000 834.000000 99.983965 -831.000000 834.000000 99.883643 -832.000000 834.000000 99.816484 -833.000000 834.000000 99.753906 -834.000000 834.000000 99.715254 -835.000000 834.000000 99.679131 -836.000000 834.000000 99.645527 -837.000000 834.000000 99.613105 -838.000000 834.000000 99.589541 -839.000000 834.000000 99.559258 -840.000000 834.000000 99.526943 -841.000000 834.000000 99.495937 -842.000000 834.000000 99.473555 -843.000000 834.000000 99.451318 -844.000000 834.000000 99.433184 -845.000000 834.000000 99.418701 -846.000000 834.000000 99.405342 -847.000000 834.000000 99.392002 -848.000000 834.000000 99.379521 -849.000000 834.000000 99.372646 -850.000000 834.000000 99.367139 -851.000000 834.000000 99.361621 -852.000000 834.000000 99.359922 -853.000000 834.000000 99.362012 -854.000000 834.000000 99.364541 -855.000000 834.000000 99.368340 -856.000000 834.000000 99.371748 -857.000000 834.000000 99.376738 -858.000000 834.000000 99.381719 -859.000000 834.000000 99.386406 -860.000000 834.000000 99.388350 -861.000000 834.000000 99.389707 -862.000000 834.000000 99.390752 -863.000000 834.000000 99.391064 -864.000000 834.000000 99.392119 -865.000000 834.000000 99.395049 -866.000000 834.000000 99.398545 -867.000000 834.000000 99.400186 -868.000000 834.000000 99.399678 -869.000000 834.000000 99.398535 -870.000000 834.000000 99.393799 -871.000000 834.000000 99.387529 -872.000000 834.000000 99.383906 -873.000000 834.000000 99.377412 -874.000000 834.000000 99.385771 -875.000000 834.000000 99.403799 -876.000000 834.000000 99.420088 -877.000000 834.000000 99.419951 -878.000000 834.000000 99.406182 -879.000000 834.000000 99.386123 -880.000000 834.000000 99.389551 -881.000000 834.000000 99.406035 -882.000000 834.000000 99.443936 -883.000000 834.000000 99.479551 -884.000000 834.000000 99.534287 -885.000000 834.000000 99.582090 -886.000000 834.000000 99.719600 -887.000000 834.000000 99.943008 -888.000000 834.000000 100.120547 -889.000000 834.000000 100.306768 -890.000000 834.000000 100.498281 -891.000000 834.000000 100.647783 -892.000000 834.000000 100.895859 -893.000000 834.000000 101.013838 -894.000000 834.000000 101.069248 -895.000000 834.000000 101.064453 -896.000000 834.000000 101.047129 -897.000000 834.000000 101.052998 -898.000000 834.000000 101.085957 -821.000000 835.000000 109.438213 -822.000000 835.000000 108.229707 -823.000000 835.000000 107.052168 -824.000000 835.000000 105.716924 -825.000000 835.000000 104.383643 -826.000000 835.000000 103.203701 -827.000000 835.000000 102.086064 -828.000000 835.000000 101.409307 -829.000000 835.000000 100.829648 -830.000000 835.000000 100.396133 -831.000000 835.000000 100.162539 -832.000000 835.000000 99.921621 -833.000000 835.000000 99.857490 -834.000000 835.000000 99.800518 -835.000000 835.000000 99.761943 -836.000000 835.000000 99.721465 -837.000000 835.000000 99.692510 -838.000000 835.000000 99.653721 -839.000000 835.000000 99.615342 -840.000000 835.000000 99.571289 -841.000000 835.000000 99.524414 -842.000000 835.000000 99.498389 -843.000000 835.000000 99.472998 -844.000000 835.000000 99.453438 -845.000000 835.000000 99.439961 -846.000000 835.000000 99.427500 -847.000000 835.000000 99.414775 -848.000000 835.000000 99.403486 -849.000000 835.000000 99.397402 -850.000000 835.000000 99.394883 -851.000000 835.000000 99.389746 -852.000000 835.000000 99.384062 -853.000000 835.000000 99.387686 -854.000000 835.000000 99.392266 -855.000000 835.000000 99.395801 -856.000000 835.000000 99.398613 -857.000000 835.000000 99.400693 -858.000000 835.000000 99.405273 -859.000000 835.000000 99.408750 -860.000000 835.000000 99.410723 -861.000000 835.000000 99.411982 -862.000000 835.000000 99.413428 -863.000000 835.000000 99.416533 -864.000000 835.000000 99.422559 -865.000000 835.000000 99.427793 -866.000000 835.000000 99.432402 -867.000000 835.000000 99.434941 -868.000000 835.000000 99.435303 -869.000000 835.000000 99.433115 -870.000000 835.000000 99.427451 -871.000000 835.000000 99.419912 -872.000000 835.000000 99.425479 -873.000000 835.000000 99.452432 -874.000000 835.000000 99.444160 -875.000000 835.000000 99.480928 -876.000000 835.000000 99.496250 -877.000000 835.000000 99.493965 -878.000000 835.000000 99.465479 -879.000000 835.000000 99.440732 -880.000000 835.000000 99.446279 -881.000000 835.000000 99.482744 -882.000000 835.000000 99.526621 -883.000000 835.000000 99.583477 -884.000000 835.000000 99.748457 -885.000000 835.000000 99.956758 -886.000000 835.000000 100.166348 -887.000000 835.000000 100.402832 -888.000000 835.000000 100.638213 -889.000000 835.000000 100.826230 -890.000000 835.000000 100.990342 -891.000000 835.000000 101.171738 -892.000000 835.000000 101.497109 -893.000000 835.000000 101.609668 -894.000000 835.000000 101.728271 -895.000000 835.000000 101.758379 -896.000000 835.000000 101.725850 -897.000000 835.000000 101.698975 -898.000000 835.000000 101.727471 -821.000000 836.000000 110.357266 -822.000000 836.000000 108.845859 -823.000000 836.000000 107.215645 -824.000000 836.000000 105.823623 -825.000000 836.000000 104.512656 -826.000000 836.000000 103.505615 -827.000000 836.000000 102.738418 -828.000000 836.000000 102.092402 -829.000000 836.000000 101.615801 -830.000000 836.000000 101.016670 -831.000000 836.000000 100.553389 -832.000000 836.000000 100.195273 -833.000000 836.000000 99.954482 -834.000000 836.000000 99.890605 -835.000000 836.000000 99.839932 -836.000000 836.000000 99.802715 -837.000000 836.000000 99.760957 -838.000000 836.000000 99.719121 -839.000000 836.000000 99.678906 -840.000000 836.000000 99.635303 -841.000000 836.000000 99.584961 -842.000000 836.000000 99.523135 -843.000000 836.000000 99.493242 -844.000000 836.000000 99.470625 -845.000000 836.000000 99.459600 -846.000000 836.000000 99.448916 -847.000000 836.000000 99.438740 -848.000000 836.000000 99.432012 -849.000000 836.000000 99.428809 -850.000000 836.000000 99.425586 -851.000000 836.000000 99.419824 -852.000000 836.000000 99.415947 -853.000000 836.000000 99.417295 -854.000000 836.000000 99.420518 -855.000000 836.000000 99.424219 -856.000000 836.000000 99.425146 -857.000000 836.000000 99.426230 -858.000000 836.000000 99.428877 -859.000000 836.000000 99.431543 -860.000000 836.000000 99.432646 -861.000000 836.000000 99.433672 -862.000000 836.000000 99.435381 -863.000000 836.000000 99.442852 -864.000000 836.000000 99.454316 -865.000000 836.000000 99.463311 -866.000000 836.000000 99.467744 -867.000000 836.000000 99.470498 -868.000000 836.000000 99.473213 -869.000000 836.000000 99.473037 -870.000000 836.000000 99.471514 -871.000000 836.000000 99.491318 -872.000000 836.000000 99.504229 -873.000000 836.000000 99.551523 -874.000000 836.000000 99.565752 -875.000000 836.000000 99.585381 -876.000000 836.000000 99.596416 -877.000000 836.000000 99.582520 -878.000000 836.000000 99.561934 -879.000000 836.000000 99.546221 -880.000000 836.000000 99.550732 -881.000000 836.000000 99.581279 -882.000000 836.000000 99.663975 -883.000000 836.000000 99.900000 -884.000000 836.000000 100.142197 -885.000000 836.000000 100.360566 -886.000000 836.000000 100.577158 -887.000000 836.000000 100.832041 -888.000000 836.000000 101.129072 -889.000000 836.000000 101.423496 -890.000000 836.000000 101.708311 -891.000000 836.000000 102.039531 -892.000000 836.000000 102.242158 -893.000000 836.000000 102.412813 -894.000000 836.000000 102.520117 -895.000000 836.000000 102.591387 -896.000000 836.000000 102.633848 -897.000000 836.000000 102.528428 -898.000000 836.000000 102.383965 -821.000000 837.000000 110.424541 -822.000000 837.000000 108.545557 -823.000000 837.000000 106.772246 -824.000000 837.000000 105.431289 -825.000000 837.000000 104.386396 -826.000000 837.000000 103.762275 -827.000000 837.000000 103.128662 -828.000000 837.000000 102.547422 -829.000000 837.000000 101.982686 -830.000000 837.000000 101.446719 -831.000000 837.000000 100.992217 -832.000000 837.000000 100.577783 -833.000000 837.000000 100.186641 -834.000000 837.000000 99.974971 -835.000000 837.000000 99.906572 -836.000000 837.000000 99.872656 -837.000000 837.000000 99.829365 -838.000000 837.000000 99.786055 -839.000000 837.000000 99.744492 -840.000000 837.000000 99.703613 -841.000000 837.000000 99.647852 -842.000000 837.000000 99.587637 -843.000000 837.000000 99.524941 -844.000000 837.000000 99.494131 -845.000000 837.000000 99.478457 -846.000000 837.000000 99.469727 -847.000000 837.000000 99.463936 -848.000000 837.000000 99.461182 -849.000000 837.000000 99.461846 -850.000000 837.000000 99.459453 -851.000000 837.000000 99.456143 -852.000000 837.000000 99.453555 -853.000000 837.000000 99.452285 -854.000000 837.000000 99.451328 -855.000000 837.000000 99.452910 -856.000000 837.000000 99.453057 -857.000000 837.000000 99.452285 -858.000000 837.000000 99.454521 -859.000000 837.000000 99.456084 -860.000000 837.000000 99.458633 -861.000000 837.000000 99.455957 -862.000000 837.000000 99.457275 -863.000000 837.000000 99.468516 -864.000000 837.000000 99.482852 -865.000000 837.000000 99.503193 -866.000000 837.000000 99.502158 -867.000000 837.000000 99.506826 -868.000000 837.000000 99.514209 -869.000000 837.000000 99.525137 -870.000000 837.000000 99.542754 -871.000000 837.000000 99.587402 -872.000000 837.000000 99.604932 -873.000000 837.000000 99.679717 -874.000000 837.000000 99.720107 -875.000000 837.000000 99.765146 -876.000000 837.000000 99.767646 -877.000000 837.000000 99.753887 -878.000000 837.000000 99.743291 -879.000000 837.000000 99.742393 -880.000000 837.000000 99.750205 -881.000000 837.000000 99.825898 -882.000000 837.000000 100.001045 -883.000000 837.000000 100.230596 -884.000000 837.000000 100.536621 -885.000000 837.000000 100.779941 -886.000000 837.000000 101.007910 -887.000000 837.000000 101.273076 -888.000000 837.000000 101.793525 -889.000000 837.000000 102.202783 -890.000000 837.000000 102.582422 -891.000000 837.000000 102.862031 -892.000000 837.000000 103.003096 -893.000000 837.000000 103.155996 -894.000000 837.000000 103.221309 -895.000000 837.000000 103.270332 -896.000000 837.000000 103.287939 -897.000000 837.000000 103.187637 -898.000000 837.000000 103.046455 -821.000000 838.000000 110.107432 -822.000000 838.000000 108.087168 -823.000000 838.000000 106.359814 -824.000000 838.000000 104.950645 -825.000000 838.000000 104.372715 -826.000000 838.000000 103.875420 -827.000000 838.000000 103.340732 -828.000000 838.000000 102.882354 -829.000000 838.000000 102.344199 -830.000000 838.000000 101.833643 -831.000000 838.000000 101.391367 -832.000000 838.000000 100.987119 -833.000000 838.000000 100.595117 -834.000000 838.000000 100.228496 -835.000000 838.000000 100.021934 -836.000000 838.000000 99.956787 -837.000000 838.000000 99.904238 -838.000000 838.000000 99.858701 -839.000000 838.000000 99.816680 -840.000000 838.000000 99.786514 -841.000000 838.000000 99.730898 -842.000000 838.000000 99.685078 -843.000000 838.000000 99.642344 -844.000000 838.000000 99.590977 -845.000000 838.000000 99.548584 -846.000000 838.000000 99.520410 -847.000000 838.000000 99.505645 -848.000000 838.000000 99.491592 -849.000000 838.000000 99.495137 -850.000000 838.000000 99.495859 -851.000000 838.000000 99.493174 -852.000000 838.000000 99.489873 -853.000000 838.000000 99.487285 -854.000000 838.000000 99.485898 -855.000000 838.000000 99.487109 -856.000000 838.000000 99.487588 -857.000000 838.000000 99.482568 -858.000000 838.000000 99.483115 -859.000000 838.000000 99.497373 -860.000000 838.000000 99.489424 -861.000000 838.000000 99.474902 -862.000000 838.000000 99.478965 -863.000000 838.000000 99.491084 -864.000000 838.000000 99.540186 -865.000000 838.000000 99.562412 -866.000000 838.000000 99.579717 -867.000000 838.000000 99.545879 -868.000000 838.000000 99.566475 -869.000000 838.000000 99.620000 -870.000000 838.000000 99.657891 -871.000000 838.000000 99.753545 -872.000000 838.000000 99.805166 -873.000000 838.000000 99.844902 -874.000000 838.000000 99.869336 -875.000000 838.000000 99.916191 -876.000000 838.000000 99.954316 -877.000000 838.000000 99.970869 -878.000000 838.000000 99.977607 -879.000000 838.000000 100.039629 -880.000000 838.000000 100.115381 -881.000000 838.000000 100.277090 -882.000000 838.000000 100.444180 -883.000000 838.000000 100.690381 -884.000000 838.000000 100.924961 -885.000000 838.000000 101.180781 -886.000000 838.000000 101.607207 -887.000000 838.000000 102.065566 -888.000000 838.000000 102.553848 -889.000000 838.000000 102.901250 -890.000000 838.000000 103.225283 -891.000000 838.000000 103.537227 -892.000000 838.000000 103.722021 -893.000000 838.000000 103.856221 -894.000000 838.000000 103.907988 -895.000000 838.000000 103.949697 -896.000000 838.000000 103.864258 -897.000000 838.000000 103.791895 -898.000000 838.000000 103.649473 -821.000000 839.000000 109.881416 -822.000000 839.000000 107.977002 -823.000000 839.000000 106.268838 -824.000000 839.000000 104.713242 -825.000000 839.000000 104.347197 -826.000000 839.000000 103.980947 -827.000000 839.000000 103.530381 -828.000000 839.000000 103.117246 -829.000000 839.000000 102.689873 -830.000000 839.000000 102.234150 -831.000000 839.000000 101.793076 -832.000000 839.000000 101.379492 -833.000000 839.000000 100.992734 -834.000000 839.000000 100.605811 -835.000000 839.000000 100.267656 -836.000000 839.000000 100.082070 -837.000000 839.000000 99.980742 -838.000000 839.000000 99.938359 -839.000000 839.000000 99.899414 -840.000000 839.000000 99.875146 -841.000000 839.000000 99.846895 -842.000000 839.000000 99.790752 -843.000000 839.000000 99.762354 -844.000000 839.000000 99.736270 -845.000000 839.000000 99.665645 -846.000000 839.000000 99.618457 -847.000000 839.000000 99.601670 -848.000000 839.000000 99.581191 -849.000000 839.000000 99.549521 -850.000000 839.000000 99.533877 -851.000000 839.000000 99.538799 -852.000000 839.000000 99.530488 -853.000000 839.000000 99.522852 -854.000000 839.000000 99.518408 -855.000000 839.000000 99.523789 -856.000000 839.000000 99.528867 -857.000000 839.000000 99.516533 -858.000000 839.000000 99.515000 -859.000000 839.000000 99.584912 -860.000000 839.000000 99.604805 -861.000000 839.000000 99.595527 -862.000000 839.000000 99.600693 -863.000000 839.000000 99.621797 -864.000000 839.000000 99.657861 -865.000000 839.000000 99.756387 -866.000000 839.000000 99.788164 -867.000000 839.000000 99.829102 -868.000000 839.000000 99.825078 -869.000000 839.000000 99.810410 -870.000000 839.000000 99.853418 -871.000000 839.000000 99.957588 -872.000000 839.000000 100.012793 -873.000000 839.000000 100.036592 -874.000000 839.000000 100.098994 -875.000000 839.000000 100.030693 -876.000000 839.000000 100.158311 -877.000000 839.000000 100.284072 -878.000000 839.000000 100.379297 -879.000000 839.000000 100.526250 -880.000000 839.000000 100.658906 -881.000000 839.000000 100.838350 -882.000000 839.000000 100.951504 -883.000000 839.000000 101.137266 -884.000000 839.000000 101.388828 -885.000000 839.000000 101.787207 -886.000000 839.000000 102.205488 -887.000000 839.000000 102.694814 -888.000000 839.000000 103.142207 -889.000000 839.000000 103.589697 -890.000000 839.000000 103.861133 -891.000000 839.000000 104.131260 -892.000000 839.000000 104.387373 -893.000000 839.000000 104.523359 -894.000000 839.000000 104.578125 -895.000000 839.000000 104.597813 -896.000000 839.000000 104.536396 -897.000000 839.000000 104.377236 -898.000000 839.000000 104.192617 -821.000000 840.000000 110.184736 -822.000000 840.000000 108.412119 -823.000000 840.000000 106.416387 -824.000000 840.000000 104.951758 -825.000000 840.000000 104.401475 -826.000000 840.000000 104.105176 -827.000000 840.000000 103.695273 -828.000000 840.000000 103.387920 -829.000000 840.000000 103.018408 -830.000000 840.000000 102.601660 -831.000000 840.000000 102.163486 -832.000000 840.000000 101.725430 -833.000000 840.000000 101.350020 -834.000000 840.000000 100.994639 -835.000000 840.000000 100.669395 -836.000000 840.000000 100.432578 -837.000000 840.000000 100.202520 -838.000000 840.000000 100.073154 -839.000000 840.000000 100.033232 -840.000000 840.000000 100.015078 -841.000000 840.000000 99.980371 -842.000000 840.000000 99.944258 -843.000000 840.000000 99.883691 -844.000000 840.000000 99.850117 -845.000000 840.000000 99.813564 -846.000000 840.000000 99.771719 -847.000000 840.000000 99.742197 -848.000000 840.000000 99.685361 -849.000000 840.000000 99.638359 -850.000000 840.000000 99.600752 -851.000000 840.000000 99.596152 -852.000000 840.000000 99.593398 -853.000000 840.000000 99.581133 -854.000000 840.000000 99.555713 -855.000000 840.000000 99.581934 -856.000000 840.000000 99.609805 -857.000000 840.000000 99.634375 -858.000000 840.000000 99.667842 -859.000000 840.000000 99.734141 -860.000000 840.000000 99.780742 -861.000000 840.000000 99.798887 -862.000000 840.000000 99.800693 -863.000000 840.000000 99.819375 -864.000000 840.000000 99.840947 -865.000000 840.000000 99.977090 -866.000000 840.000000 100.002900 -867.000000 840.000000 100.092549 -868.000000 840.000000 100.127402 -869.000000 840.000000 100.158438 -870.000000 840.000000 100.243330 -871.000000 840.000000 100.360078 -872.000000 840.000000 100.492207 -873.000000 840.000000 100.575498 -874.000000 840.000000 100.601846 -875.000000 840.000000 100.663975 -876.000000 840.000000 100.758643 -877.000000 840.000000 100.837002 -878.000000 840.000000 100.909404 -879.000000 840.000000 101.059609 -880.000000 840.000000 101.173037 -881.000000 840.000000 101.357412 -882.000000 840.000000 101.560693 -883.000000 840.000000 101.773262 -884.000000 840.000000 102.003301 -885.000000 840.000000 102.319072 -886.000000 840.000000 102.792383 -887.000000 840.000000 103.241504 -888.000000 840.000000 103.687119 -889.000000 840.000000 104.149307 -890.000000 840.000000 104.481123 -891.000000 840.000000 104.741885 -892.000000 840.000000 104.977334 -893.000000 840.000000 105.118828 -894.000000 840.000000 105.213945 -895.000000 840.000000 105.238799 -896.000000 840.000000 105.189463 -897.000000 840.000000 104.960762 -898.000000 840.000000 104.746543 -821.000000 841.000000 110.772285 -822.000000 841.000000 109.018809 -823.000000 841.000000 106.999912 -824.000000 841.000000 105.525371 -825.000000 841.000000 104.510303 -826.000000 841.000000 104.275840 -827.000000 841.000000 103.967598 -828.000000 841.000000 103.673730 -829.000000 841.000000 103.319678 -830.000000 841.000000 102.974932 -831.000000 841.000000 102.554053 -832.000000 841.000000 102.130635 -833.000000 841.000000 101.737314 -834.000000 841.000000 101.426006 -835.000000 841.000000 101.068682 -836.000000 841.000000 100.803604 -837.000000 841.000000 100.641387 -838.000000 841.000000 100.486855 -839.000000 841.000000 100.343701 -840.000000 841.000000 100.261846 -841.000000 841.000000 100.196104 -842.000000 841.000000 100.158965 -843.000000 841.000000 100.136084 -844.000000 841.000000 100.024893 -845.000000 841.000000 99.960479 -846.000000 841.000000 99.928545 -847.000000 841.000000 99.862119 -848.000000 841.000000 99.778379 -849.000000 841.000000 99.731914 -850.000000 841.000000 99.704648 -851.000000 841.000000 99.699971 -852.000000 841.000000 99.698447 -853.000000 841.000000 99.697715 -854.000000 841.000000 99.690889 -855.000000 841.000000 99.728848 -856.000000 841.000000 99.759990 -857.000000 841.000000 99.807939 -858.000000 841.000000 99.862471 -859.000000 841.000000 99.908857 -860.000000 841.000000 99.956318 -861.000000 841.000000 100.007861 -862.000000 841.000000 100.117188 -863.000000 841.000000 100.162412 -864.000000 841.000000 100.175908 -865.000000 841.000000 100.227754 -866.000000 841.000000 100.405098 -867.000000 841.000000 100.509736 -868.000000 841.000000 100.648418 -869.000000 841.000000 100.747627 -870.000000 841.000000 100.886221 -871.000000 841.000000 101.077988 -872.000000 841.000000 101.217910 -873.000000 841.000000 101.253320 -874.000000 841.000000 101.297881 -875.000000 841.000000 101.346357 -876.000000 841.000000 101.429580 -877.000000 841.000000 101.523623 -878.000000 841.000000 101.604131 -879.000000 841.000000 101.704727 -880.000000 841.000000 101.818936 -881.000000 841.000000 102.041250 -882.000000 841.000000 102.241074 -883.000000 841.000000 102.436543 -884.000000 841.000000 102.677881 -885.000000 841.000000 102.911445 -886.000000 841.000000 103.295068 -887.000000 841.000000 103.780605 -888.000000 841.000000 104.193564 -889.000000 841.000000 104.694551 -890.000000 841.000000 105.098057 -891.000000 841.000000 105.327139 -892.000000 841.000000 105.513330 -893.000000 841.000000 105.663262 -894.000000 841.000000 105.748574 -895.000000 841.000000 105.762471 -896.000000 841.000000 105.685957 -897.000000 841.000000 105.498301 -898.000000 841.000000 105.328174 -821.000000 842.000000 110.887256 -822.000000 842.000000 109.289160 -823.000000 842.000000 107.588750 -824.000000 842.000000 106.135322 -825.000000 842.000000 104.861387 -826.000000 842.000000 104.441426 -827.000000 842.000000 104.236260 -828.000000 842.000000 103.965703 -829.000000 842.000000 103.601797 -830.000000 842.000000 103.248574 -831.000000 842.000000 102.900381 -832.000000 842.000000 102.530430 -833.000000 842.000000 102.170068 -834.000000 842.000000 101.882441 -835.000000 842.000000 101.550527 -836.000000 842.000000 101.292090 -837.000000 842.000000 101.080850 -838.000000 842.000000 100.909619 -839.000000 842.000000 100.762695 -840.000000 842.000000 100.661094 -841.000000 842.000000 100.587793 -842.000000 842.000000 100.566123 -843.000000 842.000000 100.590029 -844.000000 842.000000 100.598408 -845.000000 842.000000 100.447168 -846.000000 842.000000 100.267148 -847.000000 842.000000 100.128242 -848.000000 842.000000 99.989053 -849.000000 842.000000 99.840449 -850.000000 842.000000 99.798682 -851.000000 842.000000 99.791133 -852.000000 842.000000 99.796582 -853.000000 842.000000 99.811279 -854.000000 842.000000 99.844082 -855.000000 842.000000 99.891875 -856.000000 842.000000 99.930234 -857.000000 842.000000 100.081416 -858.000000 842.000000 100.175137 -859.000000 842.000000 100.373730 -860.000000 842.000000 100.540068 -861.000000 842.000000 100.690957 -862.000000 842.000000 100.780312 -863.000000 842.000000 100.869150 -864.000000 842.000000 100.973711 -865.000000 842.000000 101.127461 -866.000000 842.000000 101.342373 -867.000000 842.000000 101.415625 -868.000000 842.000000 101.446113 -869.000000 842.000000 101.518115 -870.000000 842.000000 101.696279 -871.000000 842.000000 101.892285 -872.000000 842.000000 102.007441 -873.000000 842.000000 102.042793 -874.000000 842.000000 102.083643 -875.000000 842.000000 102.127881 -876.000000 842.000000 102.192939 -877.000000 842.000000 102.266016 -878.000000 842.000000 102.355527 -879.000000 842.000000 102.459180 -880.000000 842.000000 102.568770 -881.000000 842.000000 102.738086 -882.000000 842.000000 102.915303 -883.000000 842.000000 103.156475 -884.000000 842.000000 103.382998 -885.000000 842.000000 103.631191 -886.000000 842.000000 103.905801 -887.000000 842.000000 104.344326 -888.000000 842.000000 104.830215 -889.000000 842.000000 105.295742 -890.000000 842.000000 105.595313 -891.000000 842.000000 105.848184 -892.000000 842.000000 106.045830 -893.000000 842.000000 106.220566 -894.000000 842.000000 106.319697 -895.000000 842.000000 106.374932 -896.000000 842.000000 106.248535 -897.000000 842.000000 106.096836 -898.000000 842.000000 106.096484 -821.000000 843.000000 110.812227 -822.000000 843.000000 109.321787 -823.000000 843.000000 107.810293 -824.000000 843.000000 106.565254 -825.000000 843.000000 105.410313 -826.000000 843.000000 104.616797 -827.000000 843.000000 104.314248 -828.000000 843.000000 104.065732 -829.000000 843.000000 103.758994 -830.000000 843.000000 103.458545 -831.000000 843.000000 103.182510 -832.000000 843.000000 102.827891 -833.000000 843.000000 102.528311 -834.000000 843.000000 102.301846 -835.000000 843.000000 102.007549 -836.000000 843.000000 101.757314 -837.000000 843.000000 101.547012 -838.000000 843.000000 101.355830 -839.000000 843.000000 101.197520 -840.000000 843.000000 101.095000 -841.000000 843.000000 101.023086 -842.000000 843.000000 101.058193 -843.000000 843.000000 101.101846 -844.000000 843.000000 101.140576 -845.000000 843.000000 101.013330 -846.000000 843.000000 100.834385 -847.000000 843.000000 100.643848 -848.000000 843.000000 100.420957 -849.000000 843.000000 100.223037 -850.000000 843.000000 99.961797 -851.000000 843.000000 99.917881 -852.000000 843.000000 99.895342 -853.000000 843.000000 99.949297 -854.000000 843.000000 99.966045 -855.000000 843.000000 100.233037 -856.000000 843.000000 100.531572 -857.000000 843.000000 100.682100 -858.000000 843.000000 100.890576 -859.000000 843.000000 101.086045 -860.000000 843.000000 101.245615 -861.000000 843.000000 101.363135 -862.000000 843.000000 101.497178 -863.000000 843.000000 101.653408 -864.000000 843.000000 101.853027 -865.000000 843.000000 102.120615 -866.000000 843.000000 102.402607 -867.000000 843.000000 102.362598 -868.000000 843.000000 102.334023 -869.000000 843.000000 102.402002 -870.000000 843.000000 102.565635 -871.000000 843.000000 102.766982 -872.000000 843.000000 102.797734 -873.000000 843.000000 102.829199 -874.000000 843.000000 102.865127 -875.000000 843.000000 102.901172 -876.000000 843.000000 102.974414 -877.000000 843.000000 103.042451 -878.000000 843.000000 103.118506 -879.000000 843.000000 103.202119 -880.000000 843.000000 103.301348 -881.000000 843.000000 103.404609 -882.000000 843.000000 103.577764 -883.000000 843.000000 103.839531 -884.000000 843.000000 104.042617 -885.000000 843.000000 104.288477 -886.000000 843.000000 104.579141 -887.000000 843.000000 104.992227 -888.000000 843.000000 105.426914 -889.000000 843.000000 105.806992 -890.000000 843.000000 106.129629 -891.000000 843.000000 106.385303 -892.000000 843.000000 106.649268 -893.000000 843.000000 106.870811 -894.000000 843.000000 107.023975 -895.000000 843.000000 107.102246 -896.000000 843.000000 106.970820 -897.000000 843.000000 106.882383 -898.000000 843.000000 106.907227 -821.000000 844.000000 110.762852 -822.000000 844.000000 109.252676 -823.000000 844.000000 107.948701 -824.000000 844.000000 106.702187 -825.000000 844.000000 105.569727 -826.000000 844.000000 104.594609 -827.000000 844.000000 104.359414 -828.000000 844.000000 104.134883 -829.000000 844.000000 103.866953 -830.000000 844.000000 103.600723 -831.000000 844.000000 103.385039 -832.000000 844.000000 103.170742 -833.000000 844.000000 102.863018 -834.000000 844.000000 102.701143 -835.000000 844.000000 102.445322 -836.000000 844.000000 102.192959 -837.000000 844.000000 101.942578 -838.000000 844.000000 101.749590 -839.000000 844.000000 101.620186 -840.000000 844.000000 101.507461 -841.000000 844.000000 101.476328 -842.000000 844.000000 101.538633 -843.000000 844.000000 101.598145 -844.000000 844.000000 101.618066 -845.000000 844.000000 101.576475 -846.000000 844.000000 101.421777 -847.000000 844.000000 101.206270 -848.000000 844.000000 101.012217 -849.000000 844.000000 100.755967 -850.000000 844.000000 100.483096 -851.000000 844.000000 100.315635 -852.000000 844.000000 100.346943 -853.000000 844.000000 100.530225 -854.000000 844.000000 100.697793 -855.000000 844.000000 100.940537 -856.000000 844.000000 101.186709 -857.000000 844.000000 101.334307 -858.000000 844.000000 101.527139 -859.000000 844.000000 101.766064 -860.000000 844.000000 101.972031 -861.000000 844.000000 102.148789 -862.000000 844.000000 102.374658 -863.000000 844.000000 102.576201 -864.000000 844.000000 102.794404 -865.000000 844.000000 103.038760 -866.000000 844.000000 103.185605 -867.000000 844.000000 103.224082 -868.000000 844.000000 103.221367 -869.000000 844.000000 103.300225 -870.000000 844.000000 103.457656 -871.000000 844.000000 103.631045 -872.000000 844.000000 103.603887 -873.000000 844.000000 103.597881 -874.000000 844.000000 103.599941 -875.000000 844.000000 103.662539 -876.000000 844.000000 103.754912 -877.000000 844.000000 103.811592 -878.000000 844.000000 103.870811 -879.000000 844.000000 103.901357 -880.000000 844.000000 103.949346 -881.000000 844.000000 104.018955 -882.000000 844.000000 104.217998 -883.000000 844.000000 104.458613 -884.000000 844.000000 104.676855 -885.000000 844.000000 104.951172 -886.000000 844.000000 105.271221 -887.000000 844.000000 105.645508 -888.000000 844.000000 106.032910 -889.000000 844.000000 106.383789 -890.000000 844.000000 106.690225 -891.000000 844.000000 106.992568 -892.000000 844.000000 107.286367 -893.000000 844.000000 107.520469 -894.000000 844.000000 107.663203 -895.000000 844.000000 107.741299 -896.000000 844.000000 107.691777 -897.000000 844.000000 107.683340 -898.000000 844.000000 107.661240 -821.000000 845.000000 110.304961 -822.000000 845.000000 108.982578 -823.000000 845.000000 107.720127 -824.000000 845.000000 106.567539 -825.000000 845.000000 105.134932 -826.000000 845.000000 104.561621 -827.000000 845.000000 104.392373 -828.000000 845.000000 104.191123 -829.000000 845.000000 103.980332 -830.000000 845.000000 103.718691 -831.000000 845.000000 103.536553 -832.000000 845.000000 103.356240 -833.000000 845.000000 103.185498 -834.000000 845.000000 102.971807 -835.000000 845.000000 102.725947 -836.000000 845.000000 102.453838 -837.000000 845.000000 102.227930 -838.000000 845.000000 102.050791 -839.000000 845.000000 101.935439 -840.000000 845.000000 101.878096 -841.000000 845.000000 101.906025 -842.000000 845.000000 101.894346 -843.000000 845.000000 101.898828 -844.000000 845.000000 101.891572 -845.000000 845.000000 101.865332 -846.000000 845.000000 101.805273 -847.000000 845.000000 101.690068 -848.000000 845.000000 101.513555 -849.000000 845.000000 101.266328 -850.000000 845.000000 101.093311 -851.000000 845.000000 100.917100 -852.000000 845.000000 100.916338 -853.000000 845.000000 101.090020 -854.000000 845.000000 101.393525 -855.000000 845.000000 101.630898 -856.000000 845.000000 101.675703 -857.000000 845.000000 101.819287 -858.000000 845.000000 102.027090 -859.000000 845.000000 102.342969 -860.000000 845.000000 102.647051 -861.000000 845.000000 102.940830 -862.000000 845.000000 103.243389 -863.000000 845.000000 103.524727 -864.000000 845.000000 103.699053 -865.000000 845.000000 103.827402 -866.000000 845.000000 103.935059 -867.000000 845.000000 104.057754 -868.000000 845.000000 104.145557 -869.000000 845.000000 104.174961 -870.000000 845.000000 104.257920 -871.000000 845.000000 104.314326 -872.000000 845.000000 104.348506 -873.000000 845.000000 104.340098 -874.000000 845.000000 104.285156 -875.000000 845.000000 104.334307 -876.000000 845.000000 104.450107 -877.000000 845.000000 104.518311 -878.000000 845.000000 104.518994 -879.000000 845.000000 104.502432 -880.000000 845.000000 104.584238 -881.000000 845.000000 104.685967 -882.000000 845.000000 104.871660 -883.000000 845.000000 105.126309 -884.000000 845.000000 105.356660 -885.000000 845.000000 105.640684 -886.000000 845.000000 105.956025 -887.000000 845.000000 106.318428 -888.000000 845.000000 106.683691 -889.000000 845.000000 107.032002 -890.000000 845.000000 107.347090 -891.000000 845.000000 107.620469 -892.000000 845.000000 107.888750 -893.000000 845.000000 108.116621 -894.000000 845.000000 108.270166 -895.000000 845.000000 108.366104 -896.000000 845.000000 108.446230 -897.000000 845.000000 108.436611 -898.000000 845.000000 108.451904 -821.000000 846.000000 109.973779 -822.000000 846.000000 108.425225 -823.000000 846.000000 107.504199 -824.000000 846.000000 106.519316 -825.000000 846.000000 105.503809 -826.000000 846.000000 104.945674 -827.000000 846.000000 104.579307 -828.000000 846.000000 104.368184 -829.000000 846.000000 104.114355 -830.000000 846.000000 103.864639 -831.000000 846.000000 103.663047 -832.000000 846.000000 103.489932 -833.000000 846.000000 103.319346 -834.000000 846.000000 103.153271 -835.000000 846.000000 102.927910 -836.000000 846.000000 102.682900 -837.000000 846.000000 102.493916 -838.000000 846.000000 102.344541 -839.000000 846.000000 102.246201 -840.000000 846.000000 102.219141 -841.000000 846.000000 102.189775 -842.000000 846.000000 102.169766 -843.000000 846.000000 102.187725 -844.000000 846.000000 102.160693 -845.000000 846.000000 102.129941 -846.000000 846.000000 102.061631 -847.000000 846.000000 101.953145 -848.000000 846.000000 101.815244 -849.000000 846.000000 101.717715 -850.000000 846.000000 101.593271 -851.000000 846.000000 101.390244 -852.000000 846.000000 101.278408 -853.000000 846.000000 101.437480 -854.000000 846.000000 101.674658 -855.000000 846.000000 101.884805 -856.000000 846.000000 102.036230 -857.000000 846.000000 102.278613 -858.000000 846.000000 102.541172 -859.000000 846.000000 102.975049 -860.000000 846.000000 103.355342 -861.000000 846.000000 103.722178 -862.000000 846.000000 104.018604 -863.000000 846.000000 104.286006 -864.000000 846.000000 104.438477 -865.000000 846.000000 104.584512 -866.000000 846.000000 104.721699 -867.000000 846.000000 104.867129 -868.000000 846.000000 104.982217 -869.000000 846.000000 105.026143 -870.000000 846.000000 105.079307 -871.000000 846.000000 105.118770 -872.000000 846.000000 105.129326 -873.000000 846.000000 105.137881 -874.000000 846.000000 105.101172 -875.000000 846.000000 105.122012 -876.000000 846.000000 105.146807 -877.000000 846.000000 105.194766 -878.000000 846.000000 105.205439 -879.000000 846.000000 105.229258 -880.000000 846.000000 105.252432 -881.000000 846.000000 105.344805 -882.000000 846.000000 105.561621 -883.000000 846.000000 105.804463 -884.000000 846.000000 106.045898 -885.000000 846.000000 106.295156 -886.000000 846.000000 106.650215 -887.000000 846.000000 107.004551 -888.000000 846.000000 107.337275 -889.000000 846.000000 107.665322 -890.000000 846.000000 108.005107 -891.000000 846.000000 108.269609 -892.000000 846.000000 108.518916 -893.000000 846.000000 108.728916 -894.000000 846.000000 108.892578 -895.000000 846.000000 109.053887 -896.000000 846.000000 109.159512 -897.000000 846.000000 109.139229 -898.000000 846.000000 109.128730 -821.000000 847.000000 109.918447 -822.000000 847.000000 108.749033 -823.000000 847.000000 107.642432 -824.000000 847.000000 106.560293 -825.000000 847.000000 105.883213 -826.000000 847.000000 105.308535 -827.000000 847.000000 104.860654 -828.000000 847.000000 104.582070 -829.000000 847.000000 104.273643 -830.000000 847.000000 104.025439 -831.000000 847.000000 103.782109 -832.000000 847.000000 103.614092 -833.000000 847.000000 103.441182 -834.000000 847.000000 103.280615 -835.000000 847.000000 103.106670 -836.000000 847.000000 102.899121 -837.000000 847.000000 102.732969 -838.000000 847.000000 102.615713 -839.000000 847.000000 102.625615 -840.000000 847.000000 102.602676 -841.000000 847.000000 102.518887 -842.000000 847.000000 102.468584 -843.000000 847.000000 102.490303 -844.000000 847.000000 102.424463 -845.000000 847.000000 102.391768 -846.000000 847.000000 102.336582 -847.000000 847.000000 102.194053 -848.000000 847.000000 102.074834 -849.000000 847.000000 102.023008 -850.000000 847.000000 101.899092 -851.000000 847.000000 101.733086 -852.000000 847.000000 101.592617 -853.000000 847.000000 101.651719 -854.000000 847.000000 101.852705 -855.000000 847.000000 102.099033 -856.000000 847.000000 102.340879 -857.000000 847.000000 102.687783 -858.000000 847.000000 103.141885 -859.000000 847.000000 103.638838 -860.000000 847.000000 104.073350 -861.000000 847.000000 104.489336 -862.000000 847.000000 104.785020 -863.000000 847.000000 105.029824 -864.000000 847.000000 105.205449 -865.000000 847.000000 105.375088 -866.000000 847.000000 105.540303 -867.000000 847.000000 105.681064 -868.000000 847.000000 105.783301 -869.000000 847.000000 105.867686 -870.000000 847.000000 105.915010 -871.000000 847.000000 105.955605 -872.000000 847.000000 105.918535 -873.000000 847.000000 105.927285 -874.000000 847.000000 105.921543 -875.000000 847.000000 105.944502 -876.000000 847.000000 105.860430 -877.000000 847.000000 105.810732 -878.000000 847.000000 105.824902 -879.000000 847.000000 105.862734 -880.000000 847.000000 105.905234 -881.000000 847.000000 106.013867 -882.000000 847.000000 106.226094 -883.000000 847.000000 106.508506 -884.000000 847.000000 106.778770 -885.000000 847.000000 107.027979 -886.000000 847.000000 107.345957 -887.000000 847.000000 107.678057 -888.000000 847.000000 107.982480 -889.000000 847.000000 108.309316 -890.000000 847.000000 108.641445 -891.000000 847.000000 108.927754 -892.000000 847.000000 109.213037 -893.000000 847.000000 109.428574 -894.000000 847.000000 109.609580 -895.000000 847.000000 109.726006 -896.000000 847.000000 109.809424 -897.000000 847.000000 109.777588 -898.000000 847.000000 109.787305 -821.000000 848.000000 110.093711 -822.000000 848.000000 109.154072 -823.000000 848.000000 108.063721 -824.000000 848.000000 106.933799 -825.000000 848.000000 106.162168 -826.000000 848.000000 105.554619 -827.000000 848.000000 105.137588 -828.000000 848.000000 104.767402 -829.000000 848.000000 104.427324 -830.000000 848.000000 104.150049 -831.000000 848.000000 103.936270 -832.000000 848.000000 103.750039 -833.000000 848.000000 103.582715 -834.000000 848.000000 103.446113 -835.000000 848.000000 103.270732 -836.000000 848.000000 103.102393 -837.000000 848.000000 103.013252 -838.000000 848.000000 102.958594 -839.000000 848.000000 102.962773 -840.000000 848.000000 102.951680 -841.000000 848.000000 102.906367 -842.000000 848.000000 102.846123 -843.000000 848.000000 102.818418 -844.000000 848.000000 102.776602 -845.000000 848.000000 102.697441 -846.000000 848.000000 102.620137 -847.000000 848.000000 102.516748 -848.000000 848.000000 102.372656 -849.000000 848.000000 102.195889 -850.000000 848.000000 102.108184 -851.000000 848.000000 102.030674 -852.000000 848.000000 101.918584 -853.000000 848.000000 101.901748 -854.000000 848.000000 102.082998 -855.000000 848.000000 102.300469 -856.000000 848.000000 102.676191 -857.000000 848.000000 103.163760 -858.000000 848.000000 103.736348 -859.000000 848.000000 104.327012 -860.000000 848.000000 104.799131 -861.000000 848.000000 105.195342 -862.000000 848.000000 105.543857 -863.000000 848.000000 105.791641 -864.000000 848.000000 105.988311 -865.000000 848.000000 106.166748 -866.000000 848.000000 106.325801 -867.000000 848.000000 106.518730 -868.000000 848.000000 106.607471 -869.000000 848.000000 106.708506 -870.000000 848.000000 106.800576 -871.000000 848.000000 106.854004 -872.000000 848.000000 106.798691 -873.000000 848.000000 106.732373 -874.000000 848.000000 106.726543 -875.000000 848.000000 106.772217 -876.000000 848.000000 106.700244 -877.000000 848.000000 106.537783 -878.000000 848.000000 106.464365 -879.000000 848.000000 106.499893 -880.000000 848.000000 106.554375 -881.000000 848.000000 106.693652 -882.000000 848.000000 106.985703 -883.000000 848.000000 107.259570 -884.000000 848.000000 107.513145 -885.000000 848.000000 107.757920 -886.000000 848.000000 108.070889 -887.000000 848.000000 108.347051 -888.000000 848.000000 108.630977 -889.000000 848.000000 108.983301 -890.000000 848.000000 109.363867 -891.000000 848.000000 109.658760 -892.000000 848.000000 109.909102 -893.000000 848.000000 110.101875 -894.000000 848.000000 110.269736 -895.000000 848.000000 110.380039 -896.000000 848.000000 110.411035 -897.000000 848.000000 110.431592 -898.000000 848.000000 110.470547 -821.000000 849.000000 110.068066 -822.000000 849.000000 109.140986 -823.000000 849.000000 108.187578 -824.000000 849.000000 107.289922 -825.000000 849.000000 106.434209 -826.000000 849.000000 105.706553 -827.000000 849.000000 105.213154 -828.000000 849.000000 104.850596 -829.000000 849.000000 104.531396 -830.000000 849.000000 104.279795 -831.000000 849.000000 104.082705 -832.000000 849.000000 103.871328 -833.000000 849.000000 103.752432 -834.000000 849.000000 103.645967 -835.000000 849.000000 103.469814 -836.000000 849.000000 103.387051 -837.000000 849.000000 103.331104 -838.000000 849.000000 103.323994 -839.000000 849.000000 103.414717 -840.000000 849.000000 103.370908 -841.000000 849.000000 103.328438 -842.000000 849.000000 103.277734 -843.000000 849.000000 103.222090 -844.000000 849.000000 103.173896 -845.000000 849.000000 103.133154 -846.000000 849.000000 103.076650 -847.000000 849.000000 102.880645 -848.000000 849.000000 102.658623 -849.000000 849.000000 102.444736 -850.000000 849.000000 102.285176 -851.000000 849.000000 102.185576 -852.000000 849.000000 102.112529 -853.000000 849.000000 102.079102 -854.000000 849.000000 102.241064 -855.000000 849.000000 102.494736 -856.000000 849.000000 102.954824 -857.000000 849.000000 103.624443 -858.000000 849.000000 104.338789 -859.000000 849.000000 105.053994 -860.000000 849.000000 105.559336 -861.000000 849.000000 105.962197 -862.000000 849.000000 106.276533 -863.000000 849.000000 106.569609 -864.000000 849.000000 106.785371 -865.000000 849.000000 106.951572 -866.000000 849.000000 107.140400 -867.000000 849.000000 107.369766 -868.000000 849.000000 107.506982 -869.000000 849.000000 107.602432 -870.000000 849.000000 107.736875 -871.000000 849.000000 107.790801 -872.000000 849.000000 107.724346 -873.000000 849.000000 107.658477 -874.000000 849.000000 107.632471 -875.000000 849.000000 107.579551 -876.000000 849.000000 107.504824 -877.000000 849.000000 107.305518 -878.000000 849.000000 107.123711 -879.000000 849.000000 107.136309 -880.000000 849.000000 107.235117 -881.000000 849.000000 107.448770 -882.000000 849.000000 107.712920 -883.000000 849.000000 108.015830 -884.000000 849.000000 108.280898 -885.000000 849.000000 108.470625 -886.000000 849.000000 108.701865 -887.000000 849.000000 109.038174 -888.000000 849.000000 109.325586 -889.000000 849.000000 109.731416 -890.000000 849.000000 110.119639 -891.000000 849.000000 110.381289 -892.000000 849.000000 110.601973 -893.000000 849.000000 110.750313 -894.000000 849.000000 110.896260 -895.000000 849.000000 111.007949 -896.000000 849.000000 111.077725 -897.000000 849.000000 111.110313 -898.000000 849.000000 111.144844 -821.000000 850.000000 109.837676 -822.000000 850.000000 108.926494 -823.000000 850.000000 108.055313 -824.000000 850.000000 107.287422 -825.000000 850.000000 106.543975 -826.000000 850.000000 105.846924 -827.000000 850.000000 105.343096 -828.000000 850.000000 104.983604 -829.000000 850.000000 104.672041 -830.000000 850.000000 104.448809 -831.000000 850.000000 104.234443 -832.000000 850.000000 104.087051 -833.000000 850.000000 103.953301 -834.000000 850.000000 103.799199 -835.000000 850.000000 103.724746 -836.000000 850.000000 103.650313 -837.000000 850.000000 103.671846 -838.000000 850.000000 103.705117 -839.000000 850.000000 103.761699 -840.000000 850.000000 103.780723 -841.000000 850.000000 103.765830 -842.000000 850.000000 103.727939 -843.000000 850.000000 103.655781 -844.000000 850.000000 103.641240 -845.000000 850.000000 103.653232 -846.000000 850.000000 103.586338 -847.000000 850.000000 103.322051 -848.000000 850.000000 103.008154 -849.000000 850.000000 102.772646 -850.000000 850.000000 102.541445 -851.000000 850.000000 102.435264 -852.000000 850.000000 102.300020 -853.000000 850.000000 102.269434 -854.000000 850.000000 102.427461 -855.000000 850.000000 102.834727 -856.000000 850.000000 103.412432 -857.000000 850.000000 104.073301 -858.000000 850.000000 104.821523 -859.000000 850.000000 105.688838 -860.000000 850.000000 106.407197 -861.000000 850.000000 106.724648 -862.000000 850.000000 107.035049 -863.000000 850.000000 107.333047 -864.000000 850.000000 107.569688 -865.000000 850.000000 107.695000 -866.000000 850.000000 107.995449 -867.000000 850.000000 108.234707 -868.000000 850.000000 108.456982 -869.000000 850.000000 108.564170 -870.000000 850.000000 108.635469 -871.000000 850.000000 108.690273 -872.000000 850.000000 108.786230 -873.000000 850.000000 108.697617 -874.000000 850.000000 108.559961 -875.000000 850.000000 108.455430 -876.000000 850.000000 108.284922 -877.000000 850.000000 108.104971 -878.000000 850.000000 107.930205 -879.000000 850.000000 107.896016 -880.000000 850.000000 108.021973 -881.000000 850.000000 108.219268 -882.000000 850.000000 108.475420 -883.000000 850.000000 108.793896 -884.000000 850.000000 109.026299 -885.000000 850.000000 109.176475 -886.000000 850.000000 109.402715 -887.000000 850.000000 109.703467 -888.000000 850.000000 110.025039 -889.000000 850.000000 110.377295 -890.000000 850.000000 110.755674 -891.000000 850.000000 111.088271 -892.000000 850.000000 111.284844 -893.000000 850.000000 111.451709 -894.000000 850.000000 111.577158 -895.000000 850.000000 111.678516 -896.000000 850.000000 111.744170 -897.000000 850.000000 111.793750 -898.000000 850.000000 111.822783 -821.000000 851.000000 110.149912 -822.000000 851.000000 108.945195 -823.000000 851.000000 107.977461 -824.000000 851.000000 107.274053 -825.000000 851.000000 106.555918 -826.000000 851.000000 105.914590 -827.000000 851.000000 105.482881 -828.000000 851.000000 105.160039 -829.000000 851.000000 104.902490 -830.000000 851.000000 104.651025 -831.000000 851.000000 104.419121 -832.000000 851.000000 104.302822 -833.000000 851.000000 104.186191 -834.000000 851.000000 104.083643 -835.000000 851.000000 103.963457 -836.000000 851.000000 103.917598 -837.000000 851.000000 103.963701 -838.000000 851.000000 104.009941 -839.000000 851.000000 104.044512 -840.000000 851.000000 104.073408 -841.000000 851.000000 104.094844 -842.000000 851.000000 104.141025 -843.000000 851.000000 104.159316 -844.000000 851.000000 104.090576 -845.000000 851.000000 104.072051 -846.000000 851.000000 103.991279 -847.000000 851.000000 103.831875 -848.000000 851.000000 103.483203 -849.000000 851.000000 103.240918 -850.000000 851.000000 102.980254 -851.000000 851.000000 102.645654 -852.000000 851.000000 102.526260 -853.000000 851.000000 102.509141 -854.000000 851.000000 102.783389 -855.000000 851.000000 103.392822 -856.000000 851.000000 104.010332 -857.000000 851.000000 104.679912 -858.000000 851.000000 105.331191 -859.000000 851.000000 106.210479 -860.000000 851.000000 106.974531 -861.000000 851.000000 107.455459 -862.000000 851.000000 107.877275 -863.000000 851.000000 108.169121 -864.000000 851.000000 108.422881 -865.000000 851.000000 108.653643 -866.000000 851.000000 108.917773 -867.000000 851.000000 109.105488 -868.000000 851.000000 109.364824 -869.000000 851.000000 109.521572 -870.000000 851.000000 109.641426 -871.000000 851.000000 109.725273 -872.000000 851.000000 109.774170 -873.000000 851.000000 109.736592 -874.000000 851.000000 109.546367 -875.000000 851.000000 109.296221 -876.000000 851.000000 109.085518 -877.000000 851.000000 108.851318 -878.000000 851.000000 108.665732 -879.000000 851.000000 108.620449 -880.000000 851.000000 108.740596 -881.000000 851.000000 108.904346 -882.000000 851.000000 109.132568 -883.000000 851.000000 109.418789 -884.000000 851.000000 109.651143 -885.000000 851.000000 109.832988 -886.000000 851.000000 110.068047 -887.000000 851.000000 110.377656 -888.000000 851.000000 110.715352 -889.000000 851.000000 111.060088 -890.000000 851.000000 111.396211 -891.000000 851.000000 111.716279 -892.000000 851.000000 111.966875 -893.000000 851.000000 112.139834 -894.000000 851.000000 112.273145 -895.000000 851.000000 112.357363 -896.000000 851.000000 112.398262 -897.000000 851.000000 112.466973 -898.000000 851.000000 112.510098 -821.000000 852.000000 110.206279 -822.000000 852.000000 109.054189 -823.000000 852.000000 108.157803 -824.000000 852.000000 107.444736 -825.000000 852.000000 106.682383 -826.000000 852.000000 106.015059 -827.000000 852.000000 105.637666 -828.000000 852.000000 105.296143 -829.000000 852.000000 105.016465 -830.000000 852.000000 104.791963 -831.000000 852.000000 104.634287 -832.000000 852.000000 104.514521 -833.000000 852.000000 104.421074 -834.000000 852.000000 104.328604 -835.000000 852.000000 104.252568 -836.000000 852.000000 104.209043 -837.000000 852.000000 104.235322 -838.000000 852.000000 104.256221 -839.000000 852.000000 104.313477 -840.000000 852.000000 104.407422 -841.000000 852.000000 104.472109 -842.000000 852.000000 104.511699 -843.000000 852.000000 104.540361 -844.000000 852.000000 104.503213 -845.000000 852.000000 104.444287 -846.000000 852.000000 104.343926 -847.000000 852.000000 104.218730 -848.000000 852.000000 103.927695 -849.000000 852.000000 103.704512 -850.000000 852.000000 103.518330 -851.000000 852.000000 103.231992 -852.000000 852.000000 102.946768 -853.000000 852.000000 102.946865 -854.000000 852.000000 103.361123 -855.000000 852.000000 103.920234 -856.000000 852.000000 104.605850 -857.000000 852.000000 105.222764 -858.000000 852.000000 105.783535 -859.000000 852.000000 106.651680 -860.000000 852.000000 107.522412 -861.000000 852.000000 108.182910 -862.000000 852.000000 108.588994 -863.000000 852.000000 109.117715 -864.000000 852.000000 109.343018 -865.000000 852.000000 109.505254 -866.000000 852.000000 109.766328 -867.000000 852.000000 110.068301 -868.000000 852.000000 110.321045 -869.000000 852.000000 110.508730 -870.000000 852.000000 110.676387 -871.000000 852.000000 110.782617 -872.000000 852.000000 110.834004 -873.000000 852.000000 110.751357 -874.000000 852.000000 110.554365 -875.000000 852.000000 110.209111 -876.000000 852.000000 110.000059 -877.000000 852.000000 109.860596 -878.000000 852.000000 109.650107 -879.000000 852.000000 109.416680 -880.000000 852.000000 109.487012 -881.000000 852.000000 109.650840 -882.000000 852.000000 109.841201 -883.000000 852.000000 110.049971 -884.000000 852.000000 110.272168 -885.000000 852.000000 110.485742 -886.000000 852.000000 110.721641 -887.000000 852.000000 111.052832 -888.000000 852.000000 111.382764 -889.000000 852.000000 111.719717 -890.000000 852.000000 112.055654 -891.000000 852.000000 112.392695 -892.000000 852.000000 112.631699 -893.000000 852.000000 112.837070 -894.000000 852.000000 112.966729 -895.000000 852.000000 113.018818 -896.000000 852.000000 113.040078 -897.000000 852.000000 113.122480 -898.000000 852.000000 113.131943 -821.000000 853.000000 109.344160 -822.000000 853.000000 108.920723 -823.000000 853.000000 108.302256 -824.000000 853.000000 107.500107 -825.000000 853.000000 106.869268 -826.000000 853.000000 106.174258 -827.000000 853.000000 105.741787 -828.000000 853.000000 105.403838 -829.000000 853.000000 105.150938 -830.000000 853.000000 104.960850 -831.000000 853.000000 104.756260 -832.000000 853.000000 104.666406 -833.000000 853.000000 104.657539 -834.000000 853.000000 104.600156 -835.000000 853.000000 104.533203 -836.000000 853.000000 104.498330 -837.000000 853.000000 104.498594 -838.000000 853.000000 104.537324 -839.000000 853.000000 104.648438 -840.000000 853.000000 104.760557 -841.000000 853.000000 104.880352 -842.000000 853.000000 104.950547 -843.000000 853.000000 104.947100 -844.000000 853.000000 104.925273 -845.000000 853.000000 104.847607 -846.000000 853.000000 104.736953 -847.000000 853.000000 104.611201 -848.000000 853.000000 104.397842 -849.000000 853.000000 104.198984 -850.000000 853.000000 104.046338 -851.000000 853.000000 103.794922 -852.000000 853.000000 103.620195 -853.000000 853.000000 103.700937 -854.000000 853.000000 103.943438 -855.000000 853.000000 104.446816 -856.000000 853.000000 105.009561 -857.000000 853.000000 105.495615 -858.000000 853.000000 106.068809 -859.000000 853.000000 106.951621 -860.000000 853.000000 107.896299 -861.000000 853.000000 108.575107 -862.000000 853.000000 109.316348 -863.000000 853.000000 109.762686 -864.000000 853.000000 110.008975 -865.000000 853.000000 110.315000 -866.000000 853.000000 110.686973 -867.000000 853.000000 110.997393 -868.000000 853.000000 111.352373 -869.000000 853.000000 111.594463 -870.000000 853.000000 111.802832 -871.000000 853.000000 111.945332 -872.000000 853.000000 111.920000 -873.000000 853.000000 111.730146 -874.000000 853.000000 111.486191 -875.000000 853.000000 111.154639 -876.000000 853.000000 110.929805 -877.000000 853.000000 110.734551 -878.000000 853.000000 110.532773 -879.000000 853.000000 110.264893 -880.000000 853.000000 110.192305 -881.000000 853.000000 110.402246 -882.000000 853.000000 110.546484 -883.000000 853.000000 110.701953 -884.000000 853.000000 110.931367 -885.000000 853.000000 111.157412 -886.000000 853.000000 111.366660 -887.000000 853.000000 111.677100 -888.000000 853.000000 112.044922 -889.000000 853.000000 112.393438 -890.000000 853.000000 112.802979 -891.000000 853.000000 113.064277 -892.000000 853.000000 113.301777 -893.000000 853.000000 113.476777 -894.000000 853.000000 113.587871 -895.000000 853.000000 113.663857 -896.000000 853.000000 113.710820 -897.000000 853.000000 113.734248 -898.000000 853.000000 113.749336 -821.000000 854.000000 107.824004 -822.000000 854.000000 107.641543 -823.000000 854.000000 107.537031 -824.000000 854.000000 107.379980 -825.000000 854.000000 106.994346 -826.000000 854.000000 106.316113 -827.000000 854.000000 105.823008 -828.000000 854.000000 105.539365 -829.000000 854.000000 105.291426 -830.000000 854.000000 105.097227 -831.000000 854.000000 104.922344 -832.000000 854.000000 104.883213 -833.000000 854.000000 104.875430 -834.000000 854.000000 104.846143 -835.000000 854.000000 104.819541 -836.000000 854.000000 104.795615 -837.000000 854.000000 104.804297 -838.000000 854.000000 104.892256 -839.000000 854.000000 105.052998 -840.000000 854.000000 105.170225 -841.000000 854.000000 105.291699 -842.000000 854.000000 105.389766 -843.000000 854.000000 105.380137 -844.000000 854.000000 105.301426 -845.000000 854.000000 105.220918 -846.000000 854.000000 105.106045 -847.000000 854.000000 104.976494 -848.000000 854.000000 104.848389 -849.000000 854.000000 104.701045 -850.000000 854.000000 104.523320 -851.000000 854.000000 104.343916 -852.000000 854.000000 104.247490 -853.000000 854.000000 104.291836 -854.000000 854.000000 104.446445 -855.000000 854.000000 104.804795 -856.000000 854.000000 105.225391 -857.000000 854.000000 105.725469 -858.000000 854.000000 106.407305 -859.000000 854.000000 107.158877 -860.000000 854.000000 108.053145 -861.000000 854.000000 108.912188 -862.000000 854.000000 109.666211 -863.000000 854.000000 110.157246 -864.000000 854.000000 110.576777 -865.000000 854.000000 111.036045 -866.000000 854.000000 111.459248 -867.000000 854.000000 111.998213 -868.000000 854.000000 112.402529 -869.000000 854.000000 112.784307 -870.000000 854.000000 113.037832 -871.000000 854.000000 113.105938 -872.000000 854.000000 113.002480 -873.000000 854.000000 112.733818 -874.000000 854.000000 112.380029 -875.000000 854.000000 112.021396 -876.000000 854.000000 111.723301 -877.000000 854.000000 111.464551 -878.000000 854.000000 111.209307 -879.000000 854.000000 111.052490 -880.000000 854.000000 110.999463 -881.000000 854.000000 111.104326 -882.000000 854.000000 111.242939 -883.000000 854.000000 111.410107 -884.000000 854.000000 111.643623 -885.000000 854.000000 111.868203 -886.000000 854.000000 112.002256 -887.000000 854.000000 112.250410 -888.000000 854.000000 112.693154 -889.000000 854.000000 113.051045 -890.000000 854.000000 113.364971 -891.000000 854.000000 113.667715 -892.000000 854.000000 113.947764 -893.000000 854.000000 114.120762 -894.000000 854.000000 114.241328 -895.000000 854.000000 114.345234 -896.000000 854.000000 114.413477 -897.000000 854.000000 114.457285 -898.000000 854.000000 114.433057 -821.000000 855.000000 106.258770 -822.000000 855.000000 106.141953 -823.000000 855.000000 106.122041 -824.000000 855.000000 106.292188 -825.000000 855.000000 106.518027 -826.000000 855.000000 106.327793 -827.000000 855.000000 105.897617 -828.000000 855.000000 105.651152 -829.000000 855.000000 105.452187 -830.000000 855.000000 105.296055 -831.000000 855.000000 105.210889 -832.000000 855.000000 105.155547 -833.000000 855.000000 105.176563 -834.000000 855.000000 105.199570 -835.000000 855.000000 105.184238 -836.000000 855.000000 105.216045 -837.000000 855.000000 105.307197 -838.000000 855.000000 105.455039 -839.000000 855.000000 105.568496 -840.000000 855.000000 105.649463 -841.000000 855.000000 105.752500 -842.000000 855.000000 105.843613 -843.000000 855.000000 105.830273 -844.000000 855.000000 105.711172 -845.000000 855.000000 105.605986 -846.000000 855.000000 105.484355 -847.000000 855.000000 105.355146 -848.000000 855.000000 105.231826 -849.000000 855.000000 105.113887 -850.000000 855.000000 104.943916 -851.000000 855.000000 104.731396 -852.000000 855.000000 104.511641 -853.000000 855.000000 104.461045 -854.000000 855.000000 104.730869 -855.000000 855.000000 105.085068 -856.000000 855.000000 105.392471 -857.000000 855.000000 105.999189 -858.000000 855.000000 106.794717 -859.000000 855.000000 107.550000 -860.000000 855.000000 108.328057 -861.000000 855.000000 109.160605 -862.000000 855.000000 109.925977 -863.000000 855.000000 110.489248 -864.000000 855.000000 111.100732 -865.000000 855.000000 111.722021 -866.000000 855.000000 112.329971 -867.000000 855.000000 112.958672 -868.000000 855.000000 113.434746 -869.000000 855.000000 113.845732 -870.000000 855.000000 114.211406 -871.000000 855.000000 114.156670 -872.000000 855.000000 113.953828 -873.000000 855.000000 113.700352 -874.000000 855.000000 113.257100 -875.000000 855.000000 112.857402 -876.000000 855.000000 112.504590 -877.000000 855.000000 112.216729 -878.000000 855.000000 111.933525 -879.000000 855.000000 111.769688 -880.000000 855.000000 111.732930 -881.000000 855.000000 111.813721 -882.000000 855.000000 111.897998 -883.000000 855.000000 112.141504 -884.000000 855.000000 112.408779 -885.000000 855.000000 112.611357 -886.000000 855.000000 112.761377 -887.000000 855.000000 112.936748 -888.000000 855.000000 113.308701 -889.000000 855.000000 113.621611 -890.000000 855.000000 113.969502 -891.000000 855.000000 114.283916 -892.000000 855.000000 114.569014 -893.000000 855.000000 114.804619 -894.000000 855.000000 114.932119 -895.000000 855.000000 115.044189 -896.000000 855.000000 115.189209 -897.000000 855.000000 115.218447 -898.000000 855.000000 115.177070 -821.000000 856.000000 104.695459 -822.000000 856.000000 104.579502 -823.000000 856.000000 104.563125 -824.000000 856.000000 104.765498 -825.000000 856.000000 105.289102 -826.000000 856.000000 105.678789 -827.000000 856.000000 105.983779 -828.000000 856.000000 105.775732 -829.000000 856.000000 105.620967 -830.000000 856.000000 105.479834 -831.000000 856.000000 105.433789 -832.000000 856.000000 105.431855 -833.000000 856.000000 105.522324 -834.000000 856.000000 105.633672 -835.000000 856.000000 105.718154 -836.000000 856.000000 105.833965 -837.000000 856.000000 105.967588 -838.000000 856.000000 106.111592 -839.000000 856.000000 106.221934 -840.000000 856.000000 106.310781 -841.000000 856.000000 106.413750 -842.000000 856.000000 106.437881 -843.000000 856.000000 106.363203 -844.000000 856.000000 106.222432 -845.000000 856.000000 106.115508 -846.000000 856.000000 105.940127 -847.000000 856.000000 105.746572 -848.000000 856.000000 105.602451 -849.000000 856.000000 105.444941 -850.000000 856.000000 105.268008 -851.000000 856.000000 105.067725 -852.000000 856.000000 104.860283 -853.000000 856.000000 104.710947 -854.000000 856.000000 104.924063 -855.000000 856.000000 105.259033 -856.000000 856.000000 105.545234 -857.000000 856.000000 106.307207 -858.000000 856.000000 107.130859 -859.000000 856.000000 107.964072 -860.000000 856.000000 108.746475 -861.000000 856.000000 109.452627 -862.000000 856.000000 110.213906 -863.000000 856.000000 110.886221 -864.000000 856.000000 111.696406 -865.000000 856.000000 112.516816 -866.000000 856.000000 113.206074 -867.000000 856.000000 113.939912 -868.000000 856.000000 114.509346 -869.000000 856.000000 114.982471 -870.000000 856.000000 115.241826 -871.000000 856.000000 115.098008 -872.000000 856.000000 114.903457 -873.000000 856.000000 114.615703 -874.000000 856.000000 114.164385 -875.000000 856.000000 113.681279 -876.000000 856.000000 113.317637 -877.000000 856.000000 112.974785 -878.000000 856.000000 112.706533 -879.000000 856.000000 112.511914 -880.000000 856.000000 112.480225 -881.000000 856.000000 112.502324 -882.000000 856.000000 112.654951 -883.000000 856.000000 112.940586 -884.000000 856.000000 113.257012 -885.000000 856.000000 113.446182 -886.000000 856.000000 113.491494 -887.000000 856.000000 113.581807 -888.000000 856.000000 113.909141 -889.000000 856.000000 114.233145 -890.000000 856.000000 114.572393 -891.000000 856.000000 114.924170 -892.000000 856.000000 115.217568 -893.000000 856.000000 115.512363 -894.000000 856.000000 115.652451 -895.000000 856.000000 115.764297 -896.000000 856.000000 115.873516 -897.000000 856.000000 115.922959 -898.000000 856.000000 115.852773 -821.000000 857.000000 104.047002 -822.000000 857.000000 103.900586 -823.000000 857.000000 103.974766 -824.000000 857.000000 104.267822 -825.000000 857.000000 104.560557 -826.000000 857.000000 105.031250 -827.000000 857.000000 105.440508 -828.000000 857.000000 105.861924 -829.000000 857.000000 105.822939 -830.000000 857.000000 105.714326 -831.000000 857.000000 105.695938 -832.000000 857.000000 105.777461 -833.000000 857.000000 105.905244 -834.000000 857.000000 106.055107 -835.000000 857.000000 106.258506 -836.000000 857.000000 106.490439 -837.000000 857.000000 106.690879 -838.000000 857.000000 106.829707 -839.000000 857.000000 106.984336 -840.000000 857.000000 107.055332 -841.000000 857.000000 107.167686 -842.000000 857.000000 107.164463 -843.000000 857.000000 107.041729 -844.000000 857.000000 106.975996 -845.000000 857.000000 106.846445 -846.000000 857.000000 106.708672 -847.000000 857.000000 106.386133 -848.000000 857.000000 106.093701 -849.000000 857.000000 105.847588 -850.000000 857.000000 105.624561 -851.000000 857.000000 105.356816 -852.000000 857.000000 105.130400 -853.000000 857.000000 104.904053 -854.000000 857.000000 104.967178 -855.000000 857.000000 105.320439 -856.000000 857.000000 105.797852 -857.000000 857.000000 106.643467 -858.000000 857.000000 107.547188 -859.000000 857.000000 108.446875 -860.000000 857.000000 109.129814 -861.000000 857.000000 109.811094 -862.000000 857.000000 110.561982 -863.000000 857.000000 111.388447 -864.000000 857.000000 112.322227 -865.000000 857.000000 113.212559 -866.000000 857.000000 114.013330 -867.000000 857.000000 114.945664 -868.000000 857.000000 115.729941 -869.000000 857.000000 116.084795 -870.000000 857.000000 116.166582 -871.000000 857.000000 116.098086 -872.000000 857.000000 115.860781 -873.000000 857.000000 115.631846 -874.000000 857.000000 115.164648 -875.000000 857.000000 114.593516 -876.000000 857.000000 114.166973 -877.000000 857.000000 113.797178 -878.000000 857.000000 113.463457 -879.000000 857.000000 113.436240 -880.000000 857.000000 113.359209 -881.000000 857.000000 113.312813 -882.000000 857.000000 113.407656 -883.000000 857.000000 113.618398 -884.000000 857.000000 114.049551 -885.000000 857.000000 114.054121 -886.000000 857.000000 114.148037 -887.000000 857.000000 114.290752 -888.000000 857.000000 114.530107 -889.000000 857.000000 114.838135 -890.000000 857.000000 115.138437 -891.000000 857.000000 115.485762 -892.000000 857.000000 115.856914 -893.000000 857.000000 116.188652 -894.000000 857.000000 116.377676 -895.000000 857.000000 116.517539 -896.000000 857.000000 116.585928 -897.000000 857.000000 116.608770 -898.000000 857.000000 116.548203 -821.000000 858.000000 103.433818 -822.000000 858.000000 103.395371 -823.000000 858.000000 103.539199 -824.000000 858.000000 103.820117 -825.000000 858.000000 104.295840 -826.000000 858.000000 104.730127 -827.000000 858.000000 105.058877 -828.000000 858.000000 105.770537 -829.000000 858.000000 106.040137 -830.000000 858.000000 106.043711 -831.000000 858.000000 106.011563 -832.000000 858.000000 106.099277 -833.000000 858.000000 106.321348 -834.000000 858.000000 106.485479 -835.000000 858.000000 106.715674 -836.000000 858.000000 107.029941 -837.000000 858.000000 107.303008 -838.000000 858.000000 107.527764 -839.000000 858.000000 107.721699 -840.000000 858.000000 107.870332 -841.000000 858.000000 107.958428 -842.000000 858.000000 108.018242 -843.000000 858.000000 107.946943 -844.000000 858.000000 107.842979 -845.000000 858.000000 107.759629 -846.000000 858.000000 107.569844 -847.000000 858.000000 107.307646 -848.000000 858.000000 106.926865 -849.000000 858.000000 106.452002 -850.000000 858.000000 106.006357 -851.000000 858.000000 105.644229 -852.000000 858.000000 105.271963 -853.000000 858.000000 104.973984 -854.000000 858.000000 104.969209 -855.000000 858.000000 105.331914 -856.000000 858.000000 106.051426 -857.000000 858.000000 106.914307 -858.000000 858.000000 107.818213 -859.000000 858.000000 108.736719 -860.000000 858.000000 109.441182 -861.000000 858.000000 110.025742 -862.000000 858.000000 110.828242 -863.000000 858.000000 111.812148 -864.000000 858.000000 112.795947 -865.000000 858.000000 113.746621 -866.000000 858.000000 114.889365 -867.000000 858.000000 116.066807 -868.000000 858.000000 116.889141 -869.000000 858.000000 117.214336 -870.000000 858.000000 117.131992 -871.000000 858.000000 117.035303 -872.000000 858.000000 116.738359 -873.000000 858.000000 116.516670 -874.000000 858.000000 116.017891 -875.000000 858.000000 115.506309 -876.000000 858.000000 115.068008 -877.000000 858.000000 114.618955 -878.000000 858.000000 114.192354 -879.000000 858.000000 114.056230 -880.000000 858.000000 114.005000 -881.000000 858.000000 113.944258 -882.000000 858.000000 113.791650 -883.000000 858.000000 113.717187 -884.000000 858.000000 114.369844 -885.000000 858.000000 114.647607 -886.000000 858.000000 114.810312 -887.000000 858.000000 115.016670 -888.000000 858.000000 115.182324 -889.000000 858.000000 115.370068 -890.000000 858.000000 115.688516 -891.000000 858.000000 116.029824 -892.000000 858.000000 116.516650 -893.000000 858.000000 117.085947 -894.000000 858.000000 117.281357 -895.000000 858.000000 117.450186 -896.000000 858.000000 117.542217 -897.000000 858.000000 117.506064 -898.000000 858.000000 117.507598 -821.000000 859.000000 102.988164 -822.000000 859.000000 103.112617 -823.000000 859.000000 103.333809 -824.000000 859.000000 103.545205 -825.000000 859.000000 104.080645 -826.000000 859.000000 104.593135 -827.000000 859.000000 105.053555 -828.000000 859.000000 105.746494 -829.000000 859.000000 106.331240 -830.000000 859.000000 106.527266 -831.000000 859.000000 106.484824 -832.000000 859.000000 106.511309 -833.000000 859.000000 106.720752 -834.000000 859.000000 106.972539 -835.000000 859.000000 107.245293 -836.000000 859.000000 107.579326 -837.000000 859.000000 107.921104 -838.000000 859.000000 108.234922 -839.000000 859.000000 108.436553 -840.000000 859.000000 108.623730 -841.000000 859.000000 108.782451 -842.000000 859.000000 108.904746 -843.000000 859.000000 108.820059 -844.000000 859.000000 108.791289 -845.000000 859.000000 108.839766 -846.000000 859.000000 108.645488 -847.000000 859.000000 108.319766 -848.000000 859.000000 107.769756 -849.000000 859.000000 107.040264 -850.000000 859.000000 106.466816 -851.000000 859.000000 105.908105 -852.000000 859.000000 105.395859 -853.000000 859.000000 105.068545 -854.000000 859.000000 105.031875 -855.000000 859.000000 105.406436 -856.000000 859.000000 106.151875 -857.000000 859.000000 107.067988 -858.000000 859.000000 107.983379 -859.000000 859.000000 108.814580 -860.000000 859.000000 109.509111 -861.000000 859.000000 110.214746 -862.000000 859.000000 111.029238 -863.000000 859.000000 111.936484 -864.000000 859.000000 112.938662 -865.000000 859.000000 114.031797 -866.000000 859.000000 115.234199 -867.000000 859.000000 116.412393 -868.000000 859.000000 117.462705 -869.000000 859.000000 118.317559 -870.000000 859.000000 118.076387 -871.000000 859.000000 117.918184 -872.000000 859.000000 117.655273 -873.000000 859.000000 117.255996 -874.000000 859.000000 116.838789 -875.000000 859.000000 116.383018 -876.000000 859.000000 115.915898 -877.000000 859.000000 115.510000 -878.000000 859.000000 115.051592 -879.000000 859.000000 114.741484 -880.000000 859.000000 114.602607 -881.000000 859.000000 114.496465 -882.000000 859.000000 114.300146 -883.000000 859.000000 113.991338 -884.000000 859.000000 114.087813 -885.000000 859.000000 114.780439 -886.000000 859.000000 115.153916 -887.000000 859.000000 115.435957 -888.000000 859.000000 115.619424 -889.000000 859.000000 115.843057 -890.000000 859.000000 116.211309 -891.000000 859.000000 116.626133 -892.000000 859.000000 117.426504 -893.000000 859.000000 118.191445 -894.000000 859.000000 118.569424 -895.000000 859.000000 118.605156 -896.000000 859.000000 118.667754 -897.000000 859.000000 118.508037 -898.000000 859.000000 118.541328 -821.000000 860.000000 102.427598 -822.000000 860.000000 102.781504 -823.000000 860.000000 103.122266 -824.000000 860.000000 103.524199 -825.000000 860.000000 104.064395 -826.000000 860.000000 104.597334 -827.000000 860.000000 105.120986 -828.000000 860.000000 105.794844 -829.000000 860.000000 106.307402 -830.000000 860.000000 106.713691 -831.000000 860.000000 106.827998 -832.000000 860.000000 107.012090 -833.000000 860.000000 107.262861 -834.000000 860.000000 107.537061 -835.000000 860.000000 107.822842 -836.000000 860.000000 108.098652 -837.000000 860.000000 108.493232 -838.000000 860.000000 108.797930 -839.000000 860.000000 109.039199 -840.000000 860.000000 109.304766 -841.000000 860.000000 109.546113 -842.000000 860.000000 109.647324 -843.000000 860.000000 109.659541 -844.000000 860.000000 109.700908 -845.000000 860.000000 109.771084 -846.000000 860.000000 109.587256 -847.000000 860.000000 109.273906 -848.000000 860.000000 108.564063 -849.000000 860.000000 107.640117 -850.000000 860.000000 106.865986 -851.000000 860.000000 106.099658 -852.000000 860.000000 105.602031 -853.000000 860.000000 105.254717 -854.000000 860.000000 105.207266 -855.000000 860.000000 105.622246 -856.000000 860.000000 106.385654 -857.000000 860.000000 107.300996 -858.000000 860.000000 108.138037 -859.000000 860.000000 108.893213 -860.000000 860.000000 109.552861 -861.000000 860.000000 110.297236 -862.000000 860.000000 111.149326 -863.000000 860.000000 112.028486 -864.000000 860.000000 113.112666 -865.000000 860.000000 114.229258 -866.000000 860.000000 115.369443 -867.000000 860.000000 116.520488 -868.000000 860.000000 117.894443 -869.000000 860.000000 119.276016 -870.000000 860.000000 119.209756 -871.000000 860.000000 118.834814 -872.000000 860.000000 118.556475 -873.000000 860.000000 118.149648 -874.000000 860.000000 117.664541 -875.000000 860.000000 117.136768 -876.000000 860.000000 116.768955 -877.000000 860.000000 116.378564 -878.000000 860.000000 115.940469 -879.000000 860.000000 115.535938 -880.000000 860.000000 115.215664 -881.000000 860.000000 114.982080 -882.000000 860.000000 114.658271 -883.000000 860.000000 114.282813 -884.000000 860.000000 113.924941 -885.000000 860.000000 114.513926 -886.000000 860.000000 115.019209 -887.000000 860.000000 115.440850 -888.000000 860.000000 115.844492 -889.000000 860.000000 116.211514 -890.000000 860.000000 116.751533 -891.000000 860.000000 117.447441 -892.000000 860.000000 118.710518 -893.000000 860.000000 119.427402 -894.000000 860.000000 120.083477 -895.000000 860.000000 120.373350 -896.000000 860.000000 120.195488 -897.000000 860.000000 119.909746 -898.000000 860.000000 119.609707 -821.000000 861.000000 101.929375 -822.000000 861.000000 102.481895 -823.000000 861.000000 103.018848 -824.000000 861.000000 103.543896 -825.000000 861.000000 104.104365 -826.000000 861.000000 104.688398 -827.000000 861.000000 105.272949 -828.000000 861.000000 105.813359 -829.000000 861.000000 106.330703 -830.000000 861.000000 106.854717 -831.000000 861.000000 107.228936 -832.000000 861.000000 107.469424 -833.000000 861.000000 107.806270 -834.000000 861.000000 108.139561 -835.000000 861.000000 108.412275 -836.000000 861.000000 108.675986 -837.000000 861.000000 109.012500 -838.000000 861.000000 109.346543 -839.000000 861.000000 109.722930 -840.000000 861.000000 110.042324 -841.000000 861.000000 110.302813 -842.000000 861.000000 110.382051 -843.000000 861.000000 110.473623 -844.000000 861.000000 110.582910 -845.000000 861.000000 110.601494 -846.000000 861.000000 110.505674 -847.000000 861.000000 109.996387 -848.000000 861.000000 109.288066 -849.000000 861.000000 108.331230 -850.000000 861.000000 107.376270 -851.000000 861.000000 106.473594 -852.000000 861.000000 105.802871 -853.000000 861.000000 105.402871 -854.000000 861.000000 105.401240 -855.000000 861.000000 106.012852 -856.000000 861.000000 106.777275 -857.000000 861.000000 107.584355 -858.000000 861.000000 108.406113 -859.000000 861.000000 109.059980 -860.000000 861.000000 109.758037 -861.000000 861.000000 110.415518 -862.000000 861.000000 111.284785 -863.000000 861.000000 112.211494 -864.000000 861.000000 113.334072 -865.000000 861.000000 114.475791 -866.000000 861.000000 115.711221 -867.000000 861.000000 116.975771 -868.000000 861.000000 118.435898 -869.000000 861.000000 119.846484 -870.000000 861.000000 120.582666 -871.000000 861.000000 119.937656 -872.000000 861.000000 119.474434 -873.000000 861.000000 118.996143 -874.000000 861.000000 118.643301 -875.000000 861.000000 118.096572 -876.000000 861.000000 117.644502 -877.000000 861.000000 117.138271 -878.000000 861.000000 116.678037 -879.000000 861.000000 116.230410 -880.000000 861.000000 115.733047 -881.000000 861.000000 115.398291 -882.000000 861.000000 114.921953 -883.000000 861.000000 114.479385 -884.000000 861.000000 113.938770 -885.000000 861.000000 114.240391 -886.000000 861.000000 114.722705 -887.000000 861.000000 115.242178 -888.000000 861.000000 115.763096 -889.000000 861.000000 116.280703 -890.000000 861.000000 116.963311 -891.000000 861.000000 118.247598 -892.000000 861.000000 119.443145 -893.000000 861.000000 120.596689 -894.000000 861.000000 121.417158 -895.000000 861.000000 121.867871 -896.000000 861.000000 121.976045 -897.000000 861.000000 121.575869 -898.000000 861.000000 120.754180 -821.000000 862.000000 101.425635 -822.000000 862.000000 102.087607 -823.000000 862.000000 102.812402 -824.000000 862.000000 103.514551 -825.000000 862.000000 104.225488 -826.000000 862.000000 104.838398 -827.000000 862.000000 105.410732 -828.000000 862.000000 106.016592 -829.000000 862.000000 106.464414 -830.000000 862.000000 106.962041 -831.000000 862.000000 107.521777 -832.000000 862.000000 107.930244 -833.000000 862.000000 108.286826 -834.000000 862.000000 108.640117 -835.000000 862.000000 108.928418 -836.000000 862.000000 109.224971 -837.000000 862.000000 109.609941 -838.000000 862.000000 109.989092 -839.000000 862.000000 110.420801 -840.000000 862.000000 110.834531 -841.000000 862.000000 111.108467 -842.000000 862.000000 111.189707 -843.000000 862.000000 111.280742 -844.000000 862.000000 111.384648 -845.000000 862.000000 111.404893 -846.000000 862.000000 111.282666 -847.000000 862.000000 110.776465 -848.000000 862.000000 109.903633 -849.000000 862.000000 109.004199 -850.000000 862.000000 107.840225 -851.000000 862.000000 106.803340 -852.000000 862.000000 106.033066 -853.000000 862.000000 105.464941 -854.000000 862.000000 105.709912 -855.000000 862.000000 106.381553 -856.000000 862.000000 107.189541 -857.000000 862.000000 108.008496 -858.000000 862.000000 108.893057 -859.000000 862.000000 109.456914 -860.000000 862.000000 110.048604 -861.000000 862.000000 110.632607 -862.000000 862.000000 111.429980 -863.000000 862.000000 112.358047 -864.000000 862.000000 113.496299 -865.000000 862.000000 114.825303 -866.000000 862.000000 116.131104 -867.000000 862.000000 117.494609 -868.000000 862.000000 118.817939 -869.000000 862.000000 120.176982 -870.000000 862.000000 121.456777 -871.000000 862.000000 121.083770 -872.000000 862.000000 120.317148 -873.000000 862.000000 119.799316 -874.000000 862.000000 119.388906 -875.000000 862.000000 119.003203 -876.000000 862.000000 118.524209 -877.000000 862.000000 117.959189 -878.000000 862.000000 117.342178 -879.000000 862.000000 116.779004 -880.000000 862.000000 116.182100 -881.000000 862.000000 115.728887 -882.000000 862.000000 115.247939 -883.000000 862.000000 114.764707 -884.000000 862.000000 114.230186 -885.000000 862.000000 113.955068 -886.000000 862.000000 114.542070 -887.000000 862.000000 115.038008 -888.000000 862.000000 115.592217 -889.000000 862.000000 116.158350 -890.000000 862.000000 117.105967 -891.000000 862.000000 118.399980 -892.000000 862.000000 119.609775 -893.000000 862.000000 121.063340 -894.000000 862.000000 122.164102 -895.000000 862.000000 123.065703 -896.000000 862.000000 123.075352 -897.000000 862.000000 122.500205 -898.000000 862.000000 121.540342 -821.000000 863.000000 100.895488 -822.000000 863.000000 101.842969 -823.000000 863.000000 102.706045 -824.000000 863.000000 103.539443 -825.000000 863.000000 104.326104 -826.000000 863.000000 105.027471 -827.000000 863.000000 105.684443 -828.000000 863.000000 106.334434 -829.000000 863.000000 106.796230 -830.000000 863.000000 107.384746 -831.000000 863.000000 107.885381 -832.000000 863.000000 108.347031 -833.000000 863.000000 108.754844 -834.000000 863.000000 109.092480 -835.000000 863.000000 109.415664 -836.000000 863.000000 109.824375 -837.000000 863.000000 110.258691 -838.000000 863.000000 110.671338 -839.000000 863.000000 111.091416 -840.000000 863.000000 111.679951 -841.000000 863.000000 112.138330 -842.000000 863.000000 112.188887 -843.000000 863.000000 112.160176 -844.000000 863.000000 112.117910 -845.000000 863.000000 112.072285 -846.000000 863.000000 111.948086 -847.000000 863.000000 111.404414 -848.000000 863.000000 110.468994 -849.000000 863.000000 109.383955 -850.000000 863.000000 108.135967 -851.000000 863.000000 107.107725 -852.000000 863.000000 106.357695 -853.000000 863.000000 105.713154 -854.000000 863.000000 105.853418 -855.000000 863.000000 106.733652 -856.000000 863.000000 107.551963 -857.000000 863.000000 108.547295 -858.000000 863.000000 109.375879 -859.000000 863.000000 110.075078 -860.000000 863.000000 110.506387 -861.000000 863.000000 110.962861 -862.000000 863.000000 111.652617 -863.000000 863.000000 112.509717 -864.000000 863.000000 113.648369 -865.000000 863.000000 115.080420 -866.000000 863.000000 116.591982 -867.000000 863.000000 118.048867 -868.000000 863.000000 119.277646 -869.000000 863.000000 120.528965 -870.000000 863.000000 121.826582 -871.000000 863.000000 121.970918 -872.000000 863.000000 121.371299 -873.000000 863.000000 120.807979 -874.000000 863.000000 120.230127 -875.000000 863.000000 119.942402 -876.000000 863.000000 119.403750 -877.000000 863.000000 118.735420 -878.000000 863.000000 118.019844 -879.000000 863.000000 117.367969 -880.000000 863.000000 116.704531 -881.000000 863.000000 116.152715 -882.000000 863.000000 115.618750 -883.000000 863.000000 115.106201 -884.000000 863.000000 114.544150 -885.000000 863.000000 113.999463 -886.000000 863.000000 114.221641 -887.000000 863.000000 114.798809 -888.000000 863.000000 115.406455 -889.000000 863.000000 116.027393 -890.000000 863.000000 116.980430 -891.000000 863.000000 118.221318 -892.000000 863.000000 119.525898 -893.000000 863.000000 121.051572 -894.000000 863.000000 122.345381 -895.000000 863.000000 123.513271 -896.000000 863.000000 124.148359 -897.000000 863.000000 123.387578 -898.000000 863.000000 122.315957 -821.000000 864.000000 100.346602 -822.000000 864.000000 101.432617 -823.000000 864.000000 102.562676 -824.000000 864.000000 103.571787 -825.000000 864.000000 104.480264 -826.000000 864.000000 105.226357 -827.000000 864.000000 105.876182 -828.000000 864.000000 106.607920 -829.000000 864.000000 107.273086 -830.000000 864.000000 107.848184 -831.000000 864.000000 108.379756 -832.000000 864.000000 108.784482 -833.000000 864.000000 109.256641 -834.000000 864.000000 109.614404 -835.000000 864.000000 109.974697 -836.000000 864.000000 110.466104 -837.000000 864.000000 110.928574 -838.000000 864.000000 111.381191 -839.000000 864.000000 112.018223 -840.000000 864.000000 112.675537 -841.000000 864.000000 113.124951 -842.000000 864.000000 113.203857 -843.000000 864.000000 113.149814 -844.000000 864.000000 113.054922 -845.000000 864.000000 112.953711 -846.000000 864.000000 112.557334 -847.000000 864.000000 111.662549 -848.000000 864.000000 110.736650 -849.000000 864.000000 109.542295 -850.000000 864.000000 108.336797 -851.000000 864.000000 107.352695 -852.000000 864.000000 106.605156 -853.000000 864.000000 105.948428 -854.000000 864.000000 105.748926 -855.000000 864.000000 106.826768 -856.000000 864.000000 107.856816 -857.000000 864.000000 108.968223 -858.000000 864.000000 109.827090 -859.000000 864.000000 110.607451 -860.000000 864.000000 111.130293 -861.000000 864.000000 111.458779 -862.000000 864.000000 111.959004 -863.000000 864.000000 112.989473 -864.000000 864.000000 114.140303 -865.000000 864.000000 115.528887 -866.000000 864.000000 117.075107 -867.000000 864.000000 118.686582 -868.000000 864.000000 119.935234 -869.000000 864.000000 121.079004 -870.000000 864.000000 122.264697 -871.000000 864.000000 122.953711 -872.000000 864.000000 122.319883 -873.000000 864.000000 121.690586 -874.000000 864.000000 121.338936 -875.000000 864.000000 120.697676 -876.000000 864.000000 120.035039 -877.000000 864.000000 119.361260 -878.000000 864.000000 118.655557 -879.000000 864.000000 117.900977 -880.000000 864.000000 117.214297 -881.000000 864.000000 116.568223 -882.000000 864.000000 115.998018 -883.000000 864.000000 115.458623 -884.000000 864.000000 114.924600 -885.000000 864.000000 114.414873 -886.000000 864.000000 113.957744 -887.000000 864.000000 114.383213 -888.000000 864.000000 115.105098 -889.000000 864.000000 115.796182 -890.000000 864.000000 116.668936 -891.000000 864.000000 117.777002 -892.000000 864.000000 118.970820 -893.000000 864.000000 120.517295 -894.000000 864.000000 121.964512 -895.000000 864.000000 123.577812 -896.000000 864.000000 124.810693 -897.000000 864.000000 124.152197 -898.000000 864.000000 122.973076 -821.000000 865.000000 99.983779 -822.000000 865.000000 101.043398 -823.000000 865.000000 102.336797 -824.000000 865.000000 103.515371 -825.000000 865.000000 104.503955 -826.000000 865.000000 105.283574 -827.000000 865.000000 105.956436 -828.000000 865.000000 106.692432 -829.000000 865.000000 107.374775 -830.000000 865.000000 108.096318 -831.000000 865.000000 108.593115 -832.000000 865.000000 109.085078 -833.000000 865.000000 109.583467 -834.000000 865.000000 110.052422 -835.000000 865.000000 110.497070 -836.000000 865.000000 110.955684 -837.000000 865.000000 111.607920 -838.000000 865.000000 112.296250 -839.000000 865.000000 113.012148 -840.000000 865.000000 113.685742 -841.000000 865.000000 114.206006 -842.000000 865.000000 114.334561 -843.000000 865.000000 114.297734 -844.000000 865.000000 114.181221 -845.000000 865.000000 113.957998 -846.000000 865.000000 112.487939 -847.000000 865.000000 111.717861 -848.000000 865.000000 110.771035 -849.000000 865.000000 109.580889 -850.000000 865.000000 108.451240 -851.000000 865.000000 107.457256 -852.000000 865.000000 106.791973 -853.000000 865.000000 106.177656 -854.000000 865.000000 105.639678 -855.000000 865.000000 106.749170 -856.000000 865.000000 108.067510 -857.000000 865.000000 109.190664 -858.000000 865.000000 110.182139 -859.000000 865.000000 111.046982 -860.000000 865.000000 111.581563 -861.000000 865.000000 112.118389 -862.000000 865.000000 112.692988 -863.000000 865.000000 113.716748 -864.000000 865.000000 114.833740 -865.000000 865.000000 116.066543 -866.000000 865.000000 117.629268 -867.000000 865.000000 119.258311 -868.000000 865.000000 120.628096 -869.000000 865.000000 121.649902 -870.000000 865.000000 122.632363 -871.000000 865.000000 123.435781 -872.000000 865.000000 122.882520 -873.000000 865.000000 122.417813 -874.000000 865.000000 121.865752 -875.000000 865.000000 121.274678 -876.000000 865.000000 120.733770 -877.000000 865.000000 119.884346 -878.000000 865.000000 119.117637 -879.000000 865.000000 118.377734 -880.000000 865.000000 117.665693 -881.000000 865.000000 117.000371 -882.000000 865.000000 116.363809 -883.000000 865.000000 115.808350 -884.000000 865.000000 115.274824 -885.000000 865.000000 114.722383 -886.000000 865.000000 114.223955 -887.000000 865.000000 114.106016 -888.000000 865.000000 114.771016 -889.000000 865.000000 115.489473 -890.000000 865.000000 116.344355 -891.000000 865.000000 117.438203 -892.000000 865.000000 118.835420 -893.000000 865.000000 120.168291 -894.000000 865.000000 121.703848 -895.000000 865.000000 123.205410 -896.000000 865.000000 124.627090 -897.000000 865.000000 124.789648 -898.000000 865.000000 123.518701 -821.000000 866.000000 99.922246 -822.000000 866.000000 100.898701 -823.000000 866.000000 102.261826 -824.000000 866.000000 103.403818 -825.000000 866.000000 104.389766 -826.000000 866.000000 105.206973 -827.000000 866.000000 105.919092 -828.000000 866.000000 106.730889 -829.000000 866.000000 107.527363 -830.000000 866.000000 108.225693 -831.000000 866.000000 108.767334 -832.000000 866.000000 109.289043 -833.000000 866.000000 109.826592 -834.000000 866.000000 110.352236 -835.000000 866.000000 110.865186 -836.000000 866.000000 111.431582 -837.000000 866.000000 112.225342 -838.000000 866.000000 113.089004 -839.000000 866.000000 113.833926 -840.000000 866.000000 114.486748 -841.000000 866.000000 114.910098 -842.000000 866.000000 114.984678 -843.000000 866.000000 114.788193 -844.000000 866.000000 114.337637 -845.000000 866.000000 113.610518 -846.000000 866.000000 112.495225 -847.000000 866.000000 111.642666 -848.000000 866.000000 110.757344 -849.000000 866.000000 109.700400 -850.000000 866.000000 108.605928 -851.000000 866.000000 107.652725 -852.000000 866.000000 106.882119 -853.000000 866.000000 106.275322 -854.000000 866.000000 105.657100 -855.000000 866.000000 106.976533 -856.000000 866.000000 108.306494 -857.000000 866.000000 109.437246 -858.000000 866.000000 110.459971 -859.000000 866.000000 111.306582 -860.000000 866.000000 112.042588 -861.000000 866.000000 112.684258 -862.000000 866.000000 113.457686 -863.000000 866.000000 114.438516 -864.000000 866.000000 115.553984 -865.000000 866.000000 116.740518 -866.000000 866.000000 118.171826 -867.000000 866.000000 119.709346 -868.000000 866.000000 121.055996 -869.000000 866.000000 121.904648 -870.000000 866.000000 122.901006 -871.000000 866.000000 123.473340 -872.000000 866.000000 123.315391 -873.000000 866.000000 122.968506 -874.000000 866.000000 122.508535 -875.000000 866.000000 121.989609 -876.000000 866.000000 121.238066 -877.000000 866.000000 120.434521 -878.000000 866.000000 119.565977 -879.000000 866.000000 118.783604 -880.000000 866.000000 118.076533 -881.000000 866.000000 117.390430 -882.000000 866.000000 116.727832 -883.000000 866.000000 116.128115 -884.000000 866.000000 115.524805 -885.000000 866.000000 114.978105 -886.000000 866.000000 114.453496 -887.000000 866.000000 113.980225 -888.000000 866.000000 114.535957 -889.000000 866.000000 115.232178 -890.000000 866.000000 116.075313 -891.000000 866.000000 117.088779 -892.000000 866.000000 118.559580 -893.000000 866.000000 119.788975 -894.000000 866.000000 121.309248 -895.000000 866.000000 122.748506 -896.000000 866.000000 124.154873 -897.000000 866.000000 125.229932 -898.000000 866.000000 124.228574 -821.000000 867.000000 99.881826 -822.000000 867.000000 100.841250 -823.000000 867.000000 102.154687 -824.000000 867.000000 103.294043 -825.000000 867.000000 104.262559 -826.000000 867.000000 105.134287 -827.000000 867.000000 105.953525 -828.000000 867.000000 106.826768 -829.000000 867.000000 107.694258 -830.000000 867.000000 108.369727 -831.000000 867.000000 108.937559 -832.000000 867.000000 109.510068 -833.000000 867.000000 110.083779 -834.000000 867.000000 110.620127 -835.000000 867.000000 111.166436 -836.000000 867.000000 111.930557 -837.000000 867.000000 112.763594 -838.000000 867.000000 113.726064 -839.000000 867.000000 114.510264 -840.000000 867.000000 115.060830 -841.000000 867.000000 115.532549 -842.000000 867.000000 115.385225 -843.000000 867.000000 114.788477 -844.000000 867.000000 114.175703 -845.000000 867.000000 113.349033 -846.000000 867.000000 112.449883 -847.000000 867.000000 111.583848 -848.000000 867.000000 110.678545 -849.000000 867.000000 109.709238 -850.000000 867.000000 108.622695 -851.000000 867.000000 107.629277 -852.000000 867.000000 106.886406 -853.000000 867.000000 106.280000 -854.000000 867.000000 105.678760 -855.000000 867.000000 106.957471 -856.000000 867.000000 108.354971 -857.000000 867.000000 109.603848 -858.000000 867.000000 110.676367 -859.000000 867.000000 111.492041 -860.000000 867.000000 112.306260 -861.000000 867.000000 113.187861 -862.000000 867.000000 114.066943 -863.000000 867.000000 115.145234 -864.000000 867.000000 116.282090 -865.000000 867.000000 117.382373 -866.000000 867.000000 118.670781 -867.000000 867.000000 119.975801 -868.000000 867.000000 121.262773 -869.000000 867.000000 122.178545 -870.000000 867.000000 123.323311 -871.000000 867.000000 123.897568 -872.000000 867.000000 124.032354 -873.000000 867.000000 123.729775 -874.000000 867.000000 123.127129 -875.000000 867.000000 122.426709 -876.000000 867.000000 121.632236 -877.000000 867.000000 120.853496 -878.000000 867.000000 119.992607 -879.000000 867.000000 119.149727 -880.000000 867.000000 118.390781 -881.000000 867.000000 117.662598 -882.000000 867.000000 116.952266 -883.000000 867.000000 116.288818 -884.000000 867.000000 115.693867 -885.000000 867.000000 115.138555 -886.000000 867.000000 114.621455 -887.000000 867.000000 114.134131 -888.000000 867.000000 114.181846 -889.000000 867.000000 115.005273 -890.000000 867.000000 115.834209 -891.000000 867.000000 116.865518 -892.000000 867.000000 118.170879 -893.000000 867.000000 119.637178 -894.000000 867.000000 120.869580 -895.000000 867.000000 122.161875 -896.000000 867.000000 123.335527 -897.000000 867.000000 124.491699 -898.000000 867.000000 125.207002 -821.000000 868.000000 100.052012 -822.000000 868.000000 100.967803 -823.000000 868.000000 102.106914 -824.000000 868.000000 103.200674 -825.000000 868.000000 104.250625 -826.000000 868.000000 105.101279 -827.000000 868.000000 105.965781 -828.000000 868.000000 106.904404 -829.000000 868.000000 107.800742 -830.000000 868.000000 108.478096 -831.000000 868.000000 109.068867 -832.000000 868.000000 109.706084 -833.000000 868.000000 110.344775 -834.000000 868.000000 110.990645 -835.000000 868.000000 111.609082 -836.000000 868.000000 112.395000 -837.000000 868.000000 113.301367 -838.000000 868.000000 114.288770 -839.000000 868.000000 115.070039 -840.000000 868.000000 115.648271 -841.000000 868.000000 115.985869 -842.000000 868.000000 114.748291 -843.000000 868.000000 114.344990 -844.000000 868.000000 113.712705 -845.000000 868.000000 112.986680 -846.000000 868.000000 112.227344 -847.000000 868.000000 111.445010 -848.000000 868.000000 110.527813 -849.000000 868.000000 109.670635 -850.000000 868.000000 108.666006 -851.000000 868.000000 107.635508 -852.000000 868.000000 106.783838 -853.000000 868.000000 106.066973 -854.000000 868.000000 105.433242 -855.000000 868.000000 106.601035 -856.000000 868.000000 107.981895 -857.000000 868.000000 109.467031 -858.000000 868.000000 110.768232 -859.000000 868.000000 111.574434 -860.000000 868.000000 112.575254 -861.000000 868.000000 113.790469 -862.000000 868.000000 114.817783 -863.000000 868.000000 115.900889 -864.000000 868.000000 117.045459 -865.000000 868.000000 118.024092 -866.000000 868.000000 119.122021 -867.000000 868.000000 120.342783 -868.000000 868.000000 121.846250 -869.000000 868.000000 123.505479 -870.000000 868.000000 124.686855 -871.000000 868.000000 125.095811 -872.000000 868.000000 124.976133 -873.000000 868.000000 124.600049 -874.000000 868.000000 123.909561 -875.000000 868.000000 122.955869 -876.000000 868.000000 122.094512 -877.000000 868.000000 121.150781 -878.000000 868.000000 120.137432 -879.000000 868.000000 119.432949 -880.000000 868.000000 118.712334 -881.000000 868.000000 117.853750 -882.000000 868.000000 117.064678 -883.000000 868.000000 116.386348 -884.000000 868.000000 115.821338 -885.000000 868.000000 115.278242 -886.000000 868.000000 114.776445 -887.000000 868.000000 114.282080 -888.000000 868.000000 113.962471 -889.000000 868.000000 114.725918 -890.000000 868.000000 115.720957 -891.000000 868.000000 116.703926 -892.000000 868.000000 117.797373 -893.000000 868.000000 119.017305 -894.000000 868.000000 120.158828 -895.000000 868.000000 121.258701 -896.000000 868.000000 122.368154 -897.000000 868.000000 123.511182 -898.000000 868.000000 124.698857 -821.000000 869.000000 100.332480 -822.000000 869.000000 101.197393 -823.000000 869.000000 102.346318 -824.000000 869.000000 103.388223 -825.000000 869.000000 104.306377 -826.000000 869.000000 105.098125 -827.000000 869.000000 105.950352 -828.000000 869.000000 106.822822 -829.000000 869.000000 107.660469 -830.000000 869.000000 108.418867 -831.000000 869.000000 109.162676 -832.000000 869.000000 109.827012 -833.000000 869.000000 110.519238 -834.000000 869.000000 111.265195 -835.000000 869.000000 111.978379 -836.000000 869.000000 112.759102 -837.000000 869.000000 113.698398 -838.000000 869.000000 114.697813 -839.000000 869.000000 115.628760 -840.000000 869.000000 116.324746 -841.000000 869.000000 115.622207 -842.000000 869.000000 114.433066 -843.000000 869.000000 113.418154 -844.000000 869.000000 112.645596 -845.000000 869.000000 112.161172 -846.000000 869.000000 111.704102 -847.000000 869.000000 111.169531 -848.000000 869.000000 110.410596 -849.000000 869.000000 109.550107 -850.000000 869.000000 108.591465 -851.000000 869.000000 107.614004 -852.000000 869.000000 106.710625 -853.000000 869.000000 105.832451 -854.000000 869.000000 105.053604 -855.000000 869.000000 106.080322 -856.000000 869.000000 107.667178 -857.000000 869.000000 109.269424 -858.000000 869.000000 110.821191 -859.000000 869.000000 111.618271 -860.000000 869.000000 112.790840 -861.000000 869.000000 114.387686 -862.000000 869.000000 115.535068 -863.000000 869.000000 116.741543 -864.000000 869.000000 117.978057 -865.000000 869.000000 119.040908 -866.000000 869.000000 120.285000 -867.000000 869.000000 121.230742 -868.000000 869.000000 123.160752 -869.000000 869.000000 125.021074 -870.000000 869.000000 126.537461 -871.000000 869.000000 126.565693 -872.000000 869.000000 125.933301 -873.000000 869.000000 125.449912 -874.000000 869.000000 124.496133 -875.000000 869.000000 123.507539 -876.000000 869.000000 122.454600 -877.000000 869.000000 121.348838 -878.000000 869.000000 120.364414 -879.000000 869.000000 119.617695 -880.000000 869.000000 118.809746 -881.000000 869.000000 117.931309 -882.000000 869.000000 117.146787 -883.000000 869.000000 116.481465 -884.000000 869.000000 115.949951 -885.000000 869.000000 115.408281 -886.000000 869.000000 114.908301 -887.000000 869.000000 114.393740 -888.000000 869.000000 113.977334 -889.000000 869.000000 114.380166 -890.000000 869.000000 115.335430 -891.000000 869.000000 116.241523 -892.000000 869.000000 117.107881 -893.000000 869.000000 118.199502 -894.000000 869.000000 119.139268 -895.000000 869.000000 120.220020 -896.000000 869.000000 121.324932 -897.000000 869.000000 122.444473 -898.000000 869.000000 123.522637 -821.000000 870.000000 100.680732 -822.000000 870.000000 101.572139 -823.000000 870.000000 102.818291 -824.000000 870.000000 103.684014 -825.000000 870.000000 104.399609 -826.000000 870.000000 105.192109 -827.000000 870.000000 105.884551 -828.000000 870.000000 106.653242 -829.000000 870.000000 107.483730 -830.000000 870.000000 108.303770 -831.000000 870.000000 109.143447 -832.000000 870.000000 109.877197 -833.000000 870.000000 110.594297 -834.000000 870.000000 111.495410 -835.000000 870.000000 112.233408 -836.000000 870.000000 113.018555 -837.000000 870.000000 113.932725 -838.000000 870.000000 114.971982 -839.000000 870.000000 115.872627 -840.000000 870.000000 116.901670 -841.000000 870.000000 115.301973 -842.000000 870.000000 113.629639 -843.000000 870.000000 112.326602 -844.000000 870.000000 111.759580 -845.000000 870.000000 111.353711 -846.000000 870.000000 110.975479 -847.000000 870.000000 110.536592 -848.000000 870.000000 110.003008 -849.000000 870.000000 109.326650 -850.000000 870.000000 108.402764 -851.000000 870.000000 107.478203 -852.000000 870.000000 106.538662 -853.000000 870.000000 105.637461 -854.000000 870.000000 104.922588 -855.000000 870.000000 105.949570 -856.000000 870.000000 107.769639 -857.000000 870.000000 109.476396 -858.000000 870.000000 110.794971 -859.000000 870.000000 111.594414 -860.000000 870.000000 112.662852 -861.000000 870.000000 114.309336 -862.000000 870.000000 115.262988 -863.000000 870.000000 116.349912 -864.000000 870.000000 118.355859 -865.000000 870.000000 120.518711 -866.000000 870.000000 121.826670 -867.000000 870.000000 122.712529 -868.000000 870.000000 124.242617 -869.000000 870.000000 126.052549 -870.000000 870.000000 128.337529 -871.000000 870.000000 127.701348 -872.000000 870.000000 126.407988 -873.000000 870.000000 125.446240 -874.000000 870.000000 124.615830 -875.000000 870.000000 123.800039 -876.000000 870.000000 122.741162 -877.000000 870.000000 121.459307 -878.000000 870.000000 120.523906 -879.000000 870.000000 119.825996 -880.000000 870.000000 118.925098 -881.000000 870.000000 118.070742 -882.000000 870.000000 117.284063 -883.000000 870.000000 116.655117 -884.000000 870.000000 116.123115 -885.000000 870.000000 115.587432 -886.000000 870.000000 114.963477 -887.000000 870.000000 114.336768 -888.000000 870.000000 113.808350 -889.000000 870.000000 113.844766 -890.000000 870.000000 114.695283 -891.000000 870.000000 115.537002 -892.000000 870.000000 116.370293 -893.000000 870.000000 117.327715 -894.000000 870.000000 118.147656 -895.000000 870.000000 119.158086 -896.000000 870.000000 120.166006 -897.000000 870.000000 121.333174 -898.000000 870.000000 122.464395 -821.000000 871.000000 100.811699 -822.000000 871.000000 101.881143 -823.000000 871.000000 102.981758 -824.000000 871.000000 103.804092 -825.000000 871.000000 104.431221 -826.000000 871.000000 105.120010 -827.000000 871.000000 105.742930 -828.000000 871.000000 106.505322 -829.000000 871.000000 107.309521 -830.000000 871.000000 108.152891 -831.000000 871.000000 109.062559 -832.000000 871.000000 109.913037 -833.000000 871.000000 110.728477 -834.000000 871.000000 111.549697 -835.000000 871.000000 112.330049 -836.000000 871.000000 113.104004 -837.000000 871.000000 114.034658 -838.000000 871.000000 114.865654 -839.000000 871.000000 115.589189 -840.000000 871.000000 115.565605 -841.000000 871.000000 114.395879 -842.000000 871.000000 112.740566 -843.000000 871.000000 111.684854 -844.000000 871.000000 110.913398 -845.000000 871.000000 110.565635 -846.000000 871.000000 110.163164 -847.000000 871.000000 109.862598 -848.000000 871.000000 109.451504 -849.000000 871.000000 108.913213 -850.000000 871.000000 107.937266 -851.000000 871.000000 107.130693 -852.000000 871.000000 106.098652 -853.000000 871.000000 105.260391 -854.000000 871.000000 104.765127 -855.000000 871.000000 106.217002 -856.000000 871.000000 108.063828 -857.000000 871.000000 109.582119 -858.000000 871.000000 110.673516 -859.000000 871.000000 111.439492 -860.000000 871.000000 112.112598 -861.000000 871.000000 113.536563 -862.000000 871.000000 114.432080 -863.000000 871.000000 115.802324 -864.000000 871.000000 118.012627 -865.000000 871.000000 119.948613 -866.000000 871.000000 120.898467 -867.000000 871.000000 122.139531 -868.000000 871.000000 123.568320 -869.000000 871.000000 125.249619 -870.000000 871.000000 127.209844 -871.000000 871.000000 127.568652 -872.000000 871.000000 126.515000 -873.000000 871.000000 125.494912 -874.000000 871.000000 124.703408 -875.000000 871.000000 123.850459 -876.000000 871.000000 122.677148 -877.000000 871.000000 121.658115 -878.000000 871.000000 120.808613 -879.000000 871.000000 120.015205 -880.000000 871.000000 119.136514 -881.000000 871.000000 118.469492 -882.000000 871.000000 117.676885 -883.000000 871.000000 117.028984 -884.000000 871.000000 116.461582 -885.000000 871.000000 115.849189 -886.000000 871.000000 115.105195 -887.000000 871.000000 114.330400 -888.000000 871.000000 113.804219 -889.000000 871.000000 113.873359 -890.000000 871.000000 114.207344 -891.000000 871.000000 114.729922 -892.000000 871.000000 115.483008 -893.000000 871.000000 116.219893 -894.000000 871.000000 116.967324 -895.000000 871.000000 117.954014 -896.000000 871.000000 118.916084 -897.000000 871.000000 120.123086 -898.000000 871.000000 121.377998 -821.000000 872.000000 100.775068 -822.000000 872.000000 101.741885 -823.000000 872.000000 102.872139 -824.000000 872.000000 103.548516 -825.000000 872.000000 104.262910 -826.000000 872.000000 104.908252 -827.000000 872.000000 105.559043 -828.000000 872.000000 106.335703 -829.000000 872.000000 107.152764 -830.000000 872.000000 108.011963 -831.000000 872.000000 108.951416 -832.000000 872.000000 109.839023 -833.000000 872.000000 110.705742 -834.000000 872.000000 111.465703 -835.000000 872.000000 112.270742 -836.000000 872.000000 113.085430 -837.000000 872.000000 113.825625 -838.000000 872.000000 114.456445 -839.000000 872.000000 114.762012 -840.000000 872.000000 115.039043 -841.000000 872.000000 114.087031 -842.000000 872.000000 112.702187 -843.000000 872.000000 111.497705 -844.000000 872.000000 110.621572 -845.000000 872.000000 109.883867 -846.000000 872.000000 109.331846 -847.000000 872.000000 109.098105 -848.000000 872.000000 108.815830 -849.000000 872.000000 108.146318 -850.000000 872.000000 107.426113 -851.000000 872.000000 106.645068 -852.000000 872.000000 105.593594 -853.000000 872.000000 104.798896 -854.000000 872.000000 104.937373 -855.000000 872.000000 106.389854 -856.000000 872.000000 108.024658 -857.000000 872.000000 109.143057 -858.000000 872.000000 110.298369 -859.000000 872.000000 111.131094 -860.000000 872.000000 111.640723 -861.000000 872.000000 112.344912 -862.000000 872.000000 113.501045 -863.000000 872.000000 115.425947 -864.000000 872.000000 117.105322 -865.000000 872.000000 118.399160 -866.000000 872.000000 119.824795 -867.000000 872.000000 121.224668 -868.000000 872.000000 122.587715 -869.000000 872.000000 124.278711 -870.000000 872.000000 126.139395 -871.000000 872.000000 126.821699 -872.000000 872.000000 126.260293 -873.000000 872.000000 125.634629 -874.000000 872.000000 124.914980 -875.000000 872.000000 123.985732 -876.000000 872.000000 122.910488 -877.000000 872.000000 122.062588 -878.000000 872.000000 121.116748 -879.000000 872.000000 120.024404 -880.000000 872.000000 119.059258 -881.000000 872.000000 118.709600 -882.000000 872.000000 118.052490 -883.000000 872.000000 117.196836 -884.000000 872.000000 116.637715 -885.000000 872.000000 115.985918 -886.000000 872.000000 115.156592 -887.000000 872.000000 114.427861 -888.000000 872.000000 113.795918 -889.000000 872.000000 113.773613 -890.000000 872.000000 114.029795 -891.000000 872.000000 114.169121 -892.000000 872.000000 114.545234 -893.000000 872.000000 115.075322 -894.000000 872.000000 115.709229 -895.000000 872.000000 116.735996 -896.000000 872.000000 118.011846 -897.000000 872.000000 119.257188 -898.000000 872.000000 120.498164 -821.000000 873.000000 100.632842 -822.000000 873.000000 101.519082 -823.000000 873.000000 102.508604 -824.000000 873.000000 103.378535 -825.000000 873.000000 104.062900 -826.000000 873.000000 104.709678 -827.000000 873.000000 105.368750 -828.000000 873.000000 106.154912 -829.000000 873.000000 107.003271 -830.000000 873.000000 107.852021 -831.000000 873.000000 108.777080 -832.000000 873.000000 109.546729 -833.000000 873.000000 110.413936 -834.000000 873.000000 111.203271 -835.000000 873.000000 111.894180 -836.000000 873.000000 112.571055 -837.000000 873.000000 113.164414 -838.000000 873.000000 113.576738 -839.000000 873.000000 113.692354 -840.000000 873.000000 114.049170 -841.000000 873.000000 113.828535 -842.000000 873.000000 112.649619 -843.000000 873.000000 111.462598 -844.000000 873.000000 110.401270 -845.000000 873.000000 109.319043 -846.000000 873.000000 108.640898 -847.000000 873.000000 108.301436 -848.000000 873.000000 107.890527 -849.000000 873.000000 107.467207 -850.000000 873.000000 106.922979 -851.000000 873.000000 106.082314 -852.000000 873.000000 105.125576 -853.000000 873.000000 104.743682 -854.000000 873.000000 105.393271 -855.000000 873.000000 106.502471 -856.000000 873.000000 107.893154 -857.000000 873.000000 108.829932 -858.000000 873.000000 109.893438 -859.000000 873.000000 110.701094 -860.000000 873.000000 111.262988 -861.000000 873.000000 111.861621 -862.000000 873.000000 113.156064 -863.000000 873.000000 114.770908 -864.000000 873.000000 115.911553 -865.000000 873.000000 117.172314 -866.000000 873.000000 119.197246 -867.000000 873.000000 120.658135 -868.000000 873.000000 121.927373 -869.000000 873.000000 123.381826 -870.000000 873.000000 125.017256 -871.000000 873.000000 125.600625 -872.000000 873.000000 125.099736 -873.000000 873.000000 124.738213 -874.000000 873.000000 124.441113 -875.000000 873.000000 124.069375 -876.000000 873.000000 123.264912 -877.000000 873.000000 122.245244 -878.000000 873.000000 121.146182 -879.000000 873.000000 119.929365 -880.000000 873.000000 118.723232 -881.000000 873.000000 118.077822 -882.000000 873.000000 117.590029 -883.000000 873.000000 116.921074 -884.000000 873.000000 116.349258 -885.000000 873.000000 115.765479 -886.000000 873.000000 114.968721 -887.000000 873.000000 114.349307 -888.000000 873.000000 113.852822 -889.000000 873.000000 113.696953 -890.000000 873.000000 113.682412 -891.000000 873.000000 113.821738 -892.000000 873.000000 113.951533 -893.000000 873.000000 114.221934 -894.000000 873.000000 115.041914 -895.000000 873.000000 116.034160 -896.000000 873.000000 117.299844 -897.000000 873.000000 118.484971 -898.000000 873.000000 119.657920 -821.000000 874.000000 100.414033 -822.000000 874.000000 101.189541 -823.000000 874.000000 102.275264 -824.000000 874.000000 103.214395 -825.000000 874.000000 103.894941 -826.000000 874.000000 104.482617 -827.000000 874.000000 105.094150 -828.000000 874.000000 105.855488 -829.000000 874.000000 106.811201 -830.000000 874.000000 107.856230 -831.000000 874.000000 108.579219 -832.000000 874.000000 109.290752 -833.000000 874.000000 110.019561 -834.000000 874.000000 110.720391 -835.000000 874.000000 111.341338 -836.000000 874.000000 111.865908 -837.000000 874.000000 112.262500 -838.000000 874.000000 112.515371 -839.000000 874.000000 112.660439 -840.000000 874.000000 113.249912 -841.000000 874.000000 113.332588 -842.000000 874.000000 112.522344 -843.000000 874.000000 111.380586 -844.000000 874.000000 110.123975 -845.000000 874.000000 108.963086 -846.000000 874.000000 108.137324 -847.000000 874.000000 107.498066 -848.000000 874.000000 107.013701 -849.000000 874.000000 106.698174 -850.000000 874.000000 106.358857 -851.000000 874.000000 105.566660 -852.000000 874.000000 104.873232 -853.000000 874.000000 104.877988 -854.000000 874.000000 105.695400 -855.000000 874.000000 106.744600 -856.000000 874.000000 107.896113 -857.000000 874.000000 108.865059 -858.000000 874.000000 109.620371 -859.000000 874.000000 110.438682 -860.000000 874.000000 110.999863 -861.000000 874.000000 111.679570 -862.000000 874.000000 112.799082 -863.000000 874.000000 114.316855 -864.000000 874.000000 115.496494 -865.000000 874.000000 116.734248 -866.000000 874.000000 118.268232 -867.000000 874.000000 119.825537 -868.000000 874.000000 121.165244 -869.000000 874.000000 122.636650 -870.000000 874.000000 124.131006 -871.000000 874.000000 124.165664 -872.000000 874.000000 123.779922 -873.000000 874.000000 123.551318 -874.000000 874.000000 123.391309 -875.000000 874.000000 123.257451 -876.000000 874.000000 123.022471 -877.000000 874.000000 122.226445 -878.000000 874.000000 121.065225 -879.000000 874.000000 119.927432 -880.000000 874.000000 118.726104 -881.000000 874.000000 117.569180 -882.000000 874.000000 116.921611 -883.000000 874.000000 116.472256 -884.000000 874.000000 115.945801 -885.000000 874.000000 115.429258 -886.000000 874.000000 114.780176 -887.000000 874.000000 114.231602 -888.000000 874.000000 113.922881 -889.000000 874.000000 113.650410 -890.000000 874.000000 113.374121 -891.000000 874.000000 113.398818 -892.000000 874.000000 113.509541 -893.000000 874.000000 113.784297 -894.000000 874.000000 114.528828 -895.000000 874.000000 115.150127 -896.000000 874.000000 116.329756 -897.000000 874.000000 117.532959 -898.000000 874.000000 118.480615 -821.000000 875.000000 100.159121 -822.000000 875.000000 101.018672 -823.000000 875.000000 102.075615 -824.000000 875.000000 103.055811 -825.000000 875.000000 103.688701 -826.000000 875.000000 104.275410 -827.000000 875.000000 104.843721 -828.000000 875.000000 105.637734 -829.000000 875.000000 106.579678 -830.000000 875.000000 107.595811 -831.000000 875.000000 108.353008 -832.000000 875.000000 108.971553 -833.000000 875.000000 109.594395 -834.000000 875.000000 110.222451 -835.000000 875.000000 110.697461 -836.000000 875.000000 110.991250 -837.000000 875.000000 111.299844 -838.000000 875.000000 111.458828 -839.000000 875.000000 111.771797 -840.000000 875.000000 112.463457 -841.000000 875.000000 113.063887 -842.000000 875.000000 112.343799 -843.000000 875.000000 111.200732 -844.000000 875.000000 109.916387 -845.000000 875.000000 108.723193 -846.000000 875.000000 107.739102 -847.000000 875.000000 106.928486 -848.000000 875.000000 106.240352 -849.000000 875.000000 105.865557 -850.000000 875.000000 105.464492 -851.000000 875.000000 104.972334 -852.000000 875.000000 104.711670 -853.000000 875.000000 105.113721 -854.000000 875.000000 105.973760 -855.000000 875.000000 106.955830 -856.000000 875.000000 108.048799 -857.000000 875.000000 108.985957 -858.000000 875.000000 109.613877 -859.000000 875.000000 110.357373 -860.000000 875.000000 110.961602 -861.000000 875.000000 111.655439 -862.000000 875.000000 112.671230 -863.000000 875.000000 114.176396 -864.000000 875.000000 115.345762 -865.000000 875.000000 116.407910 -866.000000 875.000000 117.693330 -867.000000 875.000000 119.182412 -868.000000 875.000000 120.700078 -869.000000 875.000000 122.086309 -870.000000 875.000000 123.084189 -871.000000 875.000000 122.920537 -872.000000 875.000000 122.564121 -873.000000 875.000000 122.380254 -874.000000 875.000000 122.248916 -875.000000 875.000000 122.234111 -876.000000 875.000000 121.978984 -877.000000 875.000000 121.609609 -878.000000 875.000000 120.737920 -879.000000 875.000000 119.716250 -880.000000 875.000000 118.498906 -881.000000 875.000000 117.397061 -882.000000 875.000000 116.636807 -883.000000 875.000000 116.103486 -884.000000 875.000000 115.610264 -885.000000 875.000000 115.138623 -886.000000 875.000000 114.695176 -887.000000 875.000000 114.172852 -888.000000 875.000000 113.905020 -889.000000 875.000000 113.540850 -890.000000 875.000000 113.273154 -891.000000 875.000000 113.098213 -892.000000 875.000000 113.142910 -893.000000 875.000000 113.248105 -894.000000 875.000000 113.782568 -895.000000 875.000000 114.385527 -896.000000 875.000000 115.336348 -897.000000 875.000000 116.268643 -898.000000 875.000000 117.315283 -821.000000 876.000000 99.891025 -822.000000 876.000000 100.756563 -823.000000 876.000000 101.805273 -824.000000 876.000000 102.854473 -825.000000 876.000000 103.539678 -826.000000 876.000000 104.135469 -827.000000 876.000000 104.748437 -828.000000 876.000000 105.470811 -829.000000 876.000000 106.373389 -830.000000 876.000000 107.288291 -831.000000 876.000000 108.021084 -832.000000 876.000000 108.555215 -833.000000 876.000000 109.100947 -834.000000 876.000000 109.622227 -835.000000 876.000000 109.929209 -836.000000 876.000000 110.121211 -837.000000 876.000000 110.392900 -838.000000 876.000000 110.624092 -839.000000 876.000000 110.887471 -840.000000 876.000000 111.547051 -841.000000 876.000000 112.379326 -842.000000 876.000000 112.486230 -843.000000 876.000000 111.255352 -844.000000 876.000000 109.975176 -845.000000 876.000000 108.726318 -846.000000 876.000000 107.519932 -847.000000 876.000000 106.511426 -848.000000 876.000000 105.655381 -849.000000 876.000000 105.047314 -850.000000 876.000000 104.757324 -851.000000 876.000000 104.664082 -852.000000 876.000000 104.770361 -853.000000 876.000000 105.335869 -854.000000 876.000000 106.057666 -855.000000 876.000000 106.966289 -856.000000 876.000000 108.077236 -857.000000 876.000000 108.930518 -858.000000 876.000000 109.541533 -859.000000 876.000000 110.382822 -860.000000 876.000000 110.999385 -861.000000 876.000000 111.759795 -862.000000 876.000000 112.773125 -863.000000 876.000000 114.221338 -864.000000 876.000000 115.344697 -865.000000 876.000000 116.457100 -866.000000 876.000000 117.473770 -867.000000 876.000000 118.716064 -868.000000 876.000000 120.090850 -869.000000 876.000000 121.569238 -870.000000 876.000000 122.374824 -871.000000 876.000000 121.851846 -872.000000 876.000000 121.387012 -873.000000 876.000000 121.133672 -874.000000 876.000000 121.060273 -875.000000 876.000000 121.014053 -876.000000 876.000000 120.820791 -877.000000 876.000000 120.667432 -878.000000 876.000000 120.266318 -879.000000 876.000000 119.352148 -880.000000 876.000000 118.282422 -881.000000 876.000000 117.257002 -882.000000 876.000000 116.520898 -883.000000 876.000000 115.875752 -884.000000 876.000000 115.413555 -885.000000 876.000000 114.970225 -886.000000 876.000000 114.503848 -887.000000 876.000000 114.050332 -888.000000 876.000000 113.730049 -889.000000 876.000000 113.278555 -890.000000 876.000000 112.945078 -891.000000 876.000000 112.713379 -892.000000 876.000000 112.598457 -893.000000 876.000000 112.623594 -894.000000 876.000000 113.067100 -895.000000 876.000000 113.677012 -896.000000 876.000000 114.313594 -897.000000 876.000000 115.270371 -898.000000 876.000000 116.391650 -821.000000 877.000000 99.523242 -822.000000 877.000000 100.474395 -823.000000 877.000000 101.537373 -824.000000 877.000000 102.698633 -825.000000 877.000000 103.425166 -826.000000 877.000000 104.022168 -827.000000 877.000000 104.597422 -828.000000 877.000000 105.218633 -829.000000 877.000000 105.930479 -830.000000 877.000000 106.792227 -831.000000 877.000000 107.368604 -832.000000 877.000000 107.846777 -833.000000 877.000000 108.357656 -834.000000 877.000000 108.861074 -835.000000 877.000000 109.239570 -836.000000 877.000000 109.394023 -837.000000 877.000000 109.581367 -838.000000 877.000000 109.887314 -839.000000 877.000000 110.303857 -840.000000 877.000000 110.873223 -841.000000 877.000000 111.868262 -842.000000 877.000000 112.355225 -843.000000 877.000000 111.180547 -844.000000 877.000000 109.960078 -845.000000 877.000000 108.549727 -846.000000 877.000000 107.147715 -847.000000 877.000000 106.186484 -848.000000 877.000000 105.203145 -849.000000 877.000000 104.665127 -850.000000 877.000000 104.502041 -851.000000 877.000000 104.474805 -852.000000 877.000000 104.718818 -853.000000 877.000000 105.367588 -854.000000 877.000000 106.137383 -855.000000 877.000000 107.060283 -856.000000 877.000000 108.001943 -857.000000 877.000000 108.796689 -858.000000 877.000000 109.466709 -859.000000 877.000000 110.262510 -860.000000 877.000000 110.993916 -861.000000 877.000000 111.797451 -862.000000 877.000000 112.871514 -863.000000 877.000000 114.157588 -864.000000 877.000000 115.245723 -865.000000 877.000000 116.295156 -866.000000 877.000000 117.219912 -867.000000 877.000000 118.285713 -868.000000 877.000000 119.480664 -869.000000 877.000000 120.776309 -870.000000 877.000000 121.173418 -871.000000 877.000000 120.606006 -872.000000 877.000000 120.164414 -873.000000 877.000000 119.996670 -874.000000 877.000000 120.001953 -875.000000 877.000000 119.942354 -876.000000 877.000000 119.960830 -877.000000 877.000000 119.870391 -878.000000 877.000000 119.567236 -879.000000 877.000000 118.754551 -880.000000 877.000000 117.880723 -881.000000 877.000000 117.009590 -882.000000 877.000000 116.359482 -883.000000 877.000000 115.694746 -884.000000 877.000000 115.152822 -885.000000 877.000000 114.665898 -886.000000 877.000000 114.239580 -887.000000 877.000000 113.813164 -888.000000 877.000000 113.354922 -889.000000 877.000000 112.942344 -890.000000 877.000000 112.559014 -891.000000 877.000000 112.369551 -892.000000 877.000000 112.230967 -893.000000 877.000000 112.307998 -894.000000 877.000000 112.482891 -895.000000 877.000000 113.049844 -896.000000 877.000000 113.823350 -897.000000 877.000000 114.566846 -898.000000 877.000000 115.364678 -821.000000 878.000000 99.062529 -822.000000 878.000000 100.204453 -823.000000 878.000000 101.277539 -824.000000 878.000000 102.389287 -825.000000 878.000000 103.272979 -826.000000 878.000000 103.822168 -827.000000 878.000000 104.426836 -828.000000 878.000000 104.945840 -829.000000 878.000000 105.460010 -830.000000 878.000000 105.941563 -831.000000 878.000000 106.640518 -832.000000 878.000000 107.101963 -833.000000 878.000000 107.673896 -834.000000 878.000000 108.133389 -835.000000 878.000000 108.464785 -836.000000 878.000000 108.633711 -837.000000 878.000000 108.855518 -838.000000 878.000000 109.182148 -839.000000 878.000000 109.676953 -840.000000 878.000000 110.274121 -841.000000 878.000000 110.971543 -842.000000 878.000000 111.497549 -843.000000 878.000000 110.762041 -844.000000 878.000000 109.662559 -845.000000 878.000000 108.422158 -846.000000 878.000000 107.075713 -847.000000 878.000000 105.994492 -848.000000 878.000000 104.988848 -849.000000 878.000000 104.444102 -850.000000 878.000000 104.214238 -851.000000 878.000000 104.442373 -852.000000 878.000000 104.769141 -853.000000 878.000000 105.433672 -854.000000 878.000000 106.144434 -855.000000 878.000000 107.030195 -856.000000 878.000000 107.952285 -857.000000 878.000000 108.659717 -858.000000 878.000000 109.357568 -859.000000 878.000000 110.096836 -860.000000 878.000000 110.794092 -861.000000 878.000000 111.770410 -862.000000 878.000000 112.966045 -863.000000 878.000000 114.031055 -864.000000 878.000000 115.075410 -865.000000 878.000000 116.183838 -866.000000 878.000000 116.965313 -867.000000 878.000000 117.909199 -868.000000 878.000000 119.057832 -869.000000 878.000000 120.077100 -870.000000 878.000000 120.124600 -871.000000 878.000000 119.734307 -872.000000 878.000000 119.534219 -873.000000 878.000000 119.436699 -874.000000 878.000000 119.332832 -875.000000 878.000000 119.152920 -876.000000 878.000000 119.086543 -877.000000 878.000000 118.939971 -878.000000 878.000000 118.593291 -879.000000 878.000000 117.988037 -880.000000 878.000000 117.283535 -881.000000 878.000000 116.688350 -882.000000 878.000000 116.019102 -883.000000 878.000000 115.345918 -884.000000 878.000000 114.753457 -885.000000 878.000000 114.289004 -886.000000 878.000000 113.870283 -887.000000 878.000000 113.471748 -888.000000 878.000000 113.041953 -889.000000 878.000000 112.555889 -890.000000 878.000000 112.216523 -891.000000 878.000000 111.959131 -892.000000 878.000000 111.766465 -893.000000 878.000000 111.758779 -894.000000 878.000000 112.015391 -895.000000 878.000000 112.477646 -896.000000 878.000000 113.168330 -897.000000 878.000000 113.874160 -898.000000 878.000000 114.513105 -821.000000 879.000000 98.852285 -822.000000 879.000000 99.977148 -823.000000 879.000000 100.939170 -824.000000 879.000000 101.939326 -825.000000 879.000000 103.019316 -826.000000 879.000000 103.554307 -827.000000 879.000000 104.106611 -828.000000 879.000000 104.573936 -829.000000 879.000000 104.913623 -830.000000 879.000000 105.323311 -831.000000 879.000000 105.814463 -832.000000 879.000000 106.447559 -833.000000 879.000000 106.959912 -834.000000 879.000000 107.431953 -835.000000 879.000000 107.733105 -836.000000 879.000000 107.907295 -837.000000 879.000000 108.092959 -838.000000 879.000000 108.494199 -839.000000 879.000000 109.039619 -840.000000 879.000000 109.568730 -841.000000 879.000000 110.156885 -842.000000 879.000000 110.486299 -843.000000 879.000000 109.756201 -844.000000 879.000000 109.252607 -845.000000 879.000000 108.212920 -846.000000 879.000000 106.771250 -847.000000 879.000000 105.786914 -848.000000 879.000000 104.985850 -849.000000 879.000000 104.335068 -850.000000 879.000000 103.834590 -851.000000 879.000000 104.472041 -852.000000 879.000000 104.974082 -853.000000 879.000000 105.503418 -854.000000 879.000000 106.237832 -855.000000 879.000000 107.074531 -856.000000 879.000000 107.815439 -857.000000 879.000000 108.519785 -858.000000 879.000000 109.258770 -859.000000 879.000000 110.012246 -860.000000 879.000000 110.801699 -861.000000 879.000000 111.699932 -862.000000 879.000000 112.751855 -863.000000 879.000000 113.852100 -864.000000 879.000000 114.872920 -865.000000 879.000000 115.886016 -866.000000 879.000000 116.759658 -867.000000 879.000000 117.617246 -868.000000 879.000000 118.557344 -869.000000 879.000000 119.234844 -870.000000 879.000000 119.299844 -871.000000 879.000000 119.345703 -872.000000 879.000000 119.172188 -873.000000 879.000000 118.957256 -874.000000 879.000000 118.748838 -875.000000 879.000000 118.441211 -876.000000 879.000000 118.133135 -877.000000 879.000000 117.799053 -878.000000 879.000000 117.504814 -879.000000 879.000000 117.130049 -880.000000 879.000000 116.511025 -881.000000 879.000000 115.925000 -882.000000 879.000000 115.279531 -883.000000 879.000000 114.701182 -884.000000 879.000000 114.157402 -885.000000 879.000000 113.763818 -886.000000 879.000000 113.501689 -887.000000 879.000000 113.158281 -888.000000 879.000000 112.666250 -889.000000 879.000000 112.215654 -890.000000 879.000000 111.843428 -891.000000 879.000000 111.568408 -892.000000 879.000000 111.345625 -893.000000 879.000000 111.153789 -894.000000 879.000000 111.386914 -895.000000 879.000000 111.730186 -896.000000 879.000000 112.281309 -897.000000 879.000000 112.964209 -898.000000 879.000000 113.530068 -821.000000 880.000000 98.571260 -822.000000 880.000000 99.621768 -823.000000 880.000000 100.536104 -824.000000 880.000000 101.379941 -825.000000 880.000000 102.366553 -826.000000 880.000000 103.230127 -827.000000 880.000000 103.702500 -828.000000 880.000000 104.093066 -829.000000 880.000000 104.390029 -830.000000 880.000000 104.799922 -831.000000 880.000000 105.311602 -832.000000 880.000000 105.888291 -833.000000 880.000000 106.364629 -834.000000 880.000000 106.672988 -835.000000 880.000000 106.948604 -836.000000 880.000000 107.146182 -837.000000 880.000000 107.393027 -838.000000 880.000000 107.753223 -839.000000 880.000000 108.328057 -840.000000 880.000000 108.836250 -841.000000 880.000000 109.250830 -842.000000 880.000000 109.378623 -843.000000 880.000000 108.716514 -844.000000 880.000000 108.145752 -845.000000 880.000000 107.568496 -846.000000 880.000000 106.724570 -847.000000 880.000000 105.788496 -848.000000 880.000000 105.007393 -849.000000 880.000000 104.297402 -850.000000 880.000000 103.563398 -851.000000 880.000000 104.472695 -852.000000 880.000000 105.044316 -853.000000 880.000000 105.581699 -854.000000 880.000000 106.250791 -855.000000 880.000000 107.007100 -856.000000 880.000000 107.735469 -857.000000 880.000000 108.463604 -858.000000 880.000000 109.217129 -859.000000 880.000000 110.073955 -860.000000 880.000000 110.941445 -861.000000 880.000000 111.570078 -862.000000 880.000000 112.221260 -863.000000 880.000000 113.378691 -864.000000 880.000000 114.485342 -865.000000 880.000000 115.571514 -866.000000 880.000000 116.538135 -867.000000 880.000000 117.262031 -868.000000 880.000000 117.965586 -869.000000 880.000000 118.387314 -870.000000 880.000000 118.643105 -871.000000 880.000000 118.889531 -872.000000 880.000000 118.775850 -873.000000 880.000000 118.452559 -874.000000 880.000000 118.086162 -875.000000 880.000000 117.753262 -876.000000 880.000000 117.355762 -877.000000 880.000000 116.992305 -878.000000 880.000000 116.595352 -879.000000 880.000000 116.102773 -880.000000 880.000000 115.726416 -881.000000 880.000000 115.050352 -882.000000 880.000000 114.453359 -883.000000 880.000000 113.995762 -884.000000 880.000000 113.594482 -885.000000 880.000000 113.353779 -886.000000 880.000000 113.084297 -887.000000 880.000000 112.738916 -888.000000 880.000000 112.244512 -889.000000 880.000000 111.768027 -890.000000 880.000000 111.355635 -891.000000 880.000000 111.107129 -892.000000 880.000000 110.813223 -893.000000 880.000000 110.579795 -894.000000 880.000000 110.588389 -895.000000 880.000000 110.907227 -896.000000 880.000000 111.325654 -897.000000 880.000000 112.054189 -898.000000 880.000000 112.700586 -821.000000 881.000000 98.206787 -822.000000 881.000000 99.098916 -823.000000 881.000000 99.935449 -824.000000 881.000000 100.765039 -825.000000 881.000000 101.625068 -826.000000 881.000000 102.542383 -827.000000 881.000000 103.196143 -828.000000 881.000000 103.547041 -829.000000 881.000000 103.805537 -830.000000 881.000000 104.292705 -831.000000 881.000000 104.805010 -832.000000 881.000000 105.303291 -833.000000 881.000000 105.663076 -834.000000 881.000000 105.942568 -835.000000 881.000000 106.179971 -836.000000 881.000000 106.400264 -837.000000 881.000000 106.608779 -838.000000 881.000000 107.064209 -839.000000 881.000000 107.666016 -840.000000 881.000000 108.121074 -841.000000 881.000000 108.462832 -842.000000 881.000000 108.184346 -843.000000 881.000000 107.326328 -844.000000 881.000000 106.847939 -845.000000 881.000000 106.753018 -846.000000 881.000000 106.359893 -847.000000 881.000000 105.651807 -848.000000 881.000000 104.945254 -849.000000 881.000000 104.213545 -850.000000 881.000000 103.654619 -851.000000 881.000000 104.432734 -852.000000 881.000000 104.991992 -853.000000 881.000000 105.669219 -854.000000 881.000000 106.222314 -855.000000 881.000000 106.992930 -856.000000 881.000000 107.680283 -857.000000 881.000000 108.540000 -858.000000 881.000000 109.298076 -859.000000 881.000000 110.045010 -860.000000 881.000000 110.867959 -861.000000 881.000000 111.444893 -862.000000 881.000000 111.994883 -863.000000 881.000000 112.902891 -864.000000 881.000000 114.050527 -865.000000 881.000000 115.110840 -866.000000 881.000000 116.164102 -867.000000 881.000000 116.780850 -868.000000 881.000000 117.331348 -869.000000 881.000000 117.724365 -870.000000 881.000000 117.990303 -871.000000 881.000000 118.203027 -872.000000 881.000000 118.116162 -873.000000 881.000000 117.873760 -874.000000 881.000000 117.509277 -875.000000 881.000000 117.140381 -876.000000 881.000000 116.840820 -877.000000 881.000000 116.501719 -878.000000 881.000000 116.047188 -879.000000 881.000000 115.598428 -880.000000 881.000000 115.161494 -881.000000 881.000000 114.499551 -882.000000 881.000000 113.895137 -883.000000 881.000000 113.510508 -884.000000 881.000000 113.112539 -885.000000 881.000000 112.824492 -886.000000 881.000000 112.520488 -887.000000 881.000000 112.194766 -888.000000 881.000000 111.748516 -889.000000 881.000000 111.297861 -890.000000 881.000000 110.929531 -891.000000 881.000000 110.603125 -892.000000 881.000000 110.208516 -893.000000 881.000000 109.942002 -894.000000 881.000000 109.882578 -895.000000 881.000000 110.205576 -896.000000 881.000000 110.625205 -897.000000 881.000000 111.221494 -898.000000 881.000000 111.984961 -821.000000 882.000000 97.605439 -822.000000 882.000000 98.460283 -823.000000 882.000000 99.289209 -824.000000 882.000000 100.081621 -825.000000 882.000000 100.830977 -826.000000 882.000000 101.604951 -827.000000 882.000000 102.340713 -828.000000 882.000000 102.863574 -829.000000 882.000000 103.044297 -830.000000 882.000000 103.590078 -831.000000 882.000000 104.212822 -832.000000 882.000000 104.685771 -833.000000 882.000000 105.018076 -834.000000 882.000000 105.268438 -835.000000 882.000000 105.407266 -836.000000 882.000000 105.598428 -837.000000 882.000000 105.910693 -838.000000 882.000000 106.551982 -839.000000 882.000000 107.155850 -840.000000 882.000000 107.498242 -841.000000 882.000000 107.456504 -842.000000 882.000000 107.094609 -843.000000 882.000000 106.332500 -844.000000 882.000000 105.826318 -845.000000 882.000000 105.690000 -846.000000 882.000000 105.585996 -847.000000 882.000000 105.382188 -848.000000 882.000000 104.916729 -849.000000 882.000000 104.080869 -850.000000 882.000000 103.757529 -851.000000 882.000000 104.433320 -852.000000 882.000000 105.018691 -853.000000 882.000000 105.709316 -854.000000 882.000000 106.386846 -855.000000 882.000000 107.129785 -856.000000 882.000000 107.740313 -857.000000 882.000000 108.506201 -858.000000 882.000000 109.293574 -859.000000 882.000000 109.970566 -860.000000 882.000000 110.688574 -861.000000 882.000000 111.277910 -862.000000 882.000000 111.862646 -863.000000 882.000000 112.606113 -864.000000 882.000000 113.605576 -865.000000 882.000000 114.640742 -866.000000 882.000000 115.498467 -867.000000 882.000000 116.223779 -868.000000 882.000000 116.622119 -869.000000 882.000000 117.005342 -870.000000 882.000000 117.426064 -871.000000 882.000000 117.631914 -872.000000 882.000000 117.552041 -873.000000 882.000000 117.258252 -874.000000 882.000000 116.845859 -875.000000 882.000000 116.437734 -876.000000 882.000000 116.220225 -877.000000 882.000000 115.932744 -878.000000 882.000000 115.515811 -879.000000 882.000000 115.118389 -880.000000 882.000000 114.631543 -881.000000 882.000000 114.016973 -882.000000 882.000000 113.523193 -883.000000 882.000000 113.183691 -884.000000 882.000000 112.648916 -885.000000 882.000000 112.268223 -886.000000 882.000000 111.975361 -887.000000 882.000000 111.654727 -888.000000 882.000000 111.246523 -889.000000 882.000000 110.870205 -890.000000 882.000000 110.497168 -891.000000 882.000000 110.183525 -892.000000 882.000000 109.732090 -893.000000 882.000000 109.470518 -894.000000 882.000000 109.390088 -895.000000 882.000000 109.547891 -896.000000 882.000000 109.920703 -897.000000 882.000000 110.410830 -898.000000 882.000000 111.236318 -821.000000 883.000000 97.231533 -822.000000 883.000000 97.783398 -823.000000 883.000000 98.706396 -824.000000 883.000000 99.417754 -825.000000 883.000000 100.050039 -826.000000 883.000000 100.723477 -827.000000 883.000000 101.310400 -828.000000 883.000000 101.813770 -829.000000 883.000000 102.305313 -830.000000 883.000000 102.971914 -831.000000 883.000000 103.588516 -832.000000 883.000000 104.072148 -833.000000 883.000000 104.343750 -834.000000 883.000000 104.489395 -835.000000 883.000000 104.576787 -836.000000 883.000000 104.862988 -837.000000 883.000000 105.499102 -838.000000 883.000000 106.171621 -839.000000 883.000000 106.594219 -840.000000 883.000000 106.883115 -841.000000 883.000000 106.728584 -842.000000 883.000000 106.181309 -843.000000 883.000000 105.338486 -844.000000 883.000000 104.995557 -845.000000 883.000000 104.977627 -846.000000 883.000000 105.001084 -847.000000 883.000000 104.961904 -848.000000 883.000000 104.680684 -849.000000 883.000000 104.080439 -850.000000 883.000000 103.808418 -851.000000 883.000000 104.528467 -852.000000 883.000000 105.140166 -853.000000 883.000000 105.753311 -854.000000 883.000000 106.467227 -855.000000 883.000000 107.168008 -856.000000 883.000000 107.767354 -857.000000 883.000000 108.461904 -858.000000 883.000000 109.172012 -859.000000 883.000000 109.834668 -860.000000 883.000000 110.543369 -861.000000 883.000000 111.156074 +81 78 +821.000000 803.000000 109.405859 +822.000000 803.000000 108.965752 +823.000000 803.000000 108.673359 +824.000000 803.000000 108.392744 +825.000000 803.000000 108.109570 +826.000000 803.000000 107.641240 +827.000000 803.000000 107.344697 +828.000000 803.000000 106.912891 +829.000000 803.000000 106.668662 +830.000000 803.000000 106.491025 +831.000000 803.000000 106.248320 +832.000000 803.000000 106.043086 +833.000000 803.000000 105.891777 +834.000000 803.000000 105.591250 +835.000000 803.000000 105.333721 +836.000000 803.000000 104.924219 +837.000000 803.000000 104.497041 +838.000000 803.000000 104.420029 +839.000000 803.000000 104.565127 +840.000000 803.000000 104.663369 +841.000000 803.000000 104.425996 +842.000000 803.000000 104.013613 +843.000000 803.000000 103.500068 +844.000000 803.000000 103.220527 +845.000000 803.000000 102.949443 +846.000000 803.000000 102.729590 +847.000000 803.000000 102.615225 +848.000000 803.000000 102.658506 +849.000000 803.000000 102.365938 +850.000000 803.000000 101.974355 +851.000000 803.000000 101.711211 +852.000000 803.000000 101.355566 +853.000000 803.000000 101.193096 +854.000000 803.000000 101.116416 +855.000000 803.000000 101.067988 +856.000000 803.000000 100.947285 +857.000000 803.000000 100.751416 +858.000000 803.000000 100.595059 +859.000000 803.000000 100.446768 +860.000000 803.000000 100.288086 +861.000000 803.000000 100.155420 +862.000000 803.000000 99.971738 +863.000000 803.000000 99.836660 +864.000000 803.000000 99.703818 +865.000000 803.000000 99.592334 +866.000000 803.000000 99.559756 +867.000000 803.000000 99.525615 +868.000000 803.000000 99.506113 +869.000000 803.000000 99.480645 +870.000000 803.000000 99.419043 +871.000000 803.000000 99.389824 +872.000000 803.000000 99.359941 +873.000000 803.000000 99.331084 +874.000000 803.000000 99.311260 +875.000000 803.000000 99.313457 +876.000000 803.000000 99.362852 +877.000000 803.000000 99.379316 +878.000000 803.000000 99.342520 +879.000000 803.000000 99.297881 +880.000000 803.000000 99.288857 +881.000000 803.000000 99.312217 +882.000000 803.000000 99.319326 +883.000000 803.000000 99.323945 +884.000000 803.000000 99.318076 +885.000000 803.000000 99.299854 +886.000000 803.000000 99.279463 +887.000000 803.000000 99.281934 +888.000000 803.000000 99.285361 +889.000000 803.000000 99.290879 +890.000000 803.000000 99.296455 +891.000000 803.000000 99.289492 +892.000000 803.000000 99.280820 +893.000000 803.000000 99.272158 +894.000000 803.000000 99.274932 +895.000000 803.000000 99.282217 +896.000000 803.000000 99.289424 +897.000000 803.000000 99.291523 +898.000000 803.000000 99.286660 +821.000000 804.000000 108.507861 +822.000000 804.000000 108.069443 +823.000000 804.000000 107.703115 +824.000000 804.000000 107.371963 +825.000000 804.000000 106.989648 +826.000000 804.000000 106.587275 +827.000000 804.000000 106.172959 +828.000000 804.000000 105.788242 +829.000000 804.000000 105.446289 +830.000000 804.000000 105.166016 +831.000000 804.000000 104.899150 +832.000000 804.000000 104.619834 +833.000000 804.000000 104.262412 +834.000000 804.000000 103.860947 +835.000000 804.000000 103.456475 +836.000000 804.000000 103.128008 +837.000000 804.000000 102.783164 +838.000000 804.000000 102.631299 +839.000000 804.000000 102.718203 +840.000000 804.000000 102.838115 +841.000000 804.000000 102.748779 +842.000000 804.000000 102.314424 +843.000000 804.000000 102.056348 +844.000000 804.000000 101.810586 +845.000000 804.000000 101.665420 +846.000000 804.000000 101.367256 +847.000000 804.000000 101.240635 +848.000000 804.000000 101.196611 +849.000000 804.000000 101.120615 +850.000000 804.000000 101.015967 +851.000000 804.000000 100.904697 +852.000000 804.000000 100.784004 +853.000000 804.000000 100.673379 +854.000000 804.000000 100.606367 +855.000000 804.000000 100.488184 +856.000000 804.000000 100.322305 +857.000000 804.000000 100.213320 +858.000000 804.000000 100.067451 +859.000000 804.000000 99.906748 +860.000000 804.000000 99.784570 +861.000000 804.000000 99.666689 +862.000000 804.000000 99.502080 +863.000000 804.000000 99.497187 +864.000000 804.000000 99.448984 +865.000000 804.000000 99.438271 +866.000000 804.000000 99.400186 +867.000000 804.000000 99.391426 +868.000000 804.000000 99.387910 +869.000000 804.000000 99.380244 +870.000000 804.000000 99.316768 +871.000000 804.000000 99.308301 +872.000000 804.000000 99.305381 +873.000000 804.000000 99.292627 +874.000000 804.000000 99.281738 +875.000000 804.000000 99.270410 +876.000000 804.000000 99.294189 +877.000000 804.000000 99.310420 +878.000000 804.000000 99.288828 +879.000000 804.000000 99.259922 +880.000000 804.000000 99.260137 +881.000000 804.000000 99.262539 +882.000000 804.000000 99.271729 +883.000000 804.000000 99.276719 +884.000000 804.000000 99.277109 +885.000000 804.000000 99.265244 +886.000000 804.000000 99.252471 +887.000000 804.000000 99.244697 +888.000000 804.000000 99.242959 +889.000000 804.000000 99.248799 +890.000000 804.000000 99.249072 +891.000000 804.000000 99.241240 +892.000000 804.000000 99.234873 +893.000000 804.000000 99.235693 +894.000000 804.000000 99.235469 +895.000000 804.000000 99.241348 +896.000000 804.000000 99.248379 +897.000000 804.000000 99.249453 +898.000000 804.000000 99.245039 +821.000000 805.000000 107.448105 +822.000000 805.000000 106.933057 +823.000000 805.000000 106.592588 +824.000000 805.000000 106.215000 +825.000000 805.000000 105.751670 +826.000000 805.000000 105.401113 +827.000000 805.000000 105.033623 +828.000000 805.000000 104.701758 +829.000000 805.000000 104.281318 +830.000000 805.000000 103.906309 +831.000000 805.000000 103.531924 +832.000000 805.000000 103.237002 +833.000000 805.000000 102.909883 +834.000000 805.000000 102.585313 +835.000000 805.000000 102.306230 +836.000000 805.000000 101.936738 +837.000000 805.000000 101.509521 +838.000000 805.000000 101.265117 +839.000000 805.000000 101.225898 +840.000000 805.000000 101.290527 +841.000000 805.000000 101.308535 +842.000000 805.000000 101.195459 +843.000000 805.000000 101.121680 +844.000000 805.000000 101.012715 +845.000000 805.000000 100.975674 +846.000000 805.000000 100.860537 +847.000000 805.000000 100.780156 +848.000000 805.000000 100.696133 +849.000000 805.000000 100.610459 +850.000000 805.000000 100.519238 +851.000000 805.000000 100.412090 +852.000000 805.000000 100.284697 +853.000000 805.000000 100.156680 +854.000000 805.000000 100.078184 +855.000000 805.000000 99.947832 +856.000000 805.000000 99.843467 +857.000000 805.000000 99.715039 +858.000000 805.000000 99.585244 +859.000000 805.000000 99.519492 +860.000000 805.000000 99.481250 +861.000000 805.000000 99.431914 +862.000000 805.000000 99.396982 +863.000000 805.000000 99.376729 +864.000000 805.000000 99.348516 +865.000000 805.000000 99.293516 +866.000000 805.000000 99.314648 +867.000000 805.000000 99.334629 +868.000000 805.000000 99.332695 +869.000000 805.000000 99.327002 +870.000000 805.000000 99.273838 +871.000000 805.000000 99.270547 +872.000000 805.000000 99.268916 +873.000000 805.000000 99.260322 +874.000000 805.000000 99.252207 +875.000000 805.000000 99.245078 +876.000000 805.000000 99.241260 +877.000000 805.000000 99.237900 +878.000000 805.000000 99.235137 +879.000000 805.000000 99.232812 +880.000000 805.000000 99.230664 +881.000000 805.000000 99.228711 +882.000000 805.000000 99.236289 +883.000000 805.000000 99.239951 +884.000000 805.000000 99.240186 +885.000000 805.000000 99.229404 +886.000000 805.000000 99.220703 +887.000000 805.000000 99.214785 +888.000000 805.000000 99.209668 +889.000000 805.000000 99.206240 +890.000000 805.000000 99.206201 +891.000000 805.000000 99.198730 +892.000000 805.000000 99.197305 +893.000000 805.000000 99.198955 +894.000000 805.000000 99.197314 +895.000000 805.000000 99.201641 +896.000000 805.000000 99.208770 +897.000000 805.000000 99.207627 +898.000000 805.000000 99.206445 +821.000000 806.000000 106.133574 +822.000000 806.000000 105.784990 +823.000000 806.000000 105.486064 +824.000000 806.000000 105.145127 +825.000000 806.000000 104.524365 +826.000000 806.000000 104.166279 +827.000000 806.000000 103.943594 +828.000000 806.000000 103.648008 +829.000000 806.000000 103.215469 +830.000000 806.000000 102.770996 +831.000000 806.000000 102.465840 +832.000000 806.000000 102.100166 +833.000000 806.000000 101.706318 +834.000000 806.000000 101.390674 +835.000000 806.000000 101.308408 +836.000000 806.000000 101.185264 +837.000000 806.000000 101.034326 +838.000000 806.000000 100.914746 +839.000000 806.000000 100.859521 +840.000000 806.000000 100.835107 +841.000000 806.000000 100.837715 +842.000000 806.000000 100.789453 +843.000000 806.000000 100.698877 +844.000000 806.000000 100.582168 +845.000000 806.000000 100.513350 +846.000000 806.000000 100.403438 +847.000000 806.000000 100.307305 +848.000000 806.000000 100.210430 +849.000000 806.000000 100.115840 +850.000000 806.000000 100.015029 +851.000000 806.000000 99.901836 +852.000000 806.000000 99.782920 +853.000000 806.000000 99.648018 +854.000000 806.000000 99.591426 +855.000000 806.000000 99.567842 +856.000000 806.000000 99.525928 +857.000000 806.000000 99.468770 +858.000000 806.000000 99.412793 +859.000000 806.000000 99.384990 +860.000000 806.000000 99.343955 +861.000000 806.000000 99.313369 +862.000000 806.000000 99.327871 +863.000000 806.000000 99.332744 +864.000000 806.000000 99.291338 +865.000000 806.000000 99.275098 +866.000000 806.000000 99.271953 +867.000000 806.000000 99.280605 +868.000000 806.000000 99.275361 +869.000000 806.000000 99.265068 +870.000000 806.000000 99.243936 +871.000000 806.000000 99.238008 +872.000000 806.000000 99.232812 +873.000000 806.000000 99.227549 +874.000000 806.000000 99.224795 +875.000000 806.000000 99.218896 +876.000000 806.000000 99.213711 +877.000000 806.000000 99.210811 +878.000000 806.000000 99.207930 +879.000000 806.000000 99.206787 +880.000000 806.000000 99.204961 +881.000000 806.000000 99.203135 +882.000000 806.000000 99.200459 +883.000000 806.000000 99.201514 +884.000000 806.000000 99.200420 +885.000000 806.000000 99.194482 +886.000000 806.000000 99.189531 +887.000000 806.000000 99.185332 +888.000000 806.000000 99.180713 +889.000000 806.000000 99.175977 +890.000000 806.000000 99.173027 +891.000000 806.000000 99.166533 +892.000000 806.000000 99.151318 +893.000000 806.000000 99.151172 +894.000000 806.000000 99.161465 +895.000000 806.000000 99.168809 +896.000000 806.000000 99.173496 +897.000000 806.000000 99.175039 +898.000000 806.000000 99.173564 +821.000000 807.000000 104.952100 +822.000000 807.000000 104.635498 +823.000000 807.000000 104.321729 +824.000000 807.000000 103.751621 +825.000000 807.000000 103.327021 +826.000000 807.000000 103.051787 +827.000000 807.000000 102.816484 +828.000000 807.000000 102.433750 +829.000000 807.000000 101.942178 +830.000000 807.000000 101.640225 +831.000000 807.000000 101.424668 +832.000000 807.000000 101.217988 +833.000000 807.000000 101.048193 +834.000000 807.000000 100.945107 +835.000000 807.000000 100.856338 +836.000000 807.000000 100.757773 +837.000000 807.000000 100.650127 +838.000000 807.000000 100.529229 +839.000000 807.000000 100.465576 +840.000000 807.000000 100.412646 +841.000000 807.000000 100.395977 +842.000000 807.000000 100.347129 +843.000000 807.000000 100.267324 +844.000000 807.000000 100.148926 +845.000000 807.000000 100.060742 +846.000000 807.000000 99.956777 +847.000000 807.000000 99.859580 +848.000000 807.000000 99.779512 +849.000000 807.000000 99.643467 +850.000000 807.000000 99.582539 +851.000000 807.000000 99.527080 +852.000000 807.000000 99.490889 +853.000000 807.000000 99.471709 +854.000000 807.000000 99.458105 +855.000000 807.000000 99.432412 +856.000000 807.000000 99.404229 +857.000000 807.000000 99.355771 +858.000000 807.000000 99.332402 +859.000000 807.000000 99.307285 +860.000000 807.000000 99.277373 +861.000000 807.000000 99.269980 +862.000000 807.000000 99.266025 +863.000000 807.000000 99.255625 +864.000000 807.000000 99.249062 +865.000000 807.000000 99.242217 +866.000000 807.000000 99.242393 +867.000000 807.000000 99.236826 +868.000000 807.000000 99.226240 +869.000000 807.000000 99.217988 +870.000000 807.000000 99.214717 +871.000000 807.000000 99.211670 +872.000000 807.000000 99.206211 +873.000000 807.000000 99.199355 +874.000000 807.000000 99.195430 +875.000000 807.000000 99.193867 +876.000000 807.000000 99.189102 +877.000000 807.000000 99.183779 +878.000000 807.000000 99.180400 +879.000000 807.000000 99.180566 +880.000000 807.000000 99.179297 +881.000000 807.000000 99.178047 +882.000000 807.000000 99.175410 +883.000000 807.000000 99.173301 +884.000000 807.000000 99.169277 +885.000000 807.000000 99.165625 +886.000000 807.000000 99.160967 +887.000000 807.000000 99.156143 +888.000000 807.000000 99.152373 +889.000000 807.000000 99.149023 +890.000000 807.000000 99.148799 +891.000000 807.000000 99.140908 +892.000000 807.000000 99.132227 +893.000000 807.000000 99.132637 +894.000000 807.000000 99.135186 +895.000000 807.000000 99.143369 +896.000000 807.000000 99.147627 +897.000000 807.000000 99.149893 +898.000000 807.000000 99.147969 +821.000000 808.000000 103.746318 +822.000000 808.000000 103.549209 +823.000000 808.000000 103.216035 +824.000000 808.000000 102.742803 +825.000000 808.000000 102.414727 +826.000000 808.000000 101.994160 +827.000000 808.000000 101.704990 +828.000000 808.000000 101.344219 +829.000000 808.000000 101.124424 +830.000000 808.000000 100.998877 +831.000000 808.000000 100.865361 +832.000000 808.000000 100.732588 +833.000000 808.000000 100.569932 +834.000000 808.000000 100.464131 +835.000000 808.000000 100.389687 +836.000000 808.000000 100.331484 +837.000000 808.000000 100.228672 +838.000000 808.000000 100.123936 +839.000000 808.000000 100.027588 +840.000000 808.000000 99.986191 +841.000000 808.000000 99.979521 +842.000000 808.000000 99.924287 +843.000000 808.000000 99.859863 +844.000000 808.000000 99.752363 +845.000000 808.000000 99.674658 +846.000000 808.000000 99.595146 +847.000000 808.000000 99.544131 +848.000000 808.000000 99.488301 +849.000000 808.000000 99.487881 +850.000000 808.000000 99.460420 +851.000000 808.000000 99.420684 +852.000000 808.000000 99.398682 +853.000000 808.000000 99.383369 +854.000000 808.000000 99.379434 +855.000000 808.000000 99.371084 +856.000000 808.000000 99.347393 +857.000000 808.000000 99.283896 +858.000000 808.000000 99.271777 +859.000000 808.000000 99.261738 +860.000000 808.000000 99.252373 +861.000000 808.000000 99.244775 +862.000000 808.000000 99.237891 +863.000000 808.000000 99.231973 +864.000000 808.000000 99.225508 +865.000000 808.000000 99.218652 +866.000000 808.000000 99.211611 +867.000000 808.000000 99.205723 +868.000000 808.000000 99.194814 +869.000000 808.000000 99.189756 +870.000000 808.000000 99.188662 +871.000000 808.000000 99.187031 +872.000000 808.000000 99.182656 +873.000000 808.000000 99.174746 +874.000000 808.000000 99.171719 +875.000000 808.000000 99.170488 +876.000000 808.000000 99.167852 +877.000000 808.000000 99.165039 +878.000000 808.000000 99.162773 +879.000000 808.000000 99.159150 +880.000000 808.000000 99.156152 +881.000000 808.000000 99.154443 +882.000000 808.000000 99.153584 +883.000000 808.000000 99.149893 +884.000000 808.000000 99.145410 +885.000000 808.000000 99.137520 +886.000000 808.000000 99.132256 +887.000000 808.000000 99.126738 +888.000000 808.000000 99.124219 +889.000000 808.000000 99.124043 +890.000000 808.000000 99.125205 +891.000000 808.000000 99.120928 +892.000000 808.000000 99.116768 +893.000000 808.000000 99.114268 +894.000000 808.000000 99.114414 +895.000000 808.000000 99.119697 +896.000000 808.000000 99.123369 +897.000000 808.000000 99.125928 +898.000000 808.000000 99.122129 +821.000000 809.000000 102.771865 +822.000000 809.000000 102.490674 +823.000000 809.000000 102.170312 +824.000000 809.000000 101.847061 +825.000000 809.000000 101.489902 +826.000000 809.000000 101.212451 +827.000000 809.000000 101.011074 +828.000000 809.000000 100.819648 +829.000000 809.000000 100.624199 +830.000000 809.000000 100.463193 +831.000000 809.000000 100.335400 +832.000000 809.000000 100.200596 +833.000000 809.000000 100.063135 +834.000000 809.000000 99.959561 +835.000000 809.000000 99.907998 +836.000000 809.000000 99.893447 +837.000000 809.000000 99.798184 +838.000000 809.000000 99.718955 +839.000000 809.000000 99.640059 +840.000000 809.000000 99.599111 +841.000000 809.000000 99.595684 +842.000000 809.000000 99.581523 +843.000000 809.000000 99.555254 +844.000000 809.000000 99.497637 +845.000000 809.000000 99.486904 +846.000000 809.000000 99.459082 +847.000000 809.000000 99.415859 +848.000000 809.000000 99.412334 +849.000000 809.000000 99.395381 +850.000000 809.000000 99.370566 +851.000000 809.000000 99.345703 +852.000000 809.000000 99.293086 +853.000000 809.000000 99.301338 +854.000000 809.000000 99.313145 +855.000000 809.000000 99.315332 +856.000000 809.000000 99.294092 +857.000000 809.000000 99.255986 +858.000000 809.000000 99.244746 +859.000000 809.000000 99.234980 +860.000000 809.000000 99.226211 +861.000000 809.000000 99.219033 +862.000000 809.000000 99.213682 +863.000000 809.000000 99.208242 +864.000000 809.000000 99.202070 +865.000000 809.000000 99.195791 +866.000000 809.000000 99.188203 +867.000000 809.000000 99.179629 +868.000000 809.000000 99.171357 +869.000000 809.000000 99.161309 +870.000000 809.000000 99.160693 +871.000000 809.000000 99.161699 +872.000000 809.000000 99.160186 +873.000000 809.000000 99.154570 +874.000000 809.000000 99.152148 +875.000000 809.000000 99.150518 +876.000000 809.000000 99.148857 +877.000000 809.000000 99.147070 +878.000000 809.000000 99.145313 +879.000000 809.000000 99.142070 +880.000000 809.000000 99.138389 +881.000000 809.000000 99.135713 +882.000000 809.000000 99.133281 +883.000000 809.000000 99.130498 +884.000000 809.000000 99.125068 +885.000000 809.000000 99.115186 +886.000000 809.000000 99.103779 +887.000000 809.000000 99.095449 +888.000000 809.000000 99.095723 +889.000000 809.000000 99.097021 +890.000000 809.000000 99.099219 +891.000000 809.000000 99.103350 +892.000000 809.000000 99.098916 +893.000000 809.000000 99.091113 +894.000000 809.000000 99.090303 +895.000000 809.000000 99.093428 +896.000000 809.000000 99.097480 +897.000000 809.000000 99.100527 +898.000000 809.000000 99.095547 +821.000000 810.000000 101.885332 +822.000000 810.000000 101.517910 +823.000000 810.000000 101.352344 +824.000000 810.000000 101.098135 +825.000000 810.000000 100.841445 +826.000000 810.000000 100.625088 +827.000000 810.000000 100.455625 +828.000000 810.000000 100.263965 +829.000000 810.000000 100.090234 +830.000000 810.000000 99.938428 +831.000000 810.000000 99.805352 +832.000000 810.000000 99.667646 +833.000000 810.000000 99.598184 +834.000000 810.000000 99.581836 +835.000000 810.000000 99.573564 +836.000000 810.000000 99.563242 +837.000000 810.000000 99.555107 +838.000000 810.000000 99.547227 +839.000000 810.000000 99.514482 +840.000000 810.000000 99.472324 +841.000000 810.000000 99.470537 +842.000000 810.000000 99.470801 +843.000000 810.000000 99.454697 +844.000000 810.000000 99.415674 +845.000000 810.000000 99.384395 +846.000000 810.000000 99.352842 +847.000000 810.000000 99.337559 +848.000000 810.000000 99.336680 +849.000000 810.000000 99.323682 +850.000000 810.000000 99.305459 +851.000000 810.000000 99.283926 +852.000000 810.000000 99.265195 +853.000000 810.000000 99.257891 +854.000000 810.000000 99.263838 +855.000000 810.000000 99.243164 +856.000000 810.000000 99.235352 +857.000000 810.000000 99.227529 +858.000000 810.000000 99.218418 +859.000000 810.000000 99.207910 +860.000000 810.000000 99.200000 +861.000000 810.000000 99.195068 +862.000000 810.000000 99.188750 +863.000000 810.000000 99.183584 +864.000000 810.000000 99.178701 +865.000000 810.000000 99.173066 +866.000000 810.000000 99.165928 +867.000000 810.000000 99.160391 +868.000000 810.000000 99.151719 +869.000000 810.000000 99.141387 +870.000000 810.000000 99.140771 +871.000000 810.000000 99.141094 +872.000000 810.000000 99.138838 +873.000000 810.000000 99.134404 +874.000000 810.000000 99.132734 +875.000000 810.000000 99.131768 +876.000000 810.000000 99.130762 +877.000000 810.000000 99.129395 +878.000000 810.000000 99.128242 +879.000000 810.000000 99.125664 +880.000000 810.000000 99.122334 +881.000000 810.000000 99.118779 +882.000000 810.000000 99.115205 +883.000000 810.000000 99.111748 +884.000000 810.000000 99.105029 +885.000000 810.000000 99.092139 +886.000000 810.000000 99.077549 +887.000000 810.000000 99.069268 +888.000000 810.000000 99.063691 +889.000000 810.000000 99.066455 +890.000000 810.000000 99.065596 +891.000000 810.000000 99.064971 +892.000000 810.000000 99.063809 +893.000000 810.000000 99.061758 +894.000000 810.000000 99.059883 +895.000000 810.000000 99.058066 +896.000000 810.000000 99.057754 +897.000000 810.000000 99.057988 +898.000000 810.000000 99.056553 +821.000000 811.000000 101.240186 +822.000000 811.000000 100.957656 +823.000000 811.000000 100.727871 +824.000000 811.000000 100.482480 +825.000000 811.000000 100.216221 +826.000000 811.000000 100.018770 +827.000000 811.000000 99.868691 +828.000000 811.000000 99.736660 +829.000000 811.000000 99.596602 +830.000000 811.000000 99.575205 +831.000000 811.000000 99.556123 +832.000000 811.000000 99.518018 +833.000000 811.000000 99.501855 +834.000000 811.000000 99.505811 +835.000000 811.000000 99.498545 +836.000000 811.000000 99.483613 +837.000000 811.000000 99.467559 +838.000000 811.000000 99.462559 +839.000000 811.000000 99.443242 +840.000000 811.000000 99.410596 +841.000000 811.000000 99.390781 +842.000000 811.000000 99.369023 +843.000000 811.000000 99.360869 +844.000000 811.000000 99.349463 +845.000000 811.000000 99.320957 +846.000000 811.000000 99.300840 +847.000000 811.000000 99.278789 +848.000000 811.000000 99.276045 +849.000000 811.000000 99.270898 +850.000000 811.000000 99.259570 +851.000000 811.000000 99.246357 +852.000000 811.000000 99.238232 +853.000000 811.000000 99.230830 +854.000000 811.000000 99.223848 +855.000000 811.000000 99.216348 +856.000000 811.000000 99.208809 +857.000000 811.000000 99.201338 +858.000000 811.000000 99.192637 +859.000000 811.000000 99.181846 +860.000000 811.000000 99.175557 +861.000000 811.000000 99.171826 +862.000000 811.000000 99.166367 +863.000000 811.000000 99.162109 +864.000000 811.000000 99.158057 +865.000000 811.000000 99.153184 +866.000000 811.000000 99.147520 +867.000000 811.000000 99.141602 +868.000000 811.000000 99.135059 +869.000000 811.000000 99.129775 +870.000000 811.000000 99.128818 +871.000000 811.000000 99.125762 +872.000000 811.000000 99.122207 +873.000000 811.000000 99.116934 +874.000000 811.000000 99.113447 +875.000000 811.000000 99.112080 +876.000000 811.000000 99.112725 +877.000000 811.000000 99.112549 +878.000000 811.000000 99.111963 +879.000000 811.000000 99.113701 +880.000000 811.000000 99.106221 +881.000000 811.000000 99.102646 +882.000000 811.000000 99.097451 +883.000000 811.000000 99.088184 +884.000000 811.000000 99.075449 +885.000000 811.000000 99.061025 +886.000000 811.000000 99.047148 +887.000000 811.000000 99.037217 +888.000000 811.000000 99.032520 +889.000000 811.000000 99.032988 +890.000000 811.000000 99.030664 +891.000000 811.000000 99.027559 +892.000000 811.000000 99.023467 +893.000000 811.000000 99.020039 +894.000000 811.000000 99.016826 +895.000000 811.000000 99.016143 +896.000000 811.000000 99.016162 +897.000000 811.000000 99.016309 +898.000000 811.000000 99.016016 +821.000000 812.000000 100.770137 +822.000000 812.000000 100.427539 +823.000000 812.000000 100.139854 +824.000000 812.000000 99.926162 +825.000000 812.000000 99.749824 +826.000000 812.000000 99.596055 +827.000000 812.000000 99.491953 +828.000000 812.000000 99.489014 +829.000000 812.000000 99.496484 +830.000000 812.000000 99.501895 +831.000000 812.000000 99.491279 +832.000000 812.000000 99.468662 +833.000000 812.000000 99.461748 +834.000000 812.000000 99.442139 +835.000000 812.000000 99.422715 +836.000000 812.000000 99.401592 +837.000000 812.000000 99.376992 +838.000000 812.000000 99.372910 +839.000000 812.000000 99.358281 +840.000000 812.000000 99.340703 +841.000000 812.000000 99.314297 +842.000000 812.000000 99.294316 +843.000000 812.000000 99.293018 +844.000000 812.000000 99.287813 +845.000000 812.000000 99.268105 +846.000000 812.000000 99.258916 +847.000000 812.000000 99.251133 +848.000000 812.000000 99.244082 +849.000000 812.000000 99.238760 +850.000000 812.000000 99.226807 +851.000000 812.000000 99.218418 +852.000000 812.000000 99.210771 +853.000000 812.000000 99.203447 +854.000000 812.000000 99.197100 +855.000000 812.000000 99.189941 +856.000000 812.000000 99.182783 +857.000000 812.000000 99.175488 +858.000000 812.000000 99.168047 +859.000000 812.000000 99.160586 +860.000000 812.000000 99.154902 +861.000000 812.000000 99.150205 +862.000000 812.000000 99.144404 +863.000000 812.000000 99.140117 +864.000000 812.000000 99.139033 +865.000000 812.000000 99.134199 +866.000000 812.000000 99.131279 +867.000000 812.000000 99.127939 +868.000000 812.000000 99.121006 +869.000000 812.000000 99.114824 +870.000000 812.000000 99.109209 +871.000000 812.000000 99.105049 +872.000000 812.000000 99.107998 +873.000000 812.000000 99.097744 +874.000000 812.000000 99.093066 +875.000000 812.000000 99.090410 +876.000000 812.000000 99.090176 +877.000000 812.000000 99.091025 +878.000000 812.000000 99.093877 +879.000000 812.000000 99.101289 +880.000000 812.000000 99.088057 +881.000000 812.000000 99.078643 +882.000000 812.000000 99.068984 +883.000000 812.000000 99.057666 +884.000000 812.000000 99.042764 +885.000000 812.000000 99.028486 +886.000000 812.000000 99.016260 +887.000000 812.000000 99.005957 +888.000000 812.000000 99.003018 +889.000000 812.000000 98.999404 +890.000000 812.000000 98.997734 +891.000000 812.000000 98.991318 +892.000000 812.000000 98.984160 +893.000000 812.000000 98.979551 +894.000000 812.000000 98.974707 +895.000000 812.000000 98.972773 +896.000000 812.000000 98.973389 +897.000000 812.000000 98.976729 +898.000000 812.000000 98.974434 +821.000000 813.000000 100.395986 +822.000000 813.000000 99.952939 +823.000000 813.000000 99.764346 +824.000000 813.000000 99.575713 +825.000000 813.000000 99.498975 +826.000000 813.000000 99.493740 +827.000000 813.000000 99.492734 +828.000000 813.000000 99.492627 +829.000000 813.000000 99.475986 +830.000000 813.000000 99.462314 +831.000000 813.000000 99.446660 +832.000000 813.000000 99.420420 +833.000000 813.000000 99.399238 +834.000000 813.000000 99.377510 +835.000000 813.000000 99.352803 +836.000000 813.000000 99.328281 +837.000000 813.000000 99.299453 +838.000000 813.000000 99.290342 +839.000000 813.000000 99.286104 +840.000000 813.000000 99.278213 +841.000000 813.000000 99.267910 +842.000000 813.000000 99.261104 +843.000000 813.000000 99.254424 +844.000000 813.000000 99.247129 +845.000000 813.000000 99.235430 +846.000000 813.000000 99.229131 +847.000000 813.000000 99.222813 +848.000000 813.000000 99.216318 +849.000000 813.000000 99.208330 +850.000000 813.000000 99.199629 +851.000000 813.000000 99.191025 +852.000000 813.000000 99.183115 +853.000000 813.000000 99.176816 +854.000000 813.000000 99.170537 +855.000000 813.000000 99.163809 +856.000000 813.000000 99.156768 +857.000000 813.000000 99.150605 +858.000000 813.000000 99.144355 +859.000000 813.000000 99.139453 +860.000000 813.000000 99.135068 +861.000000 813.000000 99.130322 +862.000000 813.000000 99.122520 +863.000000 813.000000 99.116846 +864.000000 813.000000 99.116348 +865.000000 813.000000 99.115020 +866.000000 813.000000 99.113545 +867.000000 813.000000 99.115215 +868.000000 813.000000 99.100967 +869.000000 813.000000 99.089033 +870.000000 813.000000 99.084160 +871.000000 813.000000 99.080449 +872.000000 813.000000 99.079004 +873.000000 813.000000 99.072900 +874.000000 813.000000 99.069717 +875.000000 813.000000 99.067686 +876.000000 813.000000 99.064932 +877.000000 813.000000 99.065684 +878.000000 813.000000 99.065146 +879.000000 813.000000 99.062715 +880.000000 813.000000 99.059131 +881.000000 813.000000 99.048623 +882.000000 813.000000 99.038184 +883.000000 813.000000 99.026406 +884.000000 813.000000 99.012070 +885.000000 813.000000 98.996846 +886.000000 813.000000 98.980186 +887.000000 813.000000 98.976953 +888.000000 813.000000 98.975342 +889.000000 813.000000 98.971836 +890.000000 813.000000 98.967852 +891.000000 813.000000 98.962842 +892.000000 813.000000 98.956865 +893.000000 813.000000 98.947812 +894.000000 813.000000 98.932217 +895.000000 813.000000 98.920107 +896.000000 813.000000 98.920166 +897.000000 813.000000 98.921621 +898.000000 813.000000 98.897119 +821.000000 814.000000 100.055449 +822.000000 814.000000 99.737061 +823.000000 814.000000 99.536992 +824.000000 814.000000 99.493604 +825.000000 814.000000 99.493691 +826.000000 814.000000 99.492314 +827.000000 814.000000 99.494814 +828.000000 814.000000 99.466826 +829.000000 814.000000 99.438545 +830.000000 814.000000 99.418857 +831.000000 814.000000 99.395947 +832.000000 814.000000 99.370986 +833.000000 814.000000 99.345615 +834.000000 814.000000 99.324463 +835.000000 814.000000 99.303662 +836.000000 814.000000 99.282822 +837.000000 814.000000 99.268047 +838.000000 814.000000 99.257842 +839.000000 814.000000 99.249854 +840.000000 814.000000 99.242324 +841.000000 814.000000 99.236025 +842.000000 814.000000 99.229648 +843.000000 814.000000 99.221836 +844.000000 814.000000 99.213320 +845.000000 814.000000 99.204883 +846.000000 814.000000 99.200078 +847.000000 814.000000 99.195527 +848.000000 814.000000 99.190156 +849.000000 814.000000 99.182559 +850.000000 814.000000 99.176436 +851.000000 814.000000 99.169219 +852.000000 814.000000 99.161084 +853.000000 814.000000 99.153750 +854.000000 814.000000 99.146602 +855.000000 814.000000 99.139053 +856.000000 814.000000 99.131387 +857.000000 814.000000 99.125156 +858.000000 814.000000 99.120234 +859.000000 814.000000 99.116143 +860.000000 814.000000 99.114258 +861.000000 814.000000 99.105059 +862.000000 814.000000 99.097842 +863.000000 814.000000 99.093721 +864.000000 814.000000 99.092871 +865.000000 814.000000 99.092412 +866.000000 814.000000 99.092314 +867.000000 814.000000 99.093760 +868.000000 814.000000 99.076807 +869.000000 814.000000 99.064238 +870.000000 814.000000 99.057070 +871.000000 814.000000 99.052314 +872.000000 814.000000 99.047588 +873.000000 814.000000 99.042529 +874.000000 814.000000 99.038047 +875.000000 814.000000 99.034658 +876.000000 814.000000 99.032109 +877.000000 814.000000 99.030371 +878.000000 814.000000 99.028252 +879.000000 814.000000 99.025361 +880.000000 814.000000 99.021973 +881.000000 814.000000 99.016064 +882.000000 814.000000 99.009639 +883.000000 814.000000 98.998555 +884.000000 814.000000 98.983799 +885.000000 814.000000 98.967686 +886.000000 814.000000 98.949766 +887.000000 814.000000 98.953379 +888.000000 814.000000 98.954053 +889.000000 814.000000 98.956377 +890.000000 814.000000 98.945420 +891.000000 814.000000 98.922227 +892.000000 814.000000 98.921777 +893.000000 814.000000 98.933125 +894.000000 814.000000 98.924063 +895.000000 814.000000 98.908086 +896.000000 814.000000 98.900264 +897.000000 814.000000 98.920654 +898.000000 814.000000 98.932461 +821.000000 815.000000 99.832275 +822.000000 815.000000 99.564727 +823.000000 815.000000 99.443223 +824.000000 815.000000 99.447227 +825.000000 815.000000 99.492744 +826.000000 815.000000 99.469902 +827.000000 815.000000 99.453906 +828.000000 815.000000 99.427070 +829.000000 815.000000 99.398174 +830.000000 815.000000 99.371250 +831.000000 815.000000 99.348867 +832.000000 815.000000 99.322979 +833.000000 815.000000 99.299580 +834.000000 815.000000 99.280029 +835.000000 815.000000 99.263652 +836.000000 815.000000 99.249092 +837.000000 815.000000 99.238535 +838.000000 815.000000 99.228018 +839.000000 815.000000 99.217910 +840.000000 815.000000 99.209375 +841.000000 815.000000 99.204385 +842.000000 815.000000 99.200488 +843.000000 815.000000 99.192930 +844.000000 815.000000 99.183428 +845.000000 815.000000 99.177275 +846.000000 815.000000 99.172930 +847.000000 815.000000 99.169199 +848.000000 815.000000 99.165156 +849.000000 815.000000 99.159932 +850.000000 815.000000 99.155537 +851.000000 815.000000 99.147793 +852.000000 815.000000 99.138857 +853.000000 815.000000 99.130811 +854.000000 815.000000 99.122393 +855.000000 815.000000 99.114141 +856.000000 815.000000 99.106084 +857.000000 815.000000 99.098740 +858.000000 815.000000 99.094072 +859.000000 815.000000 99.089990 +860.000000 815.000000 99.085010 +861.000000 815.000000 99.074951 +862.000000 815.000000 99.069258 +863.000000 815.000000 99.066670 +864.000000 815.000000 99.064229 +865.000000 815.000000 99.062168 +866.000000 815.000000 99.060596 +867.000000 815.000000 99.056279 +868.000000 815.000000 99.045752 +869.000000 815.000000 99.034873 +870.000000 815.000000 99.027617 +871.000000 815.000000 99.021523 +872.000000 815.000000 99.015303 +873.000000 815.000000 99.008359 +874.000000 815.000000 99.003975 +875.000000 815.000000 98.999863 +876.000000 815.000000 98.995811 +877.000000 815.000000 98.992988 +878.000000 815.000000 98.990820 +879.000000 815.000000 98.988076 +880.000000 815.000000 98.984111 +881.000000 815.000000 98.980439 +882.000000 815.000000 98.974502 +883.000000 815.000000 98.962793 +884.000000 815.000000 98.954102 +885.000000 815.000000 98.938887 +886.000000 815.000000 98.920928 +887.000000 815.000000 98.895996 +888.000000 815.000000 98.932090 +889.000000 815.000000 98.947314 +890.000000 815.000000 98.951416 +891.000000 815.000000 98.914473 +892.000000 815.000000 98.914326 +893.000000 815.000000 98.941797 +894.000000 815.000000 98.958203 +895.000000 815.000000 98.975547 +896.000000 815.000000 98.989824 +897.000000 815.000000 99.008555 +898.000000 815.000000 99.018145 +821.000000 816.000000 99.584639 +822.000000 816.000000 99.491006 +823.000000 816.000000 99.415986 +824.000000 816.000000 99.489355 +825.000000 816.000000 99.489141 +826.000000 816.000000 99.450635 +827.000000 816.000000 99.416123 +828.000000 816.000000 99.384824 +829.000000 816.000000 99.355537 +830.000000 816.000000 99.331201 +831.000000 816.000000 99.313438 +832.000000 816.000000 99.291533 +833.000000 816.000000 99.271504 +834.000000 816.000000 99.252939 +835.000000 816.000000 99.233633 +836.000000 816.000000 99.221631 +837.000000 816.000000 99.211074 +838.000000 816.000000 99.200527 +839.000000 816.000000 99.189805 +840.000000 816.000000 99.180146 +841.000000 816.000000 99.174473 +842.000000 816.000000 99.172256 +843.000000 816.000000 99.166162 +844.000000 816.000000 99.160371 +845.000000 816.000000 99.155488 +846.000000 816.000000 99.150752 +847.000000 816.000000 99.146797 +848.000000 816.000000 99.142695 +849.000000 816.000000 99.138477 +850.000000 816.000000 99.134102 +851.000000 816.000000 99.127334 +852.000000 816.000000 99.116836 +853.000000 816.000000 99.107002 +854.000000 816.000000 99.096904 +855.000000 816.000000 99.085801 +856.000000 816.000000 99.077451 +857.000000 816.000000 99.071514 +858.000000 816.000000 99.063350 +859.000000 816.000000 99.057920 +860.000000 816.000000 99.050684 +861.000000 816.000000 99.041260 +862.000000 816.000000 99.038535 +863.000000 816.000000 99.035596 +864.000000 816.000000 99.032725 +865.000000 816.000000 99.028252 +866.000000 816.000000 99.027803 +867.000000 816.000000 99.019766 +868.000000 816.000000 99.008252 +869.000000 816.000000 99.000371 +870.000000 816.000000 98.994102 +871.000000 816.000000 98.989297 +872.000000 816.000000 98.973945 +873.000000 816.000000 98.970439 +874.000000 816.000000 98.968965 +875.000000 816.000000 98.964404 +876.000000 816.000000 98.961572 +877.000000 816.000000 98.957832 +878.000000 816.000000 98.950693 +879.000000 816.000000 98.951309 +880.000000 816.000000 98.948037 +881.000000 816.000000 98.939063 +882.000000 816.000000 98.929131 +883.000000 816.000000 98.907783 +884.000000 816.000000 98.914512 +885.000000 816.000000 98.910898 +886.000000 816.000000 98.912256 +887.000000 816.000000 98.914473 +888.000000 816.000000 98.930703 +889.000000 816.000000 98.949775 +890.000000 816.000000 98.970713 +891.000000 816.000000 98.954316 +892.000000 816.000000 98.960928 +893.000000 816.000000 98.985352 +894.000000 816.000000 99.008604 +895.000000 816.000000 99.037441 +896.000000 816.000000 99.076279 +897.000000 816.000000 99.090498 +898.000000 816.000000 99.086191 +821.000000 817.000000 99.449287 +822.000000 817.000000 99.462187 +823.000000 817.000000 99.445967 +824.000000 817.000000 99.450400 +825.000000 817.000000 99.449834 +826.000000 817.000000 99.413574 +827.000000 817.000000 99.373965 +828.000000 817.000000 99.343037 +829.000000 817.000000 99.312627 +830.000000 817.000000 99.290498 +831.000000 817.000000 99.277432 +832.000000 817.000000 99.261201 +833.000000 817.000000 99.244238 +834.000000 817.000000 99.227461 +835.000000 817.000000 99.207080 +836.000000 817.000000 99.185000 +837.000000 817.000000 99.185645 +838.000000 817.000000 99.175098 +839.000000 817.000000 99.163887 +840.000000 817.000000 99.158281 +841.000000 817.000000 99.157715 +842.000000 817.000000 99.150732 +843.000000 817.000000 99.144639 +844.000000 817.000000 99.138857 +845.000000 817.000000 99.133887 +846.000000 817.000000 99.128271 +847.000000 817.000000 99.124492 +848.000000 817.000000 99.121230 +849.000000 817.000000 99.115244 +850.000000 817.000000 99.111074 +851.000000 817.000000 99.108701 +852.000000 817.000000 99.095166 +853.000000 817.000000 99.081758 +854.000000 817.000000 99.067080 +855.000000 817.000000 99.054648 +856.000000 817.000000 99.045801 +857.000000 817.000000 99.036387 +858.000000 817.000000 99.026875 +859.000000 817.000000 99.021602 +860.000000 817.000000 99.015020 +861.000000 817.000000 99.007324 +862.000000 817.000000 99.000293 +863.000000 817.000000 98.994902 +864.000000 817.000000 98.990186 +865.000000 817.000000 98.986260 +866.000000 817.000000 98.993984 +867.000000 817.000000 98.984326 +868.000000 817.000000 98.968750 +869.000000 817.000000 98.961367 +870.000000 817.000000 98.948379 +871.000000 817.000000 98.937139 +872.000000 817.000000 98.922412 +873.000000 817.000000 98.925986 +874.000000 817.000000 98.930645 +875.000000 817.000000 98.928359 +876.000000 817.000000 98.924307 +877.000000 817.000000 98.928643 +878.000000 817.000000 98.917451 +879.000000 817.000000 98.901875 +880.000000 817.000000 98.917451 +881.000000 817.000000 98.920156 +882.000000 817.000000 98.911592 +883.000000 817.000000 98.898613 +884.000000 817.000000 98.914492 +885.000000 817.000000 98.926836 +886.000000 817.000000 98.938213 +887.000000 817.000000 98.953203 +888.000000 817.000000 98.968623 +889.000000 817.000000 98.984180 +890.000000 817.000000 99.004014 +891.000000 817.000000 99.008760 +892.000000 817.000000 99.017695 +893.000000 817.000000 99.033809 +894.000000 817.000000 99.058232 +895.000000 817.000000 99.093223 +896.000000 817.000000 99.115576 +897.000000 817.000000 99.125537 +898.000000 817.000000 99.129883 +821.000000 818.000000 99.421299 +822.000000 818.000000 99.415742 +823.000000 818.000000 99.415742 +824.000000 818.000000 99.416191 +825.000000 818.000000 99.398857 +826.000000 818.000000 99.367461 +827.000000 818.000000 99.326104 +828.000000 818.000000 99.300273 +829.000000 818.000000 99.285586 +830.000000 818.000000 99.266465 +831.000000 818.000000 99.250420 +832.000000 818.000000 99.236172 +833.000000 818.000000 99.218896 +834.000000 818.000000 99.204922 +835.000000 818.000000 99.191904 +836.000000 818.000000 99.174561 +837.000000 818.000000 99.162607 +838.000000 818.000000 99.153594 +839.000000 818.000000 99.141191 +840.000000 818.000000 99.142900 +841.000000 818.000000 99.141289 +842.000000 818.000000 99.131680 +843.000000 818.000000 99.125137 +844.000000 818.000000 99.118096 +845.000000 818.000000 99.111924 +846.000000 818.000000 99.105312 +847.000000 818.000000 99.100635 +848.000000 818.000000 99.095322 +849.000000 818.000000 99.083906 +850.000000 818.000000 99.084531 +851.000000 818.000000 99.088291 +852.000000 818.000000 99.068535 +853.000000 818.000000 99.052080 +854.000000 818.000000 99.033867 +855.000000 818.000000 99.022324 +856.000000 818.000000 99.012002 +857.000000 818.000000 99.001738 +858.000000 818.000000 98.988281 +859.000000 818.000000 98.979297 +860.000000 818.000000 98.969209 +861.000000 818.000000 98.957373 +862.000000 818.000000 98.949648 +863.000000 818.000000 98.956875 +864.000000 818.000000 98.951865 +865.000000 818.000000 98.943730 +866.000000 818.000000 98.952461 +867.000000 818.000000 98.944375 +868.000000 818.000000 98.940059 +869.000000 818.000000 98.929609 +870.000000 818.000000 98.910674 +871.000000 818.000000 98.901660 +872.000000 818.000000 98.895068 +873.000000 818.000000 98.895000 +874.000000 818.000000 98.893711 +875.000000 818.000000 98.895439 +876.000000 818.000000 98.915811 +877.000000 818.000000 98.917158 +878.000000 818.000000 98.905098 +879.000000 818.000000 98.903477 +880.000000 818.000000 98.928242 +881.000000 818.000000 98.928818 +882.000000 818.000000 98.931514 +883.000000 818.000000 98.936982 +884.000000 818.000000 98.955098 +885.000000 818.000000 98.967949 +886.000000 818.000000 98.982021 +887.000000 818.000000 98.993828 +888.000000 818.000000 99.008838 +889.000000 818.000000 99.032285 +890.000000 818.000000 99.058750 +891.000000 818.000000 99.071768 +892.000000 818.000000 99.067979 +893.000000 818.000000 99.080889 +894.000000 818.000000 99.102266 +895.000000 818.000000 99.128564 +896.000000 818.000000 99.140654 +897.000000 818.000000 99.147646 +898.000000 818.000000 99.153291 +821.000000 819.000000 99.395596 +822.000000 819.000000 99.368369 +823.000000 819.000000 99.372979 +824.000000 819.000000 99.372998 +825.000000 819.000000 99.355049 +826.000000 819.000000 99.327822 +827.000000 819.000000 99.288330 +828.000000 819.000000 99.271191 +829.000000 819.000000 99.262510 +830.000000 819.000000 99.245654 +831.000000 819.000000 99.234131 +832.000000 819.000000 99.217275 +833.000000 819.000000 99.198818 +834.000000 819.000000 99.191855 +835.000000 819.000000 99.172227 +836.000000 819.000000 99.156465 +837.000000 819.000000 99.152822 +838.000000 819.000000 99.148770 +839.000000 819.000000 99.129639 +840.000000 819.000000 99.129688 +841.000000 819.000000 99.124795 +842.000000 819.000000 99.119512 +843.000000 819.000000 99.114102 +844.000000 819.000000 99.103799 +845.000000 819.000000 99.090850 +846.000000 819.000000 99.074121 +847.000000 819.000000 99.066172 +848.000000 819.000000 99.058281 +849.000000 819.000000 99.053721 +850.000000 819.000000 99.065439 +851.000000 819.000000 99.071816 +852.000000 819.000000 99.048281 +853.000000 819.000000 99.020615 +854.000000 819.000000 99.001025 +855.000000 819.000000 98.983906 +856.000000 819.000000 98.970645 +857.000000 819.000000 98.950801 +858.000000 819.000000 98.945400 +859.000000 819.000000 98.927158 +860.000000 819.000000 98.919111 +861.000000 819.000000 98.904609 +862.000000 819.000000 98.902031 +863.000000 819.000000 98.900078 +864.000000 819.000000 98.899687 +865.000000 819.000000 98.905205 +866.000000 819.000000 98.913447 +867.000000 819.000000 98.910547 +868.000000 819.000000 98.907061 +869.000000 819.000000 98.900400 +870.000000 819.000000 98.902666 +871.000000 819.000000 98.895459 +872.000000 819.000000 98.895000 +873.000000 819.000000 98.894141 +874.000000 819.000000 98.917295 +875.000000 819.000000 98.895947 +876.000000 819.000000 98.927490 +877.000000 819.000000 98.927012 +878.000000 819.000000 98.916211 +879.000000 819.000000 98.919600 +880.000000 819.000000 98.944424 +881.000000 819.000000 98.959590 +882.000000 819.000000 98.966406 +883.000000 819.000000 98.982012 +884.000000 819.000000 99.000127 +885.000000 819.000000 99.012178 +886.000000 819.000000 99.021611 +887.000000 819.000000 99.030615 +888.000000 819.000000 99.046885 +889.000000 819.000000 99.068857 +890.000000 819.000000 99.102393 +891.000000 819.000000 99.115410 +892.000000 819.000000 99.112422 +893.000000 819.000000 99.119033 +894.000000 819.000000 99.137949 +895.000000 819.000000 99.155215 +896.000000 819.000000 99.163145 +897.000000 819.000000 99.168936 +898.000000 819.000000 99.175469 +821.000000 820.000000 99.345967 +822.000000 820.000000 99.298066 +823.000000 820.000000 99.302646 +824.000000 820.000000 99.308477 +825.000000 820.000000 99.310752 +826.000000 820.000000 99.298916 +827.000000 820.000000 99.257734 +828.000000 820.000000 99.252061 +829.000000 820.000000 99.255234 +830.000000 820.000000 99.251875 +831.000000 820.000000 99.240078 +832.000000 820.000000 99.211934 +833.000000 820.000000 99.195518 +834.000000 820.000000 99.190127 +835.000000 820.000000 99.178281 +836.000000 820.000000 99.182432 +837.000000 820.000000 99.158516 +838.000000 820.000000 99.145576 +839.000000 820.000000 99.130029 +840.000000 820.000000 99.126240 +841.000000 820.000000 99.125391 +842.000000 820.000000 99.121318 +843.000000 820.000000 99.111416 +844.000000 820.000000 99.103291 +845.000000 820.000000 99.096094 +846.000000 820.000000 99.076133 +847.000000 820.000000 99.071426 +848.000000 820.000000 99.065859 +849.000000 820.000000 99.058330 +850.000000 820.000000 99.058037 +851.000000 820.000000 99.057100 +852.000000 820.000000 99.036182 +853.000000 820.000000 99.002041 +854.000000 820.000000 98.972109 +855.000000 820.000000 98.942627 +856.000000 820.000000 98.930664 +857.000000 820.000000 98.903340 +858.000000 820.000000 98.940508 +859.000000 820.000000 98.925469 +860.000000 820.000000 98.929248 +861.000000 820.000000 98.946172 +862.000000 820.000000 98.940977 +863.000000 820.000000 98.945625 +864.000000 820.000000 98.945967 +865.000000 820.000000 98.949043 +866.000000 820.000000 98.941387 +867.000000 820.000000 98.944189 +868.000000 820.000000 98.947520 +869.000000 820.000000 98.944971 +870.000000 820.000000 98.947187 +871.000000 820.000000 98.951162 +872.000000 820.000000 98.950703 +873.000000 820.000000 98.953291 +874.000000 820.000000 98.956436 +875.000000 820.000000 98.944385 +876.000000 820.000000 98.956484 +877.000000 820.000000 98.959385 +878.000000 820.000000 98.963291 +879.000000 820.000000 98.968457 +880.000000 820.000000 98.977031 +881.000000 820.000000 98.990518 +882.000000 820.000000 99.005791 +883.000000 820.000000 99.020166 +884.000000 820.000000 99.034453 +885.000000 820.000000 99.047842 +886.000000 820.000000 99.059258 +887.000000 820.000000 99.069678 +888.000000 820.000000 99.084219 +889.000000 820.000000 99.108115 +890.000000 820.000000 99.125918 +891.000000 820.000000 99.139297 +892.000000 820.000000 99.151875 +893.000000 820.000000 99.163008 +894.000000 820.000000 99.170928 +895.000000 820.000000 99.177969 +896.000000 820.000000 99.184785 +897.000000 820.000000 99.191504 +898.000000 820.000000 99.198262 +821.000000 821.000000 99.388994 +822.000000 821.000000 99.348076 +823.000000 821.000000 99.334844 +824.000000 821.000000 99.336592 +825.000000 821.000000 99.325762 +826.000000 821.000000 99.311592 +827.000000 821.000000 99.294873 +828.000000 821.000000 99.283115 +829.000000 821.000000 99.281348 +830.000000 821.000000 99.272939 +831.000000 821.000000 99.256836 +832.000000 821.000000 99.236650 +833.000000 821.000000 99.234727 +834.000000 821.000000 99.230879 +835.000000 821.000000 99.211006 +836.000000 821.000000 99.190947 +837.000000 821.000000 99.175947 +838.000000 821.000000 99.169873 +839.000000 821.000000 99.158037 +840.000000 821.000000 99.147588 +841.000000 821.000000 99.140996 +842.000000 821.000000 99.134590 +843.000000 821.000000 99.128145 +844.000000 821.000000 99.120693 +845.000000 821.000000 99.112646 +846.000000 821.000000 99.100234 +847.000000 821.000000 99.091816 +848.000000 821.000000 99.083760 +849.000000 821.000000 99.075186 +850.000000 821.000000 99.064775 +851.000000 821.000000 99.060967 +852.000000 821.000000 99.051377 +853.000000 821.000000 99.030000 +854.000000 821.000000 99.004785 +855.000000 821.000000 98.980576 +856.000000 821.000000 98.970195 +857.000000 821.000000 98.980264 +858.000000 821.000000 98.987686 +859.000000 821.000000 98.985723 +860.000000 821.000000 98.986855 +861.000000 821.000000 98.994043 +862.000000 821.000000 98.991016 +863.000000 821.000000 98.990068 +864.000000 821.000000 98.991074 +865.000000 821.000000 98.989883 +866.000000 821.000000 98.983076 +867.000000 821.000000 98.985459 +868.000000 821.000000 98.986016 +869.000000 821.000000 98.989766 +870.000000 821.000000 98.994062 +871.000000 821.000000 98.995908 +872.000000 821.000000 98.991904 +873.000000 821.000000 98.988535 +874.000000 821.000000 98.993389 +875.000000 821.000000 98.994746 +876.000000 821.000000 98.995254 +877.000000 821.000000 98.997783 +878.000000 821.000000 99.002393 +879.000000 821.000000 99.010986 +880.000000 821.000000 99.019316 +881.000000 821.000000 99.031338 +882.000000 821.000000 99.043262 +883.000000 821.000000 99.056143 +884.000000 821.000000 99.068994 +885.000000 821.000000 99.082617 +886.000000 821.000000 99.095986 +887.000000 821.000000 99.106592 +888.000000 821.000000 99.118105 +889.000000 821.000000 99.131826 +890.000000 821.000000 99.146885 +891.000000 821.000000 99.160107 +892.000000 821.000000 99.173340 +893.000000 821.000000 99.185879 +894.000000 821.000000 99.193916 +895.000000 821.000000 99.200898 +896.000000 821.000000 99.208027 +897.000000 821.000000 99.215068 +898.000000 821.000000 99.222607 +821.000000 822.000000 99.458955 +822.000000 822.000000 99.413652 +823.000000 822.000000 99.393018 +824.000000 822.000000 99.378213 +825.000000 822.000000 99.364658 +826.000000 822.000000 99.346279 +827.000000 822.000000 99.329541 +828.000000 822.000000 99.318408 +829.000000 822.000000 99.309160 +830.000000 822.000000 99.296953 +831.000000 822.000000 99.283232 +832.000000 822.000000 99.265723 +833.000000 822.000000 99.252998 +834.000000 822.000000 99.243506 +835.000000 822.000000 99.232725 +836.000000 822.000000 99.218799 +837.000000 822.000000 99.203887 +838.000000 822.000000 99.195078 +839.000000 822.000000 99.184346 +840.000000 822.000000 99.173975 +841.000000 822.000000 99.165361 +842.000000 822.000000 99.158408 +843.000000 822.000000 99.150869 +844.000000 822.000000 99.142236 +845.000000 822.000000 99.132734 +846.000000 822.000000 99.123027 +847.000000 822.000000 99.113242 +848.000000 822.000000 99.104414 +849.000000 822.000000 99.091494 +850.000000 822.000000 99.077295 +851.000000 822.000000 99.058516 +852.000000 822.000000 99.059297 +853.000000 822.000000 99.056035 +854.000000 822.000000 99.044590 +855.000000 822.000000 99.035781 +856.000000 822.000000 99.033486 +857.000000 822.000000 99.033936 +858.000000 822.000000 99.038379 +859.000000 822.000000 99.042920 +860.000000 822.000000 99.042725 +861.000000 822.000000 99.039766 +862.000000 822.000000 99.036123 +863.000000 822.000000 99.033457 +864.000000 822.000000 99.034414 +865.000000 822.000000 99.035938 +866.000000 822.000000 99.032148 +867.000000 822.000000 99.027578 +868.000000 822.000000 99.028164 +869.000000 822.000000 99.031563 +870.000000 822.000000 99.037627 +871.000000 822.000000 99.046123 +872.000000 822.000000 99.055830 +873.000000 822.000000 99.058447 +874.000000 822.000000 99.047803 +875.000000 822.000000 99.040801 +876.000000 822.000000 99.034785 +877.000000 822.000000 99.035410 +878.000000 822.000000 99.039219 +879.000000 822.000000 99.046387 +880.000000 822.000000 99.056025 +881.000000 822.000000 99.064326 +882.000000 822.000000 99.076055 +883.000000 822.000000 99.089033 +884.000000 822.000000 99.103301 +885.000000 822.000000 99.116045 +886.000000 822.000000 99.126260 +887.000000 822.000000 99.133818 +888.000000 822.000000 99.143057 +889.000000 822.000000 99.152764 +890.000000 822.000000 99.167236 +891.000000 822.000000 99.181553 +892.000000 822.000000 99.194580 +893.000000 822.000000 99.207588 +894.000000 822.000000 99.216855 +895.000000 822.000000 99.224424 +896.000000 822.000000 99.232129 +897.000000 822.000000 99.239385 +898.000000 822.000000 99.246475 +821.000000 823.000000 99.542236 +822.000000 823.000000 99.453848 +823.000000 823.000000 99.436055 +824.000000 823.000000 99.420322 +825.000000 823.000000 99.403623 +826.000000 823.000000 99.383008 +827.000000 823.000000 99.367295 +828.000000 823.000000 99.354229 +829.000000 823.000000 99.343281 +830.000000 823.000000 99.329912 +831.000000 823.000000 99.313867 +832.000000 823.000000 99.297354 +833.000000 823.000000 99.281533 +834.000000 823.000000 99.268389 +835.000000 823.000000 99.256768 +836.000000 823.000000 99.244531 +837.000000 823.000000 99.232754 +838.000000 823.000000 99.221611 +839.000000 823.000000 99.211074 +840.000000 823.000000 99.200449 +841.000000 823.000000 99.190566 +842.000000 823.000000 99.181904 +843.000000 823.000000 99.174063 +844.000000 823.000000 99.165049 +845.000000 823.000000 99.155937 +846.000000 823.000000 99.146309 +847.000000 823.000000 99.136660 +848.000000 823.000000 99.127041 +849.000000 823.000000 99.117236 +850.000000 823.000000 99.105811 +851.000000 823.000000 99.095713 +852.000000 823.000000 99.089385 +853.000000 823.000000 99.085908 +854.000000 823.000000 99.090801 +855.000000 823.000000 99.091934 +856.000000 823.000000 99.082705 +857.000000 823.000000 99.078604 +858.000000 823.000000 99.082070 +859.000000 823.000000 99.090264 +860.000000 823.000000 99.092842 +861.000000 823.000000 99.083740 +862.000000 823.000000 99.078906 +863.000000 823.000000 99.075645 +864.000000 823.000000 99.077959 +865.000000 823.000000 99.084775 +866.000000 823.000000 99.083555 +867.000000 823.000000 99.072939 +868.000000 823.000000 99.070078 +869.000000 823.000000 99.072344 +870.000000 823.000000 99.078008 +871.000000 823.000000 99.085361 +872.000000 823.000000 99.095322 +873.000000 823.000000 99.103535 +874.000000 823.000000 99.093213 +875.000000 823.000000 99.080566 +876.000000 823.000000 99.072393 +877.000000 823.000000 99.072051 +878.000000 823.000000 99.075879 +879.000000 823.000000 99.081328 +880.000000 823.000000 99.089111 +881.000000 823.000000 99.096631 +882.000000 823.000000 99.107510 +883.000000 823.000000 99.119619 +884.000000 823.000000 99.132617 +885.000000 823.000000 99.143076 +886.000000 823.000000 99.151104 +887.000000 823.000000 99.158770 +888.000000 823.000000 99.163340 +889.000000 823.000000 99.173311 +890.000000 823.000000 99.189063 +891.000000 823.000000 99.204199 +892.000000 823.000000 99.217812 +893.000000 823.000000 99.230068 +894.000000 823.000000 99.240479 +895.000000 823.000000 99.248760 +896.000000 823.000000 99.256191 +897.000000 823.000000 99.263760 +898.000000 823.000000 99.271162 +821.000000 824.000000 99.666152 +822.000000 824.000000 99.489082 +823.000000 824.000000 99.484326 +824.000000 824.000000 99.445176 +825.000000 824.000000 99.415156 +826.000000 824.000000 99.414102 +827.000000 824.000000 99.399297 +828.000000 824.000000 99.384941 +829.000000 824.000000 99.374609 +830.000000 824.000000 99.363535 +831.000000 824.000000 99.347246 +832.000000 824.000000 99.328398 +833.000000 824.000000 99.311436 +834.000000 824.000000 99.297363 +835.000000 824.000000 99.285039 +836.000000 824.000000 99.273223 +837.000000 824.000000 99.261377 +838.000000 824.000000 99.249629 +839.000000 824.000000 99.238145 +840.000000 824.000000 99.226816 +841.000000 824.000000 99.215420 +842.000000 824.000000 99.205742 +843.000000 824.000000 99.197178 +844.000000 824.000000 99.188076 +845.000000 824.000000 99.178984 +846.000000 824.000000 99.169629 +847.000000 824.000000 99.160352 +848.000000 824.000000 99.151641 +849.000000 824.000000 99.143262 +850.000000 824.000000 99.135107 +851.000000 824.000000 99.126816 +852.000000 824.000000 99.119180 +853.000000 824.000000 99.120420 +854.000000 824.000000 99.124746 +855.000000 824.000000 99.124082 +856.000000 824.000000 99.121113 +857.000000 824.000000 99.119424 +858.000000 824.000000 99.122051 +859.000000 824.000000 99.127715 +860.000000 824.000000 99.126113 +861.000000 824.000000 99.119893 +862.000000 824.000000 99.117695 +863.000000 824.000000 99.116211 +864.000000 824.000000 99.116543 +865.000000 824.000000 99.122539 +866.000000 824.000000 99.118545 +867.000000 824.000000 99.115225 +868.000000 824.000000 99.110332 +869.000000 824.000000 99.110840 +870.000000 824.000000 99.111240 +871.000000 824.000000 99.118242 +872.000000 824.000000 99.124238 +873.000000 824.000000 99.124531 +874.000000 824.000000 99.120527 +875.000000 824.000000 99.113057 +876.000000 824.000000 99.107607 +877.000000 824.000000 99.106436 +878.000000 824.000000 99.110898 +879.000000 824.000000 99.115771 +880.000000 824.000000 99.122139 +881.000000 824.000000 99.128945 +882.000000 824.000000 99.137666 +883.000000 824.000000 99.149189 +884.000000 824.000000 99.160830 +885.000000 824.000000 99.170801 +886.000000 824.000000 99.177842 +887.000000 824.000000 99.183848 +888.000000 824.000000 99.189600 +889.000000 824.000000 99.198838 +890.000000 824.000000 99.212480 +891.000000 824.000000 99.228027 +892.000000 824.000000 99.242695 +893.000000 824.000000 99.253984 +894.000000 824.000000 99.263877 +895.000000 824.000000 99.272793 +896.000000 824.000000 99.280430 +897.000000 824.000000 99.288242 +898.000000 824.000000 99.296846 +821.000000 825.000000 100.169043 +822.000000 825.000000 99.851836 +823.000000 825.000000 99.588916 +824.000000 825.000000 99.452021 +825.000000 825.000000 99.428867 +826.000000 825.000000 99.440537 +827.000000 825.000000 99.426719 +828.000000 825.000000 99.412832 +829.000000 825.000000 99.402207 +830.000000 825.000000 99.394238 +831.000000 825.000000 99.377344 +832.000000 825.000000 99.357559 +833.000000 825.000000 99.340098 +834.000000 825.000000 99.326064 +835.000000 825.000000 99.313740 +836.000000 825.000000 99.301787 +837.000000 825.000000 99.289717 +838.000000 825.000000 99.277441 +839.000000 825.000000 99.265127 +840.000000 825.000000 99.253066 +841.000000 825.000000 99.241045 +842.000000 825.000000 99.229687 +843.000000 825.000000 99.220215 +844.000000 825.000000 99.210898 +845.000000 825.000000 99.201855 +846.000000 825.000000 99.192881 +847.000000 825.000000 99.184473 +848.000000 825.000000 99.176914 +849.000000 825.000000 99.169521 +850.000000 825.000000 99.162021 +851.000000 825.000000 99.154463 +852.000000 825.000000 99.148145 +853.000000 825.000000 99.149639 +854.000000 825.000000 99.152324 +855.000000 825.000000 99.152100 +856.000000 825.000000 99.152295 +857.000000 825.000000 99.156475 +858.000000 825.000000 99.160586 +859.000000 825.000000 99.158242 +860.000000 825.000000 99.156797 +861.000000 825.000000 99.156035 +862.000000 825.000000 99.156611 +863.000000 825.000000 99.152900 +864.000000 825.000000 99.150967 +865.000000 825.000000 99.151152 +866.000000 825.000000 99.150205 +867.000000 825.000000 99.151846 +868.000000 825.000000 99.149805 +869.000000 825.000000 99.147500 +870.000000 825.000000 99.146924 +871.000000 825.000000 99.146758 +872.000000 825.000000 99.147910 +873.000000 825.000000 99.149238 +874.000000 825.000000 99.147588 +875.000000 825.000000 99.143838 +876.000000 825.000000 99.140791 +877.000000 825.000000 99.140234 +878.000000 825.000000 99.142754 +879.000000 825.000000 99.146611 +880.000000 825.000000 99.152734 +881.000000 825.000000 99.160645 +882.000000 825.000000 99.168076 +883.000000 825.000000 99.177373 +884.000000 825.000000 99.187588 +885.000000 825.000000 99.197598 +886.000000 825.000000 99.204355 +887.000000 825.000000 99.211035 +888.000000 825.000000 99.218232 +889.000000 825.000000 99.228955 +890.000000 825.000000 99.240430 +891.000000 825.000000 99.254375 +892.000000 825.000000 99.267471 +893.000000 825.000000 99.278496 +894.000000 825.000000 99.288174 +895.000000 825.000000 99.296777 +896.000000 825.000000 99.306221 +897.000000 825.000000 99.314727 +898.000000 825.000000 99.324609 +821.000000 826.000000 100.836699 +822.000000 826.000000 100.241719 +823.000000 826.000000 99.851758 +824.000000 826.000000 99.618057 +825.000000 826.000000 99.479346 +826.000000 826.000000 99.471045 +827.000000 826.000000 99.454307 +828.000000 826.000000 99.439189 +829.000000 826.000000 99.427627 +830.000000 826.000000 99.417422 +831.000000 826.000000 99.402305 +832.000000 826.000000 99.384463 +833.000000 826.000000 99.368291 +834.000000 826.000000 99.354336 +835.000000 826.000000 99.342324 +836.000000 826.000000 99.330313 +837.000000 826.000000 99.318242 +838.000000 826.000000 99.305713 +839.000000 826.000000 99.292598 +840.000000 826.000000 99.279922 +841.000000 826.000000 99.266357 +842.000000 826.000000 99.253145 +843.000000 826.000000 99.243584 +844.000000 826.000000 99.233994 +845.000000 826.000000 99.224092 +846.000000 826.000000 99.215420 +847.000000 826.000000 99.207578 +848.000000 826.000000 99.201475 +849.000000 826.000000 99.195566 +850.000000 826.000000 99.187959 +851.000000 826.000000 99.181660 +852.000000 826.000000 99.177432 +853.000000 826.000000 99.176680 +854.000000 826.000000 99.177354 +855.000000 826.000000 99.178232 +856.000000 826.000000 99.179434 +857.000000 826.000000 99.181416 +858.000000 826.000000 99.184600 +859.000000 826.000000 99.184062 +860.000000 826.000000 99.183047 +861.000000 826.000000 99.184551 +862.000000 826.000000 99.187432 +863.000000 826.000000 99.189609 +864.000000 826.000000 99.185996 +865.000000 826.000000 99.181475 +866.000000 826.000000 99.179023 +867.000000 826.000000 99.178701 +868.000000 826.000000 99.181553 +869.000000 826.000000 99.183242 +870.000000 826.000000 99.178418 +871.000000 826.000000 99.174951 +872.000000 826.000000 99.174365 +873.000000 826.000000 99.175254 +874.000000 826.000000 99.175791 +875.000000 826.000000 99.172070 +876.000000 826.000000 99.169824 +877.000000 826.000000 99.168965 +878.000000 826.000000 99.171543 +879.000000 826.000000 99.175566 +880.000000 826.000000 99.180674 +881.000000 826.000000 99.186963 +882.000000 826.000000 99.194844 +883.000000 826.000000 99.204219 +884.000000 826.000000 99.213809 +885.000000 826.000000 99.222910 +886.000000 826.000000 99.231182 +887.000000 826.000000 99.238477 +888.000000 826.000000 99.248379 +889.000000 826.000000 99.257803 +890.000000 826.000000 99.269111 +891.000000 826.000000 99.281211 +892.000000 826.000000 99.294551 +893.000000 826.000000 99.304316 +894.000000 826.000000 99.313330 +895.000000 826.000000 99.321924 +896.000000 826.000000 99.330420 +897.000000 826.000000 99.342129 +898.000000 826.000000 99.355000 +821.000000 827.000000 101.663311 +822.000000 827.000000 100.893691 +823.000000 827.000000 100.307178 +824.000000 827.000000 99.927822 +825.000000 827.000000 99.664375 +826.000000 827.000000 99.576104 +827.000000 827.000000 99.493193 +828.000000 827.000000 99.472432 +829.000000 827.000000 99.450508 +830.000000 827.000000 99.438848 +831.000000 827.000000 99.425967 +832.000000 827.000000 99.411230 +833.000000 827.000000 99.396123 +834.000000 827.000000 99.382725 +835.000000 827.000000 99.370840 +836.000000 827.000000 99.359082 +837.000000 827.000000 99.347451 +838.000000 827.000000 99.335127 +839.000000 827.000000 99.321289 +840.000000 827.000000 99.308018 +841.000000 827.000000 99.291914 +842.000000 827.000000 99.276270 +843.000000 827.000000 99.267061 +844.000000 827.000000 99.257451 +845.000000 827.000000 99.246953 +846.000000 827.000000 99.237598 +847.000000 827.000000 99.229355 +848.000000 827.000000 99.222871 +849.000000 827.000000 99.216826 +850.000000 827.000000 99.210986 +851.000000 827.000000 99.205459 +852.000000 827.000000 99.202803 +853.000000 827.000000 99.201309 +854.000000 827.000000 99.201104 +855.000000 827.000000 99.201650 +856.000000 827.000000 99.202197 +857.000000 827.000000 99.203174 +858.000000 827.000000 99.206172 +859.000000 827.000000 99.207734 +860.000000 827.000000 99.208682 +861.000000 827.000000 99.211035 +862.000000 827.000000 99.212930 +863.000000 827.000000 99.214102 +864.000000 827.000000 99.210098 +865.000000 827.000000 99.209443 +866.000000 827.000000 99.207178 +867.000000 827.000000 99.206885 +868.000000 827.000000 99.207207 +869.000000 827.000000 99.206816 +870.000000 827.000000 99.206436 +871.000000 827.000000 99.203965 +872.000000 827.000000 99.202031 +873.000000 827.000000 99.202314 +874.000000 827.000000 99.200078 +875.000000 827.000000 99.197783 +876.000000 827.000000 99.195811 +877.000000 827.000000 99.195391 +878.000000 827.000000 99.197148 +879.000000 827.000000 99.201670 +880.000000 827.000000 99.207012 +881.000000 827.000000 99.213281 +882.000000 827.000000 99.220635 +883.000000 827.000000 99.229639 +884.000000 827.000000 99.239180 +885.000000 827.000000 99.248467 +886.000000 827.000000 99.257568 +887.000000 827.000000 99.266396 +888.000000 827.000000 99.278760 +889.000000 827.000000 99.289082 +890.000000 827.000000 99.297227 +891.000000 827.000000 99.308115 +892.000000 827.000000 99.320664 +893.000000 827.000000 99.330205 +894.000000 827.000000 99.338877 +895.000000 827.000000 99.347451 +896.000000 827.000000 99.355713 +897.000000 827.000000 99.366846 +898.000000 827.000000 99.380986 +821.000000 828.000000 102.464531 +822.000000 828.000000 101.499248 +823.000000 828.000000 100.857187 +824.000000 828.000000 100.273369 +825.000000 828.000000 99.899521 +826.000000 828.000000 99.732324 +827.000000 828.000000 99.632344 +828.000000 828.000000 99.551572 +829.000000 828.000000 99.485576 +830.000000 828.000000 99.459170 +831.000000 828.000000 99.446553 +832.000000 828.000000 99.433682 +833.000000 828.000000 99.420635 +834.000000 828.000000 99.408262 +835.000000 828.000000 99.398789 +836.000000 828.000000 99.387402 +837.000000 828.000000 99.376191 +838.000000 828.000000 99.365117 +839.000000 828.000000 99.351074 +840.000000 828.000000 99.335479 +841.000000 828.000000 99.318672 +842.000000 828.000000 99.297998 +843.000000 828.000000 99.291953 +844.000000 828.000000 99.282236 +845.000000 828.000000 99.270586 +846.000000 828.000000 99.259307 +847.000000 828.000000 99.250635 +848.000000 828.000000 99.244062 +849.000000 828.000000 99.237637 +850.000000 828.000000 99.231504 +851.000000 828.000000 99.226270 +852.000000 828.000000 99.224307 +853.000000 828.000000 99.223721 +854.000000 828.000000 99.224043 +855.000000 828.000000 99.224590 +856.000000 828.000000 99.225127 +857.000000 828.000000 99.225439 +858.000000 828.000000 99.228535 +859.000000 828.000000 99.232998 +860.000000 828.000000 99.237070 +861.000000 828.000000 99.238145 +862.000000 828.000000 99.238340 +863.000000 828.000000 99.238223 +864.000000 828.000000 99.234707 +865.000000 828.000000 99.229883 +866.000000 828.000000 99.227461 +867.000000 828.000000 99.228848 +868.000000 828.000000 99.230889 +869.000000 828.000000 99.230781 +870.000000 828.000000 99.229707 +871.000000 828.000000 99.228447 +872.000000 828.000000 99.226875 +873.000000 828.000000 99.225117 +874.000000 828.000000 99.223428 +875.000000 828.000000 99.222080 +876.000000 828.000000 99.220928 +877.000000 828.000000 99.220498 +878.000000 828.000000 99.221973 +879.000000 828.000000 99.226670 +880.000000 828.000000 99.232227 +881.000000 828.000000 99.237803 +882.000000 828.000000 99.246016 +883.000000 828.000000 99.254775 +884.000000 828.000000 99.264443 +885.000000 828.000000 99.274189 +886.000000 828.000000 99.283467 +887.000000 828.000000 99.299961 +888.000000 828.000000 99.311953 +889.000000 828.000000 99.321973 +890.000000 828.000000 99.330625 +891.000000 828.000000 99.338447 +892.000000 828.000000 99.346748 +893.000000 828.000000 99.356465 +894.000000 828.000000 99.365000 +895.000000 828.000000 99.372803 +896.000000 828.000000 99.380566 +897.000000 828.000000 99.390928 +898.000000 828.000000 99.412979 +821.000000 829.000000 103.149482 +822.000000 829.000000 102.250869 +823.000000 829.000000 101.410449 +824.000000 829.000000 100.744463 +825.000000 829.000000 100.068027 +826.000000 829.000000 99.842920 +827.000000 829.000000 99.747646 +828.000000 829.000000 99.653965 +829.000000 829.000000 99.558623 +830.000000 829.000000 99.483584 +831.000000 829.000000 99.467646 +832.000000 829.000000 99.460830 +833.000000 829.000000 99.443359 +834.000000 829.000000 99.431279 +835.000000 829.000000 99.420771 +836.000000 829.000000 99.411328 +837.000000 829.000000 99.402334 +838.000000 829.000000 99.394219 +839.000000 829.000000 99.383496 +840.000000 829.000000 99.365137 +841.000000 829.000000 99.347168 +842.000000 829.000000 99.330293 +843.000000 829.000000 99.318105 +844.000000 829.000000 99.307842 +845.000000 829.000000 99.296104 +846.000000 829.000000 99.282031 +847.000000 829.000000 99.271289 +848.000000 829.000000 99.265059 +849.000000 829.000000 99.258457 +850.000000 829.000000 99.252246 +851.000000 829.000000 99.247070 +852.000000 829.000000 99.246045 +853.000000 829.000000 99.246191 +854.000000 829.000000 99.246533 +855.000000 829.000000 99.247451 +856.000000 829.000000 99.248467 +857.000000 829.000000 99.250947 +858.000000 829.000000 99.260117 +859.000000 829.000000 99.264297 +860.000000 829.000000 99.265645 +861.000000 829.000000 99.265264 +862.000000 829.000000 99.265342 +863.000000 829.000000 99.264854 +864.000000 829.000000 99.261348 +865.000000 829.000000 99.258516 +866.000000 829.000000 99.256777 +867.000000 829.000000 99.256465 +868.000000 829.000000 99.255947 +869.000000 829.000000 99.254893 +870.000000 829.000000 99.253193 +871.000000 829.000000 99.251631 +872.000000 829.000000 99.249971 +873.000000 829.000000 99.248057 +874.000000 829.000000 99.246152 +875.000000 829.000000 99.244775 +876.000000 829.000000 99.244355 +877.000000 829.000000 99.244248 +878.000000 829.000000 99.246357 +879.000000 829.000000 99.251338 +880.000000 829.000000 99.257324 +881.000000 829.000000 99.263213 +882.000000 829.000000 99.270977 +883.000000 829.000000 99.278301 +884.000000 829.000000 99.288857 +885.000000 829.000000 99.299922 +886.000000 829.000000 99.317422 +887.000000 829.000000 99.334424 +888.000000 829.000000 99.348584 +889.000000 829.000000 99.358350 +890.000000 829.000000 99.365635 +891.000000 829.000000 99.372617 +892.000000 829.000000 99.375674 +893.000000 829.000000 99.383193 +894.000000 829.000000 99.390449 +895.000000 829.000000 99.396943 +896.000000 829.000000 99.437148 +897.000000 829.000000 99.463564 +898.000000 829.000000 99.522275 +821.000000 830.000000 103.488809 +822.000000 830.000000 102.800850 +823.000000 830.000000 102.194785 +824.000000 830.000000 101.499111 +825.000000 830.000000 100.901895 +826.000000 830.000000 100.202588 +827.000000 830.000000 99.884844 +828.000000 830.000000 99.757109 +829.000000 830.000000 99.659102 +830.000000 830.000000 99.577764 +831.000000 830.000000 99.532139 +832.000000 830.000000 99.504775 +833.000000 830.000000 99.481084 +834.000000 830.000000 99.455635 +835.000000 830.000000 99.442949 +836.000000 830.000000 99.436074 +837.000000 830.000000 99.425684 +838.000000 830.000000 99.416934 +839.000000 830.000000 99.408799 +840.000000 830.000000 99.394307 +841.000000 830.000000 99.378115 +842.000000 830.000000 99.362344 +843.000000 830.000000 99.347559 +844.000000 830.000000 99.334141 +845.000000 830.000000 99.320869 +846.000000 830.000000 99.305469 +847.000000 830.000000 99.293945 +848.000000 830.000000 99.286729 +849.000000 830.000000 99.279951 +850.000000 830.000000 99.273457 +851.000000 830.000000 99.268203 +852.000000 830.000000 99.267520 +853.000000 830.000000 99.268125 +854.000000 830.000000 99.268848 +855.000000 830.000000 99.270967 +856.000000 830.000000 99.272891 +857.000000 830.000000 99.278330 +858.000000 830.000000 99.287500 +859.000000 830.000000 99.298076 +860.000000 830.000000 99.296162 +861.000000 830.000000 99.292559 +862.000000 830.000000 99.291914 +863.000000 830.000000 99.290840 +864.000000 830.000000 99.288545 +865.000000 830.000000 99.286680 +866.000000 830.000000 99.285439 +867.000000 830.000000 99.283281 +868.000000 830.000000 99.281514 +869.000000 830.000000 99.280186 +870.000000 830.000000 99.277725 +871.000000 830.000000 99.275059 +872.000000 830.000000 99.273457 +873.000000 830.000000 99.271426 +874.000000 830.000000 99.269180 +875.000000 830.000000 99.267373 +876.000000 830.000000 99.266914 +877.000000 830.000000 99.266777 +878.000000 830.000000 99.270771 +879.000000 830.000000 99.276025 +880.000000 830.000000 99.282168 +881.000000 830.000000 99.288623 +882.000000 830.000000 99.294795 +883.000000 830.000000 99.300713 +884.000000 830.000000 99.315771 +885.000000 830.000000 99.333320 +886.000000 830.000000 99.350439 +887.000000 830.000000 99.368848 +888.000000 830.000000 99.386953 +889.000000 830.000000 99.395342 +890.000000 830.000000 99.402510 +891.000000 830.000000 99.409805 +892.000000 830.000000 99.449229 +893.000000 830.000000 99.454033 +894.000000 830.000000 99.501377 +895.000000 830.000000 99.531914 +896.000000 830.000000 99.579453 +897.000000 830.000000 99.616963 +898.000000 830.000000 99.660801 +821.000000 831.000000 103.828076 +822.000000 831.000000 103.319424 +823.000000 831.000000 102.826641 +824.000000 831.000000 102.446563 +825.000000 831.000000 101.974473 +826.000000 831.000000 101.045947 +827.000000 831.000000 99.995137 +828.000000 831.000000 99.842588 +829.000000 831.000000 99.749180 +830.000000 831.000000 99.666123 +831.000000 831.000000 99.613066 +832.000000 831.000000 99.569941 +833.000000 831.000000 99.522246 +834.000000 831.000000 99.483320 +835.000000 831.000000 99.468809 +836.000000 831.000000 99.469639 +837.000000 831.000000 99.466035 +838.000000 831.000000 99.455176 +839.000000 831.000000 99.436406 +840.000000 831.000000 99.423213 +841.000000 831.000000 99.408125 +842.000000 831.000000 99.392715 +843.000000 831.000000 99.378057 +844.000000 831.000000 99.361836 +845.000000 831.000000 99.346396 +846.000000 831.000000 99.331406 +847.000000 831.000000 99.318750 +848.000000 831.000000 99.308906 +849.000000 831.000000 99.301602 +850.000000 831.000000 99.295078 +851.000000 831.000000 99.288682 +852.000000 831.000000 99.288740 +853.000000 831.000000 99.290078 +854.000000 831.000000 99.291035 +855.000000 831.000000 99.293975 +856.000000 831.000000 99.298564 +857.000000 831.000000 99.304121 +858.000000 831.000000 99.311162 +859.000000 831.000000 99.317637 +860.000000 831.000000 99.319941 +861.000000 831.000000 99.319766 +862.000000 831.000000 99.317988 +863.000000 831.000000 99.316514 +864.000000 831.000000 99.315381 +865.000000 831.000000 99.314414 +866.000000 831.000000 99.312979 +867.000000 831.000000 99.310850 +868.000000 831.000000 99.308896 +869.000000 831.000000 99.306572 +870.000000 831.000000 99.303232 +871.000000 831.000000 99.297998 +872.000000 831.000000 99.296895 +873.000000 831.000000 99.295312 +874.000000 831.000000 99.292764 +875.000000 831.000000 99.290283 +876.000000 831.000000 99.288252 +877.000000 831.000000 99.290850 +878.000000 831.000000 99.295791 +879.000000 831.000000 99.300811 +880.000000 831.000000 99.306963 +881.000000 831.000000 99.314189 +882.000000 831.000000 99.320781 +883.000000 831.000000 99.330020 +884.000000 831.000000 99.345898 +885.000000 831.000000 99.362695 +886.000000 831.000000 99.383447 +887.000000 831.000000 99.402930 +888.000000 831.000000 99.450723 +889.000000 831.000000 99.477852 +890.000000 831.000000 99.508428 +891.000000 831.000000 99.511719 +892.000000 831.000000 99.585322 +893.000000 831.000000 99.660635 +894.000000 831.000000 99.790176 +895.000000 831.000000 99.857617 +896.000000 831.000000 99.886846 +897.000000 831.000000 99.924238 +898.000000 831.000000 99.954326 +821.000000 832.000000 104.437998 +822.000000 832.000000 104.077520 +823.000000 832.000000 103.695547 +824.000000 832.000000 103.307285 +825.000000 832.000000 102.825498 +826.000000 832.000000 101.550439 +827.000000 832.000000 100.383428 +828.000000 832.000000 99.907539 +829.000000 832.000000 99.827363 +830.000000 832.000000 99.751143 +831.000000 832.000000 99.695059 +832.000000 832.000000 99.646641 +833.000000 832.000000 99.599844 +834.000000 832.000000 99.548770 +835.000000 832.000000 99.514424 +836.000000 832.000000 99.510312 +837.000000 832.000000 99.508877 +838.000000 832.000000 99.497285 +839.000000 832.000000 99.477373 +840.000000 832.000000 99.456260 +841.000000 832.000000 99.437695 +842.000000 832.000000 99.421436 +843.000000 832.000000 99.403730 +844.000000 832.000000 99.388057 +845.000000 832.000000 99.372354 +846.000000 832.000000 99.357471 +847.000000 832.000000 99.343389 +848.000000 832.000000 99.331846 +849.000000 832.000000 99.323906 +850.000000 832.000000 99.317744 +851.000000 832.000000 99.310430 +852.000000 832.000000 99.311289 +853.000000 832.000000 99.312881 +854.000000 832.000000 99.314736 +855.000000 832.000000 99.317930 +856.000000 832.000000 99.323066 +857.000000 832.000000 99.328369 +858.000000 832.000000 99.334512 +859.000000 832.000000 99.339766 +860.000000 832.000000 99.343389 +861.000000 832.000000 99.345059 +862.000000 832.000000 99.343184 +863.000000 832.000000 99.341836 +864.000000 832.000000 99.341016 +865.000000 832.000000 99.340273 +866.000000 832.000000 99.339854 +867.000000 832.000000 99.338945 +868.000000 832.000000 99.336641 +869.000000 832.000000 99.333438 +870.000000 832.000000 99.330762 +871.000000 832.000000 99.326816 +872.000000 832.000000 99.323535 +873.000000 832.000000 99.320674 +874.000000 832.000000 99.317871 +875.000000 832.000000 99.315957 +876.000000 832.000000 99.314629 +877.000000 832.000000 99.320068 +878.000000 832.000000 99.325947 +879.000000 832.000000 99.327998 +880.000000 832.000000 99.331475 +881.000000 832.000000 99.339961 +882.000000 832.000000 99.347734 +883.000000 832.000000 99.357500 +884.000000 832.000000 99.369980 +885.000000 832.000000 99.393721 +886.000000 832.000000 99.430742 +887.000000 832.000000 99.484932 +888.000000 832.000000 99.546035 +889.000000 832.000000 99.583027 +890.000000 832.000000 99.640254 +891.000000 832.000000 99.759043 +892.000000 832.000000 99.942236 +893.000000 832.000000 100.106533 +894.000000 832.000000 100.190068 +895.000000 832.000000 100.187500 +896.000000 832.000000 100.224668 +897.000000 832.000000 100.247949 +898.000000 832.000000 100.253701 +821.000000 833.000000 106.534600 +822.000000 833.000000 105.491885 +823.000000 833.000000 104.694336 +824.000000 833.000000 104.077559 +825.000000 833.000000 103.472256 +826.000000 833.000000 102.135234 +827.000000 833.000000 100.820371 +828.000000 833.000000 100.176895 +829.000000 833.000000 99.949053 +830.000000 833.000000 99.858086 +831.000000 833.000000 99.789414 +832.000000 833.000000 99.729727 +833.000000 833.000000 99.667354 +834.000000 833.000000 99.629961 +835.000000 833.000000 99.597197 +836.000000 833.000000 99.569014 +837.000000 833.000000 99.555498 +838.000000 833.000000 99.542549 +839.000000 833.000000 99.519424 +840.000000 833.000000 99.492783 +841.000000 833.000000 99.466992 +842.000000 833.000000 99.446924 +843.000000 833.000000 99.428271 +844.000000 833.000000 99.411475 +845.000000 833.000000 99.396787 +846.000000 833.000000 99.382627 +847.000000 833.000000 99.368574 +848.000000 833.000000 99.356572 +849.000000 833.000000 99.348359 +850.000000 833.000000 99.342021 +851.000000 833.000000 99.336748 +852.000000 833.000000 99.335928 +853.000000 833.000000 99.337432 +854.000000 833.000000 99.339395 +855.000000 833.000000 99.342695 +856.000000 833.000000 99.347549 +857.000000 833.000000 99.352578 +858.000000 833.000000 99.357598 +859.000000 833.000000 99.362480 +860.000000 833.000000 99.365508 +861.000000 833.000000 99.367432 +862.000000 833.000000 99.367676 +863.000000 833.000000 99.366270 +864.000000 833.000000 99.366377 +865.000000 833.000000 99.367393 +866.000000 833.000000 99.368721 +867.000000 833.000000 99.368496 +868.000000 833.000000 99.367295 +869.000000 833.000000 99.364980 +870.000000 833.000000 99.361309 +871.000000 833.000000 99.356963 +872.000000 833.000000 99.351631 +873.000000 833.000000 99.348408 +874.000000 833.000000 99.344668 +875.000000 833.000000 99.342168 +876.000000 833.000000 99.353271 +877.000000 833.000000 99.356904 +878.000000 833.000000 99.362520 +879.000000 833.000000 99.357764 +880.000000 833.000000 99.358311 +881.000000 833.000000 99.370977 +882.000000 833.000000 99.383408 +883.000000 833.000000 99.393838 +884.000000 833.000000 99.420918 +885.000000 833.000000 99.472227 +886.000000 833.000000 99.522939 +887.000000 833.000000 99.574473 +888.000000 833.000000 99.722617 +889.000000 833.000000 99.890537 +890.000000 833.000000 100.040352 +891.000000 833.000000 100.198789 +892.000000 833.000000 100.388662 +893.000000 833.000000 100.513096 +894.000000 833.000000 100.598047 +895.000000 833.000000 100.606455 +896.000000 833.000000 100.623750 +897.000000 833.000000 100.634336 +898.000000 833.000000 100.645576 +821.000000 834.000000 108.286201 +822.000000 834.000000 107.460000 +823.000000 834.000000 106.175225 +824.000000 834.000000 104.986748 +825.000000 834.000000 103.859248 +826.000000 834.000000 102.599961 +827.000000 834.000000 101.413086 +828.000000 834.000000 100.724238 +829.000000 834.000000 100.222783 +830.000000 834.000000 99.983965 +831.000000 834.000000 99.883643 +832.000000 834.000000 99.816484 +833.000000 834.000000 99.753906 +834.000000 834.000000 99.715254 +835.000000 834.000000 99.679131 +836.000000 834.000000 99.645527 +837.000000 834.000000 99.613105 +838.000000 834.000000 99.589541 +839.000000 834.000000 99.559258 +840.000000 834.000000 99.526943 +841.000000 834.000000 99.495937 +842.000000 834.000000 99.473555 +843.000000 834.000000 99.451318 +844.000000 834.000000 99.433184 +845.000000 834.000000 99.418701 +846.000000 834.000000 99.405342 +847.000000 834.000000 99.392002 +848.000000 834.000000 99.379521 +849.000000 834.000000 99.372646 +850.000000 834.000000 99.367139 +851.000000 834.000000 99.361621 +852.000000 834.000000 99.359922 +853.000000 834.000000 99.362012 +854.000000 834.000000 99.364541 +855.000000 834.000000 99.368340 +856.000000 834.000000 99.371748 +857.000000 834.000000 99.376738 +858.000000 834.000000 99.381719 +859.000000 834.000000 99.386406 +860.000000 834.000000 99.388350 +861.000000 834.000000 99.389707 +862.000000 834.000000 99.390752 +863.000000 834.000000 99.391064 +864.000000 834.000000 99.392119 +865.000000 834.000000 99.395049 +866.000000 834.000000 99.398545 +867.000000 834.000000 99.400186 +868.000000 834.000000 99.399678 +869.000000 834.000000 99.398535 +870.000000 834.000000 99.393799 +871.000000 834.000000 99.387529 +872.000000 834.000000 99.383906 +873.000000 834.000000 99.377412 +874.000000 834.000000 99.385771 +875.000000 834.000000 99.403799 +876.000000 834.000000 99.420088 +877.000000 834.000000 99.419951 +878.000000 834.000000 99.406182 +879.000000 834.000000 99.386123 +880.000000 834.000000 99.389551 +881.000000 834.000000 99.406035 +882.000000 834.000000 99.443936 +883.000000 834.000000 99.479551 +884.000000 834.000000 99.534287 +885.000000 834.000000 99.582090 +886.000000 834.000000 99.719600 +887.000000 834.000000 99.943008 +888.000000 834.000000 100.120547 +889.000000 834.000000 100.306768 +890.000000 834.000000 100.498281 +891.000000 834.000000 100.647783 +892.000000 834.000000 100.895859 +893.000000 834.000000 101.013838 +894.000000 834.000000 101.069248 +895.000000 834.000000 101.064453 +896.000000 834.000000 101.047129 +897.000000 834.000000 101.052998 +898.000000 834.000000 101.085957 +821.000000 835.000000 109.438213 +822.000000 835.000000 108.229707 +823.000000 835.000000 107.052168 +824.000000 835.000000 105.716924 +825.000000 835.000000 104.383643 +826.000000 835.000000 103.203701 +827.000000 835.000000 102.086064 +828.000000 835.000000 101.409307 +829.000000 835.000000 100.829648 +830.000000 835.000000 100.396133 +831.000000 835.000000 100.162539 +832.000000 835.000000 99.921621 +833.000000 835.000000 99.857490 +834.000000 835.000000 99.800518 +835.000000 835.000000 99.761943 +836.000000 835.000000 99.721465 +837.000000 835.000000 99.692510 +838.000000 835.000000 99.653721 +839.000000 835.000000 99.615342 +840.000000 835.000000 99.571289 +841.000000 835.000000 99.524414 +842.000000 835.000000 99.498389 +843.000000 835.000000 99.472998 +844.000000 835.000000 99.453438 +845.000000 835.000000 99.439961 +846.000000 835.000000 99.427500 +847.000000 835.000000 99.414775 +848.000000 835.000000 99.403486 +849.000000 835.000000 99.397402 +850.000000 835.000000 99.394883 +851.000000 835.000000 99.389746 +852.000000 835.000000 99.384062 +853.000000 835.000000 99.387686 +854.000000 835.000000 99.392266 +855.000000 835.000000 99.395801 +856.000000 835.000000 99.398613 +857.000000 835.000000 99.400693 +858.000000 835.000000 99.405273 +859.000000 835.000000 99.408750 +860.000000 835.000000 99.410723 +861.000000 835.000000 99.411982 +862.000000 835.000000 99.413428 +863.000000 835.000000 99.416533 +864.000000 835.000000 99.422559 +865.000000 835.000000 99.427793 +866.000000 835.000000 99.432402 +867.000000 835.000000 99.434941 +868.000000 835.000000 99.435303 +869.000000 835.000000 99.433115 +870.000000 835.000000 99.427451 +871.000000 835.000000 99.419912 +872.000000 835.000000 99.425479 +873.000000 835.000000 99.452432 +874.000000 835.000000 99.444160 +875.000000 835.000000 99.480928 +876.000000 835.000000 99.496250 +877.000000 835.000000 99.493965 +878.000000 835.000000 99.465479 +879.000000 835.000000 99.440732 +880.000000 835.000000 99.446279 +881.000000 835.000000 99.482744 +882.000000 835.000000 99.526621 +883.000000 835.000000 99.583477 +884.000000 835.000000 99.748457 +885.000000 835.000000 99.956758 +886.000000 835.000000 100.166348 +887.000000 835.000000 100.402832 +888.000000 835.000000 100.638213 +889.000000 835.000000 100.826230 +890.000000 835.000000 100.990342 +891.000000 835.000000 101.171738 +892.000000 835.000000 101.497109 +893.000000 835.000000 101.609668 +894.000000 835.000000 101.728271 +895.000000 835.000000 101.758379 +896.000000 835.000000 101.725850 +897.000000 835.000000 101.698975 +898.000000 835.000000 101.727471 +821.000000 836.000000 110.357266 +822.000000 836.000000 108.845859 +823.000000 836.000000 107.215645 +824.000000 836.000000 105.823623 +825.000000 836.000000 104.512656 +826.000000 836.000000 103.505615 +827.000000 836.000000 102.738418 +828.000000 836.000000 102.092402 +829.000000 836.000000 101.615801 +830.000000 836.000000 101.016670 +831.000000 836.000000 100.553389 +832.000000 836.000000 100.195273 +833.000000 836.000000 99.954482 +834.000000 836.000000 99.890605 +835.000000 836.000000 99.839932 +836.000000 836.000000 99.802715 +837.000000 836.000000 99.760957 +838.000000 836.000000 99.719121 +839.000000 836.000000 99.678906 +840.000000 836.000000 99.635303 +841.000000 836.000000 99.584961 +842.000000 836.000000 99.523135 +843.000000 836.000000 99.493242 +844.000000 836.000000 99.470625 +845.000000 836.000000 99.459600 +846.000000 836.000000 99.448916 +847.000000 836.000000 99.438740 +848.000000 836.000000 99.432012 +849.000000 836.000000 99.428809 +850.000000 836.000000 99.425586 +851.000000 836.000000 99.419824 +852.000000 836.000000 99.415947 +853.000000 836.000000 99.417295 +854.000000 836.000000 99.420518 +855.000000 836.000000 99.424219 +856.000000 836.000000 99.425146 +857.000000 836.000000 99.426230 +858.000000 836.000000 99.428877 +859.000000 836.000000 99.431543 +860.000000 836.000000 99.432646 +861.000000 836.000000 99.433672 +862.000000 836.000000 99.435381 +863.000000 836.000000 99.442852 +864.000000 836.000000 99.454316 +865.000000 836.000000 99.463311 +866.000000 836.000000 99.467744 +867.000000 836.000000 99.470498 +868.000000 836.000000 99.473213 +869.000000 836.000000 99.473037 +870.000000 836.000000 99.471514 +871.000000 836.000000 99.491318 +872.000000 836.000000 99.504229 +873.000000 836.000000 99.551523 +874.000000 836.000000 99.565752 +875.000000 836.000000 99.585381 +876.000000 836.000000 99.596416 +877.000000 836.000000 99.582520 +878.000000 836.000000 99.561934 +879.000000 836.000000 99.546221 +880.000000 836.000000 99.550732 +881.000000 836.000000 99.581279 +882.000000 836.000000 99.663975 +883.000000 836.000000 99.900000 +884.000000 836.000000 100.142197 +885.000000 836.000000 100.360566 +886.000000 836.000000 100.577158 +887.000000 836.000000 100.832041 +888.000000 836.000000 101.129072 +889.000000 836.000000 101.423496 +890.000000 836.000000 101.708311 +891.000000 836.000000 102.039531 +892.000000 836.000000 102.242158 +893.000000 836.000000 102.412813 +894.000000 836.000000 102.520117 +895.000000 836.000000 102.591387 +896.000000 836.000000 102.633848 +897.000000 836.000000 102.528428 +898.000000 836.000000 102.383965 +821.000000 837.000000 110.424541 +822.000000 837.000000 108.545557 +823.000000 837.000000 106.772246 +824.000000 837.000000 105.431289 +825.000000 837.000000 104.386396 +826.000000 837.000000 103.762275 +827.000000 837.000000 103.128662 +828.000000 837.000000 102.547422 +829.000000 837.000000 101.982686 +830.000000 837.000000 101.446719 +831.000000 837.000000 100.992217 +832.000000 837.000000 100.577783 +833.000000 837.000000 100.186641 +834.000000 837.000000 99.974971 +835.000000 837.000000 99.906572 +836.000000 837.000000 99.872656 +837.000000 837.000000 99.829365 +838.000000 837.000000 99.786055 +839.000000 837.000000 99.744492 +840.000000 837.000000 99.703613 +841.000000 837.000000 99.647852 +842.000000 837.000000 99.587637 +843.000000 837.000000 99.524941 +844.000000 837.000000 99.494131 +845.000000 837.000000 99.478457 +846.000000 837.000000 99.469727 +847.000000 837.000000 99.463936 +848.000000 837.000000 99.461182 +849.000000 837.000000 99.461846 +850.000000 837.000000 99.459453 +851.000000 837.000000 99.456143 +852.000000 837.000000 99.453555 +853.000000 837.000000 99.452285 +854.000000 837.000000 99.451328 +855.000000 837.000000 99.452910 +856.000000 837.000000 99.453057 +857.000000 837.000000 99.452285 +858.000000 837.000000 99.454521 +859.000000 837.000000 99.456084 +860.000000 837.000000 99.458633 +861.000000 837.000000 99.455957 +862.000000 837.000000 99.457275 +863.000000 837.000000 99.468516 +864.000000 837.000000 99.482852 +865.000000 837.000000 99.503193 +866.000000 837.000000 99.502158 +867.000000 837.000000 99.506826 +868.000000 837.000000 99.514209 +869.000000 837.000000 99.525137 +870.000000 837.000000 99.542754 +871.000000 837.000000 99.587402 +872.000000 837.000000 99.604932 +873.000000 837.000000 99.679717 +874.000000 837.000000 99.720107 +875.000000 837.000000 99.765146 +876.000000 837.000000 99.767646 +877.000000 837.000000 99.753887 +878.000000 837.000000 99.743291 +879.000000 837.000000 99.742393 +880.000000 837.000000 99.750205 +881.000000 837.000000 99.825898 +882.000000 837.000000 100.001045 +883.000000 837.000000 100.230596 +884.000000 837.000000 100.536621 +885.000000 837.000000 100.779941 +886.000000 837.000000 101.007910 +887.000000 837.000000 101.273076 +888.000000 837.000000 101.793525 +889.000000 837.000000 102.202783 +890.000000 837.000000 102.582422 +891.000000 837.000000 102.862031 +892.000000 837.000000 103.003096 +893.000000 837.000000 103.155996 +894.000000 837.000000 103.221309 +895.000000 837.000000 103.270332 +896.000000 837.000000 103.287939 +897.000000 837.000000 103.187637 +898.000000 837.000000 103.046455 +821.000000 838.000000 110.107432 +822.000000 838.000000 108.087168 +823.000000 838.000000 106.359814 +824.000000 838.000000 104.950645 +825.000000 838.000000 104.372715 +826.000000 838.000000 103.875420 +827.000000 838.000000 103.340732 +828.000000 838.000000 102.882354 +829.000000 838.000000 102.344199 +830.000000 838.000000 101.833643 +831.000000 838.000000 101.391367 +832.000000 838.000000 100.987119 +833.000000 838.000000 100.595117 +834.000000 838.000000 100.228496 +835.000000 838.000000 100.021934 +836.000000 838.000000 99.956787 +837.000000 838.000000 99.904238 +838.000000 838.000000 99.858701 +839.000000 838.000000 99.816680 +840.000000 838.000000 99.786514 +841.000000 838.000000 99.730898 +842.000000 838.000000 99.685078 +843.000000 838.000000 99.642344 +844.000000 838.000000 99.590977 +845.000000 838.000000 99.548584 +846.000000 838.000000 99.520410 +847.000000 838.000000 99.505645 +848.000000 838.000000 99.491592 +849.000000 838.000000 99.495137 +850.000000 838.000000 99.495859 +851.000000 838.000000 99.493174 +852.000000 838.000000 99.489873 +853.000000 838.000000 99.487285 +854.000000 838.000000 99.485898 +855.000000 838.000000 99.487109 +856.000000 838.000000 99.487588 +857.000000 838.000000 99.482568 +858.000000 838.000000 99.483115 +859.000000 838.000000 99.497373 +860.000000 838.000000 99.489424 +861.000000 838.000000 99.474902 +862.000000 838.000000 99.478965 +863.000000 838.000000 99.491084 +864.000000 838.000000 99.540186 +865.000000 838.000000 99.562412 +866.000000 838.000000 99.579717 +867.000000 838.000000 99.545879 +868.000000 838.000000 99.566475 +869.000000 838.000000 99.620000 +870.000000 838.000000 99.657891 +871.000000 838.000000 99.753545 +872.000000 838.000000 99.805166 +873.000000 838.000000 99.844902 +874.000000 838.000000 99.869336 +875.000000 838.000000 99.916191 +876.000000 838.000000 99.954316 +877.000000 838.000000 99.970869 +878.000000 838.000000 99.977607 +879.000000 838.000000 100.039629 +880.000000 838.000000 100.115381 +881.000000 838.000000 100.277090 +882.000000 838.000000 100.444180 +883.000000 838.000000 100.690381 +884.000000 838.000000 100.924961 +885.000000 838.000000 101.180781 +886.000000 838.000000 101.607207 +887.000000 838.000000 102.065566 +888.000000 838.000000 102.553848 +889.000000 838.000000 102.901250 +890.000000 838.000000 103.225283 +891.000000 838.000000 103.537227 +892.000000 838.000000 103.722021 +893.000000 838.000000 103.856221 +894.000000 838.000000 103.907988 +895.000000 838.000000 103.949697 +896.000000 838.000000 103.864258 +897.000000 838.000000 103.791895 +898.000000 838.000000 103.649473 +821.000000 839.000000 109.881416 +822.000000 839.000000 107.977002 +823.000000 839.000000 106.268838 +824.000000 839.000000 104.713242 +825.000000 839.000000 104.347197 +826.000000 839.000000 103.980947 +827.000000 839.000000 103.530381 +828.000000 839.000000 103.117246 +829.000000 839.000000 102.689873 +830.000000 839.000000 102.234150 +831.000000 839.000000 101.793076 +832.000000 839.000000 101.379492 +833.000000 839.000000 100.992734 +834.000000 839.000000 100.605811 +835.000000 839.000000 100.267656 +836.000000 839.000000 100.082070 +837.000000 839.000000 99.980742 +838.000000 839.000000 99.938359 +839.000000 839.000000 99.899414 +840.000000 839.000000 99.875146 +841.000000 839.000000 99.846895 +842.000000 839.000000 99.790752 +843.000000 839.000000 99.762354 +844.000000 839.000000 99.736270 +845.000000 839.000000 99.665645 +846.000000 839.000000 99.618457 +847.000000 839.000000 99.601670 +848.000000 839.000000 99.581191 +849.000000 839.000000 99.549521 +850.000000 839.000000 99.533877 +851.000000 839.000000 99.538799 +852.000000 839.000000 99.530488 +853.000000 839.000000 99.522852 +854.000000 839.000000 99.518408 +855.000000 839.000000 99.523789 +856.000000 839.000000 99.528867 +857.000000 839.000000 99.516533 +858.000000 839.000000 99.515000 +859.000000 839.000000 99.584912 +860.000000 839.000000 99.604805 +861.000000 839.000000 99.595527 +862.000000 839.000000 99.600693 +863.000000 839.000000 99.621797 +864.000000 839.000000 99.657861 +865.000000 839.000000 99.756387 +866.000000 839.000000 99.788164 +867.000000 839.000000 99.829102 +868.000000 839.000000 99.825078 +869.000000 839.000000 99.810410 +870.000000 839.000000 99.853418 +871.000000 839.000000 99.957588 +872.000000 839.000000 100.012793 +873.000000 839.000000 100.036592 +874.000000 839.000000 100.098994 +875.000000 839.000000 100.030693 +876.000000 839.000000 100.158311 +877.000000 839.000000 100.284072 +878.000000 839.000000 100.379297 +879.000000 839.000000 100.526250 +880.000000 839.000000 100.658906 +881.000000 839.000000 100.838350 +882.000000 839.000000 100.951504 +883.000000 839.000000 101.137266 +884.000000 839.000000 101.388828 +885.000000 839.000000 101.787207 +886.000000 839.000000 102.205488 +887.000000 839.000000 102.694814 +888.000000 839.000000 103.142207 +889.000000 839.000000 103.589697 +890.000000 839.000000 103.861133 +891.000000 839.000000 104.131260 +892.000000 839.000000 104.387373 +893.000000 839.000000 104.523359 +894.000000 839.000000 104.578125 +895.000000 839.000000 104.597813 +896.000000 839.000000 104.536396 +897.000000 839.000000 104.377236 +898.000000 839.000000 104.192617 +821.000000 840.000000 110.184736 +822.000000 840.000000 108.412119 +823.000000 840.000000 106.416387 +824.000000 840.000000 104.951758 +825.000000 840.000000 104.401475 +826.000000 840.000000 104.105176 +827.000000 840.000000 103.695273 +828.000000 840.000000 103.387920 +829.000000 840.000000 103.018408 +830.000000 840.000000 102.601660 +831.000000 840.000000 102.163486 +832.000000 840.000000 101.725430 +833.000000 840.000000 101.350020 +834.000000 840.000000 100.994639 +835.000000 840.000000 100.669395 +836.000000 840.000000 100.432578 +837.000000 840.000000 100.202520 +838.000000 840.000000 100.073154 +839.000000 840.000000 100.033232 +840.000000 840.000000 100.015078 +841.000000 840.000000 99.980371 +842.000000 840.000000 99.944258 +843.000000 840.000000 99.883691 +844.000000 840.000000 99.850117 +845.000000 840.000000 99.813564 +846.000000 840.000000 99.771719 +847.000000 840.000000 99.742197 +848.000000 840.000000 99.685361 +849.000000 840.000000 99.638359 +850.000000 840.000000 99.600752 +851.000000 840.000000 99.596152 +852.000000 840.000000 99.593398 +853.000000 840.000000 99.581133 +854.000000 840.000000 99.555713 +855.000000 840.000000 99.581934 +856.000000 840.000000 99.609805 +857.000000 840.000000 99.634375 +858.000000 840.000000 99.667842 +859.000000 840.000000 99.734141 +860.000000 840.000000 99.780742 +861.000000 840.000000 99.798887 +862.000000 840.000000 99.800693 +863.000000 840.000000 99.819375 +864.000000 840.000000 99.840947 +865.000000 840.000000 99.977090 +866.000000 840.000000 100.002900 +867.000000 840.000000 100.092549 +868.000000 840.000000 100.127402 +869.000000 840.000000 100.158438 +870.000000 840.000000 100.243330 +871.000000 840.000000 100.360078 +872.000000 840.000000 100.492207 +873.000000 840.000000 100.575498 +874.000000 840.000000 100.601846 +875.000000 840.000000 100.663975 +876.000000 840.000000 100.758643 +877.000000 840.000000 100.837002 +878.000000 840.000000 100.909404 +879.000000 840.000000 101.059609 +880.000000 840.000000 101.173037 +881.000000 840.000000 101.357412 +882.000000 840.000000 101.560693 +883.000000 840.000000 101.773262 +884.000000 840.000000 102.003301 +885.000000 840.000000 102.319072 +886.000000 840.000000 102.792383 +887.000000 840.000000 103.241504 +888.000000 840.000000 103.687119 +889.000000 840.000000 104.149307 +890.000000 840.000000 104.481123 +891.000000 840.000000 104.741885 +892.000000 840.000000 104.977334 +893.000000 840.000000 105.118828 +894.000000 840.000000 105.213945 +895.000000 840.000000 105.238799 +896.000000 840.000000 105.189463 +897.000000 840.000000 104.960762 +898.000000 840.000000 104.746543 +821.000000 841.000000 110.772285 +822.000000 841.000000 109.018809 +823.000000 841.000000 106.999912 +824.000000 841.000000 105.525371 +825.000000 841.000000 104.510303 +826.000000 841.000000 104.275840 +827.000000 841.000000 103.967598 +828.000000 841.000000 103.673730 +829.000000 841.000000 103.319678 +830.000000 841.000000 102.974932 +831.000000 841.000000 102.554053 +832.000000 841.000000 102.130635 +833.000000 841.000000 101.737314 +834.000000 841.000000 101.426006 +835.000000 841.000000 101.068682 +836.000000 841.000000 100.803604 +837.000000 841.000000 100.641387 +838.000000 841.000000 100.486855 +839.000000 841.000000 100.343701 +840.000000 841.000000 100.261846 +841.000000 841.000000 100.196104 +842.000000 841.000000 100.158965 +843.000000 841.000000 100.136084 +844.000000 841.000000 100.024893 +845.000000 841.000000 99.960479 +846.000000 841.000000 99.928545 +847.000000 841.000000 99.862119 +848.000000 841.000000 99.778379 +849.000000 841.000000 99.731914 +850.000000 841.000000 99.704648 +851.000000 841.000000 99.699971 +852.000000 841.000000 99.698447 +853.000000 841.000000 99.697715 +854.000000 841.000000 99.690889 +855.000000 841.000000 99.728848 +856.000000 841.000000 99.759990 +857.000000 841.000000 99.807939 +858.000000 841.000000 99.862471 +859.000000 841.000000 99.908857 +860.000000 841.000000 99.956318 +861.000000 841.000000 100.007861 +862.000000 841.000000 100.117188 +863.000000 841.000000 100.162412 +864.000000 841.000000 100.175908 +865.000000 841.000000 100.227754 +866.000000 841.000000 100.405098 +867.000000 841.000000 100.509736 +868.000000 841.000000 100.648418 +869.000000 841.000000 100.747627 +870.000000 841.000000 100.886221 +871.000000 841.000000 101.077988 +872.000000 841.000000 101.217910 +873.000000 841.000000 101.253320 +874.000000 841.000000 101.297881 +875.000000 841.000000 101.346357 +876.000000 841.000000 101.429580 +877.000000 841.000000 101.523623 +878.000000 841.000000 101.604131 +879.000000 841.000000 101.704727 +880.000000 841.000000 101.818936 +881.000000 841.000000 102.041250 +882.000000 841.000000 102.241074 +883.000000 841.000000 102.436543 +884.000000 841.000000 102.677881 +885.000000 841.000000 102.911445 +886.000000 841.000000 103.295068 +887.000000 841.000000 103.780605 +888.000000 841.000000 104.193564 +889.000000 841.000000 104.694551 +890.000000 841.000000 105.098057 +891.000000 841.000000 105.327139 +892.000000 841.000000 105.513330 +893.000000 841.000000 105.663262 +894.000000 841.000000 105.748574 +895.000000 841.000000 105.762471 +896.000000 841.000000 105.685957 +897.000000 841.000000 105.498301 +898.000000 841.000000 105.328174 +821.000000 842.000000 110.887256 +822.000000 842.000000 109.289160 +823.000000 842.000000 107.588750 +824.000000 842.000000 106.135322 +825.000000 842.000000 104.861387 +826.000000 842.000000 104.441426 +827.000000 842.000000 104.236260 +828.000000 842.000000 103.965703 +829.000000 842.000000 103.601797 +830.000000 842.000000 103.248574 +831.000000 842.000000 102.900381 +832.000000 842.000000 102.530430 +833.000000 842.000000 102.170068 +834.000000 842.000000 101.882441 +835.000000 842.000000 101.550527 +836.000000 842.000000 101.292090 +837.000000 842.000000 101.080850 +838.000000 842.000000 100.909619 +839.000000 842.000000 100.762695 +840.000000 842.000000 100.661094 +841.000000 842.000000 100.587793 +842.000000 842.000000 100.566123 +843.000000 842.000000 100.590029 +844.000000 842.000000 100.598408 +845.000000 842.000000 100.447168 +846.000000 842.000000 100.267148 +847.000000 842.000000 100.128242 +848.000000 842.000000 99.989053 +849.000000 842.000000 99.840449 +850.000000 842.000000 99.798682 +851.000000 842.000000 99.791133 +852.000000 842.000000 99.796582 +853.000000 842.000000 99.811279 +854.000000 842.000000 99.844082 +855.000000 842.000000 99.891875 +856.000000 842.000000 99.930234 +857.000000 842.000000 100.081416 +858.000000 842.000000 100.175137 +859.000000 842.000000 100.373730 +860.000000 842.000000 100.540068 +861.000000 842.000000 100.690957 +862.000000 842.000000 100.780312 +863.000000 842.000000 100.869150 +864.000000 842.000000 100.973711 +865.000000 842.000000 101.127461 +866.000000 842.000000 101.342373 +867.000000 842.000000 101.415625 +868.000000 842.000000 101.446113 +869.000000 842.000000 101.518115 +870.000000 842.000000 101.696279 +871.000000 842.000000 101.892285 +872.000000 842.000000 102.007441 +873.000000 842.000000 102.042793 +874.000000 842.000000 102.083643 +875.000000 842.000000 102.127881 +876.000000 842.000000 102.192939 +877.000000 842.000000 102.266016 +878.000000 842.000000 102.355527 +879.000000 842.000000 102.459180 +880.000000 842.000000 102.568770 +881.000000 842.000000 102.738086 +882.000000 842.000000 102.915303 +883.000000 842.000000 103.156475 +884.000000 842.000000 103.382998 +885.000000 842.000000 103.631191 +886.000000 842.000000 103.905801 +887.000000 842.000000 104.344326 +888.000000 842.000000 104.830215 +889.000000 842.000000 105.295742 +890.000000 842.000000 105.595313 +891.000000 842.000000 105.848184 +892.000000 842.000000 106.045830 +893.000000 842.000000 106.220566 +894.000000 842.000000 106.319697 +895.000000 842.000000 106.374932 +896.000000 842.000000 106.248535 +897.000000 842.000000 106.096836 +898.000000 842.000000 106.096484 +821.000000 843.000000 110.812227 +822.000000 843.000000 109.321787 +823.000000 843.000000 107.810293 +824.000000 843.000000 106.565254 +825.000000 843.000000 105.410313 +826.000000 843.000000 104.616797 +827.000000 843.000000 104.314248 +828.000000 843.000000 104.065732 +829.000000 843.000000 103.758994 +830.000000 843.000000 103.458545 +831.000000 843.000000 103.182510 +832.000000 843.000000 102.827891 +833.000000 843.000000 102.528311 +834.000000 843.000000 102.301846 +835.000000 843.000000 102.007549 +836.000000 843.000000 101.757314 +837.000000 843.000000 101.547012 +838.000000 843.000000 101.355830 +839.000000 843.000000 101.197520 +840.000000 843.000000 101.095000 +841.000000 843.000000 101.023086 +842.000000 843.000000 101.058193 +843.000000 843.000000 101.101846 +844.000000 843.000000 101.140576 +845.000000 843.000000 101.013330 +846.000000 843.000000 100.834385 +847.000000 843.000000 100.643848 +848.000000 843.000000 100.420957 +849.000000 843.000000 100.223037 +850.000000 843.000000 99.961797 +851.000000 843.000000 99.917881 +852.000000 843.000000 99.895342 +853.000000 843.000000 99.949297 +854.000000 843.000000 99.966045 +855.000000 843.000000 100.233037 +856.000000 843.000000 100.531572 +857.000000 843.000000 100.682100 +858.000000 843.000000 100.890576 +859.000000 843.000000 101.086045 +860.000000 843.000000 101.245615 +861.000000 843.000000 101.363135 +862.000000 843.000000 101.497178 +863.000000 843.000000 101.653408 +864.000000 843.000000 101.853027 +865.000000 843.000000 102.120615 +866.000000 843.000000 102.402607 +867.000000 843.000000 102.362598 +868.000000 843.000000 102.334023 +869.000000 843.000000 102.402002 +870.000000 843.000000 102.565635 +871.000000 843.000000 102.766982 +872.000000 843.000000 102.797734 +873.000000 843.000000 102.829199 +874.000000 843.000000 102.865127 +875.000000 843.000000 102.901172 +876.000000 843.000000 102.974414 +877.000000 843.000000 103.042451 +878.000000 843.000000 103.118506 +879.000000 843.000000 103.202119 +880.000000 843.000000 103.301348 +881.000000 843.000000 103.404609 +882.000000 843.000000 103.577764 +883.000000 843.000000 103.839531 +884.000000 843.000000 104.042617 +885.000000 843.000000 104.288477 +886.000000 843.000000 104.579141 +887.000000 843.000000 104.992227 +888.000000 843.000000 105.426914 +889.000000 843.000000 105.806992 +890.000000 843.000000 106.129629 +891.000000 843.000000 106.385303 +892.000000 843.000000 106.649268 +893.000000 843.000000 106.870811 +894.000000 843.000000 107.023975 +895.000000 843.000000 107.102246 +896.000000 843.000000 106.970820 +897.000000 843.000000 106.882383 +898.000000 843.000000 106.907227 +821.000000 844.000000 110.762852 +822.000000 844.000000 109.252676 +823.000000 844.000000 107.948701 +824.000000 844.000000 106.702187 +825.000000 844.000000 105.569727 +826.000000 844.000000 104.594609 +827.000000 844.000000 104.359414 +828.000000 844.000000 104.134883 +829.000000 844.000000 103.866953 +830.000000 844.000000 103.600723 +831.000000 844.000000 103.385039 +832.000000 844.000000 103.170742 +833.000000 844.000000 102.863018 +834.000000 844.000000 102.701143 +835.000000 844.000000 102.445322 +836.000000 844.000000 102.192959 +837.000000 844.000000 101.942578 +838.000000 844.000000 101.749590 +839.000000 844.000000 101.620186 +840.000000 844.000000 101.507461 +841.000000 844.000000 101.476328 +842.000000 844.000000 101.538633 +843.000000 844.000000 101.598145 +844.000000 844.000000 101.618066 +845.000000 844.000000 101.576475 +846.000000 844.000000 101.421777 +847.000000 844.000000 101.206270 +848.000000 844.000000 101.012217 +849.000000 844.000000 100.755967 +850.000000 844.000000 100.483096 +851.000000 844.000000 100.315635 +852.000000 844.000000 100.346943 +853.000000 844.000000 100.530225 +854.000000 844.000000 100.697793 +855.000000 844.000000 100.940537 +856.000000 844.000000 101.186709 +857.000000 844.000000 101.334307 +858.000000 844.000000 101.527139 +859.000000 844.000000 101.766064 +860.000000 844.000000 101.972031 +861.000000 844.000000 102.148789 +862.000000 844.000000 102.374658 +863.000000 844.000000 102.576201 +864.000000 844.000000 102.794404 +865.000000 844.000000 103.038760 +866.000000 844.000000 103.185605 +867.000000 844.000000 103.224082 +868.000000 844.000000 103.221367 +869.000000 844.000000 103.300225 +870.000000 844.000000 103.457656 +871.000000 844.000000 103.631045 +872.000000 844.000000 103.603887 +873.000000 844.000000 103.597881 +874.000000 844.000000 103.599941 +875.000000 844.000000 103.662539 +876.000000 844.000000 103.754912 +877.000000 844.000000 103.811592 +878.000000 844.000000 103.870811 +879.000000 844.000000 103.901357 +880.000000 844.000000 103.949346 +881.000000 844.000000 104.018955 +882.000000 844.000000 104.217998 +883.000000 844.000000 104.458613 +884.000000 844.000000 104.676855 +885.000000 844.000000 104.951172 +886.000000 844.000000 105.271221 +887.000000 844.000000 105.645508 +888.000000 844.000000 106.032910 +889.000000 844.000000 106.383789 +890.000000 844.000000 106.690225 +891.000000 844.000000 106.992568 +892.000000 844.000000 107.286367 +893.000000 844.000000 107.520469 +894.000000 844.000000 107.663203 +895.000000 844.000000 107.741299 +896.000000 844.000000 107.691777 +897.000000 844.000000 107.683340 +898.000000 844.000000 107.661240 +821.000000 845.000000 110.304961 +822.000000 845.000000 108.982578 +823.000000 845.000000 107.720127 +824.000000 845.000000 106.567539 +825.000000 845.000000 105.134932 +826.000000 845.000000 104.561621 +827.000000 845.000000 104.392373 +828.000000 845.000000 104.191123 +829.000000 845.000000 103.980332 +830.000000 845.000000 103.718691 +831.000000 845.000000 103.536553 +832.000000 845.000000 103.356240 +833.000000 845.000000 103.185498 +834.000000 845.000000 102.971807 +835.000000 845.000000 102.725947 +836.000000 845.000000 102.453838 +837.000000 845.000000 102.227930 +838.000000 845.000000 102.050791 +839.000000 845.000000 101.935439 +840.000000 845.000000 101.878096 +841.000000 845.000000 101.906025 +842.000000 845.000000 101.894346 +843.000000 845.000000 101.898828 +844.000000 845.000000 101.891572 +845.000000 845.000000 101.865332 +846.000000 845.000000 101.805273 +847.000000 845.000000 101.690068 +848.000000 845.000000 101.513555 +849.000000 845.000000 101.266328 +850.000000 845.000000 101.093311 +851.000000 845.000000 100.917100 +852.000000 845.000000 100.916338 +853.000000 845.000000 101.090020 +854.000000 845.000000 101.393525 +855.000000 845.000000 101.630898 +856.000000 845.000000 101.675703 +857.000000 845.000000 101.819287 +858.000000 845.000000 102.027090 +859.000000 845.000000 102.342969 +860.000000 845.000000 102.647051 +861.000000 845.000000 102.940830 +862.000000 845.000000 103.243389 +863.000000 845.000000 103.524727 +864.000000 845.000000 103.699053 +865.000000 845.000000 103.827402 +866.000000 845.000000 103.935059 +867.000000 845.000000 104.057754 +868.000000 845.000000 104.145557 +869.000000 845.000000 104.174961 +870.000000 845.000000 104.257920 +871.000000 845.000000 104.314326 +872.000000 845.000000 104.348506 +873.000000 845.000000 104.340098 +874.000000 845.000000 104.285156 +875.000000 845.000000 104.334307 +876.000000 845.000000 104.450107 +877.000000 845.000000 104.518311 +878.000000 845.000000 104.518994 +879.000000 845.000000 104.502432 +880.000000 845.000000 104.584238 +881.000000 845.000000 104.685967 +882.000000 845.000000 104.871660 +883.000000 845.000000 105.126309 +884.000000 845.000000 105.356660 +885.000000 845.000000 105.640684 +886.000000 845.000000 105.956025 +887.000000 845.000000 106.318428 +888.000000 845.000000 106.683691 +889.000000 845.000000 107.032002 +890.000000 845.000000 107.347090 +891.000000 845.000000 107.620469 +892.000000 845.000000 107.888750 +893.000000 845.000000 108.116621 +894.000000 845.000000 108.270166 +895.000000 845.000000 108.366104 +896.000000 845.000000 108.446230 +897.000000 845.000000 108.436611 +898.000000 845.000000 108.451904 +821.000000 846.000000 109.973779 +822.000000 846.000000 108.425225 +823.000000 846.000000 107.504199 +824.000000 846.000000 106.519316 +825.000000 846.000000 105.503809 +826.000000 846.000000 104.945674 +827.000000 846.000000 104.579307 +828.000000 846.000000 104.368184 +829.000000 846.000000 104.114355 +830.000000 846.000000 103.864639 +831.000000 846.000000 103.663047 +832.000000 846.000000 103.489932 +833.000000 846.000000 103.319346 +834.000000 846.000000 103.153271 +835.000000 846.000000 102.927910 +836.000000 846.000000 102.682900 +837.000000 846.000000 102.493916 +838.000000 846.000000 102.344541 +839.000000 846.000000 102.246201 +840.000000 846.000000 102.219141 +841.000000 846.000000 102.189775 +842.000000 846.000000 102.169766 +843.000000 846.000000 102.187725 +844.000000 846.000000 102.160693 +845.000000 846.000000 102.129941 +846.000000 846.000000 102.061631 +847.000000 846.000000 101.953145 +848.000000 846.000000 101.815244 +849.000000 846.000000 101.717715 +850.000000 846.000000 101.593271 +851.000000 846.000000 101.390244 +852.000000 846.000000 101.278408 +853.000000 846.000000 101.437480 +854.000000 846.000000 101.674658 +855.000000 846.000000 101.884805 +856.000000 846.000000 102.036230 +857.000000 846.000000 102.278613 +858.000000 846.000000 102.541172 +859.000000 846.000000 102.975049 +860.000000 846.000000 103.355342 +861.000000 846.000000 103.722178 +862.000000 846.000000 104.018604 +863.000000 846.000000 104.286006 +864.000000 846.000000 104.438477 +865.000000 846.000000 104.584512 +866.000000 846.000000 104.721699 +867.000000 846.000000 104.867129 +868.000000 846.000000 104.982217 +869.000000 846.000000 105.026143 +870.000000 846.000000 105.079307 +871.000000 846.000000 105.118770 +872.000000 846.000000 105.129326 +873.000000 846.000000 105.137881 +874.000000 846.000000 105.101172 +875.000000 846.000000 105.122012 +876.000000 846.000000 105.146807 +877.000000 846.000000 105.194766 +878.000000 846.000000 105.205439 +879.000000 846.000000 105.229258 +880.000000 846.000000 105.252432 +881.000000 846.000000 105.344805 +882.000000 846.000000 105.561621 +883.000000 846.000000 105.804463 +884.000000 846.000000 106.045898 +885.000000 846.000000 106.295156 +886.000000 846.000000 106.650215 +887.000000 846.000000 107.004551 +888.000000 846.000000 107.337275 +889.000000 846.000000 107.665322 +890.000000 846.000000 108.005107 +891.000000 846.000000 108.269609 +892.000000 846.000000 108.518916 +893.000000 846.000000 108.728916 +894.000000 846.000000 108.892578 +895.000000 846.000000 109.053887 +896.000000 846.000000 109.159512 +897.000000 846.000000 109.139229 +898.000000 846.000000 109.128730 +821.000000 847.000000 109.918447 +822.000000 847.000000 108.749033 +823.000000 847.000000 107.642432 +824.000000 847.000000 106.560293 +825.000000 847.000000 105.883213 +826.000000 847.000000 105.308535 +827.000000 847.000000 104.860654 +828.000000 847.000000 104.582070 +829.000000 847.000000 104.273643 +830.000000 847.000000 104.025439 +831.000000 847.000000 103.782109 +832.000000 847.000000 103.614092 +833.000000 847.000000 103.441182 +834.000000 847.000000 103.280615 +835.000000 847.000000 103.106670 +836.000000 847.000000 102.899121 +837.000000 847.000000 102.732969 +838.000000 847.000000 102.615713 +839.000000 847.000000 102.625615 +840.000000 847.000000 102.602676 +841.000000 847.000000 102.518887 +842.000000 847.000000 102.468584 +843.000000 847.000000 102.490303 +844.000000 847.000000 102.424463 +845.000000 847.000000 102.391768 +846.000000 847.000000 102.336582 +847.000000 847.000000 102.194053 +848.000000 847.000000 102.074834 +849.000000 847.000000 102.023008 +850.000000 847.000000 101.899092 +851.000000 847.000000 101.733086 +852.000000 847.000000 101.592617 +853.000000 847.000000 101.651719 +854.000000 847.000000 101.852705 +855.000000 847.000000 102.099033 +856.000000 847.000000 102.340879 +857.000000 847.000000 102.687783 +858.000000 847.000000 103.141885 +859.000000 847.000000 103.638838 +860.000000 847.000000 104.073350 +861.000000 847.000000 104.489336 +862.000000 847.000000 104.785020 +863.000000 847.000000 105.029824 +864.000000 847.000000 105.205449 +865.000000 847.000000 105.375088 +866.000000 847.000000 105.540303 +867.000000 847.000000 105.681064 +868.000000 847.000000 105.783301 +869.000000 847.000000 105.867686 +870.000000 847.000000 105.915010 +871.000000 847.000000 105.955605 +872.000000 847.000000 105.918535 +873.000000 847.000000 105.927285 +874.000000 847.000000 105.921543 +875.000000 847.000000 105.944502 +876.000000 847.000000 105.860430 +877.000000 847.000000 105.810732 +878.000000 847.000000 105.824902 +879.000000 847.000000 105.862734 +880.000000 847.000000 105.905234 +881.000000 847.000000 106.013867 +882.000000 847.000000 106.226094 +883.000000 847.000000 106.508506 +884.000000 847.000000 106.778770 +885.000000 847.000000 107.027979 +886.000000 847.000000 107.345957 +887.000000 847.000000 107.678057 +888.000000 847.000000 107.982480 +889.000000 847.000000 108.309316 +890.000000 847.000000 108.641445 +891.000000 847.000000 108.927754 +892.000000 847.000000 109.213037 +893.000000 847.000000 109.428574 +894.000000 847.000000 109.609580 +895.000000 847.000000 109.726006 +896.000000 847.000000 109.809424 +897.000000 847.000000 109.777588 +898.000000 847.000000 109.787305 +821.000000 848.000000 110.093711 +822.000000 848.000000 109.154072 +823.000000 848.000000 108.063721 +824.000000 848.000000 106.933799 +825.000000 848.000000 106.162168 +826.000000 848.000000 105.554619 +827.000000 848.000000 105.137588 +828.000000 848.000000 104.767402 +829.000000 848.000000 104.427324 +830.000000 848.000000 104.150049 +831.000000 848.000000 103.936270 +832.000000 848.000000 103.750039 +833.000000 848.000000 103.582715 +834.000000 848.000000 103.446113 +835.000000 848.000000 103.270732 +836.000000 848.000000 103.102393 +837.000000 848.000000 103.013252 +838.000000 848.000000 102.958594 +839.000000 848.000000 102.962773 +840.000000 848.000000 102.951680 +841.000000 848.000000 102.906367 +842.000000 848.000000 102.846123 +843.000000 848.000000 102.818418 +844.000000 848.000000 102.776602 +845.000000 848.000000 102.697441 +846.000000 848.000000 102.620137 +847.000000 848.000000 102.516748 +848.000000 848.000000 102.372656 +849.000000 848.000000 102.195889 +850.000000 848.000000 102.108184 +851.000000 848.000000 102.030674 +852.000000 848.000000 101.918584 +853.000000 848.000000 101.901748 +854.000000 848.000000 102.082998 +855.000000 848.000000 102.300469 +856.000000 848.000000 102.676191 +857.000000 848.000000 103.163760 +858.000000 848.000000 103.736348 +859.000000 848.000000 104.327012 +860.000000 848.000000 104.799131 +861.000000 848.000000 105.195342 +862.000000 848.000000 105.543857 +863.000000 848.000000 105.791641 +864.000000 848.000000 105.988311 +865.000000 848.000000 106.166748 +866.000000 848.000000 106.325801 +867.000000 848.000000 106.518730 +868.000000 848.000000 106.607471 +869.000000 848.000000 106.708506 +870.000000 848.000000 106.800576 +871.000000 848.000000 106.854004 +872.000000 848.000000 106.798691 +873.000000 848.000000 106.732373 +874.000000 848.000000 106.726543 +875.000000 848.000000 106.772217 +876.000000 848.000000 106.700244 +877.000000 848.000000 106.537783 +878.000000 848.000000 106.464365 +879.000000 848.000000 106.499893 +880.000000 848.000000 106.554375 +881.000000 848.000000 106.693652 +882.000000 848.000000 106.985703 +883.000000 848.000000 107.259570 +884.000000 848.000000 107.513145 +885.000000 848.000000 107.757920 +886.000000 848.000000 108.070889 +887.000000 848.000000 108.347051 +888.000000 848.000000 108.630977 +889.000000 848.000000 108.983301 +890.000000 848.000000 109.363867 +891.000000 848.000000 109.658760 +892.000000 848.000000 109.909102 +893.000000 848.000000 110.101875 +894.000000 848.000000 110.269736 +895.000000 848.000000 110.380039 +896.000000 848.000000 110.411035 +897.000000 848.000000 110.431592 +898.000000 848.000000 110.470547 +821.000000 849.000000 110.068066 +822.000000 849.000000 109.140986 +823.000000 849.000000 108.187578 +824.000000 849.000000 107.289922 +825.000000 849.000000 106.434209 +826.000000 849.000000 105.706553 +827.000000 849.000000 105.213154 +828.000000 849.000000 104.850596 +829.000000 849.000000 104.531396 +830.000000 849.000000 104.279795 +831.000000 849.000000 104.082705 +832.000000 849.000000 103.871328 +833.000000 849.000000 103.752432 +834.000000 849.000000 103.645967 +835.000000 849.000000 103.469814 +836.000000 849.000000 103.387051 +837.000000 849.000000 103.331104 +838.000000 849.000000 103.323994 +839.000000 849.000000 103.414717 +840.000000 849.000000 103.370908 +841.000000 849.000000 103.328438 +842.000000 849.000000 103.277734 +843.000000 849.000000 103.222090 +844.000000 849.000000 103.173896 +845.000000 849.000000 103.133154 +846.000000 849.000000 103.076650 +847.000000 849.000000 102.880645 +848.000000 849.000000 102.658623 +849.000000 849.000000 102.444736 +850.000000 849.000000 102.285176 +851.000000 849.000000 102.185576 +852.000000 849.000000 102.112529 +853.000000 849.000000 102.079102 +854.000000 849.000000 102.241064 +855.000000 849.000000 102.494736 +856.000000 849.000000 102.954824 +857.000000 849.000000 103.624443 +858.000000 849.000000 104.338789 +859.000000 849.000000 105.053994 +860.000000 849.000000 105.559336 +861.000000 849.000000 105.962197 +862.000000 849.000000 106.276533 +863.000000 849.000000 106.569609 +864.000000 849.000000 106.785371 +865.000000 849.000000 106.951572 +866.000000 849.000000 107.140400 +867.000000 849.000000 107.369766 +868.000000 849.000000 107.506982 +869.000000 849.000000 107.602432 +870.000000 849.000000 107.736875 +871.000000 849.000000 107.790801 +872.000000 849.000000 107.724346 +873.000000 849.000000 107.658477 +874.000000 849.000000 107.632471 +875.000000 849.000000 107.579551 +876.000000 849.000000 107.504824 +877.000000 849.000000 107.305518 +878.000000 849.000000 107.123711 +879.000000 849.000000 107.136309 +880.000000 849.000000 107.235117 +881.000000 849.000000 107.448770 +882.000000 849.000000 107.712920 +883.000000 849.000000 108.015830 +884.000000 849.000000 108.280898 +885.000000 849.000000 108.470625 +886.000000 849.000000 108.701865 +887.000000 849.000000 109.038174 +888.000000 849.000000 109.325586 +889.000000 849.000000 109.731416 +890.000000 849.000000 110.119639 +891.000000 849.000000 110.381289 +892.000000 849.000000 110.601973 +893.000000 849.000000 110.750313 +894.000000 849.000000 110.896260 +895.000000 849.000000 111.007949 +896.000000 849.000000 111.077725 +897.000000 849.000000 111.110313 +898.000000 849.000000 111.144844 +821.000000 850.000000 109.837676 +822.000000 850.000000 108.926494 +823.000000 850.000000 108.055313 +824.000000 850.000000 107.287422 +825.000000 850.000000 106.543975 +826.000000 850.000000 105.846924 +827.000000 850.000000 105.343096 +828.000000 850.000000 104.983604 +829.000000 850.000000 104.672041 +830.000000 850.000000 104.448809 +831.000000 850.000000 104.234443 +832.000000 850.000000 104.087051 +833.000000 850.000000 103.953301 +834.000000 850.000000 103.799199 +835.000000 850.000000 103.724746 +836.000000 850.000000 103.650313 +837.000000 850.000000 103.671846 +838.000000 850.000000 103.705117 +839.000000 850.000000 103.761699 +840.000000 850.000000 103.780723 +841.000000 850.000000 103.765830 +842.000000 850.000000 103.727939 +843.000000 850.000000 103.655781 +844.000000 850.000000 103.641240 +845.000000 850.000000 103.653232 +846.000000 850.000000 103.586338 +847.000000 850.000000 103.322051 +848.000000 850.000000 103.008154 +849.000000 850.000000 102.772646 +850.000000 850.000000 102.541445 +851.000000 850.000000 102.435264 +852.000000 850.000000 102.300020 +853.000000 850.000000 102.269434 +854.000000 850.000000 102.427461 +855.000000 850.000000 102.834727 +856.000000 850.000000 103.412432 +857.000000 850.000000 104.073301 +858.000000 850.000000 104.821523 +859.000000 850.000000 105.688838 +860.000000 850.000000 106.407197 +861.000000 850.000000 106.724648 +862.000000 850.000000 107.035049 +863.000000 850.000000 107.333047 +864.000000 850.000000 107.569688 +865.000000 850.000000 107.695000 +866.000000 850.000000 107.995449 +867.000000 850.000000 108.234707 +868.000000 850.000000 108.456982 +869.000000 850.000000 108.564170 +870.000000 850.000000 108.635469 +871.000000 850.000000 108.690273 +872.000000 850.000000 108.786230 +873.000000 850.000000 108.697617 +874.000000 850.000000 108.559961 +875.000000 850.000000 108.455430 +876.000000 850.000000 108.284922 +877.000000 850.000000 108.104971 +878.000000 850.000000 107.930205 +879.000000 850.000000 107.896016 +880.000000 850.000000 108.021973 +881.000000 850.000000 108.219268 +882.000000 850.000000 108.475420 +883.000000 850.000000 108.793896 +884.000000 850.000000 109.026299 +885.000000 850.000000 109.176475 +886.000000 850.000000 109.402715 +887.000000 850.000000 109.703467 +888.000000 850.000000 110.025039 +889.000000 850.000000 110.377295 +890.000000 850.000000 110.755674 +891.000000 850.000000 111.088271 +892.000000 850.000000 111.284844 +893.000000 850.000000 111.451709 +894.000000 850.000000 111.577158 +895.000000 850.000000 111.678516 +896.000000 850.000000 111.744170 +897.000000 850.000000 111.793750 +898.000000 850.000000 111.822783 +821.000000 851.000000 110.149912 +822.000000 851.000000 108.945195 +823.000000 851.000000 107.977461 +824.000000 851.000000 107.274053 +825.000000 851.000000 106.555918 +826.000000 851.000000 105.914590 +827.000000 851.000000 105.482881 +828.000000 851.000000 105.160039 +829.000000 851.000000 104.902490 +830.000000 851.000000 104.651025 +831.000000 851.000000 104.419121 +832.000000 851.000000 104.302822 +833.000000 851.000000 104.186191 +834.000000 851.000000 104.083643 +835.000000 851.000000 103.963457 +836.000000 851.000000 103.917598 +837.000000 851.000000 103.963701 +838.000000 851.000000 104.009941 +839.000000 851.000000 104.044512 +840.000000 851.000000 104.073408 +841.000000 851.000000 104.094844 +842.000000 851.000000 104.141025 +843.000000 851.000000 104.159316 +844.000000 851.000000 104.090576 +845.000000 851.000000 104.072051 +846.000000 851.000000 103.991279 +847.000000 851.000000 103.831875 +848.000000 851.000000 103.483203 +849.000000 851.000000 103.240918 +850.000000 851.000000 102.980254 +851.000000 851.000000 102.645654 +852.000000 851.000000 102.526260 +853.000000 851.000000 102.509141 +854.000000 851.000000 102.783389 +855.000000 851.000000 103.392822 +856.000000 851.000000 104.010332 +857.000000 851.000000 104.679912 +858.000000 851.000000 105.331191 +859.000000 851.000000 106.210479 +860.000000 851.000000 106.974531 +861.000000 851.000000 107.455459 +862.000000 851.000000 107.877275 +863.000000 851.000000 108.169121 +864.000000 851.000000 108.422881 +865.000000 851.000000 108.653643 +866.000000 851.000000 108.917773 +867.000000 851.000000 109.105488 +868.000000 851.000000 109.364824 +869.000000 851.000000 109.521572 +870.000000 851.000000 109.641426 +871.000000 851.000000 109.725273 +872.000000 851.000000 109.774170 +873.000000 851.000000 109.736592 +874.000000 851.000000 109.546367 +875.000000 851.000000 109.296221 +876.000000 851.000000 109.085518 +877.000000 851.000000 108.851318 +878.000000 851.000000 108.665732 +879.000000 851.000000 108.620449 +880.000000 851.000000 108.740596 +881.000000 851.000000 108.904346 +882.000000 851.000000 109.132568 +883.000000 851.000000 109.418789 +884.000000 851.000000 109.651143 +885.000000 851.000000 109.832988 +886.000000 851.000000 110.068047 +887.000000 851.000000 110.377656 +888.000000 851.000000 110.715352 +889.000000 851.000000 111.060088 +890.000000 851.000000 111.396211 +891.000000 851.000000 111.716279 +892.000000 851.000000 111.966875 +893.000000 851.000000 112.139834 +894.000000 851.000000 112.273145 +895.000000 851.000000 112.357363 +896.000000 851.000000 112.398262 +897.000000 851.000000 112.466973 +898.000000 851.000000 112.510098 +821.000000 852.000000 110.206279 +822.000000 852.000000 109.054189 +823.000000 852.000000 108.157803 +824.000000 852.000000 107.444736 +825.000000 852.000000 106.682383 +826.000000 852.000000 106.015059 +827.000000 852.000000 105.637666 +828.000000 852.000000 105.296143 +829.000000 852.000000 105.016465 +830.000000 852.000000 104.791963 +831.000000 852.000000 104.634287 +832.000000 852.000000 104.514521 +833.000000 852.000000 104.421074 +834.000000 852.000000 104.328604 +835.000000 852.000000 104.252568 +836.000000 852.000000 104.209043 +837.000000 852.000000 104.235322 +838.000000 852.000000 104.256221 +839.000000 852.000000 104.313477 +840.000000 852.000000 104.407422 +841.000000 852.000000 104.472109 +842.000000 852.000000 104.511699 +843.000000 852.000000 104.540361 +844.000000 852.000000 104.503213 +845.000000 852.000000 104.444287 +846.000000 852.000000 104.343926 +847.000000 852.000000 104.218730 +848.000000 852.000000 103.927695 +849.000000 852.000000 103.704512 +850.000000 852.000000 103.518330 +851.000000 852.000000 103.231992 +852.000000 852.000000 102.946768 +853.000000 852.000000 102.946865 +854.000000 852.000000 103.361123 +855.000000 852.000000 103.920234 +856.000000 852.000000 104.605850 +857.000000 852.000000 105.222764 +858.000000 852.000000 105.783535 +859.000000 852.000000 106.651680 +860.000000 852.000000 107.522412 +861.000000 852.000000 108.182910 +862.000000 852.000000 108.588994 +863.000000 852.000000 109.117715 +864.000000 852.000000 109.343018 +865.000000 852.000000 109.505254 +866.000000 852.000000 109.766328 +867.000000 852.000000 110.068301 +868.000000 852.000000 110.321045 +869.000000 852.000000 110.508730 +870.000000 852.000000 110.676387 +871.000000 852.000000 110.782617 +872.000000 852.000000 110.834004 +873.000000 852.000000 110.751357 +874.000000 852.000000 110.554365 +875.000000 852.000000 110.209111 +876.000000 852.000000 110.000059 +877.000000 852.000000 109.860596 +878.000000 852.000000 109.650107 +879.000000 852.000000 109.416680 +880.000000 852.000000 109.487012 +881.000000 852.000000 109.650840 +882.000000 852.000000 109.841201 +883.000000 852.000000 110.049971 +884.000000 852.000000 110.272168 +885.000000 852.000000 110.485742 +886.000000 852.000000 110.721641 +887.000000 852.000000 111.052832 +888.000000 852.000000 111.382764 +889.000000 852.000000 111.719717 +890.000000 852.000000 112.055654 +891.000000 852.000000 112.392695 +892.000000 852.000000 112.631699 +893.000000 852.000000 112.837070 +894.000000 852.000000 112.966729 +895.000000 852.000000 113.018818 +896.000000 852.000000 113.040078 +897.000000 852.000000 113.122480 +898.000000 852.000000 113.131943 +821.000000 853.000000 109.344160 +822.000000 853.000000 108.920723 +823.000000 853.000000 108.302256 +824.000000 853.000000 107.500107 +825.000000 853.000000 106.869268 +826.000000 853.000000 106.174258 +827.000000 853.000000 105.741787 +828.000000 853.000000 105.403838 +829.000000 853.000000 105.150938 +830.000000 853.000000 104.960850 +831.000000 853.000000 104.756260 +832.000000 853.000000 104.666406 +833.000000 853.000000 104.657539 +834.000000 853.000000 104.600156 +835.000000 853.000000 104.533203 +836.000000 853.000000 104.498330 +837.000000 853.000000 104.498594 +838.000000 853.000000 104.537324 +839.000000 853.000000 104.648438 +840.000000 853.000000 104.760557 +841.000000 853.000000 104.880352 +842.000000 853.000000 104.950547 +843.000000 853.000000 104.947100 +844.000000 853.000000 104.925273 +845.000000 853.000000 104.847607 +846.000000 853.000000 104.736953 +847.000000 853.000000 104.611201 +848.000000 853.000000 104.397842 +849.000000 853.000000 104.198984 +850.000000 853.000000 104.046338 +851.000000 853.000000 103.794922 +852.000000 853.000000 103.620195 +853.000000 853.000000 103.700937 +854.000000 853.000000 103.943438 +855.000000 853.000000 104.446816 +856.000000 853.000000 105.009561 +857.000000 853.000000 105.495615 +858.000000 853.000000 106.068809 +859.000000 853.000000 106.951621 +860.000000 853.000000 107.896299 +861.000000 853.000000 108.575107 +862.000000 853.000000 109.316348 +863.000000 853.000000 109.762686 +864.000000 853.000000 110.008975 +865.000000 853.000000 110.315000 +866.000000 853.000000 110.686973 +867.000000 853.000000 110.997393 +868.000000 853.000000 111.352373 +869.000000 853.000000 111.594463 +870.000000 853.000000 111.802832 +871.000000 853.000000 111.945332 +872.000000 853.000000 111.920000 +873.000000 853.000000 111.730146 +874.000000 853.000000 111.486191 +875.000000 853.000000 111.154639 +876.000000 853.000000 110.929805 +877.000000 853.000000 110.734551 +878.000000 853.000000 110.532773 +879.000000 853.000000 110.264893 +880.000000 853.000000 110.192305 +881.000000 853.000000 110.402246 +882.000000 853.000000 110.546484 +883.000000 853.000000 110.701953 +884.000000 853.000000 110.931367 +885.000000 853.000000 111.157412 +886.000000 853.000000 111.366660 +887.000000 853.000000 111.677100 +888.000000 853.000000 112.044922 +889.000000 853.000000 112.393438 +890.000000 853.000000 112.802979 +891.000000 853.000000 113.064277 +892.000000 853.000000 113.301777 +893.000000 853.000000 113.476777 +894.000000 853.000000 113.587871 +895.000000 853.000000 113.663857 +896.000000 853.000000 113.710820 +897.000000 853.000000 113.734248 +898.000000 853.000000 113.749336 +821.000000 854.000000 107.824004 +822.000000 854.000000 107.641543 +823.000000 854.000000 107.537031 +824.000000 854.000000 107.379980 +825.000000 854.000000 106.994346 +826.000000 854.000000 106.316113 +827.000000 854.000000 105.823008 +828.000000 854.000000 105.539365 +829.000000 854.000000 105.291426 +830.000000 854.000000 105.097227 +831.000000 854.000000 104.922344 +832.000000 854.000000 104.883213 +833.000000 854.000000 104.875430 +834.000000 854.000000 104.846143 +835.000000 854.000000 104.819541 +836.000000 854.000000 104.795615 +837.000000 854.000000 104.804297 +838.000000 854.000000 104.892256 +839.000000 854.000000 105.052998 +840.000000 854.000000 105.170225 +841.000000 854.000000 105.291699 +842.000000 854.000000 105.389766 +843.000000 854.000000 105.380137 +844.000000 854.000000 105.301426 +845.000000 854.000000 105.220918 +846.000000 854.000000 105.106045 +847.000000 854.000000 104.976494 +848.000000 854.000000 104.848389 +849.000000 854.000000 104.701045 +850.000000 854.000000 104.523320 +851.000000 854.000000 104.343916 +852.000000 854.000000 104.247490 +853.000000 854.000000 104.291836 +854.000000 854.000000 104.446445 +855.000000 854.000000 104.804795 +856.000000 854.000000 105.225391 +857.000000 854.000000 105.725469 +858.000000 854.000000 106.407305 +859.000000 854.000000 107.158877 +860.000000 854.000000 108.053145 +861.000000 854.000000 108.912188 +862.000000 854.000000 109.666211 +863.000000 854.000000 110.157246 +864.000000 854.000000 110.576777 +865.000000 854.000000 111.036045 +866.000000 854.000000 111.459248 +867.000000 854.000000 111.998213 +868.000000 854.000000 112.402529 +869.000000 854.000000 112.784307 +870.000000 854.000000 113.037832 +871.000000 854.000000 113.105938 +872.000000 854.000000 113.002480 +873.000000 854.000000 112.733818 +874.000000 854.000000 112.380029 +875.000000 854.000000 112.021396 +876.000000 854.000000 111.723301 +877.000000 854.000000 111.464551 +878.000000 854.000000 111.209307 +879.000000 854.000000 111.052490 +880.000000 854.000000 110.999463 +881.000000 854.000000 111.104326 +882.000000 854.000000 111.242939 +883.000000 854.000000 111.410107 +884.000000 854.000000 111.643623 +885.000000 854.000000 111.868203 +886.000000 854.000000 112.002256 +887.000000 854.000000 112.250410 +888.000000 854.000000 112.693154 +889.000000 854.000000 113.051045 +890.000000 854.000000 113.364971 +891.000000 854.000000 113.667715 +892.000000 854.000000 113.947764 +893.000000 854.000000 114.120762 +894.000000 854.000000 114.241328 +895.000000 854.000000 114.345234 +896.000000 854.000000 114.413477 +897.000000 854.000000 114.457285 +898.000000 854.000000 114.433057 +821.000000 855.000000 106.258770 +822.000000 855.000000 106.141953 +823.000000 855.000000 106.122041 +824.000000 855.000000 106.292188 +825.000000 855.000000 106.518027 +826.000000 855.000000 106.327793 +827.000000 855.000000 105.897617 +828.000000 855.000000 105.651152 +829.000000 855.000000 105.452187 +830.000000 855.000000 105.296055 +831.000000 855.000000 105.210889 +832.000000 855.000000 105.155547 +833.000000 855.000000 105.176563 +834.000000 855.000000 105.199570 +835.000000 855.000000 105.184238 +836.000000 855.000000 105.216045 +837.000000 855.000000 105.307197 +838.000000 855.000000 105.455039 +839.000000 855.000000 105.568496 +840.000000 855.000000 105.649463 +841.000000 855.000000 105.752500 +842.000000 855.000000 105.843613 +843.000000 855.000000 105.830273 +844.000000 855.000000 105.711172 +845.000000 855.000000 105.605986 +846.000000 855.000000 105.484355 +847.000000 855.000000 105.355146 +848.000000 855.000000 105.231826 +849.000000 855.000000 105.113887 +850.000000 855.000000 104.943916 +851.000000 855.000000 104.731396 +852.000000 855.000000 104.511641 +853.000000 855.000000 104.461045 +854.000000 855.000000 104.730869 +855.000000 855.000000 105.085068 +856.000000 855.000000 105.392471 +857.000000 855.000000 105.999189 +858.000000 855.000000 106.794717 +859.000000 855.000000 107.550000 +860.000000 855.000000 108.328057 +861.000000 855.000000 109.160605 +862.000000 855.000000 109.925977 +863.000000 855.000000 110.489248 +864.000000 855.000000 111.100732 +865.000000 855.000000 111.722021 +866.000000 855.000000 112.329971 +867.000000 855.000000 112.958672 +868.000000 855.000000 113.434746 +869.000000 855.000000 113.845732 +870.000000 855.000000 114.211406 +871.000000 855.000000 114.156670 +872.000000 855.000000 113.953828 +873.000000 855.000000 113.700352 +874.000000 855.000000 113.257100 +875.000000 855.000000 112.857402 +876.000000 855.000000 112.504590 +877.000000 855.000000 112.216729 +878.000000 855.000000 111.933525 +879.000000 855.000000 111.769688 +880.000000 855.000000 111.732930 +881.000000 855.000000 111.813721 +882.000000 855.000000 111.897998 +883.000000 855.000000 112.141504 +884.000000 855.000000 112.408779 +885.000000 855.000000 112.611357 +886.000000 855.000000 112.761377 +887.000000 855.000000 112.936748 +888.000000 855.000000 113.308701 +889.000000 855.000000 113.621611 +890.000000 855.000000 113.969502 +891.000000 855.000000 114.283916 +892.000000 855.000000 114.569014 +893.000000 855.000000 114.804619 +894.000000 855.000000 114.932119 +895.000000 855.000000 115.044189 +896.000000 855.000000 115.189209 +897.000000 855.000000 115.218447 +898.000000 855.000000 115.177070 +821.000000 856.000000 104.695459 +822.000000 856.000000 104.579502 +823.000000 856.000000 104.563125 +824.000000 856.000000 104.765498 +825.000000 856.000000 105.289102 +826.000000 856.000000 105.678789 +827.000000 856.000000 105.983779 +828.000000 856.000000 105.775732 +829.000000 856.000000 105.620967 +830.000000 856.000000 105.479834 +831.000000 856.000000 105.433789 +832.000000 856.000000 105.431855 +833.000000 856.000000 105.522324 +834.000000 856.000000 105.633672 +835.000000 856.000000 105.718154 +836.000000 856.000000 105.833965 +837.000000 856.000000 105.967588 +838.000000 856.000000 106.111592 +839.000000 856.000000 106.221934 +840.000000 856.000000 106.310781 +841.000000 856.000000 106.413750 +842.000000 856.000000 106.437881 +843.000000 856.000000 106.363203 +844.000000 856.000000 106.222432 +845.000000 856.000000 106.115508 +846.000000 856.000000 105.940127 +847.000000 856.000000 105.746572 +848.000000 856.000000 105.602451 +849.000000 856.000000 105.444941 +850.000000 856.000000 105.268008 +851.000000 856.000000 105.067725 +852.000000 856.000000 104.860283 +853.000000 856.000000 104.710947 +854.000000 856.000000 104.924063 +855.000000 856.000000 105.259033 +856.000000 856.000000 105.545234 +857.000000 856.000000 106.307207 +858.000000 856.000000 107.130859 +859.000000 856.000000 107.964072 +860.000000 856.000000 108.746475 +861.000000 856.000000 109.452627 +862.000000 856.000000 110.213906 +863.000000 856.000000 110.886221 +864.000000 856.000000 111.696406 +865.000000 856.000000 112.516816 +866.000000 856.000000 113.206074 +867.000000 856.000000 113.939912 +868.000000 856.000000 114.509346 +869.000000 856.000000 114.982471 +870.000000 856.000000 115.241826 +871.000000 856.000000 115.098008 +872.000000 856.000000 114.903457 +873.000000 856.000000 114.615703 +874.000000 856.000000 114.164385 +875.000000 856.000000 113.681279 +876.000000 856.000000 113.317637 +877.000000 856.000000 112.974785 +878.000000 856.000000 112.706533 +879.000000 856.000000 112.511914 +880.000000 856.000000 112.480225 +881.000000 856.000000 112.502324 +882.000000 856.000000 112.654951 +883.000000 856.000000 112.940586 +884.000000 856.000000 113.257012 +885.000000 856.000000 113.446182 +886.000000 856.000000 113.491494 +887.000000 856.000000 113.581807 +888.000000 856.000000 113.909141 +889.000000 856.000000 114.233145 +890.000000 856.000000 114.572393 +891.000000 856.000000 114.924170 +892.000000 856.000000 115.217568 +893.000000 856.000000 115.512363 +894.000000 856.000000 115.652451 +895.000000 856.000000 115.764297 +896.000000 856.000000 115.873516 +897.000000 856.000000 115.922959 +898.000000 856.000000 115.852773 +821.000000 857.000000 104.047002 +822.000000 857.000000 103.900586 +823.000000 857.000000 103.974766 +824.000000 857.000000 104.267822 +825.000000 857.000000 104.560557 +826.000000 857.000000 105.031250 +827.000000 857.000000 105.440508 +828.000000 857.000000 105.861924 +829.000000 857.000000 105.822939 +830.000000 857.000000 105.714326 +831.000000 857.000000 105.695938 +832.000000 857.000000 105.777461 +833.000000 857.000000 105.905244 +834.000000 857.000000 106.055107 +835.000000 857.000000 106.258506 +836.000000 857.000000 106.490439 +837.000000 857.000000 106.690879 +838.000000 857.000000 106.829707 +839.000000 857.000000 106.984336 +840.000000 857.000000 107.055332 +841.000000 857.000000 107.167686 +842.000000 857.000000 107.164463 +843.000000 857.000000 107.041729 +844.000000 857.000000 106.975996 +845.000000 857.000000 106.846445 +846.000000 857.000000 106.708672 +847.000000 857.000000 106.386133 +848.000000 857.000000 106.093701 +849.000000 857.000000 105.847588 +850.000000 857.000000 105.624561 +851.000000 857.000000 105.356816 +852.000000 857.000000 105.130400 +853.000000 857.000000 104.904053 +854.000000 857.000000 104.967178 +855.000000 857.000000 105.320439 +856.000000 857.000000 105.797852 +857.000000 857.000000 106.643467 +858.000000 857.000000 107.547188 +859.000000 857.000000 108.446875 +860.000000 857.000000 109.129814 +861.000000 857.000000 109.811094 +862.000000 857.000000 110.561982 +863.000000 857.000000 111.388447 +864.000000 857.000000 112.322227 +865.000000 857.000000 113.212559 +866.000000 857.000000 114.013330 +867.000000 857.000000 114.945664 +868.000000 857.000000 115.729941 +869.000000 857.000000 116.084795 +870.000000 857.000000 116.166582 +871.000000 857.000000 116.098086 +872.000000 857.000000 115.860781 +873.000000 857.000000 115.631846 +874.000000 857.000000 115.164648 +875.000000 857.000000 114.593516 +876.000000 857.000000 114.166973 +877.000000 857.000000 113.797178 +878.000000 857.000000 113.463457 +879.000000 857.000000 113.436240 +880.000000 857.000000 113.359209 +881.000000 857.000000 113.312813 +882.000000 857.000000 113.407656 +883.000000 857.000000 113.618398 +884.000000 857.000000 114.049551 +885.000000 857.000000 114.054121 +886.000000 857.000000 114.148037 +887.000000 857.000000 114.290752 +888.000000 857.000000 114.530107 +889.000000 857.000000 114.838135 +890.000000 857.000000 115.138437 +891.000000 857.000000 115.485762 +892.000000 857.000000 115.856914 +893.000000 857.000000 116.188652 +894.000000 857.000000 116.377676 +895.000000 857.000000 116.517539 +896.000000 857.000000 116.585928 +897.000000 857.000000 116.608770 +898.000000 857.000000 116.548203 +821.000000 858.000000 103.433818 +822.000000 858.000000 103.395371 +823.000000 858.000000 103.539199 +824.000000 858.000000 103.820117 +825.000000 858.000000 104.295840 +826.000000 858.000000 104.730127 +827.000000 858.000000 105.058877 +828.000000 858.000000 105.770537 +829.000000 858.000000 106.040137 +830.000000 858.000000 106.043711 +831.000000 858.000000 106.011563 +832.000000 858.000000 106.099277 +833.000000 858.000000 106.321348 +834.000000 858.000000 106.485479 +835.000000 858.000000 106.715674 +836.000000 858.000000 107.029941 +837.000000 858.000000 107.303008 +838.000000 858.000000 107.527764 +839.000000 858.000000 107.721699 +840.000000 858.000000 107.870332 +841.000000 858.000000 107.958428 +842.000000 858.000000 108.018242 +843.000000 858.000000 107.946943 +844.000000 858.000000 107.842979 +845.000000 858.000000 107.759629 +846.000000 858.000000 107.569844 +847.000000 858.000000 107.307646 +848.000000 858.000000 106.926865 +849.000000 858.000000 106.452002 +850.000000 858.000000 106.006357 +851.000000 858.000000 105.644229 +852.000000 858.000000 105.271963 +853.000000 858.000000 104.973984 +854.000000 858.000000 104.969209 +855.000000 858.000000 105.331914 +856.000000 858.000000 106.051426 +857.000000 858.000000 106.914307 +858.000000 858.000000 107.818213 +859.000000 858.000000 108.736719 +860.000000 858.000000 109.441182 +861.000000 858.000000 110.025742 +862.000000 858.000000 110.828242 +863.000000 858.000000 111.812148 +864.000000 858.000000 112.795947 +865.000000 858.000000 113.746621 +866.000000 858.000000 114.889365 +867.000000 858.000000 116.066807 +868.000000 858.000000 116.889141 +869.000000 858.000000 117.214336 +870.000000 858.000000 117.131992 +871.000000 858.000000 117.035303 +872.000000 858.000000 116.738359 +873.000000 858.000000 116.516670 +874.000000 858.000000 116.017891 +875.000000 858.000000 115.506309 +876.000000 858.000000 115.068008 +877.000000 858.000000 114.618955 +878.000000 858.000000 114.192354 +879.000000 858.000000 114.056230 +880.000000 858.000000 114.005000 +881.000000 858.000000 113.944258 +882.000000 858.000000 113.791650 +883.000000 858.000000 113.717187 +884.000000 858.000000 114.369844 +885.000000 858.000000 114.647607 +886.000000 858.000000 114.810312 +887.000000 858.000000 115.016670 +888.000000 858.000000 115.182324 +889.000000 858.000000 115.370068 +890.000000 858.000000 115.688516 +891.000000 858.000000 116.029824 +892.000000 858.000000 116.516650 +893.000000 858.000000 117.085947 +894.000000 858.000000 117.281357 +895.000000 858.000000 117.450186 +896.000000 858.000000 117.542217 +897.000000 858.000000 117.506064 +898.000000 858.000000 117.507598 +821.000000 859.000000 102.988164 +822.000000 859.000000 103.112617 +823.000000 859.000000 103.333809 +824.000000 859.000000 103.545205 +825.000000 859.000000 104.080645 +826.000000 859.000000 104.593135 +827.000000 859.000000 105.053555 +828.000000 859.000000 105.746494 +829.000000 859.000000 106.331240 +830.000000 859.000000 106.527266 +831.000000 859.000000 106.484824 +832.000000 859.000000 106.511309 +833.000000 859.000000 106.720752 +834.000000 859.000000 106.972539 +835.000000 859.000000 107.245293 +836.000000 859.000000 107.579326 +837.000000 859.000000 107.921104 +838.000000 859.000000 108.234922 +839.000000 859.000000 108.436553 +840.000000 859.000000 108.623730 +841.000000 859.000000 108.782451 +842.000000 859.000000 108.904746 +843.000000 859.000000 108.820059 +844.000000 859.000000 108.791289 +845.000000 859.000000 108.839766 +846.000000 859.000000 108.645488 +847.000000 859.000000 108.319766 +848.000000 859.000000 107.769756 +849.000000 859.000000 107.040264 +850.000000 859.000000 106.466816 +851.000000 859.000000 105.908105 +852.000000 859.000000 105.395859 +853.000000 859.000000 105.068545 +854.000000 859.000000 105.031875 +855.000000 859.000000 105.406436 +856.000000 859.000000 106.151875 +857.000000 859.000000 107.067988 +858.000000 859.000000 107.983379 +859.000000 859.000000 108.814580 +860.000000 859.000000 109.509111 +861.000000 859.000000 110.214746 +862.000000 859.000000 111.029238 +863.000000 859.000000 111.936484 +864.000000 859.000000 112.938662 +865.000000 859.000000 114.031797 +866.000000 859.000000 115.234199 +867.000000 859.000000 116.412393 +868.000000 859.000000 117.462705 +869.000000 859.000000 118.317559 +870.000000 859.000000 118.076387 +871.000000 859.000000 117.918184 +872.000000 859.000000 117.655273 +873.000000 859.000000 117.255996 +874.000000 859.000000 116.838789 +875.000000 859.000000 116.383018 +876.000000 859.000000 115.915898 +877.000000 859.000000 115.510000 +878.000000 859.000000 115.051592 +879.000000 859.000000 114.741484 +880.000000 859.000000 114.602607 +881.000000 859.000000 114.496465 +882.000000 859.000000 114.300146 +883.000000 859.000000 113.991338 +884.000000 859.000000 114.087813 +885.000000 859.000000 114.780439 +886.000000 859.000000 115.153916 +887.000000 859.000000 115.435957 +888.000000 859.000000 115.619424 +889.000000 859.000000 115.843057 +890.000000 859.000000 116.211309 +891.000000 859.000000 116.626133 +892.000000 859.000000 117.426504 +893.000000 859.000000 118.191445 +894.000000 859.000000 118.569424 +895.000000 859.000000 118.605156 +896.000000 859.000000 118.667754 +897.000000 859.000000 118.508037 +898.000000 859.000000 118.541328 +821.000000 860.000000 102.427598 +822.000000 860.000000 102.781504 +823.000000 860.000000 103.122266 +824.000000 860.000000 103.524199 +825.000000 860.000000 104.064395 +826.000000 860.000000 104.597334 +827.000000 860.000000 105.120986 +828.000000 860.000000 105.794844 +829.000000 860.000000 106.307402 +830.000000 860.000000 106.713691 +831.000000 860.000000 106.827998 +832.000000 860.000000 107.012090 +833.000000 860.000000 107.262861 +834.000000 860.000000 107.537061 +835.000000 860.000000 107.822842 +836.000000 860.000000 108.098652 +837.000000 860.000000 108.493232 +838.000000 860.000000 108.797930 +839.000000 860.000000 109.039199 +840.000000 860.000000 109.304766 +841.000000 860.000000 109.546113 +842.000000 860.000000 109.647324 +843.000000 860.000000 109.659541 +844.000000 860.000000 109.700908 +845.000000 860.000000 109.771084 +846.000000 860.000000 109.587256 +847.000000 860.000000 109.273906 +848.000000 860.000000 108.564063 +849.000000 860.000000 107.640117 +850.000000 860.000000 106.865986 +851.000000 860.000000 106.099658 +852.000000 860.000000 105.602031 +853.000000 860.000000 105.254717 +854.000000 860.000000 105.207266 +855.000000 860.000000 105.622246 +856.000000 860.000000 106.385654 +857.000000 860.000000 107.300996 +858.000000 860.000000 108.138037 +859.000000 860.000000 108.893213 +860.000000 860.000000 109.552861 +861.000000 860.000000 110.297236 +862.000000 860.000000 111.149326 +863.000000 860.000000 112.028486 +864.000000 860.000000 113.112666 +865.000000 860.000000 114.229258 +866.000000 860.000000 115.369443 +867.000000 860.000000 116.520488 +868.000000 860.000000 117.894443 +869.000000 860.000000 119.276016 +870.000000 860.000000 119.209756 +871.000000 860.000000 118.834814 +872.000000 860.000000 118.556475 +873.000000 860.000000 118.149648 +874.000000 860.000000 117.664541 +875.000000 860.000000 117.136768 +876.000000 860.000000 116.768955 +877.000000 860.000000 116.378564 +878.000000 860.000000 115.940469 +879.000000 860.000000 115.535938 +880.000000 860.000000 115.215664 +881.000000 860.000000 114.982080 +882.000000 860.000000 114.658271 +883.000000 860.000000 114.282813 +884.000000 860.000000 113.924941 +885.000000 860.000000 114.513926 +886.000000 860.000000 115.019209 +887.000000 860.000000 115.440850 +888.000000 860.000000 115.844492 +889.000000 860.000000 116.211514 +890.000000 860.000000 116.751533 +891.000000 860.000000 117.447441 +892.000000 860.000000 118.710518 +893.000000 860.000000 119.427402 +894.000000 860.000000 120.083477 +895.000000 860.000000 120.373350 +896.000000 860.000000 120.195488 +897.000000 860.000000 119.909746 +898.000000 860.000000 119.609707 +821.000000 861.000000 101.929375 +822.000000 861.000000 102.481895 +823.000000 861.000000 103.018848 +824.000000 861.000000 103.543896 +825.000000 861.000000 104.104365 +826.000000 861.000000 104.688398 +827.000000 861.000000 105.272949 +828.000000 861.000000 105.813359 +829.000000 861.000000 106.330703 +830.000000 861.000000 106.854717 +831.000000 861.000000 107.228936 +832.000000 861.000000 107.469424 +833.000000 861.000000 107.806270 +834.000000 861.000000 108.139561 +835.000000 861.000000 108.412275 +836.000000 861.000000 108.675986 +837.000000 861.000000 109.012500 +838.000000 861.000000 109.346543 +839.000000 861.000000 109.722930 +840.000000 861.000000 110.042324 +841.000000 861.000000 110.302813 +842.000000 861.000000 110.382051 +843.000000 861.000000 110.473623 +844.000000 861.000000 110.582910 +845.000000 861.000000 110.601494 +846.000000 861.000000 110.505674 +847.000000 861.000000 109.996387 +848.000000 861.000000 109.288066 +849.000000 861.000000 108.331230 +850.000000 861.000000 107.376270 +851.000000 861.000000 106.473594 +852.000000 861.000000 105.802871 +853.000000 861.000000 105.402871 +854.000000 861.000000 105.401240 +855.000000 861.000000 106.012852 +856.000000 861.000000 106.777275 +857.000000 861.000000 107.584355 +858.000000 861.000000 108.406113 +859.000000 861.000000 109.059980 +860.000000 861.000000 109.758037 +861.000000 861.000000 110.415518 +862.000000 861.000000 111.284785 +863.000000 861.000000 112.211494 +864.000000 861.000000 113.334072 +865.000000 861.000000 114.475791 +866.000000 861.000000 115.711221 +867.000000 861.000000 116.975771 +868.000000 861.000000 118.435898 +869.000000 861.000000 119.846484 +870.000000 861.000000 120.582666 +871.000000 861.000000 119.937656 +872.000000 861.000000 119.474434 +873.000000 861.000000 118.996143 +874.000000 861.000000 118.643301 +875.000000 861.000000 118.096572 +876.000000 861.000000 117.644502 +877.000000 861.000000 117.138271 +878.000000 861.000000 116.678037 +879.000000 861.000000 116.230410 +880.000000 861.000000 115.733047 +881.000000 861.000000 115.398291 +882.000000 861.000000 114.921953 +883.000000 861.000000 114.479385 +884.000000 861.000000 113.938770 +885.000000 861.000000 114.240391 +886.000000 861.000000 114.722705 +887.000000 861.000000 115.242178 +888.000000 861.000000 115.763096 +889.000000 861.000000 116.280703 +890.000000 861.000000 116.963311 +891.000000 861.000000 118.247598 +892.000000 861.000000 119.443145 +893.000000 861.000000 120.596689 +894.000000 861.000000 121.417158 +895.000000 861.000000 121.867871 +896.000000 861.000000 121.976045 +897.000000 861.000000 121.575869 +898.000000 861.000000 120.754180 +821.000000 862.000000 101.425635 +822.000000 862.000000 102.087607 +823.000000 862.000000 102.812402 +824.000000 862.000000 103.514551 +825.000000 862.000000 104.225488 +826.000000 862.000000 104.838398 +827.000000 862.000000 105.410732 +828.000000 862.000000 106.016592 +829.000000 862.000000 106.464414 +830.000000 862.000000 106.962041 +831.000000 862.000000 107.521777 +832.000000 862.000000 107.930244 +833.000000 862.000000 108.286826 +834.000000 862.000000 108.640117 +835.000000 862.000000 108.928418 +836.000000 862.000000 109.224971 +837.000000 862.000000 109.609941 +838.000000 862.000000 109.989092 +839.000000 862.000000 110.420801 +840.000000 862.000000 110.834531 +841.000000 862.000000 111.108467 +842.000000 862.000000 111.189707 +843.000000 862.000000 111.280742 +844.000000 862.000000 111.384648 +845.000000 862.000000 111.404893 +846.000000 862.000000 111.282666 +847.000000 862.000000 110.776465 +848.000000 862.000000 109.903633 +849.000000 862.000000 109.004199 +850.000000 862.000000 107.840225 +851.000000 862.000000 106.803340 +852.000000 862.000000 106.033066 +853.000000 862.000000 105.464941 +854.000000 862.000000 105.709912 +855.000000 862.000000 106.381553 +856.000000 862.000000 107.189541 +857.000000 862.000000 108.008496 +858.000000 862.000000 108.893057 +859.000000 862.000000 109.456914 +860.000000 862.000000 110.048604 +861.000000 862.000000 110.632607 +862.000000 862.000000 111.429980 +863.000000 862.000000 112.358047 +864.000000 862.000000 113.496299 +865.000000 862.000000 114.825303 +866.000000 862.000000 116.131104 +867.000000 862.000000 117.494609 +868.000000 862.000000 118.817939 +869.000000 862.000000 120.176982 +870.000000 862.000000 121.456777 +871.000000 862.000000 121.083770 +872.000000 862.000000 120.317148 +873.000000 862.000000 119.799316 +874.000000 862.000000 119.388906 +875.000000 862.000000 119.003203 +876.000000 862.000000 118.524209 +877.000000 862.000000 117.959189 +878.000000 862.000000 117.342178 +879.000000 862.000000 116.779004 +880.000000 862.000000 116.182100 +881.000000 862.000000 115.728887 +882.000000 862.000000 115.247939 +883.000000 862.000000 114.764707 +884.000000 862.000000 114.230186 +885.000000 862.000000 113.955068 +886.000000 862.000000 114.542070 +887.000000 862.000000 115.038008 +888.000000 862.000000 115.592217 +889.000000 862.000000 116.158350 +890.000000 862.000000 117.105967 +891.000000 862.000000 118.399980 +892.000000 862.000000 119.609775 +893.000000 862.000000 121.063340 +894.000000 862.000000 122.164102 +895.000000 862.000000 123.065703 +896.000000 862.000000 123.075352 +897.000000 862.000000 122.500205 +898.000000 862.000000 121.540342 +821.000000 863.000000 100.895488 +822.000000 863.000000 101.842969 +823.000000 863.000000 102.706045 +824.000000 863.000000 103.539443 +825.000000 863.000000 104.326104 +826.000000 863.000000 105.027471 +827.000000 863.000000 105.684443 +828.000000 863.000000 106.334434 +829.000000 863.000000 106.796230 +830.000000 863.000000 107.384746 +831.000000 863.000000 107.885381 +832.000000 863.000000 108.347031 +833.000000 863.000000 108.754844 +834.000000 863.000000 109.092480 +835.000000 863.000000 109.415664 +836.000000 863.000000 109.824375 +837.000000 863.000000 110.258691 +838.000000 863.000000 110.671338 +839.000000 863.000000 111.091416 +840.000000 863.000000 111.679951 +841.000000 863.000000 112.138330 +842.000000 863.000000 112.188887 +843.000000 863.000000 112.160176 +844.000000 863.000000 112.117910 +845.000000 863.000000 112.072285 +846.000000 863.000000 111.948086 +847.000000 863.000000 111.404414 +848.000000 863.000000 110.468994 +849.000000 863.000000 109.383955 +850.000000 863.000000 108.135967 +851.000000 863.000000 107.107725 +852.000000 863.000000 106.357695 +853.000000 863.000000 105.713154 +854.000000 863.000000 105.853418 +855.000000 863.000000 106.733652 +856.000000 863.000000 107.551963 +857.000000 863.000000 108.547295 +858.000000 863.000000 109.375879 +859.000000 863.000000 110.075078 +860.000000 863.000000 110.506387 +861.000000 863.000000 110.962861 +862.000000 863.000000 111.652617 +863.000000 863.000000 112.509717 +864.000000 863.000000 113.648369 +865.000000 863.000000 115.080420 +866.000000 863.000000 116.591982 +867.000000 863.000000 118.048867 +868.000000 863.000000 119.277646 +869.000000 863.000000 120.528965 +870.000000 863.000000 121.826582 +871.000000 863.000000 121.970918 +872.000000 863.000000 121.371299 +873.000000 863.000000 120.807979 +874.000000 863.000000 120.230127 +875.000000 863.000000 119.942402 +876.000000 863.000000 119.403750 +877.000000 863.000000 118.735420 +878.000000 863.000000 118.019844 +879.000000 863.000000 117.367969 +880.000000 863.000000 116.704531 +881.000000 863.000000 116.152715 +882.000000 863.000000 115.618750 +883.000000 863.000000 115.106201 +884.000000 863.000000 114.544150 +885.000000 863.000000 113.999463 +886.000000 863.000000 114.221641 +887.000000 863.000000 114.798809 +888.000000 863.000000 115.406455 +889.000000 863.000000 116.027393 +890.000000 863.000000 116.980430 +891.000000 863.000000 118.221318 +892.000000 863.000000 119.525898 +893.000000 863.000000 121.051572 +894.000000 863.000000 122.345381 +895.000000 863.000000 123.513271 +896.000000 863.000000 124.148359 +897.000000 863.000000 123.387578 +898.000000 863.000000 122.315957 +821.000000 864.000000 100.346602 +822.000000 864.000000 101.432617 +823.000000 864.000000 102.562676 +824.000000 864.000000 103.571787 +825.000000 864.000000 104.480264 +826.000000 864.000000 105.226357 +827.000000 864.000000 105.876182 +828.000000 864.000000 106.607920 +829.000000 864.000000 107.273086 +830.000000 864.000000 107.848184 +831.000000 864.000000 108.379756 +832.000000 864.000000 108.784482 +833.000000 864.000000 109.256641 +834.000000 864.000000 109.614404 +835.000000 864.000000 109.974697 +836.000000 864.000000 110.466104 +837.000000 864.000000 110.928574 +838.000000 864.000000 111.381191 +839.000000 864.000000 112.018223 +840.000000 864.000000 112.675537 +841.000000 864.000000 113.124951 +842.000000 864.000000 113.203857 +843.000000 864.000000 113.149814 +844.000000 864.000000 113.054922 +845.000000 864.000000 112.953711 +846.000000 864.000000 112.557334 +847.000000 864.000000 111.662549 +848.000000 864.000000 110.736650 +849.000000 864.000000 109.542295 +850.000000 864.000000 108.336797 +851.000000 864.000000 107.352695 +852.000000 864.000000 106.605156 +853.000000 864.000000 105.948428 +854.000000 864.000000 105.748926 +855.000000 864.000000 106.826768 +856.000000 864.000000 107.856816 +857.000000 864.000000 108.968223 +858.000000 864.000000 109.827090 +859.000000 864.000000 110.607451 +860.000000 864.000000 111.130293 +861.000000 864.000000 111.458779 +862.000000 864.000000 111.959004 +863.000000 864.000000 112.989473 +864.000000 864.000000 114.140303 +865.000000 864.000000 115.528887 +866.000000 864.000000 117.075107 +867.000000 864.000000 118.686582 +868.000000 864.000000 119.935234 +869.000000 864.000000 121.079004 +870.000000 864.000000 122.264697 +871.000000 864.000000 122.953711 +872.000000 864.000000 122.319883 +873.000000 864.000000 121.690586 +874.000000 864.000000 121.338936 +875.000000 864.000000 120.697676 +876.000000 864.000000 120.035039 +877.000000 864.000000 119.361260 +878.000000 864.000000 118.655557 +879.000000 864.000000 117.900977 +880.000000 864.000000 117.214297 +881.000000 864.000000 116.568223 +882.000000 864.000000 115.998018 +883.000000 864.000000 115.458623 +884.000000 864.000000 114.924600 +885.000000 864.000000 114.414873 +886.000000 864.000000 113.957744 +887.000000 864.000000 114.383213 +888.000000 864.000000 115.105098 +889.000000 864.000000 115.796182 +890.000000 864.000000 116.668936 +891.000000 864.000000 117.777002 +892.000000 864.000000 118.970820 +893.000000 864.000000 120.517295 +894.000000 864.000000 121.964512 +895.000000 864.000000 123.577812 +896.000000 864.000000 124.810693 +897.000000 864.000000 124.152197 +898.000000 864.000000 122.973076 +821.000000 865.000000 99.983779 +822.000000 865.000000 101.043398 +823.000000 865.000000 102.336797 +824.000000 865.000000 103.515371 +825.000000 865.000000 104.503955 +826.000000 865.000000 105.283574 +827.000000 865.000000 105.956436 +828.000000 865.000000 106.692432 +829.000000 865.000000 107.374775 +830.000000 865.000000 108.096318 +831.000000 865.000000 108.593115 +832.000000 865.000000 109.085078 +833.000000 865.000000 109.583467 +834.000000 865.000000 110.052422 +835.000000 865.000000 110.497070 +836.000000 865.000000 110.955684 +837.000000 865.000000 111.607920 +838.000000 865.000000 112.296250 +839.000000 865.000000 113.012148 +840.000000 865.000000 113.685742 +841.000000 865.000000 114.206006 +842.000000 865.000000 114.334561 +843.000000 865.000000 114.297734 +844.000000 865.000000 114.181221 +845.000000 865.000000 113.957998 +846.000000 865.000000 112.487939 +847.000000 865.000000 111.717861 +848.000000 865.000000 110.771035 +849.000000 865.000000 109.580889 +850.000000 865.000000 108.451240 +851.000000 865.000000 107.457256 +852.000000 865.000000 106.791973 +853.000000 865.000000 106.177656 +854.000000 865.000000 105.639678 +855.000000 865.000000 106.749170 +856.000000 865.000000 108.067510 +857.000000 865.000000 109.190664 +858.000000 865.000000 110.182139 +859.000000 865.000000 111.046982 +860.000000 865.000000 111.581563 +861.000000 865.000000 112.118389 +862.000000 865.000000 112.692988 +863.000000 865.000000 113.716748 +864.000000 865.000000 114.833740 +865.000000 865.000000 116.066543 +866.000000 865.000000 117.629268 +867.000000 865.000000 119.258311 +868.000000 865.000000 120.628096 +869.000000 865.000000 121.649902 +870.000000 865.000000 122.632363 +871.000000 865.000000 123.435781 +872.000000 865.000000 122.882520 +873.000000 865.000000 122.417813 +874.000000 865.000000 121.865752 +875.000000 865.000000 121.274678 +876.000000 865.000000 120.733770 +877.000000 865.000000 119.884346 +878.000000 865.000000 119.117637 +879.000000 865.000000 118.377734 +880.000000 865.000000 117.665693 +881.000000 865.000000 117.000371 +882.000000 865.000000 116.363809 +883.000000 865.000000 115.808350 +884.000000 865.000000 115.274824 +885.000000 865.000000 114.722383 +886.000000 865.000000 114.223955 +887.000000 865.000000 114.106016 +888.000000 865.000000 114.771016 +889.000000 865.000000 115.489473 +890.000000 865.000000 116.344355 +891.000000 865.000000 117.438203 +892.000000 865.000000 118.835420 +893.000000 865.000000 120.168291 +894.000000 865.000000 121.703848 +895.000000 865.000000 123.205410 +896.000000 865.000000 124.627090 +897.000000 865.000000 124.789648 +898.000000 865.000000 123.518701 +821.000000 866.000000 99.922246 +822.000000 866.000000 100.898701 +823.000000 866.000000 102.261826 +824.000000 866.000000 103.403818 +825.000000 866.000000 104.389766 +826.000000 866.000000 105.206973 +827.000000 866.000000 105.919092 +828.000000 866.000000 106.730889 +829.000000 866.000000 107.527363 +830.000000 866.000000 108.225693 +831.000000 866.000000 108.767334 +832.000000 866.000000 109.289043 +833.000000 866.000000 109.826592 +834.000000 866.000000 110.352236 +835.000000 866.000000 110.865186 +836.000000 866.000000 111.431582 +837.000000 866.000000 112.225342 +838.000000 866.000000 113.089004 +839.000000 866.000000 113.833926 +840.000000 866.000000 114.486748 +841.000000 866.000000 114.910098 +842.000000 866.000000 114.984678 +843.000000 866.000000 114.788193 +844.000000 866.000000 114.337637 +845.000000 866.000000 113.610518 +846.000000 866.000000 112.495225 +847.000000 866.000000 111.642666 +848.000000 866.000000 110.757344 +849.000000 866.000000 109.700400 +850.000000 866.000000 108.605928 +851.000000 866.000000 107.652725 +852.000000 866.000000 106.882119 +853.000000 866.000000 106.275322 +854.000000 866.000000 105.657100 +855.000000 866.000000 106.976533 +856.000000 866.000000 108.306494 +857.000000 866.000000 109.437246 +858.000000 866.000000 110.459971 +859.000000 866.000000 111.306582 +860.000000 866.000000 112.042588 +861.000000 866.000000 112.684258 +862.000000 866.000000 113.457686 +863.000000 866.000000 114.438516 +864.000000 866.000000 115.553984 +865.000000 866.000000 116.740518 +866.000000 866.000000 118.171826 +867.000000 866.000000 119.709346 +868.000000 866.000000 121.055996 +869.000000 866.000000 121.904648 +870.000000 866.000000 122.901006 +871.000000 866.000000 123.473340 +872.000000 866.000000 123.315391 +873.000000 866.000000 122.968506 +874.000000 866.000000 122.508535 +875.000000 866.000000 121.989609 +876.000000 866.000000 121.238066 +877.000000 866.000000 120.434521 +878.000000 866.000000 119.565977 +879.000000 866.000000 118.783604 +880.000000 866.000000 118.076533 +881.000000 866.000000 117.390430 +882.000000 866.000000 116.727832 +883.000000 866.000000 116.128115 +884.000000 866.000000 115.524805 +885.000000 866.000000 114.978105 +886.000000 866.000000 114.453496 +887.000000 866.000000 113.980225 +888.000000 866.000000 114.535957 +889.000000 866.000000 115.232178 +890.000000 866.000000 116.075313 +891.000000 866.000000 117.088779 +892.000000 866.000000 118.559580 +893.000000 866.000000 119.788975 +894.000000 866.000000 121.309248 +895.000000 866.000000 122.748506 +896.000000 866.000000 124.154873 +897.000000 866.000000 125.229932 +898.000000 866.000000 124.228574 +821.000000 867.000000 99.881826 +822.000000 867.000000 100.841250 +823.000000 867.000000 102.154687 +824.000000 867.000000 103.294043 +825.000000 867.000000 104.262559 +826.000000 867.000000 105.134287 +827.000000 867.000000 105.953525 +828.000000 867.000000 106.826768 +829.000000 867.000000 107.694258 +830.000000 867.000000 108.369727 +831.000000 867.000000 108.937559 +832.000000 867.000000 109.510068 +833.000000 867.000000 110.083779 +834.000000 867.000000 110.620127 +835.000000 867.000000 111.166436 +836.000000 867.000000 111.930557 +837.000000 867.000000 112.763594 +838.000000 867.000000 113.726064 +839.000000 867.000000 114.510264 +840.000000 867.000000 115.060830 +841.000000 867.000000 115.532549 +842.000000 867.000000 115.385225 +843.000000 867.000000 114.788477 +844.000000 867.000000 114.175703 +845.000000 867.000000 113.349033 +846.000000 867.000000 112.449883 +847.000000 867.000000 111.583848 +848.000000 867.000000 110.678545 +849.000000 867.000000 109.709238 +850.000000 867.000000 108.622695 +851.000000 867.000000 107.629277 +852.000000 867.000000 106.886406 +853.000000 867.000000 106.280000 +854.000000 867.000000 105.678760 +855.000000 867.000000 106.957471 +856.000000 867.000000 108.354971 +857.000000 867.000000 109.603848 +858.000000 867.000000 110.676367 +859.000000 867.000000 111.492041 +860.000000 867.000000 112.306260 +861.000000 867.000000 113.187861 +862.000000 867.000000 114.066943 +863.000000 867.000000 115.145234 +864.000000 867.000000 116.282090 +865.000000 867.000000 117.382373 +866.000000 867.000000 118.670781 +867.000000 867.000000 119.975801 +868.000000 867.000000 121.262773 +869.000000 867.000000 122.178545 +870.000000 867.000000 123.323311 +871.000000 867.000000 123.897568 +872.000000 867.000000 124.032354 +873.000000 867.000000 123.729775 +874.000000 867.000000 123.127129 +875.000000 867.000000 122.426709 +876.000000 867.000000 121.632236 +877.000000 867.000000 120.853496 +878.000000 867.000000 119.992607 +879.000000 867.000000 119.149727 +880.000000 867.000000 118.390781 +881.000000 867.000000 117.662598 +882.000000 867.000000 116.952266 +883.000000 867.000000 116.288818 +884.000000 867.000000 115.693867 +885.000000 867.000000 115.138555 +886.000000 867.000000 114.621455 +887.000000 867.000000 114.134131 +888.000000 867.000000 114.181846 +889.000000 867.000000 115.005273 +890.000000 867.000000 115.834209 +891.000000 867.000000 116.865518 +892.000000 867.000000 118.170879 +893.000000 867.000000 119.637178 +894.000000 867.000000 120.869580 +895.000000 867.000000 122.161875 +896.000000 867.000000 123.335527 +897.000000 867.000000 124.491699 +898.000000 867.000000 125.207002 +821.000000 868.000000 100.052012 +822.000000 868.000000 100.967803 +823.000000 868.000000 102.106914 +824.000000 868.000000 103.200674 +825.000000 868.000000 104.250625 +826.000000 868.000000 105.101279 +827.000000 868.000000 105.965781 +828.000000 868.000000 106.904404 +829.000000 868.000000 107.800742 +830.000000 868.000000 108.478096 +831.000000 868.000000 109.068867 +832.000000 868.000000 109.706084 +833.000000 868.000000 110.344775 +834.000000 868.000000 110.990645 +835.000000 868.000000 111.609082 +836.000000 868.000000 112.395000 +837.000000 868.000000 113.301367 +838.000000 868.000000 114.288770 +839.000000 868.000000 115.070039 +840.000000 868.000000 115.648271 +841.000000 868.000000 115.985869 +842.000000 868.000000 114.748291 +843.000000 868.000000 114.344990 +844.000000 868.000000 113.712705 +845.000000 868.000000 112.986680 +846.000000 868.000000 112.227344 +847.000000 868.000000 111.445010 +848.000000 868.000000 110.527813 +849.000000 868.000000 109.670635 +850.000000 868.000000 108.666006 +851.000000 868.000000 107.635508 +852.000000 868.000000 106.783838 +853.000000 868.000000 106.066973 +854.000000 868.000000 105.433242 +855.000000 868.000000 106.601035 +856.000000 868.000000 107.981895 +857.000000 868.000000 109.467031 +858.000000 868.000000 110.768232 +859.000000 868.000000 111.574434 +860.000000 868.000000 112.575254 +861.000000 868.000000 113.790469 +862.000000 868.000000 114.817783 +863.000000 868.000000 115.900889 +864.000000 868.000000 117.045459 +865.000000 868.000000 118.024092 +866.000000 868.000000 119.122021 +867.000000 868.000000 120.342783 +868.000000 868.000000 121.846250 +869.000000 868.000000 123.505479 +870.000000 868.000000 124.686855 +871.000000 868.000000 125.095811 +872.000000 868.000000 124.976133 +873.000000 868.000000 124.600049 +874.000000 868.000000 123.909561 +875.000000 868.000000 122.955869 +876.000000 868.000000 122.094512 +877.000000 868.000000 121.150781 +878.000000 868.000000 120.137432 +879.000000 868.000000 119.432949 +880.000000 868.000000 118.712334 +881.000000 868.000000 117.853750 +882.000000 868.000000 117.064678 +883.000000 868.000000 116.386348 +884.000000 868.000000 115.821338 +885.000000 868.000000 115.278242 +886.000000 868.000000 114.776445 +887.000000 868.000000 114.282080 +888.000000 868.000000 113.962471 +889.000000 868.000000 114.725918 +890.000000 868.000000 115.720957 +891.000000 868.000000 116.703926 +892.000000 868.000000 117.797373 +893.000000 868.000000 119.017305 +894.000000 868.000000 120.158828 +895.000000 868.000000 121.258701 +896.000000 868.000000 122.368154 +897.000000 868.000000 123.511182 +898.000000 868.000000 124.698857 +821.000000 869.000000 100.332480 +822.000000 869.000000 101.197393 +823.000000 869.000000 102.346318 +824.000000 869.000000 103.388223 +825.000000 869.000000 104.306377 +826.000000 869.000000 105.098125 +827.000000 869.000000 105.950352 +828.000000 869.000000 106.822822 +829.000000 869.000000 107.660469 +830.000000 869.000000 108.418867 +831.000000 869.000000 109.162676 +832.000000 869.000000 109.827012 +833.000000 869.000000 110.519238 +834.000000 869.000000 111.265195 +835.000000 869.000000 111.978379 +836.000000 869.000000 112.759102 +837.000000 869.000000 113.698398 +838.000000 869.000000 114.697813 +839.000000 869.000000 115.628760 +840.000000 869.000000 116.324746 +841.000000 869.000000 115.622207 +842.000000 869.000000 114.433066 +843.000000 869.000000 113.418154 +844.000000 869.000000 112.645596 +845.000000 869.000000 112.161172 +846.000000 869.000000 111.704102 +847.000000 869.000000 111.169531 +848.000000 869.000000 110.410596 +849.000000 869.000000 109.550107 +850.000000 869.000000 108.591465 +851.000000 869.000000 107.614004 +852.000000 869.000000 106.710625 +853.000000 869.000000 105.832451 +854.000000 869.000000 105.053604 +855.000000 869.000000 106.080322 +856.000000 869.000000 107.667178 +857.000000 869.000000 109.269424 +858.000000 869.000000 110.821191 +859.000000 869.000000 111.618271 +860.000000 869.000000 112.790840 +861.000000 869.000000 114.387686 +862.000000 869.000000 115.535068 +863.000000 869.000000 116.741543 +864.000000 869.000000 117.978057 +865.000000 869.000000 119.040908 +866.000000 869.000000 120.285000 +867.000000 869.000000 121.230742 +868.000000 869.000000 123.160752 +869.000000 869.000000 125.021074 +870.000000 869.000000 126.537461 +871.000000 869.000000 126.565693 +872.000000 869.000000 125.933301 +873.000000 869.000000 125.449912 +874.000000 869.000000 124.496133 +875.000000 869.000000 123.507539 +876.000000 869.000000 122.454600 +877.000000 869.000000 121.348838 +878.000000 869.000000 120.364414 +879.000000 869.000000 119.617695 +880.000000 869.000000 118.809746 +881.000000 869.000000 117.931309 +882.000000 869.000000 117.146787 +883.000000 869.000000 116.481465 +884.000000 869.000000 115.949951 +885.000000 869.000000 115.408281 +886.000000 869.000000 114.908301 +887.000000 869.000000 114.393740 +888.000000 869.000000 113.977334 +889.000000 869.000000 114.380166 +890.000000 869.000000 115.335430 +891.000000 869.000000 116.241523 +892.000000 869.000000 117.107881 +893.000000 869.000000 118.199502 +894.000000 869.000000 119.139268 +895.000000 869.000000 120.220020 +896.000000 869.000000 121.324932 +897.000000 869.000000 122.444473 +898.000000 869.000000 123.522637 +821.000000 870.000000 100.680732 +822.000000 870.000000 101.572139 +823.000000 870.000000 102.818291 +824.000000 870.000000 103.684014 +825.000000 870.000000 104.399609 +826.000000 870.000000 105.192109 +827.000000 870.000000 105.884551 +828.000000 870.000000 106.653242 +829.000000 870.000000 107.483730 +830.000000 870.000000 108.303770 +831.000000 870.000000 109.143447 +832.000000 870.000000 109.877197 +833.000000 870.000000 110.594297 +834.000000 870.000000 111.495410 +835.000000 870.000000 112.233408 +836.000000 870.000000 113.018555 +837.000000 870.000000 113.932725 +838.000000 870.000000 114.971982 +839.000000 870.000000 115.872627 +840.000000 870.000000 116.901670 +841.000000 870.000000 115.301973 +842.000000 870.000000 113.629639 +843.000000 870.000000 112.326602 +844.000000 870.000000 111.759580 +845.000000 870.000000 111.353711 +846.000000 870.000000 110.975479 +847.000000 870.000000 110.536592 +848.000000 870.000000 110.003008 +849.000000 870.000000 109.326650 +850.000000 870.000000 108.402764 +851.000000 870.000000 107.478203 +852.000000 870.000000 106.538662 +853.000000 870.000000 105.637461 +854.000000 870.000000 104.922588 +855.000000 870.000000 105.949570 +856.000000 870.000000 107.769639 +857.000000 870.000000 109.476396 +858.000000 870.000000 110.794971 +859.000000 870.000000 111.594414 +860.000000 870.000000 112.662852 +861.000000 870.000000 114.309336 +862.000000 870.000000 115.262988 +863.000000 870.000000 116.349912 +864.000000 870.000000 118.355859 +865.000000 870.000000 120.518711 +866.000000 870.000000 121.826670 +867.000000 870.000000 122.712529 +868.000000 870.000000 124.242617 +869.000000 870.000000 126.052549 +870.000000 870.000000 128.337529 +871.000000 870.000000 127.701348 +872.000000 870.000000 126.407988 +873.000000 870.000000 125.446240 +874.000000 870.000000 124.615830 +875.000000 870.000000 123.800039 +876.000000 870.000000 122.741162 +877.000000 870.000000 121.459307 +878.000000 870.000000 120.523906 +879.000000 870.000000 119.825996 +880.000000 870.000000 118.925098 +881.000000 870.000000 118.070742 +882.000000 870.000000 117.284063 +883.000000 870.000000 116.655117 +884.000000 870.000000 116.123115 +885.000000 870.000000 115.587432 +886.000000 870.000000 114.963477 +887.000000 870.000000 114.336768 +888.000000 870.000000 113.808350 +889.000000 870.000000 113.844766 +890.000000 870.000000 114.695283 +891.000000 870.000000 115.537002 +892.000000 870.000000 116.370293 +893.000000 870.000000 117.327715 +894.000000 870.000000 118.147656 +895.000000 870.000000 119.158086 +896.000000 870.000000 120.166006 +897.000000 870.000000 121.333174 +898.000000 870.000000 122.464395 +821.000000 871.000000 100.811699 +822.000000 871.000000 101.881143 +823.000000 871.000000 102.981758 +824.000000 871.000000 103.804092 +825.000000 871.000000 104.431221 +826.000000 871.000000 105.120010 +827.000000 871.000000 105.742930 +828.000000 871.000000 106.505322 +829.000000 871.000000 107.309521 +830.000000 871.000000 108.152891 +831.000000 871.000000 109.062559 +832.000000 871.000000 109.913037 +833.000000 871.000000 110.728477 +834.000000 871.000000 111.549697 +835.000000 871.000000 112.330049 +836.000000 871.000000 113.104004 +837.000000 871.000000 114.034658 +838.000000 871.000000 114.865654 +839.000000 871.000000 115.589189 +840.000000 871.000000 115.565605 +841.000000 871.000000 114.395879 +842.000000 871.000000 112.740566 +843.000000 871.000000 111.684854 +844.000000 871.000000 110.913398 +845.000000 871.000000 110.565635 +846.000000 871.000000 110.163164 +847.000000 871.000000 109.862598 +848.000000 871.000000 109.451504 +849.000000 871.000000 108.913213 +850.000000 871.000000 107.937266 +851.000000 871.000000 107.130693 +852.000000 871.000000 106.098652 +853.000000 871.000000 105.260391 +854.000000 871.000000 104.765127 +855.000000 871.000000 106.217002 +856.000000 871.000000 108.063828 +857.000000 871.000000 109.582119 +858.000000 871.000000 110.673516 +859.000000 871.000000 111.439492 +860.000000 871.000000 112.112598 +861.000000 871.000000 113.536563 +862.000000 871.000000 114.432080 +863.000000 871.000000 115.802324 +864.000000 871.000000 118.012627 +865.000000 871.000000 119.948613 +866.000000 871.000000 120.898467 +867.000000 871.000000 122.139531 +868.000000 871.000000 123.568320 +869.000000 871.000000 125.249619 +870.000000 871.000000 127.209844 +871.000000 871.000000 127.568652 +872.000000 871.000000 126.515000 +873.000000 871.000000 125.494912 +874.000000 871.000000 124.703408 +875.000000 871.000000 123.850459 +876.000000 871.000000 122.677148 +877.000000 871.000000 121.658115 +878.000000 871.000000 120.808613 +879.000000 871.000000 120.015205 +880.000000 871.000000 119.136514 +881.000000 871.000000 118.469492 +882.000000 871.000000 117.676885 +883.000000 871.000000 117.028984 +884.000000 871.000000 116.461582 +885.000000 871.000000 115.849189 +886.000000 871.000000 115.105195 +887.000000 871.000000 114.330400 +888.000000 871.000000 113.804219 +889.000000 871.000000 113.873359 +890.000000 871.000000 114.207344 +891.000000 871.000000 114.729922 +892.000000 871.000000 115.483008 +893.000000 871.000000 116.219893 +894.000000 871.000000 116.967324 +895.000000 871.000000 117.954014 +896.000000 871.000000 118.916084 +897.000000 871.000000 120.123086 +898.000000 871.000000 121.377998 +821.000000 872.000000 100.775068 +822.000000 872.000000 101.741885 +823.000000 872.000000 102.872139 +824.000000 872.000000 103.548516 +825.000000 872.000000 104.262910 +826.000000 872.000000 104.908252 +827.000000 872.000000 105.559043 +828.000000 872.000000 106.335703 +829.000000 872.000000 107.152764 +830.000000 872.000000 108.011963 +831.000000 872.000000 108.951416 +832.000000 872.000000 109.839023 +833.000000 872.000000 110.705742 +834.000000 872.000000 111.465703 +835.000000 872.000000 112.270742 +836.000000 872.000000 113.085430 +837.000000 872.000000 113.825625 +838.000000 872.000000 114.456445 +839.000000 872.000000 114.762012 +840.000000 872.000000 115.039043 +841.000000 872.000000 114.087031 +842.000000 872.000000 112.702187 +843.000000 872.000000 111.497705 +844.000000 872.000000 110.621572 +845.000000 872.000000 109.883867 +846.000000 872.000000 109.331846 +847.000000 872.000000 109.098105 +848.000000 872.000000 108.815830 +849.000000 872.000000 108.146318 +850.000000 872.000000 107.426113 +851.000000 872.000000 106.645068 +852.000000 872.000000 105.593594 +853.000000 872.000000 104.798896 +854.000000 872.000000 104.937373 +855.000000 872.000000 106.389854 +856.000000 872.000000 108.024658 +857.000000 872.000000 109.143057 +858.000000 872.000000 110.298369 +859.000000 872.000000 111.131094 +860.000000 872.000000 111.640723 +861.000000 872.000000 112.344912 +862.000000 872.000000 113.501045 +863.000000 872.000000 115.425947 +864.000000 872.000000 117.105322 +865.000000 872.000000 118.399160 +866.000000 872.000000 119.824795 +867.000000 872.000000 121.224668 +868.000000 872.000000 122.587715 +869.000000 872.000000 124.278711 +870.000000 872.000000 126.139395 +871.000000 872.000000 126.821699 +872.000000 872.000000 126.260293 +873.000000 872.000000 125.634629 +874.000000 872.000000 124.914980 +875.000000 872.000000 123.985732 +876.000000 872.000000 122.910488 +877.000000 872.000000 122.062588 +878.000000 872.000000 121.116748 +879.000000 872.000000 120.024404 +880.000000 872.000000 119.059258 +881.000000 872.000000 118.709600 +882.000000 872.000000 118.052490 +883.000000 872.000000 117.196836 +884.000000 872.000000 116.637715 +885.000000 872.000000 115.985918 +886.000000 872.000000 115.156592 +887.000000 872.000000 114.427861 +888.000000 872.000000 113.795918 +889.000000 872.000000 113.773613 +890.000000 872.000000 114.029795 +891.000000 872.000000 114.169121 +892.000000 872.000000 114.545234 +893.000000 872.000000 115.075322 +894.000000 872.000000 115.709229 +895.000000 872.000000 116.735996 +896.000000 872.000000 118.011846 +897.000000 872.000000 119.257188 +898.000000 872.000000 120.498164 +821.000000 873.000000 100.632842 +822.000000 873.000000 101.519082 +823.000000 873.000000 102.508604 +824.000000 873.000000 103.378535 +825.000000 873.000000 104.062900 +826.000000 873.000000 104.709678 +827.000000 873.000000 105.368750 +828.000000 873.000000 106.154912 +829.000000 873.000000 107.003271 +830.000000 873.000000 107.852021 +831.000000 873.000000 108.777080 +832.000000 873.000000 109.546729 +833.000000 873.000000 110.413936 +834.000000 873.000000 111.203271 +835.000000 873.000000 111.894180 +836.000000 873.000000 112.571055 +837.000000 873.000000 113.164414 +838.000000 873.000000 113.576738 +839.000000 873.000000 113.692354 +840.000000 873.000000 114.049170 +841.000000 873.000000 113.828535 +842.000000 873.000000 112.649619 +843.000000 873.000000 111.462598 +844.000000 873.000000 110.401270 +845.000000 873.000000 109.319043 +846.000000 873.000000 108.640898 +847.000000 873.000000 108.301436 +848.000000 873.000000 107.890527 +849.000000 873.000000 107.467207 +850.000000 873.000000 106.922979 +851.000000 873.000000 106.082314 +852.000000 873.000000 105.125576 +853.000000 873.000000 104.743682 +854.000000 873.000000 105.393271 +855.000000 873.000000 106.502471 +856.000000 873.000000 107.893154 +857.000000 873.000000 108.829932 +858.000000 873.000000 109.893438 +859.000000 873.000000 110.701094 +860.000000 873.000000 111.262988 +861.000000 873.000000 111.861621 +862.000000 873.000000 113.156064 +863.000000 873.000000 114.770908 +864.000000 873.000000 115.911553 +865.000000 873.000000 117.172314 +866.000000 873.000000 119.197246 +867.000000 873.000000 120.658135 +868.000000 873.000000 121.927373 +869.000000 873.000000 123.381826 +870.000000 873.000000 125.017256 +871.000000 873.000000 125.600625 +872.000000 873.000000 125.099736 +873.000000 873.000000 124.738213 +874.000000 873.000000 124.441113 +875.000000 873.000000 124.069375 +876.000000 873.000000 123.264912 +877.000000 873.000000 122.245244 +878.000000 873.000000 121.146182 +879.000000 873.000000 119.929365 +880.000000 873.000000 118.723232 +881.000000 873.000000 118.077822 +882.000000 873.000000 117.590029 +883.000000 873.000000 116.921074 +884.000000 873.000000 116.349258 +885.000000 873.000000 115.765479 +886.000000 873.000000 114.968721 +887.000000 873.000000 114.349307 +888.000000 873.000000 113.852822 +889.000000 873.000000 113.696953 +890.000000 873.000000 113.682412 +891.000000 873.000000 113.821738 +892.000000 873.000000 113.951533 +893.000000 873.000000 114.221934 +894.000000 873.000000 115.041914 +895.000000 873.000000 116.034160 +896.000000 873.000000 117.299844 +897.000000 873.000000 118.484971 +898.000000 873.000000 119.657920 +821.000000 874.000000 100.414033 +822.000000 874.000000 101.189541 +823.000000 874.000000 102.275264 +824.000000 874.000000 103.214395 +825.000000 874.000000 103.894941 +826.000000 874.000000 104.482617 +827.000000 874.000000 105.094150 +828.000000 874.000000 105.855488 +829.000000 874.000000 106.811201 +830.000000 874.000000 107.856230 +831.000000 874.000000 108.579219 +832.000000 874.000000 109.290752 +833.000000 874.000000 110.019561 +834.000000 874.000000 110.720391 +835.000000 874.000000 111.341338 +836.000000 874.000000 111.865908 +837.000000 874.000000 112.262500 +838.000000 874.000000 112.515371 +839.000000 874.000000 112.660439 +840.000000 874.000000 113.249912 +841.000000 874.000000 113.332588 +842.000000 874.000000 112.522344 +843.000000 874.000000 111.380586 +844.000000 874.000000 110.123975 +845.000000 874.000000 108.963086 +846.000000 874.000000 108.137324 +847.000000 874.000000 107.498066 +848.000000 874.000000 107.013701 +849.000000 874.000000 106.698174 +850.000000 874.000000 106.358857 +851.000000 874.000000 105.566660 +852.000000 874.000000 104.873232 +853.000000 874.000000 104.877988 +854.000000 874.000000 105.695400 +855.000000 874.000000 106.744600 +856.000000 874.000000 107.896113 +857.000000 874.000000 108.865059 +858.000000 874.000000 109.620371 +859.000000 874.000000 110.438682 +860.000000 874.000000 110.999863 +861.000000 874.000000 111.679570 +862.000000 874.000000 112.799082 +863.000000 874.000000 114.316855 +864.000000 874.000000 115.496494 +865.000000 874.000000 116.734248 +866.000000 874.000000 118.268232 +867.000000 874.000000 119.825537 +868.000000 874.000000 121.165244 +869.000000 874.000000 122.636650 +870.000000 874.000000 124.131006 +871.000000 874.000000 124.165664 +872.000000 874.000000 123.779922 +873.000000 874.000000 123.551318 +874.000000 874.000000 123.391309 +875.000000 874.000000 123.257451 +876.000000 874.000000 123.022471 +877.000000 874.000000 122.226445 +878.000000 874.000000 121.065225 +879.000000 874.000000 119.927432 +880.000000 874.000000 118.726104 +881.000000 874.000000 117.569180 +882.000000 874.000000 116.921611 +883.000000 874.000000 116.472256 +884.000000 874.000000 115.945801 +885.000000 874.000000 115.429258 +886.000000 874.000000 114.780176 +887.000000 874.000000 114.231602 +888.000000 874.000000 113.922881 +889.000000 874.000000 113.650410 +890.000000 874.000000 113.374121 +891.000000 874.000000 113.398818 +892.000000 874.000000 113.509541 +893.000000 874.000000 113.784297 +894.000000 874.000000 114.528828 +895.000000 874.000000 115.150127 +896.000000 874.000000 116.329756 +897.000000 874.000000 117.532959 +898.000000 874.000000 118.480615 +821.000000 875.000000 100.159121 +822.000000 875.000000 101.018672 +823.000000 875.000000 102.075615 +824.000000 875.000000 103.055811 +825.000000 875.000000 103.688701 +826.000000 875.000000 104.275410 +827.000000 875.000000 104.843721 +828.000000 875.000000 105.637734 +829.000000 875.000000 106.579678 +830.000000 875.000000 107.595811 +831.000000 875.000000 108.353008 +832.000000 875.000000 108.971553 +833.000000 875.000000 109.594395 +834.000000 875.000000 110.222451 +835.000000 875.000000 110.697461 +836.000000 875.000000 110.991250 +837.000000 875.000000 111.299844 +838.000000 875.000000 111.458828 +839.000000 875.000000 111.771797 +840.000000 875.000000 112.463457 +841.000000 875.000000 113.063887 +842.000000 875.000000 112.343799 +843.000000 875.000000 111.200732 +844.000000 875.000000 109.916387 +845.000000 875.000000 108.723193 +846.000000 875.000000 107.739102 +847.000000 875.000000 106.928486 +848.000000 875.000000 106.240352 +849.000000 875.000000 105.865557 +850.000000 875.000000 105.464492 +851.000000 875.000000 104.972334 +852.000000 875.000000 104.711670 +853.000000 875.000000 105.113721 +854.000000 875.000000 105.973760 +855.000000 875.000000 106.955830 +856.000000 875.000000 108.048799 +857.000000 875.000000 108.985957 +858.000000 875.000000 109.613877 +859.000000 875.000000 110.357373 +860.000000 875.000000 110.961602 +861.000000 875.000000 111.655439 +862.000000 875.000000 112.671230 +863.000000 875.000000 114.176396 +864.000000 875.000000 115.345762 +865.000000 875.000000 116.407910 +866.000000 875.000000 117.693330 +867.000000 875.000000 119.182412 +868.000000 875.000000 120.700078 +869.000000 875.000000 122.086309 +870.000000 875.000000 123.084189 +871.000000 875.000000 122.920537 +872.000000 875.000000 122.564121 +873.000000 875.000000 122.380254 +874.000000 875.000000 122.248916 +875.000000 875.000000 122.234111 +876.000000 875.000000 121.978984 +877.000000 875.000000 121.609609 +878.000000 875.000000 120.737920 +879.000000 875.000000 119.716250 +880.000000 875.000000 118.498906 +881.000000 875.000000 117.397061 +882.000000 875.000000 116.636807 +883.000000 875.000000 116.103486 +884.000000 875.000000 115.610264 +885.000000 875.000000 115.138623 +886.000000 875.000000 114.695176 +887.000000 875.000000 114.172852 +888.000000 875.000000 113.905020 +889.000000 875.000000 113.540850 +890.000000 875.000000 113.273154 +891.000000 875.000000 113.098213 +892.000000 875.000000 113.142910 +893.000000 875.000000 113.248105 +894.000000 875.000000 113.782568 +895.000000 875.000000 114.385527 +896.000000 875.000000 115.336348 +897.000000 875.000000 116.268643 +898.000000 875.000000 117.315283 +821.000000 876.000000 99.891025 +822.000000 876.000000 100.756563 +823.000000 876.000000 101.805273 +824.000000 876.000000 102.854473 +825.000000 876.000000 103.539678 +826.000000 876.000000 104.135469 +827.000000 876.000000 104.748437 +828.000000 876.000000 105.470811 +829.000000 876.000000 106.373389 +830.000000 876.000000 107.288291 +831.000000 876.000000 108.021084 +832.000000 876.000000 108.555215 +833.000000 876.000000 109.100947 +834.000000 876.000000 109.622227 +835.000000 876.000000 109.929209 +836.000000 876.000000 110.121211 +837.000000 876.000000 110.392900 +838.000000 876.000000 110.624092 +839.000000 876.000000 110.887471 +840.000000 876.000000 111.547051 +841.000000 876.000000 112.379326 +842.000000 876.000000 112.486230 +843.000000 876.000000 111.255352 +844.000000 876.000000 109.975176 +845.000000 876.000000 108.726318 +846.000000 876.000000 107.519932 +847.000000 876.000000 106.511426 +848.000000 876.000000 105.655381 +849.000000 876.000000 105.047314 +850.000000 876.000000 104.757324 +851.000000 876.000000 104.664082 +852.000000 876.000000 104.770361 +853.000000 876.000000 105.335869 +854.000000 876.000000 106.057666 +855.000000 876.000000 106.966289 +856.000000 876.000000 108.077236 +857.000000 876.000000 108.930518 +858.000000 876.000000 109.541533 +859.000000 876.000000 110.382822 +860.000000 876.000000 110.999385 +861.000000 876.000000 111.759795 +862.000000 876.000000 112.773125 +863.000000 876.000000 114.221338 +864.000000 876.000000 115.344697 +865.000000 876.000000 116.457100 +866.000000 876.000000 117.473770 +867.000000 876.000000 118.716064 +868.000000 876.000000 120.090850 +869.000000 876.000000 121.569238 +870.000000 876.000000 122.374824 +871.000000 876.000000 121.851846 +872.000000 876.000000 121.387012 +873.000000 876.000000 121.133672 +874.000000 876.000000 121.060273 +875.000000 876.000000 121.014053 +876.000000 876.000000 120.820791 +877.000000 876.000000 120.667432 +878.000000 876.000000 120.266318 +879.000000 876.000000 119.352148 +880.000000 876.000000 118.282422 +881.000000 876.000000 117.257002 +882.000000 876.000000 116.520898 +883.000000 876.000000 115.875752 +884.000000 876.000000 115.413555 +885.000000 876.000000 114.970225 +886.000000 876.000000 114.503848 +887.000000 876.000000 114.050332 +888.000000 876.000000 113.730049 +889.000000 876.000000 113.278555 +890.000000 876.000000 112.945078 +891.000000 876.000000 112.713379 +892.000000 876.000000 112.598457 +893.000000 876.000000 112.623594 +894.000000 876.000000 113.067100 +895.000000 876.000000 113.677012 +896.000000 876.000000 114.313594 +897.000000 876.000000 115.270371 +898.000000 876.000000 116.391650 +821.000000 877.000000 99.523242 +822.000000 877.000000 100.474395 +823.000000 877.000000 101.537373 +824.000000 877.000000 102.698633 +825.000000 877.000000 103.425166 +826.000000 877.000000 104.022168 +827.000000 877.000000 104.597422 +828.000000 877.000000 105.218633 +829.000000 877.000000 105.930479 +830.000000 877.000000 106.792227 +831.000000 877.000000 107.368604 +832.000000 877.000000 107.846777 +833.000000 877.000000 108.357656 +834.000000 877.000000 108.861074 +835.000000 877.000000 109.239570 +836.000000 877.000000 109.394023 +837.000000 877.000000 109.581367 +838.000000 877.000000 109.887314 +839.000000 877.000000 110.303857 +840.000000 877.000000 110.873223 +841.000000 877.000000 111.868262 +842.000000 877.000000 112.355225 +843.000000 877.000000 111.180547 +844.000000 877.000000 109.960078 +845.000000 877.000000 108.549727 +846.000000 877.000000 107.147715 +847.000000 877.000000 106.186484 +848.000000 877.000000 105.203145 +849.000000 877.000000 104.665127 +850.000000 877.000000 104.502041 +851.000000 877.000000 104.474805 +852.000000 877.000000 104.718818 +853.000000 877.000000 105.367588 +854.000000 877.000000 106.137383 +855.000000 877.000000 107.060283 +856.000000 877.000000 108.001943 +857.000000 877.000000 108.796689 +858.000000 877.000000 109.466709 +859.000000 877.000000 110.262510 +860.000000 877.000000 110.993916 +861.000000 877.000000 111.797451 +862.000000 877.000000 112.871514 +863.000000 877.000000 114.157588 +864.000000 877.000000 115.245723 +865.000000 877.000000 116.295156 +866.000000 877.000000 117.219912 +867.000000 877.000000 118.285713 +868.000000 877.000000 119.480664 +869.000000 877.000000 120.776309 +870.000000 877.000000 121.173418 +871.000000 877.000000 120.606006 +872.000000 877.000000 120.164414 +873.000000 877.000000 119.996670 +874.000000 877.000000 120.001953 +875.000000 877.000000 119.942354 +876.000000 877.000000 119.960830 +877.000000 877.000000 119.870391 +878.000000 877.000000 119.567236 +879.000000 877.000000 118.754551 +880.000000 877.000000 117.880723 +881.000000 877.000000 117.009590 +882.000000 877.000000 116.359482 +883.000000 877.000000 115.694746 +884.000000 877.000000 115.152822 +885.000000 877.000000 114.665898 +886.000000 877.000000 114.239580 +887.000000 877.000000 113.813164 +888.000000 877.000000 113.354922 +889.000000 877.000000 112.942344 +890.000000 877.000000 112.559014 +891.000000 877.000000 112.369551 +892.000000 877.000000 112.230967 +893.000000 877.000000 112.307998 +894.000000 877.000000 112.482891 +895.000000 877.000000 113.049844 +896.000000 877.000000 113.823350 +897.000000 877.000000 114.566846 +898.000000 877.000000 115.364678 +821.000000 878.000000 99.062529 +822.000000 878.000000 100.204453 +823.000000 878.000000 101.277539 +824.000000 878.000000 102.389287 +825.000000 878.000000 103.272979 +826.000000 878.000000 103.822168 +827.000000 878.000000 104.426836 +828.000000 878.000000 104.945840 +829.000000 878.000000 105.460010 +830.000000 878.000000 105.941563 +831.000000 878.000000 106.640518 +832.000000 878.000000 107.101963 +833.000000 878.000000 107.673896 +834.000000 878.000000 108.133389 +835.000000 878.000000 108.464785 +836.000000 878.000000 108.633711 +837.000000 878.000000 108.855518 +838.000000 878.000000 109.182148 +839.000000 878.000000 109.676953 +840.000000 878.000000 110.274121 +841.000000 878.000000 110.971543 +842.000000 878.000000 111.497549 +843.000000 878.000000 110.762041 +844.000000 878.000000 109.662559 +845.000000 878.000000 108.422158 +846.000000 878.000000 107.075713 +847.000000 878.000000 105.994492 +848.000000 878.000000 104.988848 +849.000000 878.000000 104.444102 +850.000000 878.000000 104.214238 +851.000000 878.000000 104.442373 +852.000000 878.000000 104.769141 +853.000000 878.000000 105.433672 +854.000000 878.000000 106.144434 +855.000000 878.000000 107.030195 +856.000000 878.000000 107.952285 +857.000000 878.000000 108.659717 +858.000000 878.000000 109.357568 +859.000000 878.000000 110.096836 +860.000000 878.000000 110.794092 +861.000000 878.000000 111.770410 +862.000000 878.000000 112.966045 +863.000000 878.000000 114.031055 +864.000000 878.000000 115.075410 +865.000000 878.000000 116.183838 +866.000000 878.000000 116.965313 +867.000000 878.000000 117.909199 +868.000000 878.000000 119.057832 +869.000000 878.000000 120.077100 +870.000000 878.000000 120.124600 +871.000000 878.000000 119.734307 +872.000000 878.000000 119.534219 +873.000000 878.000000 119.436699 +874.000000 878.000000 119.332832 +875.000000 878.000000 119.152920 +876.000000 878.000000 119.086543 +877.000000 878.000000 118.939971 +878.000000 878.000000 118.593291 +879.000000 878.000000 117.988037 +880.000000 878.000000 117.283535 +881.000000 878.000000 116.688350 +882.000000 878.000000 116.019102 +883.000000 878.000000 115.345918 +884.000000 878.000000 114.753457 +885.000000 878.000000 114.289004 +886.000000 878.000000 113.870283 +887.000000 878.000000 113.471748 +888.000000 878.000000 113.041953 +889.000000 878.000000 112.555889 +890.000000 878.000000 112.216523 +891.000000 878.000000 111.959131 +892.000000 878.000000 111.766465 +893.000000 878.000000 111.758779 +894.000000 878.000000 112.015391 +895.000000 878.000000 112.477646 +896.000000 878.000000 113.168330 +897.000000 878.000000 113.874160 +898.000000 878.000000 114.513105 +821.000000 879.000000 98.852285 +822.000000 879.000000 99.977148 +823.000000 879.000000 100.939170 +824.000000 879.000000 101.939326 +825.000000 879.000000 103.019316 +826.000000 879.000000 103.554307 +827.000000 879.000000 104.106611 +828.000000 879.000000 104.573936 +829.000000 879.000000 104.913623 +830.000000 879.000000 105.323311 +831.000000 879.000000 105.814463 +832.000000 879.000000 106.447559 +833.000000 879.000000 106.959912 +834.000000 879.000000 107.431953 +835.000000 879.000000 107.733105 +836.000000 879.000000 107.907295 +837.000000 879.000000 108.092959 +838.000000 879.000000 108.494199 +839.000000 879.000000 109.039619 +840.000000 879.000000 109.568730 +841.000000 879.000000 110.156885 +842.000000 879.000000 110.486299 +843.000000 879.000000 109.756201 +844.000000 879.000000 109.252607 +845.000000 879.000000 108.212920 +846.000000 879.000000 106.771250 +847.000000 879.000000 105.786914 +848.000000 879.000000 104.985850 +849.000000 879.000000 104.335068 +850.000000 879.000000 103.834590 +851.000000 879.000000 104.472041 +852.000000 879.000000 104.974082 +853.000000 879.000000 105.503418 +854.000000 879.000000 106.237832 +855.000000 879.000000 107.074531 +856.000000 879.000000 107.815439 +857.000000 879.000000 108.519785 +858.000000 879.000000 109.258770 +859.000000 879.000000 110.012246 +860.000000 879.000000 110.801699 +861.000000 879.000000 111.699932 +862.000000 879.000000 112.751855 +863.000000 879.000000 113.852100 +864.000000 879.000000 114.872920 +865.000000 879.000000 115.886016 +866.000000 879.000000 116.759658 +867.000000 879.000000 117.617246 +868.000000 879.000000 118.557344 +869.000000 879.000000 119.234844 +870.000000 879.000000 119.299844 +871.000000 879.000000 119.345703 +872.000000 879.000000 119.172188 +873.000000 879.000000 118.957256 +874.000000 879.000000 118.748838 +875.000000 879.000000 118.441211 +876.000000 879.000000 118.133135 +877.000000 879.000000 117.799053 +878.000000 879.000000 117.504814 +879.000000 879.000000 117.130049 +880.000000 879.000000 116.511025 +881.000000 879.000000 115.925000 +882.000000 879.000000 115.279531 +883.000000 879.000000 114.701182 +884.000000 879.000000 114.157402 +885.000000 879.000000 113.763818 +886.000000 879.000000 113.501689 +887.000000 879.000000 113.158281 +888.000000 879.000000 112.666250 +889.000000 879.000000 112.215654 +890.000000 879.000000 111.843428 +891.000000 879.000000 111.568408 +892.000000 879.000000 111.345625 +893.000000 879.000000 111.153789 +894.000000 879.000000 111.386914 +895.000000 879.000000 111.730186 +896.000000 879.000000 112.281309 +897.000000 879.000000 112.964209 +898.000000 879.000000 113.530068 +821.000000 880.000000 98.571260 +822.000000 880.000000 99.621768 +823.000000 880.000000 100.536104 +824.000000 880.000000 101.379941 +825.000000 880.000000 102.366553 +826.000000 880.000000 103.230127 +827.000000 880.000000 103.702500 +828.000000 880.000000 104.093066 +829.000000 880.000000 104.390029 +830.000000 880.000000 104.799922 +831.000000 880.000000 105.311602 +832.000000 880.000000 105.888291 +833.000000 880.000000 106.364629 +834.000000 880.000000 106.672988 +835.000000 880.000000 106.948604 +836.000000 880.000000 107.146182 +837.000000 880.000000 107.393027 +838.000000 880.000000 107.753223 +839.000000 880.000000 108.328057 +840.000000 880.000000 108.836250 +841.000000 880.000000 109.250830 +842.000000 880.000000 109.378623 +843.000000 880.000000 108.716514 +844.000000 880.000000 108.145752 +845.000000 880.000000 107.568496 +846.000000 880.000000 106.724570 +847.000000 880.000000 105.788496 +848.000000 880.000000 105.007393 +849.000000 880.000000 104.297402 +850.000000 880.000000 103.563398 +851.000000 880.000000 104.472695 +852.000000 880.000000 105.044316 +853.000000 880.000000 105.581699 +854.000000 880.000000 106.250791 +855.000000 880.000000 107.007100 +856.000000 880.000000 107.735469 +857.000000 880.000000 108.463604 +858.000000 880.000000 109.217129 +859.000000 880.000000 110.073955 +860.000000 880.000000 110.941445 +861.000000 880.000000 111.570078 +862.000000 880.000000 112.221260 +863.000000 880.000000 113.378691 +864.000000 880.000000 114.485342 +865.000000 880.000000 115.571514 +866.000000 880.000000 116.538135 +867.000000 880.000000 117.262031 +868.000000 880.000000 117.965586 +869.000000 880.000000 118.387314 +870.000000 880.000000 118.643105 +871.000000 880.000000 118.889531 +872.000000 880.000000 118.775850 +873.000000 880.000000 118.452559 +874.000000 880.000000 118.086162 +875.000000 880.000000 117.753262 +876.000000 880.000000 117.355762 +877.000000 880.000000 116.992305 +878.000000 880.000000 116.595352 +879.000000 880.000000 116.102773 +880.000000 880.000000 115.726416 +881.000000 880.000000 115.050352 +882.000000 880.000000 114.453359 +883.000000 880.000000 113.995762 +884.000000 880.000000 113.594482 +885.000000 880.000000 113.353779 +886.000000 880.000000 113.084297 +887.000000 880.000000 112.738916 +888.000000 880.000000 112.244512 +889.000000 880.000000 111.768027 +890.000000 880.000000 111.355635 +891.000000 880.000000 111.107129 +892.000000 880.000000 110.813223 +893.000000 880.000000 110.579795 +894.000000 880.000000 110.588389 +895.000000 880.000000 110.907227 +896.000000 880.000000 111.325654 +897.000000 880.000000 112.054189 +898.000000 880.000000 112.700586 +821.000000 881.000000 98.206787 +822.000000 881.000000 99.098916 +823.000000 881.000000 99.935449 +824.000000 881.000000 100.765039 +825.000000 881.000000 101.625068 +826.000000 881.000000 102.542383 +827.000000 881.000000 103.196143 +828.000000 881.000000 103.547041 +829.000000 881.000000 103.805537 +830.000000 881.000000 104.292705 +831.000000 881.000000 104.805010 +832.000000 881.000000 105.303291 +833.000000 881.000000 105.663076 +834.000000 881.000000 105.942568 +835.000000 881.000000 106.179971 +836.000000 881.000000 106.400264 +837.000000 881.000000 106.608779 +838.000000 881.000000 107.064209 +839.000000 881.000000 107.666016 +840.000000 881.000000 108.121074 +841.000000 881.000000 108.462832 +842.000000 881.000000 108.184346 +843.000000 881.000000 107.326328 +844.000000 881.000000 106.847939 +845.000000 881.000000 106.753018 +846.000000 881.000000 106.359893 +847.000000 881.000000 105.651807 +848.000000 881.000000 104.945254 +849.000000 881.000000 104.213545 +850.000000 881.000000 103.654619 +851.000000 881.000000 104.432734 +852.000000 881.000000 104.991992 +853.000000 881.000000 105.669219 +854.000000 881.000000 106.222314 +855.000000 881.000000 106.992930 +856.000000 881.000000 107.680283 +857.000000 881.000000 108.540000 +858.000000 881.000000 109.298076 +859.000000 881.000000 110.045010 +860.000000 881.000000 110.867959 +861.000000 881.000000 111.444893 +862.000000 881.000000 111.994883 +863.000000 881.000000 112.902891 +864.000000 881.000000 114.050527 +865.000000 881.000000 115.110840 +866.000000 881.000000 116.164102 +867.000000 881.000000 116.780850 +868.000000 881.000000 117.331348 +869.000000 881.000000 117.724365 +870.000000 881.000000 117.990303 +871.000000 881.000000 118.203027 +872.000000 881.000000 118.116162 +873.000000 881.000000 117.873760 +874.000000 881.000000 117.509277 +875.000000 881.000000 117.140381 +876.000000 881.000000 116.840820 +877.000000 881.000000 116.501719 +878.000000 881.000000 116.047188 +879.000000 881.000000 115.598428 +880.000000 881.000000 115.161494 +881.000000 881.000000 114.499551 +882.000000 881.000000 113.895137 +883.000000 881.000000 113.510508 +884.000000 881.000000 113.112539 +885.000000 881.000000 112.824492 +886.000000 881.000000 112.520488 +887.000000 881.000000 112.194766 +888.000000 881.000000 111.748516 +889.000000 881.000000 111.297861 +890.000000 881.000000 110.929531 +891.000000 881.000000 110.603125 +892.000000 881.000000 110.208516 +893.000000 881.000000 109.942002 +894.000000 881.000000 109.882578 +895.000000 881.000000 110.205576 +896.000000 881.000000 110.625205 +897.000000 881.000000 111.221494 +898.000000 881.000000 111.984961 +821.000000 882.000000 97.605439 +822.000000 882.000000 98.460283 +823.000000 882.000000 99.289209 +824.000000 882.000000 100.081621 +825.000000 882.000000 100.830977 +826.000000 882.000000 101.604951 +827.000000 882.000000 102.340713 +828.000000 882.000000 102.863574 +829.000000 882.000000 103.044297 +830.000000 882.000000 103.590078 +831.000000 882.000000 104.212822 +832.000000 882.000000 104.685771 +833.000000 882.000000 105.018076 +834.000000 882.000000 105.268438 +835.000000 882.000000 105.407266 +836.000000 882.000000 105.598428 +837.000000 882.000000 105.910693 +838.000000 882.000000 106.551982 +839.000000 882.000000 107.155850 +840.000000 882.000000 107.498242 +841.000000 882.000000 107.456504 +842.000000 882.000000 107.094609 +843.000000 882.000000 106.332500 +844.000000 882.000000 105.826318 +845.000000 882.000000 105.690000 +846.000000 882.000000 105.585996 +847.000000 882.000000 105.382188 +848.000000 882.000000 104.916729 +849.000000 882.000000 104.080869 +850.000000 882.000000 103.757529 +851.000000 882.000000 104.433320 +852.000000 882.000000 105.018691 +853.000000 882.000000 105.709316 +854.000000 882.000000 106.386846 +855.000000 882.000000 107.129785 +856.000000 882.000000 107.740313 +857.000000 882.000000 108.506201 +858.000000 882.000000 109.293574 +859.000000 882.000000 109.970566 +860.000000 882.000000 110.688574 +861.000000 882.000000 111.277910 +862.000000 882.000000 111.862646 +863.000000 882.000000 112.606113 +864.000000 882.000000 113.605576 +865.000000 882.000000 114.640742 +866.000000 882.000000 115.498467 +867.000000 882.000000 116.223779 +868.000000 882.000000 116.622119 +869.000000 882.000000 117.005342 +870.000000 882.000000 117.426064 +871.000000 882.000000 117.631914 +872.000000 882.000000 117.552041 +873.000000 882.000000 117.258252 +874.000000 882.000000 116.845859 +875.000000 882.000000 116.437734 +876.000000 882.000000 116.220225 +877.000000 882.000000 115.932744 +878.000000 882.000000 115.515811 +879.000000 882.000000 115.118389 +880.000000 882.000000 114.631543 +881.000000 882.000000 114.016973 +882.000000 882.000000 113.523193 +883.000000 882.000000 113.183691 +884.000000 882.000000 112.648916 +885.000000 882.000000 112.268223 +886.000000 882.000000 111.975361 +887.000000 882.000000 111.654727 +888.000000 882.000000 111.246523 +889.000000 882.000000 110.870205 +890.000000 882.000000 110.497168 +891.000000 882.000000 110.183525 +892.000000 882.000000 109.732090 +893.000000 882.000000 109.470518 +894.000000 882.000000 109.390088 +895.000000 882.000000 109.547891 +896.000000 882.000000 109.920703 +897.000000 882.000000 110.410830 +898.000000 882.000000 111.236318 +821.000000 883.000000 97.231533 +822.000000 883.000000 97.783398 +823.000000 883.000000 98.706396 +824.000000 883.000000 99.417754 +825.000000 883.000000 100.050039 +826.000000 883.000000 100.723477 +827.000000 883.000000 101.310400 +828.000000 883.000000 101.813770 +829.000000 883.000000 102.305313 +830.000000 883.000000 102.971914 +831.000000 883.000000 103.588516 +832.000000 883.000000 104.072148 +833.000000 883.000000 104.343750 +834.000000 883.000000 104.489395 +835.000000 883.000000 104.576787 +836.000000 883.000000 104.862988 +837.000000 883.000000 105.499102 +838.000000 883.000000 106.171621 +839.000000 883.000000 106.594219 +840.000000 883.000000 106.883115 +841.000000 883.000000 106.728584 +842.000000 883.000000 106.181309 +843.000000 883.000000 105.338486 +844.000000 883.000000 104.995557 +845.000000 883.000000 104.977627 +846.000000 883.000000 105.001084 +847.000000 883.000000 104.961904 +848.000000 883.000000 104.680684 +849.000000 883.000000 104.080439 +850.000000 883.000000 103.808418 +851.000000 883.000000 104.528467 +852.000000 883.000000 105.140166 +853.000000 883.000000 105.753311 +854.000000 883.000000 106.467227 +855.000000 883.000000 107.168008 +856.000000 883.000000 107.767354 +857.000000 883.000000 108.461904 +858.000000 883.000000 109.172012 +859.000000 883.000000 109.834668 +860.000000 883.000000 110.543369 +861.000000 883.000000 111.156074 862.000000 883.000000 111.711660 \ No newline at end of file diff --git a/data/occ/SurfaceFromPoints/sol1.dat b/data/occ/SurfaceFromPoints/sol1.dat index 8d3be7d337..499ce49fe3 100644 --- a/data/occ/SurfaceFromPoints/sol1.dat +++ b/data/occ/SurfaceFromPoints/sol1.dat @@ -1,14 +1,14 @@ -0 0 0 -0 5 0 -0 10 0 -5 10 0 -10 10 0 -10 5 0 -10 0 0 -5 0 0 -2.5 2.5 5 -2.5 7.5 5 -5 2.5 0 -5 7.5 0 -7.5 2.5 -3 +0 0 0 +0 5 0 +0 10 0 +5 10 0 +10 10 0 +10 5 0 +10 0 0 +5 0 0 +2.5 2.5 5 +2.5 7.5 5 +5 2.5 0 +5 7.5 0 +7.5 2.5 -3 7.5 7.5 -3 \ No newline at end of file diff --git a/data/occ/SurfaceFromPoints/sol2.dat b/data/occ/SurfaceFromPoints/sol2.dat index 77e84258ab..57a592637e 100644 --- a/data/occ/SurfaceFromPoints/sol2.dat +++ b/data/occ/SurfaceFromPoints/sol2.dat @@ -1,36 +1,36 @@ -0 0 0 -10 0 0 -20 0 0 -30 0 0 -40 0 0 -50 0 0 -0 10 0 -10 10 2.6 -20 10 4.5 -30 10 6.3 -40 10 2.4 -50 10 4.5 -0 20 6.1 -10 20 2.6 -20 20 .8 -30 20 0 -40 20 2.1 -50 20 4.6 -0 30 8.2 -10 30 3.7 -20 30 3 -30 30 2.9 -40 30 9.3 -50 30 4.6 -0 40 9.3 -10 40 5.5 -20 40 2.7 -30 40 4.5 -40 40 9.2 -50 40 .8 -0 50 0.1 -10 50 3.4 -20 50 6.1 -30 50 0 -40 50 0 -50 50 0 +0 0 0 +10 0 0 +20 0 0 +30 0 0 +40 0 0 +50 0 0 +0 10 0 +10 10 2.6 +20 10 4.5 +30 10 6.3 +40 10 2.4 +50 10 4.5 +0 20 6.1 +10 20 2.6 +20 20 .8 +30 20 0 +40 20 2.1 +50 20 4.6 +0 30 8.2 +10 30 3.7 +20 30 3 +30 30 2.9 +40 30 9.3 +50 30 4.6 +0 40 9.3 +10 40 5.5 +20 40 2.7 +30 40 4.5 +40 40 9.2 +50 40 .8 +0 50 0.1 +10 50 3.4 +20 50 6.1 +30 50 0 +40 50 0 +50 50 0 diff --git a/dox/DoxygenLayout.xml b/dox/DoxygenLayout.xml index 21d15aaef8..4040fb151e 100644 --- a/dox/DoxygenLayout.xml +++ b/dox/DoxygenLayout.xml @@ -1,188 +1,188 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dox/resources/occt_pdf_template.tex b/dox/resources/occt_pdf_template.tex index ff6ec5488b..a9d0cd211e 100644 --- a/dox/resources/occt_pdf_template.tex +++ b/dox/resources/occt_pdf_template.tex @@ -1,151 +1,151 @@ -\batchmode -\nonstopmode -\documentclass[oneside]{article} -\n -% Packages required by doxygen -\usepackage{calc} -\usepackage{doxygen} -\usepackage{graphicx} -\usepackage[utf8]{inputenc} -\usepackage{makeidx} -\usepackage{multicol} -\usepackage{multirow} -\usepackage{textcomp} -\usepackage{amsmath} -\usepackage[table]{xcolor} -\usepackage{indentfirst} - -% Font selection -\usepackage[T1]{fontenc} -\usepackage{mathptmx} -\usepackage[scaled=.90]{helvet} -\usepackage{courier} -\usepackage{amssymb} -\usepackage{sectsty} -\renewcommand{\familydefault}{\sfdefault} -\allsectionsfont{% - \fontseries{bc}\selectfont% - \color{darkgray}% -} -\renewcommand{\DoxyLabelFont}{% - \fontseries{bc}\selectfont% - \color{darkgray}% -} -\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} - -% Page & text layout -\usepackage{geometry} -\geometry{% - a4paper,% - top=2.5cm,% - bottom=2.5cm,% - left=2.5cm,% - right=2.5cm% -} -\tolerance=750 -\hfuzz=15pt -\hbadness=750 -\setlength{\emergencystretch}{15pt} -\setlength{\parindent}{0cm} -\setlength{\parskip}{0.2cm} -\makeatletter -\renewcommand{\paragraph}{% - \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@parafont% - }% -} -\renewcommand{\subparagraph}{% - \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@subparafont% - }% -} -\makeatother - -% Headers & footers -\usepackage{fancyhdr} -\pagestyle{fancyplain} -\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} -\fancyhead[CE]{\fancyplain{}{}} -\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} -\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} -\fancyhead[CO]{\fancyplain{}{}} -\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} -\fancyfoot[LE]{\fancyplain{}{}} -\fancyfoot[CE]{\fancyplain{}{}} -\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize (c) Open CASCADE DEFYEAR}} -\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize (c) Open CASCADE DEFYEAR}} -\fancyfoot[CO]{\fancyplain{}{}} -\fancyfoot[RO]{\fancyplain{}{}} -\renewcommand{\footrulewidth}{0.4pt} -\renewcommand{\sectionmark}[1]{% - \markright{\thesection\ #1}% -} - -% Indices & bibliography -\usepackage{natbib} -\usepackage[titles]{tocloft} -\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}} -\setcounter{tocdepth}{3} -\setcounter{secnumdepth}{5} -\makeindex - -% Hyperlinks (required, but should be loaded last) -\usepackage{ifpdf} -\ifpdf - \usepackage[pdftex,pagebackref=true]{hyperref} -\else - \usepackage[ps2pdf,pagebackref=true]{hyperref} -\fi -\hypersetup{% - colorlinks=true,% - linkcolor=blue,% - citecolor=black,% - urlcolor=blue,% - unicode% -} - -% Custom commands -\newcommand{\clearemptydoublepage}{% - \newpage{\pagestyle{empty}\cleardoublepage}% -} - - -%===== C O N T E N T S ===== - -\begin{document} - -% Titlepage & ToC -\hypersetup{pageanchor=false} -\pagenumbering{roman} -\begin{titlepage} -\vspace*{7cm} -\begin{center}% -\includegraphics[width=0.75\textwidth, height=0.2\textheight]{../../../dox/resources/occt_logo.png}\\ -{\Large Open C\-A\-S\-C\-A\-D\-E Technology \\\\\Large DEFCASVERSION }\\ -\vspace*{1cm} -{\Large DEFDOCLABEL}\\ -\vspace*{1cm} -\vspace*{0.5cm} -{\small \today}\ -\end{center} -\end{titlepage} -\clearpage -\pagenumbering{roman} -\newpage -\pagenumbering{arabic} - \begingroup - \hypersetup{pageanchor=true, linkcolor=black, colorlinks=true} - \tableofcontents - \endgroup - -\let\stdsection\section - \renewcommand\section{\pagebreak\stdsection} -\hypertarget{DEFFILENAME}{} -\input{DEFFILENAME} - -% Index -\newpage -\phantomsection -\addcontentsline{toc}{part}{Index} -\printindex\n -\end{document} +\batchmode +\nonstopmode +\documentclass[oneside]{article} +\n +% Packages required by doxygen +\usepackage{calc} +\usepackage{doxygen} +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{makeidx} +\usepackage{multicol} +\usepackage{multirow} +\usepackage{textcomp} +\usepackage{amsmath} +\usepackage[table]{xcolor} +\usepackage{indentfirst} + +% Font selection +\usepackage[T1]{fontenc} +\usepackage{mathptmx} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\usepackage{amssymb} +\usepackage{sectsty} +\renewcommand{\familydefault}{\sfdefault} +\allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + +% Page & text layout +\usepackage{geometry} +\geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% +} +\tolerance=750 +\hfuzz=15pt +\hbadness=750 +\setlength{\emergencystretch}{15pt} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% +} +\renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% +} +\makeatother + +% Headers & footers +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} +\fancyhead[CE]{\fancyplain{}{}} +\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} +\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} +\fancyhead[CO]{\fancyplain{}{}} +\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} +\fancyfoot[LE]{\fancyplain{}{}} +\fancyfoot[CE]{\fancyplain{}{}} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize (c) Open CASCADE DEFYEAR}} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize (c) Open CASCADE DEFYEAR}} +\fancyfoot[CO]{\fancyplain{}{}} +\fancyfoot[RO]{\fancyplain{}{}} +\renewcommand{\footrulewidth}{0.4pt} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} + +% Indices & bibliography +\usepackage{natbib} +\usepackage[titles]{tocloft} +\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{5} +\makeindex + +% Hyperlinks (required, but should be loaded last) +\usepackage{ifpdf} +\ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} +\else + \usepackage[ps2pdf,pagebackref=true]{hyperref} +\fi +\hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=black,% + urlcolor=blue,% + unicode% +} + +% Custom commands +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} + + +%===== C O N T E N T S ===== + +\begin{document} + +% Titlepage & ToC +\hypersetup{pageanchor=false} +\pagenumbering{roman} +\begin{titlepage} +\vspace*{7cm} +\begin{center}% +\includegraphics[width=0.75\textwidth, height=0.2\textheight]{../../../dox/resources/occt_logo.png}\\ +{\Large Open C\-A\-S\-C\-A\-D\-E Technology \\\\\Large DEFCASVERSION }\\ +\vspace*{1cm} +{\Large DEFDOCLABEL}\\ +\vspace*{1cm} +\vspace*{0.5cm} +{\small \today}\ +\end{center} +\end{titlepage} +\clearpage +\pagenumbering{roman} +\newpage +\pagenumbering{arabic} + \begingroup + \hypersetup{pageanchor=true, linkcolor=black, colorlinks=true} + \tableofcontents + \endgroup + +\let\stdsection\section + \renewcommand\section{\pagebreak\stdsection} +\hypertarget{DEFFILENAME}{} +\input{DEFFILENAME} + +% Index +\newpage +\phantomsection +\addcontentsline{toc}{part}{Index} +\printindex\n +\end{document} diff --git a/dox/resources/occt_rm.doxyfile b/dox/resources/occt_rm.doxyfile index 81fe90a13c..bc12c06110 100644 --- a/dox/resources/occt_rm.doxyfile +++ b/dox/resources/occt_rm.doxyfile @@ -1,46 +1,46 @@ -DOXYFILE_ENCODING = UTF-8 -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -MULTILINE_CPP_IS_BRIEF = YES -INHERIT_DOCS = YES -REPEAT_BRIEF = YES -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -OPTIMIZE_OUTPUT_FOR_C = YES -SUBGROUPING = YES -DISTRIBUTE_GROUP_DOC = YES -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_LOCAL_CLASSES = NO -EXTRACT_LOCAL_METHODS = NO -HIDE_FRIEND_COMPOUNDS = YES -HIDE_UNDOC_MEMBERS = NO -INLINE_INFO = YES -VERBATIM_HEADERS = NO -QUIET = YES -WARNINGS = NO -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -PREDEFINED = Standard_EXPORT Standard_NODISCARD Standard_OVERRIDE:=override __Standard_API __Draw_API Handle(a):=Handle DEFINE_STANDARD_ALLOC DEFINE_NCOLLECTION_ALLOC "Standard_DEPRECATED=//! @deprecated " -GENERATE_HTML = YES -GENERATE_LATEX = NO -SEARCH_INCLUDES = YES -ALLEXTERNALS = NO -EXTERNAL_GROUPS = NO -COLLABORATION_GRAPH = NO -ENABLE_PREPROCESSING = YES -INCLUDE_FILE_PATTERNS = *.hxx *.pxx -EXCLUDE_PATTERNS = */Handle_*.hxx -SKIP_FUNCTION_MACROS = YES -INLINE_SOURCES = NO -HAVE_DOT = YES -DOT_GRAPH_MAX_NODES = 100 -INCLUDE_GRAPH = NO -INCLUDED_BY_GRAPH = NO -DOT_MULTI_TARGETS = YES -DOT_IMAGE_FORMAT = png -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -GRAPHICAL_HIERARCHY = NO +DOXYFILE_ENCODING = UTF-8 +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +MULTILINE_CPP_IS_BRIEF = YES +INHERIT_DOCS = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +OPTIMIZE_OUTPUT_FOR_C = YES +SUBGROUPING = YES +DISTRIBUTE_GROUP_DOC = YES +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +HIDE_FRIEND_COMPOUNDS = YES +HIDE_UNDOC_MEMBERS = NO +INLINE_INFO = YES +VERBATIM_HEADERS = NO +QUIET = YES +WARNINGS = NO +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +PREDEFINED = Standard_EXPORT Standard_NODISCARD Standard_OVERRIDE:=override __Standard_API __Draw_API Handle(a):=Handle DEFINE_STANDARD_ALLOC DEFINE_NCOLLECTION_ALLOC "Standard_DEPRECATED=//! @deprecated " +GENERATE_HTML = YES +GENERATE_LATEX = NO +SEARCH_INCLUDES = YES +ALLEXTERNALS = NO +EXTERNAL_GROUPS = NO +COLLABORATION_GRAPH = NO +ENABLE_PREPROCESSING = YES +INCLUDE_FILE_PATTERNS = *.hxx *.pxx +EXCLUDE_PATTERNS = */Handle_*.hxx +SKIP_FUNCTION_MACROS = YES +INLINE_SOURCES = NO +HAVE_DOT = YES +DOT_GRAPH_MAX_NODES = 100 +INCLUDE_GRAPH = NO +INCLUDED_BY_GRAPH = NO +DOT_MULTI_TARGETS = YES +DOT_IMAGE_FORMAT = png +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +GRAPHICAL_HIERARCHY = NO diff --git a/dox/resources/occt_ug_html.doxyfile b/dox/resources/occt_ug_html.doxyfile index 267e6a9de1..d9b906e7a9 100644 --- a/dox/resources/occt_ug_html.doxyfile +++ b/dox/resources/occt_ug_html.doxyfile @@ -1,59 +1,59 @@ -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "Open CASCADE Technology" -PROJECT_BRIEF = -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -ABBREVIATE_BRIEF = -FULL_PATH_NAMES = YES -INHERIT_DOCS = YES -TAB_SIZE = 4 -MARKDOWN_SUPPORT = YES -EXTRACT_ALL = YES -CASE_SENSE_NAMES = NO -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = *.md *.dox -RECURSIVE = YES -SOURCE_BROWSER = NO -INLINE_SOURCES = YES -GENERATE_DOCSET = NO -GENERATE_CHI = NO -GENERATE_QHP = NO -GENERATE_ECLIPSEHELP = NO -GENERATE_RTF = NO -GENERATE_MAN = NO -GENERATE_XML = NO -GENERATE_DOCBOOK = NO -GENERATE_AUTOGEN_DEF = NO -GENERATE_PERLMOD = NO -STRIP_CODE_COMMENTS = NO -GENERATE_LATEX = NO -GENERATE_HTMLHELP = NO -GENERATE_HTML = YES -HTML_COLORSTYLE_HUE = 220 -HTML_COLORSTYLE_SAT = 100 -HTML_COLORSTYLE_GAMMA = 80 -HTML_TIMESTAMP = YES -HTML_DYNAMIC_SECTIONS = YES -HTML_INDEX_NUM_ENTRIES = 100 -DISABLE_INDEX = YES -GENERATE_TREEVIEW = YES -ENUM_VALUES_PER_LINE = 8 -TREEVIEW_WIDTH = 250 -EXTERNAL_PAGES = NO -SEARCHDATA_FILE = searchdata.xml -SKIP_FUNCTION_MACROS = YES -FORMULA_FONTSIZE = 12 -FORMULA_TRANSPARENT = YES -USE_MATHJAX = YES -MATHJAX_FORMAT = HTML-CSS - -# Define alias for inserting images in uniform way (both HTML and PDF) -ALIASES += figure{1}="\image html \1" -ALIASES += figure{2}="\image html \1 \2" -ALIASES += figure{3}="\image html \1 \2" +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "Open CASCADE Technology" +PROJECT_BRIEF = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +ABBREVIATE_BRIEF = +FULL_PATH_NAMES = YES +INHERIT_DOCS = YES +TAB_SIZE = 4 +MARKDOWN_SUPPORT = YES +EXTRACT_ALL = YES +CASE_SENSE_NAMES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.md *.dox +RECURSIVE = YES +SOURCE_BROWSER = NO +INLINE_SOURCES = YES +GENERATE_DOCSET = NO +GENERATE_CHI = NO +GENERATE_QHP = NO +GENERATE_ECLIPSEHELP = NO +GENERATE_RTF = NO +GENERATE_MAN = NO +GENERATE_XML = NO +GENERATE_DOCBOOK = NO +GENERATE_AUTOGEN_DEF = NO +GENERATE_PERLMOD = NO +STRIP_CODE_COMMENTS = NO +GENERATE_LATEX = NO +GENERATE_HTMLHELP = NO +GENERATE_HTML = YES +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = YES +HTML_DYNAMIC_SECTIONS = YES +HTML_INDEX_NUM_ENTRIES = 100 +DISABLE_INDEX = YES +GENERATE_TREEVIEW = YES +ENUM_VALUES_PER_LINE = 8 +TREEVIEW_WIDTH = 250 +EXTERNAL_PAGES = NO +SEARCHDATA_FILE = searchdata.xml +SKIP_FUNCTION_MACROS = YES +FORMULA_FONTSIZE = 12 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = YES +MATHJAX_FORMAT = HTML-CSS + +# Define alias for inserting images in uniform way (both HTML and PDF) +ALIASES += figure{1}="\image html \1" +ALIASES += figure{2}="\image html \1 \2" +ALIASES += figure{3}="\image html \1 \2" diff --git a/dox/resources/occt_ug_pdf.doxyfile b/dox/resources/occt_ug_pdf.doxyfile index 8457345812..d82983d63b 100644 --- a/dox/resources/occt_ug_pdf.doxyfile +++ b/dox/resources/occt_ug_pdf.doxyfile @@ -1,52 +1,52 @@ -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "Open CASCADE Technology" -PROJECT_BRIEF = -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -ABBREVIATE_BRIEF = -FULL_PATH_NAMES = YES -INHERIT_DOCS = YES -TAB_SIZE = 4 -MARKDOWN_SUPPORT = YES -EXTRACT_ALL = YES -CASE_SENSE_NAMES = NO -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = *.md *.dox -RECURSIVE = YES -SOURCE_BROWSER = NO -INLINE_SOURCES = YES -GENERATE_DOCSET = NO -GENERATE_CHI = NO -GENERATE_QHP = NO -GENERATE_ECLIPSEHELP = NO -GENERATE_RTF = NO -GENERATE_MAN = NO -GENERATE_XML = NO -GENERATE_DOCBOOK = NO -GENERATE_AUTOGEN_DEF = NO -GENERATE_PERLMOD = NO -STRIP_CODE_COMMENTS = NO -GENERATE_HTMLHELP = NO -GENERATE_HTML = NO -DISABLE_INDEX = YES -GENERATE_TREEVIEW = NO -PREDEFINED = PDF_ONLY -GENERATE_LATEX = YES -COMPACT_LATEX = YES -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -LATEX_BATCHMODE = YES -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex - -# Define alias for inserting images in uniform way (both HTML and PDF) -ALIASES += figure{1}="\image latex \1 \n" -ALIASES += figure{2}="\image latex \1 \2 \n" -ALIASES += figure{3}="\image latex \1 \2 width=\3 \n" +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "Open CASCADE Technology" +PROJECT_BRIEF = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +ABBREVIATE_BRIEF = +FULL_PATH_NAMES = YES +INHERIT_DOCS = YES +TAB_SIZE = 4 +MARKDOWN_SUPPORT = YES +EXTRACT_ALL = YES +CASE_SENSE_NAMES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.md *.dox +RECURSIVE = YES +SOURCE_BROWSER = NO +INLINE_SOURCES = YES +GENERATE_DOCSET = NO +GENERATE_CHI = NO +GENERATE_QHP = NO +GENERATE_ECLIPSEHELP = NO +GENERATE_RTF = NO +GENERATE_MAN = NO +GENERATE_XML = NO +GENERATE_DOCBOOK = NO +GENERATE_AUTOGEN_DEF = NO +GENERATE_PERLMOD = NO +STRIP_CODE_COMMENTS = NO +GENERATE_HTMLHELP = NO +GENERATE_HTML = NO +DISABLE_INDEX = YES +GENERATE_TREEVIEW = NO +PREDEFINED = PDF_ONLY +GENERATE_LATEX = YES +COMPACT_LATEX = YES +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex + +# Define alias for inserting images in uniform way (both HTML and PDF) +ALIASES += figure{1}="\image latex \1 \n" +ALIASES += figure{2}="\image latex \1 \2 \n" +ALIASES += figure{3}="\image latex \1 \2 width=\3 \n" diff --git a/genconf b/genconf index 1801833524..357872ee1d 100755 --- a/genconf +++ b/genconf @@ -1,15 +1,15 @@ -#!/bin/bash - -# Helper script to configure environment for genproj tool. -# Running it requires that Tcl should be in the PATH - -# initialize environment -aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; -if [ ! -e "${aScriptPath}/env.sh" ]; then - cat ${aScriptPath}/adm/templates/env.sh | sed -e '/__CASROOT__/d' > ${aScriptPath}/env.sh -fi - -if [ -e "${aScriptPath}/custom.sh" ]; then source "${aScriptPath}/custom.sh"; fi - -# run GUI tool -tclsh "${aScriptPath}/adm/genconf.tcl" +#!/bin/bash + +# Helper script to configure environment for genproj tool. +# Running it requires that Tcl should be in the PATH + +# initialize environment +aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; +if [ ! -e "${aScriptPath}/env.sh" ]; then + cat ${aScriptPath}/adm/templates/env.sh | sed -e '/__CASROOT__/d' > ${aScriptPath}/env.sh +fi + +if [ -e "${aScriptPath}/custom.sh" ]; then source "${aScriptPath}/custom.sh"; fi + +# run GUI tool +tclsh "${aScriptPath}/adm/genconf.tcl" diff --git a/gendoc b/gendoc index 2d77ea9fae..0ad2a03485 100755 --- a/gendoc +++ b/gendoc @@ -1,19 +1,19 @@ -#!/bin/bash - -# Helper script to run generation of OCCT documentation on Linux. -# Running it requires that Tcl, Doxygen, and MikTex (for PDF generation) should be in the PATH - -anArgs=$* -anOldPath="$PATH" -anOldLd="$LD_LIBRARY_PATH" -anOldDyLd="$DYLD_LIBRARY_PATH" - -# go to the script directory -aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; -if [ -e "${aScriptPath}/env.sh" ]; then source "${aScriptPath}/env.sh"; fi - -tclsh "${aScriptPath}/adm/start.tcl" gendoc $anArgs - -export PATH="$anOldPath" -export LD_LIBRARY_PATH="$anOldLd" -export DYLD_LIBRARY_PATH="$anOldDyLd" +#!/bin/bash + +# Helper script to run generation of OCCT documentation on Linux. +# Running it requires that Tcl, Doxygen, and MikTex (for PDF generation) should be in the PATH + +anArgs=$* +anOldPath="$PATH" +anOldLd="$LD_LIBRARY_PATH" +anOldDyLd="$DYLD_LIBRARY_PATH" + +# go to the script directory +aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; +if [ -e "${aScriptPath}/env.sh" ]; then source "${aScriptPath}/env.sh"; fi + +tclsh "${aScriptPath}/adm/start.tcl" gendoc $anArgs + +export PATH="$anOldPath" +export LD_LIBRARY_PATH="$anOldLd" +export DYLD_LIBRARY_PATH="$anOldDyLd" diff --git a/genproj b/genproj index 123ffafdd6..629c4ccaa2 100755 --- a/genproj +++ b/genproj @@ -1,47 +1,47 @@ -#!/bin/bash - -# Helper script to run generation of CBP/XCode projects on Linux / OS X. -# Running it requires that Tcl should be in the PATH - -anOldPath="$PATH" -anOldLd="$LD_LIBRARY_PATH" -anOldDyLd="$DYLD_LIBRARY_PATH" - -# go to the script directory -aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; -if [ ! -e "${aScriptPath}/env.sh" ]; then -cat ${aScriptPath}/adm/templates/env.sh | sed -e '/__CASROOT__/d' > ${aScriptPath}/env.sh -fi - -aSystem=`uname -s` -aTarget="$1" -anOpt2=$2 -anOpt3=$3 -anOpt4=$4 -anOpt5=$5 - -if [ ! -e "${aScriptPath}/custom.sh" ]; then - tclsh "${aScriptPath}/adm/genconf.tcl" -fi - -if [ ! -e "${aScriptPath}/custom.sh" ]; then - echo "Error: custom.sh is not present." - echo "Run the script again to generate custom.sh, or create it manually" - exit 1 -fi -source "${aScriptPath}/custom.sh" - -if [ -e "${aScriptPath}/env.sh" ]; then source "${aScriptPath}/env.sh"; fi - -if [ "$aTarget" == "" ]; then aTarget=$PRJFMT; fi; -if [ "$aTarget" == "" ]; then - aTarget="cbp" - if [ "$aSystem" == "Darwin" ]; then aTarget="xcd"; fi; -fi - -cd $aScriptPath -tclsh "./adm/start.tcl" genproj ${aTarget} -solution "OCCT" $anOpt2 $anOpt3 $anOpt4 $anOpt5 - -export PATH="$anOldPath" -export LD_LIBRARY_PATH="$anOldLd" -export DYLD_LIBRARY_PATH="$anOldDyLd" +#!/bin/bash + +# Helper script to run generation of CBP/XCode projects on Linux / OS X. +# Running it requires that Tcl should be in the PATH + +anOldPath="$PATH" +anOldLd="$LD_LIBRARY_PATH" +anOldDyLd="$DYLD_LIBRARY_PATH" + +# go to the script directory +aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; +if [ ! -e "${aScriptPath}/env.sh" ]; then +cat ${aScriptPath}/adm/templates/env.sh | sed -e '/__CASROOT__/d' > ${aScriptPath}/env.sh +fi + +aSystem=`uname -s` +aTarget="$1" +anOpt2=$2 +anOpt3=$3 +anOpt4=$4 +anOpt5=$5 + +if [ ! -e "${aScriptPath}/custom.sh" ]; then + tclsh "${aScriptPath}/adm/genconf.tcl" +fi + +if [ ! -e "${aScriptPath}/custom.sh" ]; then + echo "Error: custom.sh is not present." + echo "Run the script again to generate custom.sh, or create it manually" + exit 1 +fi +source "${aScriptPath}/custom.sh" + +if [ -e "${aScriptPath}/env.sh" ]; then source "${aScriptPath}/env.sh"; fi + +if [ "$aTarget" == "" ]; then aTarget=$PRJFMT; fi; +if [ "$aTarget" == "" ]; then + aTarget="cbp" + if [ "$aSystem" == "Darwin" ]; then aTarget="xcd"; fi; +fi + +cd $aScriptPath +tclsh "./adm/start.tcl" genproj ${aTarget} -solution "OCCT" $anOpt2 $anOpt3 $anOpt4 $anOpt5 + +export PATH="$anOldPath" +export LD_LIBRARY_PATH="$anOldLd" +export DYLD_LIBRARY_PATH="$anOldDyLd" diff --git a/samples/CSharp/WPF_D3D/About.xaml b/samples/CSharp/WPF_D3D/About.xaml index c9f4fb29fe..bf33a446a9 100644 --- a/samples/CSharp/WPF_D3D/About.xaml +++ b/samples/CSharp/WPF_D3D/About.xaml @@ -1,18 +1,18 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/CSharp/WPF_D3D/MaterialDlg.xaml b/samples/CSharp/WPF_D3D/MaterialDlg.xaml index dafa734a31..ee33550700 100644 --- a/samples/CSharp/WPF_D3D/MaterialDlg.xaml +++ b/samples/CSharp/WPF_D3D/MaterialDlg.xaml @@ -1,20 +1,20 @@ - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/CSharp/WPF_D3D/Properties/Settings.settings b/samples/CSharp/WPF_D3D/Properties/Settings.settings index 033d7a5e9e..8f2fd95d62 100644 --- a/samples/CSharp/WPF_D3D/Properties/Settings.settings +++ b/samples/CSharp/WPF_D3D/Properties/Settings.settings @@ -1,7 +1,7 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/samples/CSharp/WPF_D3D/Simple Styles.xaml b/samples/CSharp/WPF_D3D/Simple Styles.xaml index 3be3f557c0..800cefae1b 100644 --- a/samples/CSharp/WPF_D3D/Simple Styles.xaml +++ b/samples/CSharp/WPF_D3D/Simple Styles.xaml @@ -1,1134 +1,1134 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/CSharp/WPF_D3D/app.config b/samples/CSharp/WPF_D3D/app.config index 786a845b30..99dca7597b 100644 --- a/samples/CSharp/WPF_D3D/app.config +++ b/samples/CSharp/WPF_D3D/app.config @@ -1,3 +1,3 @@ - - - + + + diff --git a/samples/CSharp/WPF_WinForms/About.xaml b/samples/CSharp/WPF_WinForms/About.xaml index 950405f605..8992d8adfe 100644 --- a/samples/CSharp/WPF_WinForms/About.xaml +++ b/samples/CSharp/WPF_WinForms/About.xaml @@ -1,18 +1,18 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/CSharp/WPF_WinForms/MaterialDlg.xaml b/samples/CSharp/WPF_WinForms/MaterialDlg.xaml index 8b2249dfc9..0e0917d711 100644 --- a/samples/CSharp/WPF_WinForms/MaterialDlg.xaml +++ b/samples/CSharp/WPF_WinForms/MaterialDlg.xaml @@ -1,20 +1,20 @@ - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/CSharp/WPF_WinForms/Properties/Settings.settings b/samples/CSharp/WPF_WinForms/Properties/Settings.settings index 033d7a5e9e..8f2fd95d62 100644 --- a/samples/CSharp/WPF_WinForms/Properties/Settings.settings +++ b/samples/CSharp/WPF_WinForms/Properties/Settings.settings @@ -1,7 +1,7 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/samples/CSharp/WPF_WinForms/Simple Styles.xaml b/samples/CSharp/WPF_WinForms/Simple Styles.xaml index 3be3f557c0..800cefae1b 100644 --- a/samples/CSharp/WPF_WinForms/Simple Styles.xaml +++ b/samples/CSharp/WPF_WinForms/Simple Styles.xaml @@ -1,1134 +1,1134 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/CSharp/WPF_WinForms/app.config b/samples/CSharp/WPF_WinForms/app.config index 786a845b30..99dca7597b 100644 --- a/samples/CSharp/WPF_WinForms/app.config +++ b/samples/CSharp/WPF_WinForms/app.config @@ -1,3 +1,3 @@ - - - + + + diff --git a/samples/CSharp/WinForms/app.config b/samples/CSharp/WinForms/app.config index a7c484feaa..55062d8ada 100644 --- a/samples/CSharp/WinForms/app.config +++ b/samples/CSharp/WinForms/app.config @@ -1,38 +1,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/OCCTOverview/code/DataExchange.xml b/samples/OCCTOverview/code/DataExchange.xml index a664a7a3f7..a9b08b5cd0 100644 --- a/samples/OCCTOverview/code/DataExchange.xml +++ b/samples/OCCTOverview/code/DataExchange.xml @@ -1,17 +1,17 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/OCCTOverview/code/Geometry.xml b/samples/OCCTOverview/code/Geometry.xml index 75133644bb..4932e81320 100644 --- a/samples/OCCTOverview/code/Geometry.xml +++ b/samples/OCCTOverview/code/Geometry.xml @@ -1,92 +1,92 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/OCCTOverview/code/Ocaf.xml b/samples/OCCTOverview/code/Ocaf.xml index ea269c4b19..36cf446da3 100644 --- a/samples/OCCTOverview/code/Ocaf.xml +++ b/samples/OCCTOverview/code/Ocaf.xml @@ -1,21 +1,21 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/OCCTOverview/code/Samples.qrc b/samples/OCCTOverview/code/Samples.qrc index 5bc1783345..32bd173a2e 100644 --- a/samples/OCCTOverview/code/Samples.qrc +++ b/samples/OCCTOverview/code/Samples.qrc @@ -1,11 +1,11 @@ - - - Geometry.xml - Topology.xml - Triangulation.xml - DataExchange.xml - Viewer3d.xml - Viewer2d.xml - Ocaf.xml - - + + + Geometry.xml + Topology.xml + Triangulation.xml + DataExchange.xml + Viewer3d.xml + Viewer2d.xml + Ocaf.xml + + diff --git a/samples/OCCTOverview/code/Topology.xml b/samples/OCCTOverview/code/Topology.xml index a49a69e84a..aa67d1cbba 100644 --- a/samples/OCCTOverview/code/Topology.xml +++ b/samples/OCCTOverview/code/Topology.xml @@ -1,51 +1,51 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/OCCTOverview/code/Triangulation.xml b/samples/OCCTOverview/code/Triangulation.xml index 04d37b3db0..3f081ac9d9 100644 --- a/samples/OCCTOverview/code/Triangulation.xml +++ b/samples/OCCTOverview/code/Triangulation.xml @@ -1,7 +1,7 @@ - - - - - - - + + + + + + + diff --git a/samples/OCCTOverview/code/Viewer2d.xml b/samples/OCCTOverview/code/Viewer2d.xml index 3b890519ef..af449bdc3d 100644 --- a/samples/OCCTOverview/code/Viewer2d.xml +++ b/samples/OCCTOverview/code/Viewer2d.xml @@ -1,20 +1,20 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/OCCTOverview/code/Viewer3d.xml b/samples/OCCTOverview/code/Viewer3d.xml index 2c504e5dc6..c1b7b553da 100644 --- a/samples/OCCTOverview/code/Viewer3d.xml +++ b/samples/OCCTOverview/code/Viewer3d.xml @@ -1,31 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/glfw/adm/cmake/FindOpenCASCADE.cmake b/samples/glfw/adm/cmake/FindOpenCASCADE.cmake index f079c15425..3af9694a38 100644 --- a/samples/glfw/adm/cmake/FindOpenCASCADE.cmake +++ b/samples/glfw/adm/cmake/FindOpenCASCADE.cmake @@ -1,157 +1,157 @@ -# This script finds OpenCASCADE Technology libraries. -# The script requires: -# OpenCASCADE_DIR - root OCCT folder or folder with CMake configuration files -# -# Script will define the following variables on success: -# OpenCASCADE_FOUND - package is successfully found -# OpenCASCADE_INCLUDE_DIR - directory with headers -# OpenCASCADE_LIBRARY_DIR - directory with libraries for linker -# OpenCASCADE_BINARY_DIR - directory with DLLs -include(FindPackageHandleStandardArgs) - -# MY_PLATFORM variable -math (EXPR MY_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)") -if (WIN32) - set (MY_PLATFORM "win${MY_BITNESS}") -elseif(APPLE) - set (MY_PLATFORM "mac") -else() - set (MY_PLATFORM "lin") -endif() - -# MY_PLATFORM_AND_COMPILER variable -if (MSVC) - if (MSVC90) - set (MY_COMPILER vc9) - elseif (MSVC10) - set (MY_COMPILER vc10) - elseif (MSVC11) - set (MY_COMPILER vc11) - elseif (MSVC12) - set (MY_COMPILER vc12) - elseif (MSVC14) - set (MY_COMPILER vc14) - else() - set (MY_COMPILER vc15) - message (WARNING "Unknown msvc version. $$MY_COMPILER is used") - endif() -elseif (DEFINED CMAKE_COMPILER_IS_GNUCC) - set (MY_COMPILER gcc) -elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX) - set (MY_COMPILER gcc) -elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]") - set (MY_COMPILER clang) -elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Ii][Nn][Tt][Ee][Ll]") - set (MY_COMPILER icc) -else() - set (MY_COMPILER ${CMAKE_GENERATOR}) - string (REGEX REPLACE " " "" COMPILER ${MY_COMPILER}) -endif() -set (MY_PLATFORM_AND_COMPILER "${MY_PLATFORM}/${MY_COMPILER}") - -set (OpenCASCADE_DIR "" CACHE PATH "Path to Open CASCADE libraries.") - -# default paths -set (OpenCASCADE_INCLUDE_DIR "${OpenCASCADE_DIR}/inc") -set (OpenCASCADE_LIBRARY_DIR "${OpenCASCADE_DIR}/${MY_PLATFORM_AND_COMPILER}/lib") -set (OpenCASCADE_BINARY_DIR "${OpenCASCADE_DIR}/${MY_PLATFORM_AND_COMPILER}/bin") - -# complete list of OCCT Toolkits (copy-paste from adm/UDLIST, since installed OCCT does not include UDLIST) -set (OpenCASCADE_TKLIST "") -set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKernel TKMath) # FoundationClasses -set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKG2d TKG3d TKGeomBase TKBRep) # ModelingData -set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKGeomAlgo TKTopAlgo TKPrim TKBO TKBool TKHLR TKFillet TKOffset TKFeat TKMesh TKXMesh TKShHealing) # ModelingAlgorithms -set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKService TKV3d TKOpenGl TKMeshVS TKIVtk TKD3DHost) # Visualization -set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKCDF TKLCAF TKCAF TKBinL TKXmlL TKBin TKXml TKStdL TKStd TKTObj TKBinTObj TKXmlTObj TKVCAF) # ApplicationFramework -set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKXSBase TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP TKIGES TKXCAF TKXDEIGES TKXDESTEP TKSTL TKVRML TKXmlXCAF TKBinXCAF TKRWMesh) # DataExchange -set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKDraw TKViewerTest) # Draw - -# validate location of OCCT libraries and headers -set (OpenCASCADE_INCLUDE_DIR_FOUND) -set (OpenCASCADE_LIBRARY_DIR_FOUND) -set (OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND) -set (OpenCASCADE_IMPLIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX}) -set (OpenCASCADE_SHAREDLIB_RELEASE_FOUND) -set (OpenCASCADE_SHAREDLIB_DEBUG_FOUND) -if (EXISTS "${OpenCASCADE_INCLUDE_DIR}/Standard.hxx") - set (OpenCASCADE_INCLUDE_DIR_FOUND ON) -endif() - -if (EXISTS "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_STATIC_LIBRARY_SUFFIX}") - set (OpenCASCADE_LIBRARY_DIR_FOUND ON) -elseif (NOT WIN32 AND EXISTS "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - set (OpenCASCADE_LIBRARY_DIR_FOUND ON) - set (OpenCASCADE_IMPLIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}) -endif() - -if (EXISTS "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_STATIC_LIBRARY_SUFFIX}") - set (OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND ON) -elseif (NOT WIN32 AND EXISTS "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - set (OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND ON) - set (OpenCASCADE_IMPLIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}) -elseif (OpenCASCADE_LIBRARY_DIR_FOUND) - message (STATUS "Only release OpenCASCADE libraries have been found") -endif() - -if (NOT OpenCASCADE_LIBRARY_DIR_FOUND AND OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND) - set (OpenCASCADE_LIBRARY_DIR_FOUND ON) - message (WARNING "Only debug OpenCASCADE libraries have been found") -endif() - -if (WIN32) - if (EXISTS "${OpenCASCADE_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - set (OpenCASCADE_SHAREDLIB_RELEASE_FOUND ON) - endif() - if (EXISTS "${OpenCASCADE_BINARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - set (OpenCASCADE_SHAREDLIB_DEBUG_FOUND ON) - endif() -else() - if (EXISTS "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - set (OpenCASCADE_SHAREDLIB_RELEASE_FOUND ON) - endif() - if (EXISTS "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - set (OpenCASCADE_SHAREDLIB_DEBUG_FOUND ON) - endif() -endif() - -if (OpenCASCADE_INCLUDE_DIR_FOUND AND OpenCASCADE_LIBRARY_DIR_FOUND) - set (OpenCASCADE_FOUND ON) - set (OpenCASCADE_INSTALL_PREFIX ${OpenCASCADE_DIR}) - - # Define OCCT toolkits so that CMake can put absolute paths to linker; - # the library existance is not checked here, since modules can be disabled. - foreach (aLibIter ${OpenCASCADE_TKLIST}) - add_library (${aLibIter} SHARED IMPORTED) - - set_property (TARGET ${aLibIter} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - set_target_properties (${aLibIter} PROPERTIES IMPORTED_IMPLIB_RELEASE "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${OpenCASCADE_IMPLIB_SUFFIX}") - if (OpenCASCADE_SHAREDLIB_RELEASE_FOUND) - if (WIN32) - set_target_properties (${aLibIter} PROPERTIES IMPORTED_LOCATION_RELEASE "${OpenCASCADE_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${CMAKE_SHARED_LIBRARY_SUFFIX}") - else() - set_target_properties (${aLibIter} PROPERTIES IMPORTED_LOCATION_RELEASE "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${CMAKE_SHARED_LIBRARY_SUFFIX}") - endif() - endif() - - if (OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND) - set_property (TARGET ${aLibIter} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) - set_target_properties (${aLibIter} PROPERTIES IMPORTED_IMPLIB_DEBUG "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${OpenCASCADE_IMPLIB_SUFFIX}") - if (OpenCASCADE_SHAREDLIB_DEBUG_FOUND) - if (WIN32) - set_target_properties (${aLibIter} PROPERTIES IMPORTED_LOCATION_DEBUG "${OpenCASCADE_BINARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${CMAKE_SHARED_LIBRARY_SUFFIX}") - else() - set_target_properties (${aLibIter} PROPERTIES IMPORTED_LOCATION_DEBUG "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${CMAKE_SHARED_LIBRARY_SUFFIX}") - endif() - endif() - endif() - endforeach() -else() - # fallback searching for CMake configs - if (NOT "${OpenCASCADE_DIR}" STREQUAL "") - set (anOcctDirBak "${OpenCASCADE_DIR}") - find_package (OpenCASCADE CONFIG QUIET PATHS "${OpenCASCADE_DIR}" NO_DEFAULT_PATH) - set (OpenCASCADE_DIR "${anOcctDirBak}" CACHE PATH "Path to Open CASCADE libraries." FORCE) - else() - find_package (OpenCASCADE CONFIG QUIET) - endif() -endif() +# This script finds OpenCASCADE Technology libraries. +# The script requires: +# OpenCASCADE_DIR - root OCCT folder or folder with CMake configuration files +# +# Script will define the following variables on success: +# OpenCASCADE_FOUND - package is successfully found +# OpenCASCADE_INCLUDE_DIR - directory with headers +# OpenCASCADE_LIBRARY_DIR - directory with libraries for linker +# OpenCASCADE_BINARY_DIR - directory with DLLs +include(FindPackageHandleStandardArgs) + +# MY_PLATFORM variable +math (EXPR MY_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)") +if (WIN32) + set (MY_PLATFORM "win${MY_BITNESS}") +elseif(APPLE) + set (MY_PLATFORM "mac") +else() + set (MY_PLATFORM "lin") +endif() + +# MY_PLATFORM_AND_COMPILER variable +if (MSVC) + if (MSVC90) + set (MY_COMPILER vc9) + elseif (MSVC10) + set (MY_COMPILER vc10) + elseif (MSVC11) + set (MY_COMPILER vc11) + elseif (MSVC12) + set (MY_COMPILER vc12) + elseif (MSVC14) + set (MY_COMPILER vc14) + else() + set (MY_COMPILER vc15) + message (WARNING "Unknown msvc version. $$MY_COMPILER is used") + endif() +elseif (DEFINED CMAKE_COMPILER_IS_GNUCC) + set (MY_COMPILER gcc) +elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX) + set (MY_COMPILER gcc) +elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Cc][Ll][Aa][Nn][Gg]") + set (MY_COMPILER clang) +elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Ii][Nn][Tt][Ee][Ll]") + set (MY_COMPILER icc) +else() + set (MY_COMPILER ${CMAKE_GENERATOR}) + string (REGEX REPLACE " " "" COMPILER ${MY_COMPILER}) +endif() +set (MY_PLATFORM_AND_COMPILER "${MY_PLATFORM}/${MY_COMPILER}") + +set (OpenCASCADE_DIR "" CACHE PATH "Path to Open CASCADE libraries.") + +# default paths +set (OpenCASCADE_INCLUDE_DIR "${OpenCASCADE_DIR}/inc") +set (OpenCASCADE_LIBRARY_DIR "${OpenCASCADE_DIR}/${MY_PLATFORM_AND_COMPILER}/lib") +set (OpenCASCADE_BINARY_DIR "${OpenCASCADE_DIR}/${MY_PLATFORM_AND_COMPILER}/bin") + +# complete list of OCCT Toolkits (copy-paste from adm/UDLIST, since installed OCCT does not include UDLIST) +set (OpenCASCADE_TKLIST "") +set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKernel TKMath) # FoundationClasses +set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKG2d TKG3d TKGeomBase TKBRep) # ModelingData +set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKGeomAlgo TKTopAlgo TKPrim TKBO TKBool TKHLR TKFillet TKOffset TKFeat TKMesh TKXMesh TKShHealing) # ModelingAlgorithms +set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKService TKV3d TKOpenGl TKMeshVS TKIVtk TKD3DHost) # Visualization +set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKCDF TKLCAF TKCAF TKBinL TKXmlL TKBin TKXml TKStdL TKStd TKTObj TKBinTObj TKXmlTObj TKVCAF) # ApplicationFramework +set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKXSBase TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP TKIGES TKXCAF TKXDEIGES TKXDESTEP TKSTL TKVRML TKXmlXCAF TKBinXCAF TKRWMesh) # DataExchange +set (OpenCASCADE_TKLIST ${OpenCASCADE_TKLIST} TKDraw TKViewerTest) # Draw + +# validate location of OCCT libraries and headers +set (OpenCASCADE_INCLUDE_DIR_FOUND) +set (OpenCASCADE_LIBRARY_DIR_FOUND) +set (OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND) +set (OpenCASCADE_IMPLIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX}) +set (OpenCASCADE_SHAREDLIB_RELEASE_FOUND) +set (OpenCASCADE_SHAREDLIB_DEBUG_FOUND) +if (EXISTS "${OpenCASCADE_INCLUDE_DIR}/Standard.hxx") + set (OpenCASCADE_INCLUDE_DIR_FOUND ON) +endif() + +if (EXISTS "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_STATIC_LIBRARY_SUFFIX}") + set (OpenCASCADE_LIBRARY_DIR_FOUND ON) +elseif (NOT WIN32 AND EXISTS "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set (OpenCASCADE_LIBRARY_DIR_FOUND ON) + set (OpenCASCADE_IMPLIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}) +endif() + +if (EXISTS "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_STATIC_LIBRARY_SUFFIX}") + set (OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND ON) +elseif (NOT WIN32 AND EXISTS "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set (OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND ON) + set (OpenCASCADE_IMPLIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}) +elseif (OpenCASCADE_LIBRARY_DIR_FOUND) + message (STATUS "Only release OpenCASCADE libraries have been found") +endif() + +if (NOT OpenCASCADE_LIBRARY_DIR_FOUND AND OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND) + set (OpenCASCADE_LIBRARY_DIR_FOUND ON) + message (WARNING "Only debug OpenCASCADE libraries have been found") +endif() + +if (WIN32) + if (EXISTS "${OpenCASCADE_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set (OpenCASCADE_SHAREDLIB_RELEASE_FOUND ON) + endif() + if (EXISTS "${OpenCASCADE_BINARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set (OpenCASCADE_SHAREDLIB_DEBUG_FOUND ON) + endif() +else() + if (EXISTS "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set (OpenCASCADE_SHAREDLIB_RELEASE_FOUND ON) + endif() + if (EXISTS "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}TKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set (OpenCASCADE_SHAREDLIB_DEBUG_FOUND ON) + endif() +endif() + +if (OpenCASCADE_INCLUDE_DIR_FOUND AND OpenCASCADE_LIBRARY_DIR_FOUND) + set (OpenCASCADE_FOUND ON) + set (OpenCASCADE_INSTALL_PREFIX ${OpenCASCADE_DIR}) + + # Define OCCT toolkits so that CMake can put absolute paths to linker; + # the library existance is not checked here, since modules can be disabled. + foreach (aLibIter ${OpenCASCADE_TKLIST}) + add_library (${aLibIter} SHARED IMPORTED) + + set_property (TARGET ${aLibIter} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties (${aLibIter} PROPERTIES IMPORTED_IMPLIB_RELEASE "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${OpenCASCADE_IMPLIB_SUFFIX}") + if (OpenCASCADE_SHAREDLIB_RELEASE_FOUND) + if (WIN32) + set_target_properties (${aLibIter} PROPERTIES IMPORTED_LOCATION_RELEASE "${OpenCASCADE_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${CMAKE_SHARED_LIBRARY_SUFFIX}") + else() + set_target_properties (${aLibIter} PROPERTIES IMPORTED_LOCATION_RELEASE "${OpenCASCADE_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${CMAKE_SHARED_LIBRARY_SUFFIX}") + endif() + endif() + + if (OpenCASCADE_LIBRARY_DEBUG_DIR_FOUND) + set_property (TARGET ${aLibIter} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties (${aLibIter} PROPERTIES IMPORTED_IMPLIB_DEBUG "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${OpenCASCADE_IMPLIB_SUFFIX}") + if (OpenCASCADE_SHAREDLIB_DEBUG_FOUND) + if (WIN32) + set_target_properties (${aLibIter} PROPERTIES IMPORTED_LOCATION_DEBUG "${OpenCASCADE_BINARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${CMAKE_SHARED_LIBRARY_SUFFIX}") + else() + set_target_properties (${aLibIter} PROPERTIES IMPORTED_LOCATION_DEBUG "${OpenCASCADE_LIBRARY_DIR}d/${CMAKE_SHARED_LIBRARY_PREFIX}${aLibIter}${CMAKE_SHARED_LIBRARY_SUFFIX}") + endif() + endif() + endif() + endforeach() +else() + # fallback searching for CMake configs + if (NOT "${OpenCASCADE_DIR}" STREQUAL "") + set (anOcctDirBak "${OpenCASCADE_DIR}") + find_package (OpenCASCADE CONFIG QUIET PATHS "${OpenCASCADE_DIR}" NO_DEFAULT_PATH) + set (OpenCASCADE_DIR "${anOcctDirBak}" CACHE PATH "Path to Open CASCADE libraries." FORCE) + else() + find_package (OpenCASCADE CONFIG QUIET) + endif() +endif() diff --git a/samples/ios/UIKitSample/UIKitSample.xcodeproj/project.pbxproj b/samples/ios/UIKitSample/UIKitSample.xcodeproj/project.pbxproj index a83efb466a..f6ca8079bc 100644 --- a/samples/ios/UIKitSample/UIKitSample.xcodeproj/project.pbxproj +++ b/samples/ios/UIKitSample/UIKitSample.xcodeproj/project.pbxproj @@ -1,565 +1,565 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0A24B9FA1EB0A7CC00A5F490 /* linkrods.step in Resources */ = {isa = PBXBuildFile; fileRef = 0A24B9F91EB0A7CC00A5F490 /* linkrods.step */; }; - 0A7DEDD61E2D1D0F00267B9B /* libfreetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDD41E2D1D0900267B9B /* libfreetype.a */; }; - 0A7DEDE71E2D28E300267B9B /* libTKBRep.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDDE1E2D28C500267B9B /* libTKBRep.a */; }; - 0A7DEDE81E2D28E300267B9B /* libTKernel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDDF1E2D28C800267B9B /* libTKernel.a */; }; - 0A7DEDE91E2D28E300267B9B /* libTKG2d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE01E2D28CB00267B9B /* libTKG2d.a */; }; - 0A7DEDEA1E2D28E300267B9B /* libTKG3d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE11E2D28CE00267B9B /* libTKG3d.a */; }; - 0A7DEDEB1E2D28E300267B9B /* libTKGeomAlgo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE21E2D28D200267B9B /* libTKGeomAlgo.a */; }; - 0A7DEDEC1E2D28E300267B9B /* libTKGeomBase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE31E2D28D500267B9B /* libTKGeomBase.a */; }; - 0A7DEDED1E2D28E300267B9B /* libTKMath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE41E2D28D800267B9B /* libTKMath.a */; }; - 0A7DEDEE1E2D28E300267B9B /* libTKShHealing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE51E2D28DC00267B9B /* libTKShHealing.a */; }; - 0A7DEDEF1E2D28E300267B9B /* libTKTopAlgo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE61E2D28DF00267B9B /* libTKTopAlgo.a */; }; - 0A7DEDF21E2D297000267B9B /* libTKHLR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF01E2D296900267B9B /* libTKHLR.a */; }; - 0A7DEDF31E2D297000267B9B /* libTKMesh.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF11E2D296C00267B9B /* libTKMesh.a */; }; - 0A7DEDF91E2D29FF00267B9B /* libTKCAF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF41E2D29EF00267B9B /* libTKCAF.a */; }; - 0A7DEDFA1E2D29FF00267B9B /* libTKCDF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF51E2D29F200267B9B /* libTKCDF.a */; }; - 0A7DEDFB1E2D29FF00267B9B /* libTKLCAF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF61E2D29F500267B9B /* libTKLCAF.a */; }; - 0A7DEDFC1E2D29FF00267B9B /* libTKV3d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF71E2D29F800267B9B /* libTKV3d.a */; }; - 0A7DEDFD1E2D29FF00267B9B /* libTKVCAF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF81E2D29FB00267B9B /* libTKVCAF.a */; }; - 0A7DEE2B1E2D2AE000267B9B /* libTKService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE0B1E2D2A9D00267B9B /* libTKService.a */; }; - 0A7DEE2E1E2D2AE000267B9B /* libTKSTEP.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE0E1E2D2AA800267B9B /* libTKSTEP.a */; }; - 0A7DEE301E2D2AE000267B9B /* libTKSTEPAttr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE101E2D2AAE00267B9B /* libTKSTEPAttr.a */; }; - 0A7DEE311E2D2AE000267B9B /* libTKSTEPBase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE111E2D2AB200267B9B /* libTKSTEPBase.a */; }; - 0A7DEE351E2D2AE000267B9B /* libTKXCAF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE151E2D2AC000267B9B /* libTKXCAF.a */; }; - 0A7DEE371E2D2AE000267B9B /* libTKXDESTEP.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE171E2D2AC700267B9B /* libTKXDESTEP.a */; }; - 0A7DEE3E1E2D2B8100267B9B /* libTKBO.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE021E2D2A7F00267B9B /* libTKBO.a */; }; - 0A7DEE3F1E2D2BB000267B9B /* libTKOpenGles.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE091E2D2A9700267B9B /* libTKOpenGles.a */; }; - 0A7DEE401E2D2BEA00267B9B /* libTKSTEP209.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE0F1E2D2AAB00267B9B /* libTKSTEP209.a */; }; - 0A7DEE411E2D2C1500267B9B /* libTKXSBase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE1D1E2D2ADC00267B9B /* libTKXSBase.a */; }; - 0AAE0DE61EAF816E00C1F65B /* screw.step in Resources */ = {isa = PBXBuildFile; fileRef = 0AAE0DE51EAF816D00C1F65B /* screw.step */; }; - 0AE286641EB0D29B00A9D719 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AE286631EB0D29A00A9D719 /* libz.tbd */; }; - 3405C9E01DE2F04E008BADB9 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3405C9DF1DE2F04E008BADB9 /* main.mm */; }; - 3405C9E31DE2F04E008BADB9 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3405C9E21DE2F04E008BADB9 /* AppDelegate.mm */; }; - 3405C9EB1DE2F04E008BADB9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3405C9EA1DE2F04E008BADB9 /* Assets.xcassets */; }; - 3405C9EE1DE2F04E008BADB9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3405C9EC1DE2F04E008BADB9 /* LaunchScreen.storyboard */; }; - 3405CA781DE303DC008BADB9 /* OcctViewer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3405CA771DE303DC008BADB9 /* OcctViewer.mm */; }; - 3405CA7B1DE31566008BADB9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3405CA7A1DE31566008BADB9 /* QuartzCore.framework */; }; - 3405CA7D1DE3156D008BADB9 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3405CA7C1DE3156D008BADB9 /* OpenGLES.framework */; }; - 3405CA821DE332AB008BADB9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3405CA811DE332AB008BADB9 /* UIKit.framework */; }; - 3405CA851DE3331D008BADB9 /* GLView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3405CA841DE3331D008BADB9 /* GLView.mm */; }; - 343FDCA61DE42F37009AEE51 /* GLViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 343FDCA51DE42F37009AEE51 /* GLViewController.mm */; }; - 34424E031DE70100008B56DA /* OcctDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34424E021DE70100008B56DA /* OcctDocument.mm */; }; - 34424E061DE72D2E008B56DA /* CafShapePrs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34424E051DE72D2E008B56DA /* CafShapePrs.mm */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 0A24B9F91EB0A7CC00A5F490 /* linkrods.step */ = {isa = PBXFileReference; lastKnownFileType = text; name = linkrods.step; path = ../occt/data/step/linkrods.step; sourceTree = ""; }; - 0A7DED6E1E2D15B800267B9B /* dev */ = {isa = PBXFileReference; lastKnownFileType = folder; name = dev; path = ..; sourceTree = ""; }; - 0A7DEDD41E2D1D0900267B9B /* libfreetype.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfreetype.a; path = ../3rdparty/lib/libfreetype.a; sourceTree = ""; }; - 0A7DEDDE1E2D28C500267B9B /* libTKBRep.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBRep.a; path = ../occt/lib/libTKBRep.a; sourceTree = ""; }; - 0A7DEDDF1E2D28C800267B9B /* libTKernel.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKernel.a; path = ../occt/lib/libTKernel.a; sourceTree = ""; }; - 0A7DEDE01E2D28CB00267B9B /* libTKG2d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKG2d.a; path = ../occt/lib/libTKG2d.a; sourceTree = ""; }; - 0A7DEDE11E2D28CE00267B9B /* libTKG3d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKG3d.a; path = ../occt/lib/libTKG3d.a; sourceTree = ""; }; - 0A7DEDE21E2D28D200267B9B /* libTKGeomAlgo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKGeomAlgo.a; path = ../occt/lib/libTKGeomAlgo.a; sourceTree = ""; }; - 0A7DEDE31E2D28D500267B9B /* libTKGeomBase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKGeomBase.a; path = ../occt/lib/libTKGeomBase.a; sourceTree = ""; }; - 0A7DEDE41E2D28D800267B9B /* libTKMath.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKMath.a; path = ../occt/lib/libTKMath.a; sourceTree = ""; }; - 0A7DEDE51E2D28DC00267B9B /* libTKShHealing.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKShHealing.a; path = ../occt/lib/libTKShHealing.a; sourceTree = ""; }; - 0A7DEDE61E2D28DF00267B9B /* libTKTopAlgo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKTopAlgo.a; path = ../occt/lib/libTKTopAlgo.a; sourceTree = ""; }; - 0A7DEDF01E2D296900267B9B /* libTKHLR.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKHLR.a; path = ../occt/lib/libTKHLR.a; sourceTree = ""; }; - 0A7DEDF11E2D296C00267B9B /* libTKMesh.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKMesh.a; path = ../occt/lib/libTKMesh.a; sourceTree = ""; }; - 0A7DEDF41E2D29EF00267B9B /* libTKCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKCAF.a; path = ../occt/lib/libTKCAF.a; sourceTree = ""; }; - 0A7DEDF51E2D29F200267B9B /* libTKCDF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKCDF.a; path = ../occt/lib/libTKCDF.a; sourceTree = ""; }; - 0A7DEDF61E2D29F500267B9B /* libTKLCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKLCAF.a; path = ../occt/lib/libTKLCAF.a; sourceTree = ""; }; - 0A7DEDF71E2D29F800267B9B /* libTKV3d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKV3d.a; path = ../occt/lib/libTKV3d.a; sourceTree = ""; }; - 0A7DEDF81E2D29FB00267B9B /* libTKVCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKVCAF.a; path = ../occt/lib/libTKVCAF.a; sourceTree = ""; }; - 0A7DEDFE1E2D2A7200267B9B /* libTKBin.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBin.a; path = ../occt/lib/libTKBin.a; sourceTree = ""; }; - 0A7DEDFF1E2D2A7600267B9B /* libTKBinL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBinL.a; path = ../occt/lib/libTKBinL.a; sourceTree = ""; }; - 0A7DEE001E2D2A7900267B9B /* libTKBinTObj.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBinTObj.a; path = ../occt/lib/libTKBinTObj.a; sourceTree = ""; }; - 0A7DEE011E2D2A7C00267B9B /* libTKBinXCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBinXCAF.a; path = ../occt/lib/libTKBinXCAF.a; sourceTree = ""; }; - 0A7DEE021E2D2A7F00267B9B /* libTKBO.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBO.a; path = ../occt/lib/libTKBO.a; sourceTree = ""; }; - 0A7DEE031E2D2A8200267B9B /* libTKBool.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBool.a; path = ../occt/lib/libTKBool.a; sourceTree = ""; }; - 0A7DEE041E2D2A8500267B9B /* libTKFeat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKFeat.a; path = ../occt/lib/libTKFeat.a; sourceTree = ""; }; - 0A7DEE051E2D2A8900267B9B /* libTKFillet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKFillet.a; path = ../occt/lib/libTKFillet.a; sourceTree = ""; }; - 0A7DEE061E2D2A8C00267B9B /* libTKIGES.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKIGES.a; path = ../occt/lib/libTKIGES.a; sourceTree = ""; }; - 0A7DEE071E2D2A8F00267B9B /* libTKMeshVS.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKMeshVS.a; path = ../occt/lib/libTKMeshVS.a; sourceTree = ""; }; - 0A7DEE081E2D2A9300267B9B /* libTKOffset.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKOffset.a; path = ../occt/lib/libTKOffset.a; sourceTree = ""; }; - 0A7DEE091E2D2A9700267B9B /* libTKOpenGles.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKOpenGles.a; path = ../occt/lib/libTKOpenGles.a; sourceTree = ""; }; - 0A7DEE0A1E2D2A9A00267B9B /* libTKPrim.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKPrim.a; path = ../occt/lib/libTKPrim.a; sourceTree = ""; }; - 0A7DEE0B1E2D2A9D00267B9B /* libTKService.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKService.a; path = ../occt/lib/libTKService.a; sourceTree = ""; }; - 0A7DEE0C1E2D2AA100267B9B /* libTKStd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKStd.a; path = ../occt/lib/libTKStd.a; sourceTree = ""; }; - 0A7DEE0D1E2D2AA400267B9B /* libTKStdL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKStdL.a; path = ../occt/lib/libTKStdL.a; sourceTree = ""; }; - 0A7DEE0E1E2D2AA800267B9B /* libTKSTEP.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTEP.a; path = ../occt/lib/libTKSTEP.a; sourceTree = ""; }; - 0A7DEE0F1E2D2AAB00267B9B /* libTKSTEP209.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTEP209.a; path = ../occt/lib/libTKSTEP209.a; sourceTree = ""; }; - 0A7DEE101E2D2AAE00267B9B /* libTKSTEPAttr.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTEPAttr.a; path = ../occt/lib/libTKSTEPAttr.a; sourceTree = ""; }; - 0A7DEE111E2D2AB200267B9B /* libTKSTEPBase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTEPBase.a; path = ../occt/lib/libTKSTEPBase.a; sourceTree = ""; }; - 0A7DEE121E2D2AB500267B9B /* libTKSTL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTL.a; path = ../occt/lib/libTKSTL.a; sourceTree = ""; }; - 0A7DEE131E2D2AB900267B9B /* libTKTObj.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKTObj.a; path = ../occt/lib/libTKTObj.a; sourceTree = ""; }; - 0A7DEE141E2D2ABC00267B9B /* libTKVRML.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKVRML.a; path = ../occt/lib/libTKVRML.a; sourceTree = ""; }; - 0A7DEE151E2D2AC000267B9B /* libTKXCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXCAF.a; path = ../occt/lib/libTKXCAF.a; sourceTree = ""; }; - 0A7DEE161E2D2AC300267B9B /* libTKXDEIGES.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXDEIGES.a; path = ../occt/lib/libTKXDEIGES.a; sourceTree = ""; }; - 0A7DEE171E2D2AC700267B9B /* libTKXDESTEP.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXDESTEP.a; path = ../occt/lib/libTKXDESTEP.a; sourceTree = ""; }; - 0A7DEE181E2D2ACA00267B9B /* libTKXMesh.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXMesh.a; path = ../occt/lib/libTKXMesh.a; sourceTree = ""; }; - 0A7DEE191E2D2ACE00267B9B /* libTKXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXml.a; path = ../occt/lib/libTKXml.a; sourceTree = ""; }; - 0A7DEE1A1E2D2AD100267B9B /* libTKXmlL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXmlL.a; path = ../occt/lib/libTKXmlL.a; sourceTree = ""; }; - 0A7DEE1B1E2D2AD500267B9B /* libTKXmlTObj.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXmlTObj.a; path = ../occt/lib/libTKXmlTObj.a; sourceTree = ""; }; - 0A7DEE1C1E2D2AD900267B9B /* libTKXmlXCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXmlXCAF.a; path = ../occt/lib/libTKXmlXCAF.a; sourceTree = ""; }; - 0A7DEE1D1E2D2ADC00267B9B /* libTKXSBase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXSBase.a; path = ../occt/lib/libTKXSBase.a; sourceTree = ""; }; - 0AAE0DE51EAF816D00C1F65B /* screw.step */ = {isa = PBXFileReference; lastKnownFileType = text; name = screw.step; path = ../occt/data/step/screw.step; sourceTree = ""; }; - 0AE286631EB0D29A00A9D719 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - 3405C9DB1DE2F04E008BADB9 /* UIKitSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UIKitSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 3405C9DF1DE2F04E008BADB9 /* main.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; - 3405C9E11DE2F04E008BADB9 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 3405C9E21DE2F04E008BADB9 /* AppDelegate.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = ""; }; - 3405C9EA1DE2F04E008BADB9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 3405C9ED1DE2F04E008BADB9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 3405C9EF1DE2F04E008BADB9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 3405CA761DE30380008BADB9 /* OcctViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OcctViewer.h; sourceTree = ""; }; - 3405CA771DE303DC008BADB9 /* OcctViewer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OcctViewer.mm; sourceTree = ""; }; - 3405CA7A1DE31566008BADB9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - 3405CA7C1DE3156D008BADB9 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; - 3405CA811DE332AB008BADB9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 3405CA831DE3331D008BADB9 /* GLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLView.h; sourceTree = ""; }; - 3405CA841DE3331D008BADB9 /* GLView.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = GLView.mm; sourceTree = ""; }; - 343FDCA41DE42D12009AEE51 /* GLViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLViewController.h; sourceTree = ""; }; - 343FDCA51DE42F37009AEE51 /* GLViewController.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = GLViewController.mm; sourceTree = ""; }; - 34424E011DE6FF05008B56DA /* OcctDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OcctDocument.h; sourceTree = ""; }; - 34424E021DE70100008B56DA /* OcctDocument.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = OcctDocument.mm; sourceTree = ""; }; - 34424E041DE72C23008B56DA /* CafShapePrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CafShapePrs.h; sourceTree = ""; }; - 34424E051DE72D2E008B56DA /* CafShapePrs.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = CafShapePrs.mm; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 3405C9D81DE2F04E008BADB9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0AE286641EB0D29B00A9D719 /* libz.tbd in Frameworks */, - 0A7DEE411E2D2C1500267B9B /* libTKXSBase.a in Frameworks */, - 0A7DEE401E2D2BEA00267B9B /* libTKSTEP209.a in Frameworks */, - 0A7DEE3F1E2D2BB000267B9B /* libTKOpenGles.a in Frameworks */, - 0A7DEE3E1E2D2B8100267B9B /* libTKBO.a in Frameworks */, - 0A7DEE2B1E2D2AE000267B9B /* libTKService.a in Frameworks */, - 0A7DEE2E1E2D2AE000267B9B /* libTKSTEP.a in Frameworks */, - 0A7DEE301E2D2AE000267B9B /* libTKSTEPAttr.a in Frameworks */, - 0A7DEE311E2D2AE000267B9B /* libTKSTEPBase.a in Frameworks */, - 0A7DEE351E2D2AE000267B9B /* libTKXCAF.a in Frameworks */, - 0A7DEE371E2D2AE000267B9B /* libTKXDESTEP.a in Frameworks */, - 0A7DEDE71E2D28E300267B9B /* libTKBRep.a in Frameworks */, - 0A7DEDF91E2D29FF00267B9B /* libTKCAF.a in Frameworks */, - 0A7DEDFA1E2D29FF00267B9B /* libTKCDF.a in Frameworks */, - 0A7DEDE81E2D28E300267B9B /* libTKernel.a in Frameworks */, - 0A7DEDE91E2D28E300267B9B /* libTKG2d.a in Frameworks */, - 0A7DEDEA1E2D28E300267B9B /* libTKG3d.a in Frameworks */, - 0A7DEDEB1E2D28E300267B9B /* libTKGeomAlgo.a in Frameworks */, - 0A7DEDEC1E2D28E300267B9B /* libTKGeomBase.a in Frameworks */, - 0A7DEDF21E2D297000267B9B /* libTKHLR.a in Frameworks */, - 0A7DEDFB1E2D29FF00267B9B /* libTKLCAF.a in Frameworks */, - 0A7DEDED1E2D28E300267B9B /* libTKMath.a in Frameworks */, - 0A7DEDF31E2D297000267B9B /* libTKMesh.a in Frameworks */, - 0A7DEDEE1E2D28E300267B9B /* libTKShHealing.a in Frameworks */, - 0A7DEDEF1E2D28E300267B9B /* libTKTopAlgo.a in Frameworks */, - 0A7DEDFC1E2D29FF00267B9B /* libTKV3d.a in Frameworks */, - 0A7DEDFD1E2D29FF00267B9B /* libTKVCAF.a in Frameworks */, - 0A7DEDD61E2D1D0F00267B9B /* libfreetype.a in Frameworks */, - 3405CA821DE332AB008BADB9 /* UIKit.framework in Frameworks */, - 3405CA7D1DE3156D008BADB9 /* OpenGLES.framework in Frameworks */, - 3405CA7B1DE31566008BADB9 /* QuartzCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 3405C9D21DE2F04E008BADB9 = { - isa = PBXGroup; - children = ( - 0A24B9F91EB0A7CC00A5F490 /* linkrods.step */, - 0AAE0DE51EAF816D00C1F65B /* screw.step */, - 3405C9DD1DE2F04E008BADB9 /* UIKitSample */, - 3405C9DC1DE2F04E008BADB9 /* Products */, - 3405CA791DE31565008BADB9 /* Frameworks */, - ); - sourceTree = ""; - }; - 3405C9DC1DE2F04E008BADB9 /* Products */ = { - isa = PBXGroup; - children = ( - 3405C9DB1DE2F04E008BADB9 /* UIKitSample.app */, - ); - name = Products; - sourceTree = ""; - }; - 3405C9DD1DE2F04E008BADB9 /* UIKitSample */ = { - isa = PBXGroup; - children = ( - 34424E051DE72D2E008B56DA /* CafShapePrs.mm */, - 34424E041DE72C23008B56DA /* CafShapePrs.h */, - 34424E011DE6FF05008B56DA /* OcctDocument.h */, - 34424E021DE70100008B56DA /* OcctDocument.mm */, - 3405CA841DE3331D008BADB9 /* GLView.mm */, - 3405CA831DE3331D008BADB9 /* GLView.h */, - 343FDCA51DE42F37009AEE51 /* GLViewController.mm */, - 343FDCA41DE42D12009AEE51 /* GLViewController.h */, - 3405CA761DE30380008BADB9 /* OcctViewer.h */, - 3405CA771DE303DC008BADB9 /* OcctViewer.mm */, - 3405C9E11DE2F04E008BADB9 /* AppDelegate.h */, - 3405C9E21DE2F04E008BADB9 /* AppDelegate.mm */, - 3405C9EA1DE2F04E008BADB9 /* Assets.xcassets */, - 3405C9EC1DE2F04E008BADB9 /* LaunchScreen.storyboard */, - 3405C9EF1DE2F04E008BADB9 /* Info.plist */, - 3405C9DE1DE2F04E008BADB9 /* Supporting Files */, - ); - path = UIKitSample; - sourceTree = ""; - }; - 3405C9DE1DE2F04E008BADB9 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 3405C9DF1DE2F04E008BADB9 /* main.mm */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 3405CA791DE31565008BADB9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AE286631EB0D29A00A9D719 /* libz.tbd */, - 0A7DEDFE1E2D2A7200267B9B /* libTKBin.a */, - 0A7DEDFF1E2D2A7600267B9B /* libTKBinL.a */, - 0A7DEE001E2D2A7900267B9B /* libTKBinTObj.a */, - 0A7DEE011E2D2A7C00267B9B /* libTKBinXCAF.a */, - 0A7DEE021E2D2A7F00267B9B /* libTKBO.a */, - 0A7DEE031E2D2A8200267B9B /* libTKBool.a */, - 0A7DEE041E2D2A8500267B9B /* libTKFeat.a */, - 0A7DEE051E2D2A8900267B9B /* libTKFillet.a */, - 0A7DEE061E2D2A8C00267B9B /* libTKIGES.a */, - 0A7DEE071E2D2A8F00267B9B /* libTKMeshVS.a */, - 0A7DEE081E2D2A9300267B9B /* libTKOffset.a */, - 0A7DEE091E2D2A9700267B9B /* libTKOpenGles.a */, - 0A7DEE0A1E2D2A9A00267B9B /* libTKPrim.a */, - 0A7DEE0B1E2D2A9D00267B9B /* libTKService.a */, - 0A7DEE0C1E2D2AA100267B9B /* libTKStd.a */, - 0A7DEE0D1E2D2AA400267B9B /* libTKStdL.a */, - 0A7DEE0E1E2D2AA800267B9B /* libTKSTEP.a */, - 0A7DEE0F1E2D2AAB00267B9B /* libTKSTEP209.a */, - 0A7DEE101E2D2AAE00267B9B /* libTKSTEPAttr.a */, - 0A7DEE111E2D2AB200267B9B /* libTKSTEPBase.a */, - 0A7DEE121E2D2AB500267B9B /* libTKSTL.a */, - 0A7DEE131E2D2AB900267B9B /* libTKTObj.a */, - 0A7DEE141E2D2ABC00267B9B /* libTKVRML.a */, - 0A7DEE151E2D2AC000267B9B /* libTKXCAF.a */, - 0A7DEE161E2D2AC300267B9B /* libTKXDEIGES.a */, - 0A7DEE171E2D2AC700267B9B /* libTKXDESTEP.a */, - 0A7DEE181E2D2ACA00267B9B /* libTKXMesh.a */, - 0A7DEE191E2D2ACE00267B9B /* libTKXml.a */, - 0A7DEE1A1E2D2AD100267B9B /* libTKXmlL.a */, - 0A7DEE1B1E2D2AD500267B9B /* libTKXmlTObj.a */, - 0A7DEE1C1E2D2AD900267B9B /* libTKXmlXCAF.a */, - 0A7DEE1D1E2D2ADC00267B9B /* libTKXSBase.a */, - 0A7DEDF41E2D29EF00267B9B /* libTKCAF.a */, - 0A7DEDF51E2D29F200267B9B /* libTKCDF.a */, - 0A7DEDF61E2D29F500267B9B /* libTKLCAF.a */, - 0A7DEDF71E2D29F800267B9B /* libTKV3d.a */, - 0A7DEDF81E2D29FB00267B9B /* libTKVCAF.a */, - 0A7DEDF01E2D296900267B9B /* libTKHLR.a */, - 0A7DEDF11E2D296C00267B9B /* libTKMesh.a */, - 0A7DEDDE1E2D28C500267B9B /* libTKBRep.a */, - 0A7DEDDF1E2D28C800267B9B /* libTKernel.a */, - 0A7DEDE01E2D28CB00267B9B /* libTKG2d.a */, - 0A7DEDE11E2D28CE00267B9B /* libTKG3d.a */, - 0A7DEDE21E2D28D200267B9B /* libTKGeomAlgo.a */, - 0A7DEDE31E2D28D500267B9B /* libTKGeomBase.a */, - 0A7DEDE41E2D28D800267B9B /* libTKMath.a */, - 0A7DEDE51E2D28DC00267B9B /* libTKShHealing.a */, - 0A7DEDE61E2D28DF00267B9B /* libTKTopAlgo.a */, - 0A7DEDD41E2D1D0900267B9B /* libfreetype.a */, - 0A7DED6E1E2D15B800267B9B /* dev */, - 3405CA811DE332AB008BADB9 /* UIKit.framework */, - 3405CA7C1DE3156D008BADB9 /* OpenGLES.framework */, - 3405CA7A1DE31566008BADB9 /* QuartzCore.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 3405C9DA1DE2F04E008BADB9 /* UIKitSample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3405CA081DE2F04E008BADB9 /* Build configuration list for PBXNativeTarget "UIKitSample" */; - buildPhases = ( - 3405C9D71DE2F04E008BADB9 /* Sources */, - 3405C9D81DE2F04E008BADB9 /* Frameworks */, - 3405C9D91DE2F04E008BADB9 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = UIKitSample; - productName = UIKitSample; - productReference = 3405C9DB1DE2F04E008BADB9 /* UIKitSample.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 3405C9D31DE2F04E008BADB9 /* Project object */ = { - isa = PBXProject; - attributes = { - CLASSPREFIX = ""; - LastUpgradeCheck = 0810; - ORGANIZATIONNAME = "OPEN CASCADE"; - TargetAttributes = { - 3405C9DA1DE2F04E008BADB9 = { - CreatedOnToolsVersion = 8.1; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 3405C9D61DE2F04E008BADB9 /* Build configuration list for PBXProject "UIKitSample" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 3405C9D21DE2F04E008BADB9; - productRefGroup = 3405C9DC1DE2F04E008BADB9 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 3405C9DA1DE2F04E008BADB9 /* UIKitSample */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 3405C9D91DE2F04E008BADB9 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0A24B9FA1EB0A7CC00A5F490 /* linkrods.step in Resources */, - 0AAE0DE61EAF816E00C1F65B /* screw.step in Resources */, - 3405C9EE1DE2F04E008BADB9 /* LaunchScreen.storyboard in Resources */, - 3405C9EB1DE2F04E008BADB9 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 3405C9D71DE2F04E008BADB9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3405C9E31DE2F04E008BADB9 /* AppDelegate.mm in Sources */, - 3405CA851DE3331D008BADB9 /* GLView.mm in Sources */, - 343FDCA61DE42F37009AEE51 /* GLViewController.mm in Sources */, - 34424E031DE70100008B56DA /* OcctDocument.mm in Sources */, - 3405CA781DE303DC008BADB9 /* OcctViewer.mm in Sources */, - 3405C9E01DE2F04E008BADB9 /* main.mm in Sources */, - 34424E061DE72D2E008B56DA /* CafShapePrs.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 3405C9EC1DE2F04E008BADB9 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 3405C9ED1DE2F04E008BADB9 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 3405CA061DE2F04E008BADB9 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 10.2; - LIBRARY_SEARCH_PATHS = ""; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - USER_HEADER_SEARCH_PATHS = ""; - USE_HEADERMAP = YES; - VALID_ARCHS = "$(ARCHS_STANDARD)"; - }; - name = Debug; - }; - 3405CA071DE2F04E008BADB9 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 10.2; - LIBRARY_SEARCH_PATHS = ""; - MTL_ENABLE_DEBUG_INFO = NO; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - USER_HEADER_SEARCH_PATHS = ""; - USE_HEADERMAP = YES; - VALIDATE_PRODUCT = YES; - VALID_ARCHS = "$(ARCHS_STANDARD)"; - }; - name = Release; - }; - 3405CA091DE2F04E008BADB9 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LIBRARY = "libc++"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; - HEADER_SEARCH_PATHS = ../occt/inc; - INFOPLIST_FILE = UIKitSample/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - ../occt/lib, - ../3rdparty/lib, - ); - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = org.opencascade.ios.sample; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = "$(ARCHS_STANDARD)"; - }; - name = Debug; - }; - 3405CA0A1DE2F04E008BADB9 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LIBRARY = "libc++"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; - HEADER_SEARCH_PATHS = ../occt/inc; - INFOPLIST_FILE = UIKitSample/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - ../occt/lib, - ../3rdparty/lib, - ); - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = org.opencascade.ios.sample; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = "$(ARCHS_STANDARD)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 3405C9D61DE2F04E008BADB9 /* Build configuration list for PBXProject "UIKitSample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3405CA061DE2F04E008BADB9 /* Debug */, - 3405CA071DE2F04E008BADB9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3405CA081DE2F04E008BADB9 /* Build configuration list for PBXNativeTarget "UIKitSample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3405CA091DE2F04E008BADB9 /* Debug */, - 3405CA0A1DE2F04E008BADB9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 3405C9D31DE2F04E008BADB9 /* Project object */; -} +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0A24B9FA1EB0A7CC00A5F490 /* linkrods.step in Resources */ = {isa = PBXBuildFile; fileRef = 0A24B9F91EB0A7CC00A5F490 /* linkrods.step */; }; + 0A7DEDD61E2D1D0F00267B9B /* libfreetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDD41E2D1D0900267B9B /* libfreetype.a */; }; + 0A7DEDE71E2D28E300267B9B /* libTKBRep.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDDE1E2D28C500267B9B /* libTKBRep.a */; }; + 0A7DEDE81E2D28E300267B9B /* libTKernel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDDF1E2D28C800267B9B /* libTKernel.a */; }; + 0A7DEDE91E2D28E300267B9B /* libTKG2d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE01E2D28CB00267B9B /* libTKG2d.a */; }; + 0A7DEDEA1E2D28E300267B9B /* libTKG3d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE11E2D28CE00267B9B /* libTKG3d.a */; }; + 0A7DEDEB1E2D28E300267B9B /* libTKGeomAlgo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE21E2D28D200267B9B /* libTKGeomAlgo.a */; }; + 0A7DEDEC1E2D28E300267B9B /* libTKGeomBase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE31E2D28D500267B9B /* libTKGeomBase.a */; }; + 0A7DEDED1E2D28E300267B9B /* libTKMath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE41E2D28D800267B9B /* libTKMath.a */; }; + 0A7DEDEE1E2D28E300267B9B /* libTKShHealing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE51E2D28DC00267B9B /* libTKShHealing.a */; }; + 0A7DEDEF1E2D28E300267B9B /* libTKTopAlgo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDE61E2D28DF00267B9B /* libTKTopAlgo.a */; }; + 0A7DEDF21E2D297000267B9B /* libTKHLR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF01E2D296900267B9B /* libTKHLR.a */; }; + 0A7DEDF31E2D297000267B9B /* libTKMesh.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF11E2D296C00267B9B /* libTKMesh.a */; }; + 0A7DEDF91E2D29FF00267B9B /* libTKCAF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF41E2D29EF00267B9B /* libTKCAF.a */; }; + 0A7DEDFA1E2D29FF00267B9B /* libTKCDF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF51E2D29F200267B9B /* libTKCDF.a */; }; + 0A7DEDFB1E2D29FF00267B9B /* libTKLCAF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF61E2D29F500267B9B /* libTKLCAF.a */; }; + 0A7DEDFC1E2D29FF00267B9B /* libTKV3d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF71E2D29F800267B9B /* libTKV3d.a */; }; + 0A7DEDFD1E2D29FF00267B9B /* libTKVCAF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEDF81E2D29FB00267B9B /* libTKVCAF.a */; }; + 0A7DEE2B1E2D2AE000267B9B /* libTKService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE0B1E2D2A9D00267B9B /* libTKService.a */; }; + 0A7DEE2E1E2D2AE000267B9B /* libTKSTEP.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE0E1E2D2AA800267B9B /* libTKSTEP.a */; }; + 0A7DEE301E2D2AE000267B9B /* libTKSTEPAttr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE101E2D2AAE00267B9B /* libTKSTEPAttr.a */; }; + 0A7DEE311E2D2AE000267B9B /* libTKSTEPBase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE111E2D2AB200267B9B /* libTKSTEPBase.a */; }; + 0A7DEE351E2D2AE000267B9B /* libTKXCAF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE151E2D2AC000267B9B /* libTKXCAF.a */; }; + 0A7DEE371E2D2AE000267B9B /* libTKXDESTEP.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE171E2D2AC700267B9B /* libTKXDESTEP.a */; }; + 0A7DEE3E1E2D2B8100267B9B /* libTKBO.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE021E2D2A7F00267B9B /* libTKBO.a */; }; + 0A7DEE3F1E2D2BB000267B9B /* libTKOpenGles.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE091E2D2A9700267B9B /* libTKOpenGles.a */; }; + 0A7DEE401E2D2BEA00267B9B /* libTKSTEP209.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE0F1E2D2AAB00267B9B /* libTKSTEP209.a */; }; + 0A7DEE411E2D2C1500267B9B /* libTKXSBase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7DEE1D1E2D2ADC00267B9B /* libTKXSBase.a */; }; + 0AAE0DE61EAF816E00C1F65B /* screw.step in Resources */ = {isa = PBXBuildFile; fileRef = 0AAE0DE51EAF816D00C1F65B /* screw.step */; }; + 0AE286641EB0D29B00A9D719 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AE286631EB0D29A00A9D719 /* libz.tbd */; }; + 3405C9E01DE2F04E008BADB9 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3405C9DF1DE2F04E008BADB9 /* main.mm */; }; + 3405C9E31DE2F04E008BADB9 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3405C9E21DE2F04E008BADB9 /* AppDelegate.mm */; }; + 3405C9EB1DE2F04E008BADB9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3405C9EA1DE2F04E008BADB9 /* Assets.xcassets */; }; + 3405C9EE1DE2F04E008BADB9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3405C9EC1DE2F04E008BADB9 /* LaunchScreen.storyboard */; }; + 3405CA781DE303DC008BADB9 /* OcctViewer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3405CA771DE303DC008BADB9 /* OcctViewer.mm */; }; + 3405CA7B1DE31566008BADB9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3405CA7A1DE31566008BADB9 /* QuartzCore.framework */; }; + 3405CA7D1DE3156D008BADB9 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3405CA7C1DE3156D008BADB9 /* OpenGLES.framework */; }; + 3405CA821DE332AB008BADB9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3405CA811DE332AB008BADB9 /* UIKit.framework */; }; + 3405CA851DE3331D008BADB9 /* GLView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3405CA841DE3331D008BADB9 /* GLView.mm */; }; + 343FDCA61DE42F37009AEE51 /* GLViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 343FDCA51DE42F37009AEE51 /* GLViewController.mm */; }; + 34424E031DE70100008B56DA /* OcctDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34424E021DE70100008B56DA /* OcctDocument.mm */; }; + 34424E061DE72D2E008B56DA /* CafShapePrs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34424E051DE72D2E008B56DA /* CafShapePrs.mm */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0A24B9F91EB0A7CC00A5F490 /* linkrods.step */ = {isa = PBXFileReference; lastKnownFileType = text; name = linkrods.step; path = ../occt/data/step/linkrods.step; sourceTree = ""; }; + 0A7DED6E1E2D15B800267B9B /* dev */ = {isa = PBXFileReference; lastKnownFileType = folder; name = dev; path = ..; sourceTree = ""; }; + 0A7DEDD41E2D1D0900267B9B /* libfreetype.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfreetype.a; path = ../3rdparty/lib/libfreetype.a; sourceTree = ""; }; + 0A7DEDDE1E2D28C500267B9B /* libTKBRep.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBRep.a; path = ../occt/lib/libTKBRep.a; sourceTree = ""; }; + 0A7DEDDF1E2D28C800267B9B /* libTKernel.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKernel.a; path = ../occt/lib/libTKernel.a; sourceTree = ""; }; + 0A7DEDE01E2D28CB00267B9B /* libTKG2d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKG2d.a; path = ../occt/lib/libTKG2d.a; sourceTree = ""; }; + 0A7DEDE11E2D28CE00267B9B /* libTKG3d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKG3d.a; path = ../occt/lib/libTKG3d.a; sourceTree = ""; }; + 0A7DEDE21E2D28D200267B9B /* libTKGeomAlgo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKGeomAlgo.a; path = ../occt/lib/libTKGeomAlgo.a; sourceTree = ""; }; + 0A7DEDE31E2D28D500267B9B /* libTKGeomBase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKGeomBase.a; path = ../occt/lib/libTKGeomBase.a; sourceTree = ""; }; + 0A7DEDE41E2D28D800267B9B /* libTKMath.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKMath.a; path = ../occt/lib/libTKMath.a; sourceTree = ""; }; + 0A7DEDE51E2D28DC00267B9B /* libTKShHealing.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKShHealing.a; path = ../occt/lib/libTKShHealing.a; sourceTree = ""; }; + 0A7DEDE61E2D28DF00267B9B /* libTKTopAlgo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKTopAlgo.a; path = ../occt/lib/libTKTopAlgo.a; sourceTree = ""; }; + 0A7DEDF01E2D296900267B9B /* libTKHLR.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKHLR.a; path = ../occt/lib/libTKHLR.a; sourceTree = ""; }; + 0A7DEDF11E2D296C00267B9B /* libTKMesh.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKMesh.a; path = ../occt/lib/libTKMesh.a; sourceTree = ""; }; + 0A7DEDF41E2D29EF00267B9B /* libTKCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKCAF.a; path = ../occt/lib/libTKCAF.a; sourceTree = ""; }; + 0A7DEDF51E2D29F200267B9B /* libTKCDF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKCDF.a; path = ../occt/lib/libTKCDF.a; sourceTree = ""; }; + 0A7DEDF61E2D29F500267B9B /* libTKLCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKLCAF.a; path = ../occt/lib/libTKLCAF.a; sourceTree = ""; }; + 0A7DEDF71E2D29F800267B9B /* libTKV3d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKV3d.a; path = ../occt/lib/libTKV3d.a; sourceTree = ""; }; + 0A7DEDF81E2D29FB00267B9B /* libTKVCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKVCAF.a; path = ../occt/lib/libTKVCAF.a; sourceTree = ""; }; + 0A7DEDFE1E2D2A7200267B9B /* libTKBin.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBin.a; path = ../occt/lib/libTKBin.a; sourceTree = ""; }; + 0A7DEDFF1E2D2A7600267B9B /* libTKBinL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBinL.a; path = ../occt/lib/libTKBinL.a; sourceTree = ""; }; + 0A7DEE001E2D2A7900267B9B /* libTKBinTObj.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBinTObj.a; path = ../occt/lib/libTKBinTObj.a; sourceTree = ""; }; + 0A7DEE011E2D2A7C00267B9B /* libTKBinXCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBinXCAF.a; path = ../occt/lib/libTKBinXCAF.a; sourceTree = ""; }; + 0A7DEE021E2D2A7F00267B9B /* libTKBO.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBO.a; path = ../occt/lib/libTKBO.a; sourceTree = ""; }; + 0A7DEE031E2D2A8200267B9B /* libTKBool.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKBool.a; path = ../occt/lib/libTKBool.a; sourceTree = ""; }; + 0A7DEE041E2D2A8500267B9B /* libTKFeat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKFeat.a; path = ../occt/lib/libTKFeat.a; sourceTree = ""; }; + 0A7DEE051E2D2A8900267B9B /* libTKFillet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKFillet.a; path = ../occt/lib/libTKFillet.a; sourceTree = ""; }; + 0A7DEE061E2D2A8C00267B9B /* libTKIGES.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKIGES.a; path = ../occt/lib/libTKIGES.a; sourceTree = ""; }; + 0A7DEE071E2D2A8F00267B9B /* libTKMeshVS.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKMeshVS.a; path = ../occt/lib/libTKMeshVS.a; sourceTree = ""; }; + 0A7DEE081E2D2A9300267B9B /* libTKOffset.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKOffset.a; path = ../occt/lib/libTKOffset.a; sourceTree = ""; }; + 0A7DEE091E2D2A9700267B9B /* libTKOpenGles.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKOpenGles.a; path = ../occt/lib/libTKOpenGles.a; sourceTree = ""; }; + 0A7DEE0A1E2D2A9A00267B9B /* libTKPrim.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKPrim.a; path = ../occt/lib/libTKPrim.a; sourceTree = ""; }; + 0A7DEE0B1E2D2A9D00267B9B /* libTKService.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKService.a; path = ../occt/lib/libTKService.a; sourceTree = ""; }; + 0A7DEE0C1E2D2AA100267B9B /* libTKStd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKStd.a; path = ../occt/lib/libTKStd.a; sourceTree = ""; }; + 0A7DEE0D1E2D2AA400267B9B /* libTKStdL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKStdL.a; path = ../occt/lib/libTKStdL.a; sourceTree = ""; }; + 0A7DEE0E1E2D2AA800267B9B /* libTKSTEP.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTEP.a; path = ../occt/lib/libTKSTEP.a; sourceTree = ""; }; + 0A7DEE0F1E2D2AAB00267B9B /* libTKSTEP209.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTEP209.a; path = ../occt/lib/libTKSTEP209.a; sourceTree = ""; }; + 0A7DEE101E2D2AAE00267B9B /* libTKSTEPAttr.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTEPAttr.a; path = ../occt/lib/libTKSTEPAttr.a; sourceTree = ""; }; + 0A7DEE111E2D2AB200267B9B /* libTKSTEPBase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTEPBase.a; path = ../occt/lib/libTKSTEPBase.a; sourceTree = ""; }; + 0A7DEE121E2D2AB500267B9B /* libTKSTL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKSTL.a; path = ../occt/lib/libTKSTL.a; sourceTree = ""; }; + 0A7DEE131E2D2AB900267B9B /* libTKTObj.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKTObj.a; path = ../occt/lib/libTKTObj.a; sourceTree = ""; }; + 0A7DEE141E2D2ABC00267B9B /* libTKVRML.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKVRML.a; path = ../occt/lib/libTKVRML.a; sourceTree = ""; }; + 0A7DEE151E2D2AC000267B9B /* libTKXCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXCAF.a; path = ../occt/lib/libTKXCAF.a; sourceTree = ""; }; + 0A7DEE161E2D2AC300267B9B /* libTKXDEIGES.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXDEIGES.a; path = ../occt/lib/libTKXDEIGES.a; sourceTree = ""; }; + 0A7DEE171E2D2AC700267B9B /* libTKXDESTEP.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXDESTEP.a; path = ../occt/lib/libTKXDESTEP.a; sourceTree = ""; }; + 0A7DEE181E2D2ACA00267B9B /* libTKXMesh.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXMesh.a; path = ../occt/lib/libTKXMesh.a; sourceTree = ""; }; + 0A7DEE191E2D2ACE00267B9B /* libTKXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXml.a; path = ../occt/lib/libTKXml.a; sourceTree = ""; }; + 0A7DEE1A1E2D2AD100267B9B /* libTKXmlL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXmlL.a; path = ../occt/lib/libTKXmlL.a; sourceTree = ""; }; + 0A7DEE1B1E2D2AD500267B9B /* libTKXmlTObj.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXmlTObj.a; path = ../occt/lib/libTKXmlTObj.a; sourceTree = ""; }; + 0A7DEE1C1E2D2AD900267B9B /* libTKXmlXCAF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXmlXCAF.a; path = ../occt/lib/libTKXmlXCAF.a; sourceTree = ""; }; + 0A7DEE1D1E2D2ADC00267B9B /* libTKXSBase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTKXSBase.a; path = ../occt/lib/libTKXSBase.a; sourceTree = ""; }; + 0AAE0DE51EAF816D00C1F65B /* screw.step */ = {isa = PBXFileReference; lastKnownFileType = text; name = screw.step; path = ../occt/data/step/screw.step; sourceTree = ""; }; + 0AE286631EB0D29A00A9D719 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 3405C9DB1DE2F04E008BADB9 /* UIKitSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UIKitSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3405C9DF1DE2F04E008BADB9 /* main.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; + 3405C9E11DE2F04E008BADB9 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 3405C9E21DE2F04E008BADB9 /* AppDelegate.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = ""; }; + 3405C9EA1DE2F04E008BADB9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 3405C9ED1DE2F04E008BADB9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 3405C9EF1DE2F04E008BADB9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3405CA761DE30380008BADB9 /* OcctViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OcctViewer.h; sourceTree = ""; }; + 3405CA771DE303DC008BADB9 /* OcctViewer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OcctViewer.mm; sourceTree = ""; }; + 3405CA7A1DE31566008BADB9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 3405CA7C1DE3156D008BADB9 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 3405CA811DE332AB008BADB9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 3405CA831DE3331D008BADB9 /* GLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLView.h; sourceTree = ""; }; + 3405CA841DE3331D008BADB9 /* GLView.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = GLView.mm; sourceTree = ""; }; + 343FDCA41DE42D12009AEE51 /* GLViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLViewController.h; sourceTree = ""; }; + 343FDCA51DE42F37009AEE51 /* GLViewController.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = GLViewController.mm; sourceTree = ""; }; + 34424E011DE6FF05008B56DA /* OcctDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OcctDocument.h; sourceTree = ""; }; + 34424E021DE70100008B56DA /* OcctDocument.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = OcctDocument.mm; sourceTree = ""; }; + 34424E041DE72C23008B56DA /* CafShapePrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CafShapePrs.h; sourceTree = ""; }; + 34424E051DE72D2E008B56DA /* CafShapePrs.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = CafShapePrs.mm; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3405C9D81DE2F04E008BADB9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0AE286641EB0D29B00A9D719 /* libz.tbd in Frameworks */, + 0A7DEE411E2D2C1500267B9B /* libTKXSBase.a in Frameworks */, + 0A7DEE401E2D2BEA00267B9B /* libTKSTEP209.a in Frameworks */, + 0A7DEE3F1E2D2BB000267B9B /* libTKOpenGles.a in Frameworks */, + 0A7DEE3E1E2D2B8100267B9B /* libTKBO.a in Frameworks */, + 0A7DEE2B1E2D2AE000267B9B /* libTKService.a in Frameworks */, + 0A7DEE2E1E2D2AE000267B9B /* libTKSTEP.a in Frameworks */, + 0A7DEE301E2D2AE000267B9B /* libTKSTEPAttr.a in Frameworks */, + 0A7DEE311E2D2AE000267B9B /* libTKSTEPBase.a in Frameworks */, + 0A7DEE351E2D2AE000267B9B /* libTKXCAF.a in Frameworks */, + 0A7DEE371E2D2AE000267B9B /* libTKXDESTEP.a in Frameworks */, + 0A7DEDE71E2D28E300267B9B /* libTKBRep.a in Frameworks */, + 0A7DEDF91E2D29FF00267B9B /* libTKCAF.a in Frameworks */, + 0A7DEDFA1E2D29FF00267B9B /* libTKCDF.a in Frameworks */, + 0A7DEDE81E2D28E300267B9B /* libTKernel.a in Frameworks */, + 0A7DEDE91E2D28E300267B9B /* libTKG2d.a in Frameworks */, + 0A7DEDEA1E2D28E300267B9B /* libTKG3d.a in Frameworks */, + 0A7DEDEB1E2D28E300267B9B /* libTKGeomAlgo.a in Frameworks */, + 0A7DEDEC1E2D28E300267B9B /* libTKGeomBase.a in Frameworks */, + 0A7DEDF21E2D297000267B9B /* libTKHLR.a in Frameworks */, + 0A7DEDFB1E2D29FF00267B9B /* libTKLCAF.a in Frameworks */, + 0A7DEDED1E2D28E300267B9B /* libTKMath.a in Frameworks */, + 0A7DEDF31E2D297000267B9B /* libTKMesh.a in Frameworks */, + 0A7DEDEE1E2D28E300267B9B /* libTKShHealing.a in Frameworks */, + 0A7DEDEF1E2D28E300267B9B /* libTKTopAlgo.a in Frameworks */, + 0A7DEDFC1E2D29FF00267B9B /* libTKV3d.a in Frameworks */, + 0A7DEDFD1E2D29FF00267B9B /* libTKVCAF.a in Frameworks */, + 0A7DEDD61E2D1D0F00267B9B /* libfreetype.a in Frameworks */, + 3405CA821DE332AB008BADB9 /* UIKit.framework in Frameworks */, + 3405CA7D1DE3156D008BADB9 /* OpenGLES.framework in Frameworks */, + 3405CA7B1DE31566008BADB9 /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3405C9D21DE2F04E008BADB9 = { + isa = PBXGroup; + children = ( + 0A24B9F91EB0A7CC00A5F490 /* linkrods.step */, + 0AAE0DE51EAF816D00C1F65B /* screw.step */, + 3405C9DD1DE2F04E008BADB9 /* UIKitSample */, + 3405C9DC1DE2F04E008BADB9 /* Products */, + 3405CA791DE31565008BADB9 /* Frameworks */, + ); + sourceTree = ""; + }; + 3405C9DC1DE2F04E008BADB9 /* Products */ = { + isa = PBXGroup; + children = ( + 3405C9DB1DE2F04E008BADB9 /* UIKitSample.app */, + ); + name = Products; + sourceTree = ""; + }; + 3405C9DD1DE2F04E008BADB9 /* UIKitSample */ = { + isa = PBXGroup; + children = ( + 34424E051DE72D2E008B56DA /* CafShapePrs.mm */, + 34424E041DE72C23008B56DA /* CafShapePrs.h */, + 34424E011DE6FF05008B56DA /* OcctDocument.h */, + 34424E021DE70100008B56DA /* OcctDocument.mm */, + 3405CA841DE3331D008BADB9 /* GLView.mm */, + 3405CA831DE3331D008BADB9 /* GLView.h */, + 343FDCA51DE42F37009AEE51 /* GLViewController.mm */, + 343FDCA41DE42D12009AEE51 /* GLViewController.h */, + 3405CA761DE30380008BADB9 /* OcctViewer.h */, + 3405CA771DE303DC008BADB9 /* OcctViewer.mm */, + 3405C9E11DE2F04E008BADB9 /* AppDelegate.h */, + 3405C9E21DE2F04E008BADB9 /* AppDelegate.mm */, + 3405C9EA1DE2F04E008BADB9 /* Assets.xcassets */, + 3405C9EC1DE2F04E008BADB9 /* LaunchScreen.storyboard */, + 3405C9EF1DE2F04E008BADB9 /* Info.plist */, + 3405C9DE1DE2F04E008BADB9 /* Supporting Files */, + ); + path = UIKitSample; + sourceTree = ""; + }; + 3405C9DE1DE2F04E008BADB9 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 3405C9DF1DE2F04E008BADB9 /* main.mm */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 3405CA791DE31565008BADB9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0AE286631EB0D29A00A9D719 /* libz.tbd */, + 0A7DEDFE1E2D2A7200267B9B /* libTKBin.a */, + 0A7DEDFF1E2D2A7600267B9B /* libTKBinL.a */, + 0A7DEE001E2D2A7900267B9B /* libTKBinTObj.a */, + 0A7DEE011E2D2A7C00267B9B /* libTKBinXCAF.a */, + 0A7DEE021E2D2A7F00267B9B /* libTKBO.a */, + 0A7DEE031E2D2A8200267B9B /* libTKBool.a */, + 0A7DEE041E2D2A8500267B9B /* libTKFeat.a */, + 0A7DEE051E2D2A8900267B9B /* libTKFillet.a */, + 0A7DEE061E2D2A8C00267B9B /* libTKIGES.a */, + 0A7DEE071E2D2A8F00267B9B /* libTKMeshVS.a */, + 0A7DEE081E2D2A9300267B9B /* libTKOffset.a */, + 0A7DEE091E2D2A9700267B9B /* libTKOpenGles.a */, + 0A7DEE0A1E2D2A9A00267B9B /* libTKPrim.a */, + 0A7DEE0B1E2D2A9D00267B9B /* libTKService.a */, + 0A7DEE0C1E2D2AA100267B9B /* libTKStd.a */, + 0A7DEE0D1E2D2AA400267B9B /* libTKStdL.a */, + 0A7DEE0E1E2D2AA800267B9B /* libTKSTEP.a */, + 0A7DEE0F1E2D2AAB00267B9B /* libTKSTEP209.a */, + 0A7DEE101E2D2AAE00267B9B /* libTKSTEPAttr.a */, + 0A7DEE111E2D2AB200267B9B /* libTKSTEPBase.a */, + 0A7DEE121E2D2AB500267B9B /* libTKSTL.a */, + 0A7DEE131E2D2AB900267B9B /* libTKTObj.a */, + 0A7DEE141E2D2ABC00267B9B /* libTKVRML.a */, + 0A7DEE151E2D2AC000267B9B /* libTKXCAF.a */, + 0A7DEE161E2D2AC300267B9B /* libTKXDEIGES.a */, + 0A7DEE171E2D2AC700267B9B /* libTKXDESTEP.a */, + 0A7DEE181E2D2ACA00267B9B /* libTKXMesh.a */, + 0A7DEE191E2D2ACE00267B9B /* libTKXml.a */, + 0A7DEE1A1E2D2AD100267B9B /* libTKXmlL.a */, + 0A7DEE1B1E2D2AD500267B9B /* libTKXmlTObj.a */, + 0A7DEE1C1E2D2AD900267B9B /* libTKXmlXCAF.a */, + 0A7DEE1D1E2D2ADC00267B9B /* libTKXSBase.a */, + 0A7DEDF41E2D29EF00267B9B /* libTKCAF.a */, + 0A7DEDF51E2D29F200267B9B /* libTKCDF.a */, + 0A7DEDF61E2D29F500267B9B /* libTKLCAF.a */, + 0A7DEDF71E2D29F800267B9B /* libTKV3d.a */, + 0A7DEDF81E2D29FB00267B9B /* libTKVCAF.a */, + 0A7DEDF01E2D296900267B9B /* libTKHLR.a */, + 0A7DEDF11E2D296C00267B9B /* libTKMesh.a */, + 0A7DEDDE1E2D28C500267B9B /* libTKBRep.a */, + 0A7DEDDF1E2D28C800267B9B /* libTKernel.a */, + 0A7DEDE01E2D28CB00267B9B /* libTKG2d.a */, + 0A7DEDE11E2D28CE00267B9B /* libTKG3d.a */, + 0A7DEDE21E2D28D200267B9B /* libTKGeomAlgo.a */, + 0A7DEDE31E2D28D500267B9B /* libTKGeomBase.a */, + 0A7DEDE41E2D28D800267B9B /* libTKMath.a */, + 0A7DEDE51E2D28DC00267B9B /* libTKShHealing.a */, + 0A7DEDE61E2D28DF00267B9B /* libTKTopAlgo.a */, + 0A7DEDD41E2D1D0900267B9B /* libfreetype.a */, + 0A7DED6E1E2D15B800267B9B /* dev */, + 3405CA811DE332AB008BADB9 /* UIKit.framework */, + 3405CA7C1DE3156D008BADB9 /* OpenGLES.framework */, + 3405CA7A1DE31566008BADB9 /* QuartzCore.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3405C9DA1DE2F04E008BADB9 /* UIKitSample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3405CA081DE2F04E008BADB9 /* Build configuration list for PBXNativeTarget "UIKitSample" */; + buildPhases = ( + 3405C9D71DE2F04E008BADB9 /* Sources */, + 3405C9D81DE2F04E008BADB9 /* Frameworks */, + 3405C9D91DE2F04E008BADB9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = UIKitSample; + productName = UIKitSample; + productReference = 3405C9DB1DE2F04E008BADB9 /* UIKitSample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3405C9D31DE2F04E008BADB9 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = ""; + LastUpgradeCheck = 0810; + ORGANIZATIONNAME = "OPEN CASCADE"; + TargetAttributes = { + 3405C9DA1DE2F04E008BADB9 = { + CreatedOnToolsVersion = 8.1; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 3405C9D61DE2F04E008BADB9 /* Build configuration list for PBXProject "UIKitSample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 3405C9D21DE2F04E008BADB9; + productRefGroup = 3405C9DC1DE2F04E008BADB9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3405C9DA1DE2F04E008BADB9 /* UIKitSample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3405C9D91DE2F04E008BADB9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0A24B9FA1EB0A7CC00A5F490 /* linkrods.step in Resources */, + 0AAE0DE61EAF816E00C1F65B /* screw.step in Resources */, + 3405C9EE1DE2F04E008BADB9 /* LaunchScreen.storyboard in Resources */, + 3405C9EB1DE2F04E008BADB9 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3405C9D71DE2F04E008BADB9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3405C9E31DE2F04E008BADB9 /* AppDelegate.mm in Sources */, + 3405CA851DE3331D008BADB9 /* GLView.mm in Sources */, + 343FDCA61DE42F37009AEE51 /* GLViewController.mm in Sources */, + 34424E031DE70100008B56DA /* OcctDocument.mm in Sources */, + 3405CA781DE303DC008BADB9 /* OcctViewer.mm in Sources */, + 3405C9E01DE2F04E008BADB9 /* main.mm in Sources */, + 34424E061DE72D2E008B56DA /* CafShapePrs.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 3405C9EC1DE2F04E008BADB9 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 3405C9ED1DE2F04E008BADB9 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 3405CA061DE2F04E008BADB9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.2; + LIBRARY_SEARCH_PATHS = ""; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + USER_HEADER_SEARCH_PATHS = ""; + USE_HEADERMAP = YES; + VALID_ARCHS = "$(ARCHS_STANDARD)"; + }; + name = Debug; + }; + 3405CA071DE2F04E008BADB9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.2; + LIBRARY_SEARCH_PATHS = ""; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + USER_HEADER_SEARCH_PATHS = ""; + USE_HEADERMAP = YES; + VALIDATE_PRODUCT = YES; + VALID_ARCHS = "$(ARCHS_STANDARD)"; + }; + name = Release; + }; + 3405CA091DE2F04E008BADB9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LIBRARY = "libc++"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEVELOPMENT_TEAM = ""; + HEADER_SEARCH_PATHS = ../occt/inc; + INFOPLIST_FILE = UIKitSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + ../occt/lib, + ../3rdparty/lib, + ); + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = org.opencascade.ios.sample; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALID_ARCHS = "$(ARCHS_STANDARD)"; + }; + name = Debug; + }; + 3405CA0A1DE2F04E008BADB9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LIBRARY = "libc++"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEVELOPMENT_TEAM = ""; + HEADER_SEARCH_PATHS = ../occt/inc; + INFOPLIST_FILE = UIKitSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + ../occt/lib, + ../3rdparty/lib, + ); + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = org.opencascade.ios.sample; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALID_ARCHS = "$(ARCHS_STANDARD)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3405C9D61DE2F04E008BADB9 /* Build configuration list for PBXProject "UIKitSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3405CA061DE2F04E008BADB9 /* Debug */, + 3405CA071DE2F04E008BADB9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3405CA081DE2F04E008BADB9 /* Build configuration list for PBXNativeTarget "UIKitSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3405CA091DE2F04E008BADB9 /* Debug */, + 3405CA0A1DE2F04E008BADB9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3405C9D31DE2F04E008BADB9 /* Project object */; +} diff --git a/samples/ios/UIKitSample/UIKitSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/samples/ios/UIKitSample/UIKitSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 6a3ecc7e45..76f18eae2f 100644 --- a/samples/ios/UIKitSample/UIKitSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/samples/ios/UIKitSample/UIKitSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/samples/ios/UIKitSample/UIKitSample/Assets.xcassets/AppIcon.appiconset/Contents.json b/samples/ios/UIKitSample/UIKitSample/Assets.xcassets/AppIcon.appiconset/Contents.json index 536920e583..1462f40566 100644 --- a/samples/ios/UIKitSample/UIKitSample/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/samples/ios/UIKitSample/UIKitSample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,62 +1,62 @@ -{ - "images" : [ - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-Small-40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-Small-40.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-Small-40@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-Small@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-Small.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-Small@2x.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } +{ + "images" : [ + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-60@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-Small-40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-Small-40.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-Small-40@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Small@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Small.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Small@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } } \ No newline at end of file diff --git a/samples/ios/UIKitSample/UIKitSample/Base.lproj/LaunchScreen.storyboard b/samples/ios/UIKitSample/UIKitSample/Base.lproj/LaunchScreen.storyboard index fdf3f97d1b..c221084fdb 100644 --- a/samples/ios/UIKitSample/UIKitSample/Base.lproj/LaunchScreen.storyboard +++ b/samples/ios/UIKitSample/UIKitSample/Base.lproj/LaunchScreen.storyboard @@ -1,27 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/ios/UIKitSample/UIKitSample/ViewController.m b/samples/ios/UIKitSample/UIKitSample/ViewController.m index e019f32f05..7a7179a48c 100644 --- a/samples/ios/UIKitSample/UIKitSample/ViewController.m +++ b/samples/ios/UIKitSample/UIKitSample/ViewController.m @@ -1,42 +1,42 @@ -// Copyright (c) 2016 OPEN CASCADE SAS -// -// This file is part of the examples of the Open CASCADE Technology software library. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE - -#import "ViewController.h" - -#include "OcctViewer.h" - -@interface ViewController () - -@end - -@implementation ViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - // Do any additional setup after loading the view, typically from a nib. -} - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -@end +// Copyright (c) 2016 OPEN CASCADE SAS +// +// This file is part of the examples of the Open CASCADE Technology software library. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE + +#import "ViewController.h" + +#include "OcctViewer.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/samples/java/jniviewer/app/src/main/AndroidManifest.xml b/samples/java/jniviewer/app/src/main/AndroidManifest.xml index 4813d0a6d1..57510f6ca4 100644 --- a/samples/java/jniviewer/app/src/main/AndroidManifest.xml +++ b/samples/java/jniviewer/app/src/main/AndroidManifest.xml @@ -1,35 +1,35 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/java/jniviewer/app/src/main/res/values/id.xml b/samples/java/jniviewer/app/src/main/res/values/id.xml index 56bde943a6..b0026f3d6d 100644 --- a/samples/java/jniviewer/app/src/main/res/values/id.xml +++ b/samples/java/jniviewer/app/src/main/res/values/id.xml @@ -1,17 +1,17 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/samples/java/jniviewer/app/src/main/res/values/strings.xml b/samples/java/jniviewer/app/src/main/res/values/strings.xml index 6f2a431604..53463b5b73 100644 --- a/samples/java/jniviewer/app/src/main/res/values/strings.xml +++ b/samples/java/jniviewer/app/src/main/res/values/strings.xml @@ -1,35 +1,35 @@ - - - OpenCASCADE JNI Java Sample - #484848 - #0099CC - #66252525 - - .png - .jpg - - - .brep - .rle - .iges - .igs - .step - .stp - - wireframe/shading - color - material - transparency - show/hide hidden lines - - OpenCASCADE JNI Java Sample

-

Simple viewer for BREP, STEP and IGES files.

-

Driven by Open CASCADE Technology %d.%d.%d.

-

Copyright 2014 OPEN CASCADE SAS.

-

-

http://www.opencascade.com

-

http://www.opencascade.org

- ]]> -
-
+ + + OpenCASCADE JNI Java Sample + #484848 + #0099CC + #66252525 + + .png + .jpg + + + .brep + .rle + .iges + .igs + .step + .stp + + wireframe/shading + color + material + transparency + show/hide hidden lines + + OpenCASCADE JNI Java Sample

+

Simple viewer for BREP, STEP and IGES files.

+

Driven by Open CASCADE Technology %d.%d.%d.

+

Copyright 2014 OPEN CASCADE SAS.

+

+

http://www.opencascade.com

+

http://www.opencascade.org

+ ]]> +
+
diff --git a/samples/java/jniviewer/gradle.properties.template b/samples/java/jniviewer/gradle.properties.template index 2cf7323475..8d4b0b5fe5 100644 --- a/samples/java/jniviewer/gradle.properties.template +++ b/samples/java/jniviewer/gradle.properties.template @@ -1,5 +1,5 @@ -# customized paths -OCCT_ROOT=c\:/android/occt-dev-android -FREETYPE_ROOT=c\:/android/freetype-2.7.1-android -# in case if OCCT was built with FreeImage -#FREEIMAGE_ROOT=c\:/android/freeimage-3.17-android +# customized paths +OCCT_ROOT=c\:/android/occt-dev-android +FREETYPE_ROOT=c\:/android/freetype-2.7.1-android +# in case if OCCT was built with FreeImage +#FREEIMAGE_ROOT=c\:/android/freeimage-3.17-android diff --git a/samples/qt/AndroidQt/AndroidQt.pro b/samples/qt/AndroidQt/AndroidQt.pro index 0b1527fc51..6d7cfddcb2 100644 --- a/samples/qt/AndroidQt/AndroidQt.pro +++ b/samples/qt/AndroidQt/AndroidQt.pro @@ -1,34 +1,34 @@ -TEMPLATE = app - -QT += qml quick widgets - -SOURCES += src/Main.cxx \ - src/AndroidQt.cxx \ - src/AndroidQt_Window.cxx \ - src/AndroidQt_TouchParameters.cxx - -RESOURCES += ./src/AndroidQt.qrc - -# Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = - -# OCCT -include(OCCT.pri) - -# Default rules for deployment. -include(Deployment.pri) - -HEADERS += \ - src/AndroidQt.h \ - src/AndroidQt_Window.h \ - src/AndroidQt_TouchParameters.h \ - src/AndroidQt_UserInteractionParameters.h - -INCLUDEPATH += $$_PRO_FILE_PWD_/src -DEPENDPATH += $$_PRO_FILE_PWD_/src - -OTHER_FILES += \ - android/src/org/qtproject/example/AndroidQt/AndroidQt.java \ - android/AndroidManifest.xml - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android +TEMPLATE = app + +QT += qml quick widgets + +SOURCES += src/Main.cxx \ + src/AndroidQt.cxx \ + src/AndroidQt_Window.cxx \ + src/AndroidQt_TouchParameters.cxx + +RESOURCES += ./src/AndroidQt.qrc + +# Additional import path used to resolve QML modules in Qt Creator's code model +QML_IMPORT_PATH = + +# OCCT +include(OCCT.pri) + +# Default rules for deployment. +include(Deployment.pri) + +HEADERS += \ + src/AndroidQt.h \ + src/AndroidQt_Window.h \ + src/AndroidQt_TouchParameters.h \ + src/AndroidQt_UserInteractionParameters.h + +INCLUDEPATH += $$_PRO_FILE_PWD_/src +DEPENDPATH += $$_PRO_FILE_PWD_/src + +OTHER_FILES += \ + android/src/org/qtproject/example/AndroidQt/AndroidQt.java \ + android/AndroidManifest.xml + +ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android diff --git a/samples/qt/AndroidQt/AndroidQt0.pro b/samples/qt/AndroidQt/AndroidQt0.pro index 26610ecf4f..049a2b2f8c 100644 --- a/samples/qt/AndroidQt/AndroidQt0.pro +++ b/samples/qt/AndroidQt/AndroidQt0.pro @@ -1,5 +1,5 @@ -TEMPLATE=subdirs - -SUBDIRS=AndroidQt0 - -AndroidQt0.file=AndroidQt.pro +TEMPLATE=subdirs + +SUBDIRS=AndroidQt0 + +AndroidQt0.file=AndroidQt.pro diff --git a/samples/qt/AndroidQt/Deployment.pri b/samples/qt/AndroidQt/Deployment.pri index 5441b63dc8..643cc9edae 100644 --- a/samples/qt/AndroidQt/Deployment.pri +++ b/samples/qt/AndroidQt/Deployment.pri @@ -1,27 +1,27 @@ -android-no-sdk { - target.path = /data/user/qt - export(target.path) - INSTALLS += target -} else:android { - x86 { - target.path = /libs/x86 - } else: armeabi-v7a { - target.path = /libs/armeabi-v7a - } else { - target.path = /libs/armeabi - } - export(target.path) - INSTALLS += target -} else:unix { - isEmpty(target.path) { - qnx { - target.path = /tmp/$${TARGET}/bin - } else { - target.path = /opt/$${TARGET}/bin - } - export(target.path) - } - INSTALLS += target -} - -export(INSTALLS) +android-no-sdk { + target.path = /data/user/qt + export(target.path) + INSTALLS += target +} else:android { + x86 { + target.path = /libs/x86 + } else: armeabi-v7a { + target.path = /libs/armeabi-v7a + } else { + target.path = /libs/armeabi + } + export(target.path) + INSTALLS += target +} else:unix { + isEmpty(target.path) { + qnx { + target.path = /tmp/$${TARGET}/bin + } else { + target.path = /opt/$${TARGET}/bin + } + export(target.path) + } + INSTALLS += target +} + +export(INSTALLS) diff --git a/samples/qt/AndroidQt/OCCT.pri b/samples/qt/AndroidQt/OCCT.pri index c8773d3963..68d28422a2 100644 --- a/samples/qt/AndroidQt/OCCT.pri +++ b/samples/qt/AndroidQt/OCCT.pri @@ -1,59 +1,59 @@ -# -INCLUDEPATH += $$_PRO_FILE_PWD_/occt/inc $$_PRO_FILE_PWD_/3rdparty/include -DEPENDPATH += $$_PRO_FILE_PWD_/occt/inc $$_PRO_FILE_PWD_/3rdparty/include - -DEFINES += OCC_CONVERT_SIGNALS - -CONFIG(debug,debug|release) { - DEFINES += DEB -} - -occt_lib_subpath = libs/armeabi-v7a - -occt_lib_path = $$_PRO_FILE_PWD_/occt/$$occt_lib_subpath -3rdparty_lib_path = $$_PRO_FILE_PWD_/3rdparty/$$occt_lib_subpath - -android { - QMAKE_CFLAGS += -fexceptions -Wno-ignored-qualifiers - QMAKE_CXXFLAGS += -fexceptions -Wno-ignored-qualifiers - LIBS += -L$$occt_lib_path -lEGL -} -win32 { - QMAKE_CXXFLAGS_WARN_ON += -W4 - INCLUDEPATH += $$(CSF_OCCTIncludePath) - LIBS += -L$(CSF_OCCTLibPath);$(CSF_PRODLibPath) - LIBS += -lopengl32 -} - -LIBS += -lTKernel \ - -lTKMath \ - -lTKG2d \ - -lTKG3d \ - -lTKGeomBase \ - -lTKBRep \ - -lTKGeomAlgo \ - -lTKTopAlgo \ - -lTKShHealing \ - -lTKService \ - -lTKMesh \ - -lTKHLR \ - -lTKV3d \ - -lTKOpenGles - -# IMPORTANT. load libraries in a proper order -ANDROID_EXTRA_LIBS = $$3rdparty_lib_path/libfreeimage.so \ - $$3rdparty_lib_path/libfreetype.so \ - $$occt_lib_path/libTKernel.so \ - $$occt_lib_path/libTKMath.so \ - $$occt_lib_path/libTKG2d.so \ - $$occt_lib_path/libTKG3d.so \ - $$occt_lib_path/libTKGeomBase.so \ - $$occt_lib_path/libTKBRep.so \ - $$occt_lib_path/libTKGeomAlgo.so \ - $$occt_lib_path/libTKTopAlgo.so \ - $$occt_lib_path/libTKShHealing.so \ - $$occt_lib_path/libTKService.so \ - $$occt_lib_path/libTKMesh.so \ - $$occt_lib_path/libTKHLR.so \ - $$occt_lib_path/libTKV3d.so \ - $$occt_lib_path/libTKOpenGles.so +# +INCLUDEPATH += $$_PRO_FILE_PWD_/occt/inc $$_PRO_FILE_PWD_/3rdparty/include +DEPENDPATH += $$_PRO_FILE_PWD_/occt/inc $$_PRO_FILE_PWD_/3rdparty/include + +DEFINES += OCC_CONVERT_SIGNALS + +CONFIG(debug,debug|release) { + DEFINES += DEB +} + +occt_lib_subpath = libs/armeabi-v7a + +occt_lib_path = $$_PRO_FILE_PWD_/occt/$$occt_lib_subpath +3rdparty_lib_path = $$_PRO_FILE_PWD_/3rdparty/$$occt_lib_subpath + +android { + QMAKE_CFLAGS += -fexceptions -Wno-ignored-qualifiers + QMAKE_CXXFLAGS += -fexceptions -Wno-ignored-qualifiers + LIBS += -L$$occt_lib_path -lEGL +} +win32 { + QMAKE_CXXFLAGS_WARN_ON += -W4 + INCLUDEPATH += $$(CSF_OCCTIncludePath) + LIBS += -L$(CSF_OCCTLibPath);$(CSF_PRODLibPath) + LIBS += -lopengl32 +} + +LIBS += -lTKernel \ + -lTKMath \ + -lTKG2d \ + -lTKG3d \ + -lTKGeomBase \ + -lTKBRep \ + -lTKGeomAlgo \ + -lTKTopAlgo \ + -lTKShHealing \ + -lTKService \ + -lTKMesh \ + -lTKHLR \ + -lTKV3d \ + -lTKOpenGles + +# IMPORTANT. load libraries in a proper order +ANDROID_EXTRA_LIBS = $$3rdparty_lib_path/libfreeimage.so \ + $$3rdparty_lib_path/libfreetype.so \ + $$occt_lib_path/libTKernel.so \ + $$occt_lib_path/libTKMath.so \ + $$occt_lib_path/libTKG2d.so \ + $$occt_lib_path/libTKG3d.so \ + $$occt_lib_path/libTKGeomBase.so \ + $$occt_lib_path/libTKBRep.so \ + $$occt_lib_path/libTKGeomAlgo.so \ + $$occt_lib_path/libTKTopAlgo.so \ + $$occt_lib_path/libTKShHealing.so \ + $$occt_lib_path/libTKService.so \ + $$occt_lib_path/libTKMesh.so \ + $$occt_lib_path/libTKHLR.so \ + $$occt_lib_path/libTKV3d.so \ + $$occt_lib_path/libTKOpenGles.so diff --git a/samples/qt/AndroidQt/android/AndroidManifest.xml b/samples/qt/AndroidQt/android/AndroidManifest.xml index 4d5be71a28..863aca7251 100644 --- a/samples/qt/AndroidQt/android/AndroidManifest.xml +++ b/samples/qt/AndroidQt/android/AndroidManifest.xml @@ -1,82 +1,82 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/qt/AndroidQt/android/res/values/strings.xml b/samples/qt/AndroidQt/android/res/values/strings.xml index 4f59f34eb2..c757ec13f7 100644 --- a/samples/qt/AndroidQt/android/res/values/strings.xml +++ b/samples/qt/AndroidQt/android/res/values/strings.xml @@ -1,4 +1,4 @@ - - - AndroidQt - + + + AndroidQt + diff --git a/samples/qt/AndroidQt/res/qml/main.qml b/samples/qt/AndroidQt/res/qml/main.qml index f933cccdac..348786ed34 100644 --- a/samples/qt/AndroidQt/res/qml/main.qml +++ b/samples/qt/AndroidQt/res/qml/main.qml @@ -1,85 +1,85 @@ -// Created: 2014-08-28 -// -// Copyright (c) 2014 OPEN CASCADE SAS -// -// This file is part of commercial software by OPEN CASCADE SAS. -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of this copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any third party. -// No ownership title to the software is transferred hereby. -// -// OPEN CASCADE SAS makes no representation or warranties with respect to the -// performance of this software, and specifically disclaims any responsibility -// for any damages, special or consequential, connected with its use. - -import QtQuick 2.2 -import QtQuick.Window 2.1 - -import QtQuick.Dialogs 1.2 - -import QtQuick.Controls 1.2 -import QtQuick.Controls.Styles 1.2 - -import AndroidQt 1.0 - -Window { - id: root_window - visible: true - - width: (Qt.platform.os == "android" || Qt.platform.os == "ios") ? Screen.width : 600 - height: (Qt.platform.os == "android" || Qt.platform.os == "ios") ? Screen.height : 400 - - Item { - id: root_item - anchors.fill: parent - - AndroidQt { - id: viewer - } - - MouseArea { - anchors.fill: parent - - onPressed: viewer.InitTouch(mouseX, mouseY) - onPositionChanged: viewer.UpdateTouch (mouseX, mouseY) - } - - // open button - Rectangle { - id: open_button - - // align - anchors.top: parent.top - anchors.left: parent.left - - // size - width: (Qt.platform.os == "android" || Qt.platform.os == "ios") ? 200 : 150 - height: (Qt.platform.os == "android" || Qt.platform.os == "ios") ? 200 : 150 - - color: "white" - - // image - Image { - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - - source: "qrc:/ic_action_collection.png" - } - - MouseArea { - anchors.fill: parent - onClicked: file_dialog.open() - } - } - } - - FileDialog { - id: file_dialog - title: "Please choose a file" - selectMultiple: false - nameFilters: [ "BRep files (*.brep)", "All files (*)" ] - onAccepted: viewer.ReadShapeFromFile(file_dialog.fileUrl) - } -} +// Created: 2014-08-28 +// +// Copyright (c) 2014 OPEN CASCADE SAS +// +// This file is part of commercial software by OPEN CASCADE SAS. +// +// This software is furnished in accordance with the terms and conditions +// of the contract and with the inclusion of this copyright notice. +// This software or any other copy thereof may not be provided or otherwise +// be made available to any third party. +// No ownership title to the software is transferred hereby. +// +// OPEN CASCADE SAS makes no representation or warranties with respect to the +// performance of this software, and specifically disclaims any responsibility +// for any damages, special or consequential, connected with its use. + +import QtQuick 2.2 +import QtQuick.Window 2.1 + +import QtQuick.Dialogs 1.2 + +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.2 + +import AndroidQt 1.0 + +Window { + id: root_window + visible: true + + width: (Qt.platform.os == "android" || Qt.platform.os == "ios") ? Screen.width : 600 + height: (Qt.platform.os == "android" || Qt.platform.os == "ios") ? Screen.height : 400 + + Item { + id: root_item + anchors.fill: parent + + AndroidQt { + id: viewer + } + + MouseArea { + anchors.fill: parent + + onPressed: viewer.InitTouch(mouseX, mouseY) + onPositionChanged: viewer.UpdateTouch (mouseX, mouseY) + } + + // open button + Rectangle { + id: open_button + + // align + anchors.top: parent.top + anchors.left: parent.left + + // size + width: (Qt.platform.os == "android" || Qt.platform.os == "ios") ? 200 : 150 + height: (Qt.platform.os == "android" || Qt.platform.os == "ios") ? 200 : 150 + + color: "white" + + // image + Image { + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter + + source: "qrc:/ic_action_collection.png" + } + + MouseArea { + anchors.fill: parent + onClicked: file_dialog.open() + } + } + } + + FileDialog { + id: file_dialog + title: "Please choose a file" + selectMultiple: false + nameFilters: [ "BRep files (*.brep)", "All files (*)" ] + onAccepted: viewer.ReadShapeFromFile(file_dialog.fileUrl) + } +} diff --git a/samples/qt/AndroidQt/src/AndroidQt.qrc b/samples/qt/AndroidQt/src/AndroidQt.qrc index fbc4b4a719..e2113dabda 100644 --- a/samples/qt/AndroidQt/src/AndroidQt.qrc +++ b/samples/qt/AndroidQt/src/AndroidQt.qrc @@ -1,8 +1,8 @@ - - - ../res/qml/main.qml - - - ../res/icons/ic_action_collection.png - - + + + ../res/qml/main.qml + + + ../res/icons/ic_action_collection.png + + diff --git a/samples/qt/Common/src/Common-icon.ts b/samples/qt/Common/src/Common-icon.ts index 972e6d450d..e0ae05f700 100755 --- a/samples/qt/Common/src/Common-icon.ts +++ b/samples/qt/Common/src/Common-icon.ts @@ -1,146 +1,146 @@ - - - - QObject - - ICON_VIEW_PAN - view_pan.png - - - ICON_VIEW_TOP - view_top.png - - - ICON_VIEW_AXO - view_axo.png - - - ICON_CURSOR_ZOOM - cursor_zoom.png - - - ICON_WINDOW_TILE - tile.png - - - ICON_VIEW_ZOOM - view_zoom.png - - - ICON_VIEW_BACK - view_back.png - - - ICON_VIEW_LEFT - view_left.png - - - ICON_VIEW_GLOBALPAN - view_glpan.png - - - ICON_CLOSE - close.png - - - ICON_HELP - help.png - - - ICON_TOOL_TRANS - tool_transparency.png - - - ICON_TOOL_COLOR - tool_color.png - - - ICON_TOOL_MATER - tool_material.png - - - ICON_WINDOW_CASCADE - cascade.png - - - ICON_VIEW_BOTTOM - view_bottom.png - - - ICON_VIEW_HLROFF - view_comp_off.png - - - ICON_VIEW_FITALL - view_fitall.png - - - ICON_CURSOR_ROTATE - cursor_rotate.png - - - ICON_DOC - document.png - - - ICON_NEW - new.png - - - ICON_VIEW_RIGHT - view_right.png - - - ICON_VIEW_RESET - view_reset.png - - - ICON_VIEW_HLRON - view_comp_on.png - - - ICON_VIEW_FRONT - view_front.png - - - ICON_VIEW_ROTATION - view_rotate.png - - - ICON_TOOL_SHAD - tool_shading.png - - - ICON_TOOL_WIRE - tool_wireframe.png - - - ICON_VIEW_FITAREA - view_fitarea.png - - - ICON_TOOL_DEL - tool_delete.png - - - ICON_SAMPLE - lamp.png - - - ICON_TOOL_RAYTRACING - raytracing.png - - - ICON_TOOL_SHADOWS - shadows.png - - - ICON_TOOL_REFLECTIONS - reflections.png - - - ICON_TOOL_ANTIALIASING - antialiasing.png - - - + + + + QObject + + ICON_VIEW_PAN + view_pan.png + + + ICON_VIEW_TOP + view_top.png + + + ICON_VIEW_AXO + view_axo.png + + + ICON_CURSOR_ZOOM + cursor_zoom.png + + + ICON_WINDOW_TILE + tile.png + + + ICON_VIEW_ZOOM + view_zoom.png + + + ICON_VIEW_BACK + view_back.png + + + ICON_VIEW_LEFT + view_left.png + + + ICON_VIEW_GLOBALPAN + view_glpan.png + + + ICON_CLOSE + close.png + + + ICON_HELP + help.png + + + ICON_TOOL_TRANS + tool_transparency.png + + + ICON_TOOL_COLOR + tool_color.png + + + ICON_TOOL_MATER + tool_material.png + + + ICON_WINDOW_CASCADE + cascade.png + + + ICON_VIEW_BOTTOM + view_bottom.png + + + ICON_VIEW_HLROFF + view_comp_off.png + + + ICON_VIEW_FITALL + view_fitall.png + + + ICON_CURSOR_ROTATE + cursor_rotate.png + + + ICON_DOC + document.png + + + ICON_NEW + new.png + + + ICON_VIEW_RIGHT + view_right.png + + + ICON_VIEW_RESET + view_reset.png + + + ICON_VIEW_HLRON + view_comp_on.png + + + ICON_VIEW_FRONT + view_front.png + + + ICON_VIEW_ROTATION + view_rotate.png + + + ICON_TOOL_SHAD + tool_shading.png + + + ICON_TOOL_WIRE + tool_wireframe.png + + + ICON_VIEW_FITAREA + view_fitarea.png + + + ICON_TOOL_DEL + tool_delete.png + + + ICON_SAMPLE + lamp.png + + + ICON_TOOL_RAYTRACING + raytracing.png + + + ICON_TOOL_SHADOWS + shadows.png + + + ICON_TOOL_REFLECTIONS + reflections.png + + + ICON_TOOL_ANTIALIASING + antialiasing.png + + + diff --git a/samples/qt/Common/src/Common-string.ts b/samples/qt/Common/src/Common-string.ts index b44f44efaa..6549b62c68 100755 --- a/samples/qt/Common/src/Common-string.ts +++ b/samples/qt/Common/src/Common-string.ts @@ -1,458 +1,458 @@ - - - - QObject - - TBR_ROTATION - Dynamic Rotation - - - MNU_GLOBALPAN - &Global Panning - - - MNU_ROTATION - &Dynamic Rotation - - - MNU_AXO - &Axo - - - MNU_NEW - &New - - - MNU_PAN - &Dynamic Panning - - - MNU_TOP - &Top - - - MNU_TOOL_SHAD - &Shading - - - MNU_TOOL_WIRE - &Wireframe - - - TBR_BOTTOM - Bottom - - - MNU_BOTTOM - &Bottom - - - BTN_BRONZE - Bronze - - - MNU_BRONZE - &Bronze - - - TBR_BRONZE - Bronze - - - BTN_COPPER - Copper - - - MNU_COPPER - &Copper - - - TBR_COPPER - Copper - - - MNU_TOOL_COLOR - &Color - - - MNU_TOOL_MATER - &Material - - - TBR_FITALL - FitAll - - - MNU_FITALL - &FilAll - - - MNU_BACK - &Back - - - MNU_FILE - &File - - - MNU_PREFERENCES - &Preferences - - - MNU_USE_VBO - &Use VBO - - - MNU_GOLD - &Gold - - - MNU_HELP - &Help - - - MNU_LEFT - &Left - - - MNU_QUIT - &Quit - - - MNU_VIEW - &View - - - MNU_ZOOM - &Dynamic Zooming - - - MNU_HLROFF - &Hidden Off - - - TBR_HLROFF - Hidden Off - - - MNU_TOOL_TRANS - &Transpatency - - - MNU_TOOL_SHADOWS - &Shadows - - - MNU_TOOL_RAYTRACING - &Ray-tracing - - - MNU_TOOL_REFLECTIONS - &Reflections - - - MNU_TOOL_ANTIALIASING - &Anti-aliasing - - - BTN_BRASS - Brass - - - BTN_PEWTER - Pewter - - - TBR_PEWTER - Pewter - - - MNU_PEWTER - &Pewter - - - MNU_SILVER - &Silver - - - BTN_OK - Ok - - - TBR_SILVER - Silver - - - BTN_SILVER - Silver - - - INF_NULL_SHAPE - Select the shape to export. - - - MNU_WINDOW - &Window - - - TBR_WINDOW - Window - - - BTN_PLASTIC - Plastic - - - BTN_PLASTER - Plaster - - - MNU_PLASTIC - &Plastic - - - MNU_PLASTER - &Plaster - - - TBR_PLASTIC - Plastic - - - TBR_PLASTER - Plaster - - - MNU_TOOL_BAR - &Toolbar - - - MNU_TOOL_DEL - &Delete - - - TBR_BACK - Back - - - TBR_GOLD - Gold - - - TBR_LEFT - Left - - - TBR_QUIT - Quit - - - TBR_VIEW - View - - - TBR_ZOOM - Dynamic Zooming - - - MNU_CH_BACK - &Change Background - - - MNU_CH_ENV_MAP - &Environment Map - - - TBR_CH_BACK - Change Background - - - TBR_TOOL_COLOR - Color - - - TBR_TOOL_MATER - Material - - - TBR_TOOL_RAYTRACING - Enable Ray-tracing - - - TBR_TOOL_SHADOWS - Enable Shadows - - - TBR_TOOL_REFLECTIONS - Enable Reflections - - - TBR_TOOL_ANTIALIASING - Enable Anti-aliasing - - - TBR_TOOL_BAR - Toolbar - - - TBR_TOOL_DEL - Delete - - - TBR_TOOL_TRANS - Transparency - - - TBR_ABOUT - About - - - TBR_BRASS - Brass - - - TBR_CLOSE - Close - - - TBR_FRONT - Front - - - TBR_HLRON - Hidden On - - - TBR_MATER - Material - - - TBR_RIGHT - Right - - - TBR_RESET - Reset - - - TBR_AXO - Axo - - - TBR_NEW - New - - - TBR_PAN - Dynamic Panning - - - TBR_TOP - Top - - - TIT_INF - Info - - - BTN_GOLD - Gold - - - TBR_WINDOW_NEW3D - New 3D View - - - MNU_WINDOW_NEW3D - New 3D View - - - MNU_STATUS_BAR - &Statusbar - - - TIT_ERROR - Error - - - TBR_FITAREA - Zoom Window - - - MNU_FITAREA - &Zoom Window - - - TBR_GLOBALPAN - Global Panning - - - MNU_ABOUT - &About - - - MNU_BRASS - &Brass - - - MNU_CLOSE - &Close - - - MNU_FRONT - &Front - - - MNU_HLRON - &Hidden On - - - MNU_MATER - &Material - - - MNU_RIGHT - &Right - - - MNU_RESET - &Reset - - - INF_ABOUT - Qt based application for tutorial to Open CASCADE Technology - - - INF_READY - Ready - - - TBR_TOOL_SHAD - Shading - - - TBR_TOOL_WIRE - Wireframe - - - TBR_WINDOW_TILE - Tile - - - TBR_STATUS_BAR - Statusbar - - - MNU_WINDOW_CASCADE - Cascade - - - TBR_WINDOW_CASCADE - &Cascade - - - MNU_WINDOW_TILE - &Tile - - - + + + + QObject + + TBR_ROTATION + Dynamic Rotation + + + MNU_GLOBALPAN + &Global Panning + + + MNU_ROTATION + &Dynamic Rotation + + + MNU_AXO + &Axo + + + MNU_NEW + &New + + + MNU_PAN + &Dynamic Panning + + + MNU_TOP + &Top + + + MNU_TOOL_SHAD + &Shading + + + MNU_TOOL_WIRE + &Wireframe + + + TBR_BOTTOM + Bottom + + + MNU_BOTTOM + &Bottom + + + BTN_BRONZE + Bronze + + + MNU_BRONZE + &Bronze + + + TBR_BRONZE + Bronze + + + BTN_COPPER + Copper + + + MNU_COPPER + &Copper + + + TBR_COPPER + Copper + + + MNU_TOOL_COLOR + &Color + + + MNU_TOOL_MATER + &Material + + + TBR_FITALL + FitAll + + + MNU_FITALL + &FilAll + + + MNU_BACK + &Back + + + MNU_FILE + &File + + + MNU_PREFERENCES + &Preferences + + + MNU_USE_VBO + &Use VBO + + + MNU_GOLD + &Gold + + + MNU_HELP + &Help + + + MNU_LEFT + &Left + + + MNU_QUIT + &Quit + + + MNU_VIEW + &View + + + MNU_ZOOM + &Dynamic Zooming + + + MNU_HLROFF + &Hidden Off + + + TBR_HLROFF + Hidden Off + + + MNU_TOOL_TRANS + &Transpatency + + + MNU_TOOL_SHADOWS + &Shadows + + + MNU_TOOL_RAYTRACING + &Ray-tracing + + + MNU_TOOL_REFLECTIONS + &Reflections + + + MNU_TOOL_ANTIALIASING + &Anti-aliasing + + + BTN_BRASS + Brass + + + BTN_PEWTER + Pewter + + + TBR_PEWTER + Pewter + + + MNU_PEWTER + &Pewter + + + MNU_SILVER + &Silver + + + BTN_OK + Ok + + + TBR_SILVER + Silver + + + BTN_SILVER + Silver + + + INF_NULL_SHAPE + Select the shape to export. + + + MNU_WINDOW + &Window + + + TBR_WINDOW + Window + + + BTN_PLASTIC + Plastic + + + BTN_PLASTER + Plaster + + + MNU_PLASTIC + &Plastic + + + MNU_PLASTER + &Plaster + + + TBR_PLASTIC + Plastic + + + TBR_PLASTER + Plaster + + + MNU_TOOL_BAR + &Toolbar + + + MNU_TOOL_DEL + &Delete + + + TBR_BACK + Back + + + TBR_GOLD + Gold + + + TBR_LEFT + Left + + + TBR_QUIT + Quit + + + TBR_VIEW + View + + + TBR_ZOOM + Dynamic Zooming + + + MNU_CH_BACK + &Change Background + + + MNU_CH_ENV_MAP + &Environment Map + + + TBR_CH_BACK + Change Background + + + TBR_TOOL_COLOR + Color + + + TBR_TOOL_MATER + Material + + + TBR_TOOL_RAYTRACING + Enable Ray-tracing + + + TBR_TOOL_SHADOWS + Enable Shadows + + + TBR_TOOL_REFLECTIONS + Enable Reflections + + + TBR_TOOL_ANTIALIASING + Enable Anti-aliasing + + + TBR_TOOL_BAR + Toolbar + + + TBR_TOOL_DEL + Delete + + + TBR_TOOL_TRANS + Transparency + + + TBR_ABOUT + About + + + TBR_BRASS + Brass + + + TBR_CLOSE + Close + + + TBR_FRONT + Front + + + TBR_HLRON + Hidden On + + + TBR_MATER + Material + + + TBR_RIGHT + Right + + + TBR_RESET + Reset + + + TBR_AXO + Axo + + + TBR_NEW + New + + + TBR_PAN + Dynamic Panning + + + TBR_TOP + Top + + + TIT_INF + Info + + + BTN_GOLD + Gold + + + TBR_WINDOW_NEW3D + New 3D View + + + MNU_WINDOW_NEW3D + New 3D View + + + MNU_STATUS_BAR + &Statusbar + + + TIT_ERROR + Error + + + TBR_FITAREA + Zoom Window + + + MNU_FITAREA + &Zoom Window + + + TBR_GLOBALPAN + Global Panning + + + MNU_ABOUT + &About + + + MNU_BRASS + &Brass + + + MNU_CLOSE + &Close + + + MNU_FRONT + &Front + + + MNU_HLRON + &Hidden On + + + MNU_MATER + &Material + + + MNU_RIGHT + &Right + + + MNU_RESET + &Reset + + + INF_ABOUT + Qt based application for tutorial to Open CASCADE Technology + + + INF_READY + Ready + + + TBR_TOOL_SHAD + Shading + + + TBR_TOOL_WIRE + Wireframe + + + TBR_WINDOW_TILE + Tile + + + TBR_STATUS_BAR + Statusbar + + + MNU_WINDOW_CASCADE + Cascade + + + TBR_WINDOW_CASCADE + &Cascade + + + MNU_WINDOW_TILE + &Tile + + + diff --git a/samples/qt/FuncDemo/FuncDemo.pro b/samples/qt/FuncDemo/FuncDemo.pro index 6e0ad68f61..bb814aafec 100644 --- a/samples/qt/FuncDemo/FuncDemo.pro +++ b/samples/qt/FuncDemo/FuncDemo.pro @@ -1,82 +1,82 @@ -TEMPLATE = app -CONFIG += debug_and_release qt - -TARGET = FuncDemo - -SAMPLESROOT = $$quote($$(CSF_OCCTSamplesPath)/qt) - -HEADERS = src/*.h -SOURCES = src/*.cpp - -INCLUDEPATH += $$quote($$(CSF_OCCTIncludePath)) - -OCCT_DEFINES = $$(CSF_DEFINES) - -DEFINES = $$split(OCCT_DEFINES, ;) - -RESOURCES += ./src/FuncDemo.qrc - -unix { - UNAME = $$system(uname -s) - LIBLIST = $$(LD_LIBRARY_PATH) - LIBPATHS = $$split(LIBLIST,":") - for(lib, LIBPATHS):LIBS += -L$${lib} - - CONFIG(debug, debug|release) { - DESTDIR = ./$$UNAME/bind - OBJECTS_DIR = ./$$UNAME/objd - MOC_DIR = ./src - } else { - DESTDIR = ./$$UNAME/bin - OBJECTS_DIR = ./$$UNAME/obj - MOC_DIR = ./src - } - - MACOSX_USE_GLX = $$(MACOSX_USE_GLX) - - !macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD - equals(MACOSX_USE_GLX, true): DEFINES += MACOSX_USE_GLX - DEFINES += OCC_CONVERT_SIGNALS QT_NO_STL - !macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD - QMAKE_CXXFLAGS += -std=gnu++11 -} - -win32 { - CONFIG(debug, debug|release) { - DEFINES += _DEBUG - DESTDIR = ./win$$(ARCH)/$$(VCVER)/bind - OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/objd - MOC_DIR = ./src - } else { - DEFINES += NDEBUG - DESTDIR = ./win$$(ARCH)/$$(VCVER)/bin - OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/obj - MOC_DIR = ./src - } - LIBS = -L$$(QTDIR)/lib;$$(CSF_OCCTLibPath) -} - -LIBS += -lTKernel -lTKMath -lTKBRep -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \ - -lTKTopAlgo -lTKMesh -lTKPrim -lTKCDF -lTKLCAF -lTKCAF -lTKBO - -lrelease.name = LRELEASE ${QMAKE_FILE_IN} -lrelease.commands = lrelease ${QMAKE_FILE_IN} -qm $${RES_DIR}/${QMAKE_FILE_BASE}.qm -lrelease.output = ${QMAKE_FILE_BASE}.qm -lrelease.input = TS_FILES -lrelease.clean = $${RES_DIR}/${QMAKE_FILE_BASE}.qm -lrelease.CONFIG += no_link target_predeps -QMAKE_EXTRA_COMPILERS += lrelease - -copy_res.name = Copy resource ${QMAKE_FILE_IN} -copy_res.output = ${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -copy_res.clean = $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -copy_res.input = RES_FILES -copy_res.CONFIG += no_link target_predeps -win32: copy_res.commands = type ${QMAKE_FILE_IN} > $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -unix: copy_res.commands = cp -f ${QMAKE_FILE_IN} $${RES_DIR} -QMAKE_EXTRA_COMPILERS += copy_res -QMAKE_EXTRA_COMPILERS += copy_res - -greaterThan(QT_MAJOR_VERSION, 4) { - QT += widgets -} +TEMPLATE = app +CONFIG += debug_and_release qt + +TARGET = FuncDemo + +SAMPLESROOT = $$quote($$(CSF_OCCTSamplesPath)/qt) + +HEADERS = src/*.h +SOURCES = src/*.cpp + +INCLUDEPATH += $$quote($$(CSF_OCCTIncludePath)) + +OCCT_DEFINES = $$(CSF_DEFINES) + +DEFINES = $$split(OCCT_DEFINES, ;) + +RESOURCES += ./src/FuncDemo.qrc + +unix { + UNAME = $$system(uname -s) + LIBLIST = $$(LD_LIBRARY_PATH) + LIBPATHS = $$split(LIBLIST,":") + for(lib, LIBPATHS):LIBS += -L$${lib} + + CONFIG(debug, debug|release) { + DESTDIR = ./$$UNAME/bind + OBJECTS_DIR = ./$$UNAME/objd + MOC_DIR = ./src + } else { + DESTDIR = ./$$UNAME/bin + OBJECTS_DIR = ./$$UNAME/obj + MOC_DIR = ./src + } + + MACOSX_USE_GLX = $$(MACOSX_USE_GLX) + + !macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD + equals(MACOSX_USE_GLX, true): DEFINES += MACOSX_USE_GLX + DEFINES += OCC_CONVERT_SIGNALS QT_NO_STL + !macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD + QMAKE_CXXFLAGS += -std=gnu++11 +} + +win32 { + CONFIG(debug, debug|release) { + DEFINES += _DEBUG + DESTDIR = ./win$$(ARCH)/$$(VCVER)/bind + OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/objd + MOC_DIR = ./src + } else { + DEFINES += NDEBUG + DESTDIR = ./win$$(ARCH)/$$(VCVER)/bin + OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/obj + MOC_DIR = ./src + } + LIBS = -L$$(QTDIR)/lib;$$(CSF_OCCTLibPath) +} + +LIBS += -lTKernel -lTKMath -lTKBRep -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \ + -lTKTopAlgo -lTKMesh -lTKPrim -lTKCDF -lTKLCAF -lTKCAF -lTKBO + +lrelease.name = LRELEASE ${QMAKE_FILE_IN} +lrelease.commands = lrelease ${QMAKE_FILE_IN} -qm $${RES_DIR}/${QMAKE_FILE_BASE}.qm +lrelease.output = ${QMAKE_FILE_BASE}.qm +lrelease.input = TS_FILES +lrelease.clean = $${RES_DIR}/${QMAKE_FILE_BASE}.qm +lrelease.CONFIG += no_link target_predeps +QMAKE_EXTRA_COMPILERS += lrelease + +copy_res.name = Copy resource ${QMAKE_FILE_IN} +copy_res.output = ${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +copy_res.clean = $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +copy_res.input = RES_FILES +copy_res.CONFIG += no_link target_predeps +win32: copy_res.commands = type ${QMAKE_FILE_IN} > $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +unix: copy_res.commands = cp -f ${QMAKE_FILE_IN} $${RES_DIR} +QMAKE_EXTRA_COMPILERS += copy_res +QMAKE_EXTRA_COMPILERS += copy_res + +greaterThan(QT_MAJOR_VERSION, 4) { + QT += widgets +} diff --git a/samples/qt/FuncDemo/FuncDemo0.pro b/samples/qt/FuncDemo/FuncDemo0.pro index 09937f3e87..80299cc6b1 100644 --- a/samples/qt/FuncDemo/FuncDemo0.pro +++ b/samples/qt/FuncDemo/FuncDemo0.pro @@ -1,5 +1,5 @@ -TEMPLATE=subdirs - -SUBDIRS=FuncDemo0 - -FuncDemo0.file=FuncDemo.pro +TEMPLATE=subdirs + +SUBDIRS=FuncDemo0 + +FuncDemo0.file=FuncDemo.pro diff --git a/samples/qt/IESample/IESample.pro b/samples/qt/IESample/IESample.pro index 12f51c7069..12422b4a26 100755 --- a/samples/qt/IESample/IESample.pro +++ b/samples/qt/IESample/IESample.pro @@ -1,108 +1,108 @@ -TEMPLATE = app -CONFIG += debug_and_release qt - -TARGET = IESample - -SAMPLESROOT = $$quote($$(CSF_OCCTSamplesPath)/qt) - -HEADERS = $${SAMPLESROOT}/Common/src/*.h \ - $${SAMPLESROOT}/Interface/src/*.h - -SOURCES = src/*.cxx \ - $${SAMPLESROOT}/Common/src/*.cxx \ - $${SAMPLESROOT}/Interface/src/*.cxx - -TS_FILES = $${SAMPLESROOT}/Common/src/Common-icon.ts \ - $${SAMPLESROOT}/Common/src/Common-string.ts \ - $${SAMPLESROOT}/Interface/src/Interface-string.ts - -RES_FILES = $${SAMPLESROOT}/Common/res/* - -RES_DIR = $$quote($$(RES_DIR)) - -INCLUDEPATH += $$quote($${SAMPLESROOT}/Common/src) -INCLUDEPATH += $$quote($${SAMPLESROOT}/Interface/src) -INCLUDEPATH += $$quote($$(CSF_OCCTIncludePath)) - -OCCT_DEFINES = $$(CSF_DEFINES) - -DEFINES = $$split(OCCT_DEFINES, ;) - -unix { - UNAME = $$system(uname -s) - LIBLIST = $$(LD_LIBRARY_PATH) - LIBPATHS = $$split(LIBLIST,":") - for(lib, LIBPATHS):LIBS += -L$${lib} - - CONFIG(debug, debug|release) { - DESTDIR = ./$$UNAME/bind - OBJECTS_DIR = ./$$UNAME/objd - MOC_DIR = ./$$UNAME/mocd - } else { - DESTDIR = ./$$UNAME/bin - OBJECTS_DIR = ./$$UNAME/obj - MOC_DIR = ./$$UNAME/moc - } - - MACOSX_USE_GLX = $$(MACOSX_USE_GLX) - - !macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD - equals(MACOSX_USE_GLX, true): DEFINES += MACOSX_USE_GLX - DEFINES += OCC_CONVERT_SIGNALS QT_NO_STL - !macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD - LIBS += -lfreeimageplus - LIBS += -ltbb -ltbbmalloc - QMAKE_CXXFLAGS += -std=gnu++11 -} - -win32 { - CONFIG(debug, debug|release) { - DEFINES += _DEBUG - DESTDIR = ./win$$(ARCH)/$$(VCVER)/bind - OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/objd - MOC_DIR = ./win$$(ARCH)/$$(VCVER)/mocd - } else { - DEFINES += NDEBUG - DESTDIR = ./win$$(ARCH)/$$(VCVER)/bin - OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/obj - MOC_DIR = ./win$$(ARCH)/$$(VCVER)/moc - } - LIBS = -L$$(QTDIR)/lib;$$(CSF_OCCTLibPath) - DEFINES += NO_COMMONSAMPLE_EXPORTS NO_IESAMPLE_EXPORTS -} - -LIBS += -lTKernel -lTKMath -lTKService -lTKV3d -lTKOpenGl \ - -lTKBRep -lTKIGES -lTKSTL -lTKVRML -lTKSTEP -lTKSTEPAttr -lTKSTEP209 \ - -lTKSTEPBase -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \ - -lTKXSBase -lTKShHealing -lTKHLR -lTKTopAlgo -lTKMesh -lTKPrim \ - -lTKCDF -lTKBool -lTKBO -lTKFillet -lTKOffset -lTKLCAF \ - -!exists($${RES_DIR}) { - win32 { - system(mkdir $${RES_DIR}) - } else { - system(mkdir -p $${RES_DIR}) - } -} - -lrelease.name = LRELEASE ${QMAKE_FILE_IN} -lrelease.commands = lrelease ${QMAKE_FILE_IN} -qm $${RES_DIR}/${QMAKE_FILE_BASE}.qm -lrelease.output = ${QMAKE_FILE_BASE}.qm -lrelease.input = TS_FILES -lrelease.clean = $${RES_DIR}/${QMAKE_FILE_BASE}.qm -lrelease.CONFIG += no_link target_predeps -QMAKE_EXTRA_COMPILERS += lrelease - -copy_res.name = Copy resource ${QMAKE_FILE_IN} -copy_res.output = ${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -copy_res.clean = $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -copy_res.input = RES_FILES -copy_res.CONFIG += no_link target_predeps -win32: copy_res.commands = type ${QMAKE_FILE_IN} > $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -unix: copy_res.commands = cp -f ${QMAKE_FILE_IN} $${RES_DIR} -QMAKE_EXTRA_COMPILERS += copy_res -#QMAKE_CXXFLAGS += /wd4996 - -greaterThan(QT_MAJOR_VERSION, 4) { - QT += widgets -} +TEMPLATE = app +CONFIG += debug_and_release qt + +TARGET = IESample + +SAMPLESROOT = $$quote($$(CSF_OCCTSamplesPath)/qt) + +HEADERS = $${SAMPLESROOT}/Common/src/*.h \ + $${SAMPLESROOT}/Interface/src/*.h + +SOURCES = src/*.cxx \ + $${SAMPLESROOT}/Common/src/*.cxx \ + $${SAMPLESROOT}/Interface/src/*.cxx + +TS_FILES = $${SAMPLESROOT}/Common/src/Common-icon.ts \ + $${SAMPLESROOT}/Common/src/Common-string.ts \ + $${SAMPLESROOT}/Interface/src/Interface-string.ts + +RES_FILES = $${SAMPLESROOT}/Common/res/* + +RES_DIR = $$quote($$(RES_DIR)) + +INCLUDEPATH += $$quote($${SAMPLESROOT}/Common/src) +INCLUDEPATH += $$quote($${SAMPLESROOT}/Interface/src) +INCLUDEPATH += $$quote($$(CSF_OCCTIncludePath)) + +OCCT_DEFINES = $$(CSF_DEFINES) + +DEFINES = $$split(OCCT_DEFINES, ;) + +unix { + UNAME = $$system(uname -s) + LIBLIST = $$(LD_LIBRARY_PATH) + LIBPATHS = $$split(LIBLIST,":") + for(lib, LIBPATHS):LIBS += -L$${lib} + + CONFIG(debug, debug|release) { + DESTDIR = ./$$UNAME/bind + OBJECTS_DIR = ./$$UNAME/objd + MOC_DIR = ./$$UNAME/mocd + } else { + DESTDIR = ./$$UNAME/bin + OBJECTS_DIR = ./$$UNAME/obj + MOC_DIR = ./$$UNAME/moc + } + + MACOSX_USE_GLX = $$(MACOSX_USE_GLX) + + !macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD + equals(MACOSX_USE_GLX, true): DEFINES += MACOSX_USE_GLX + DEFINES += OCC_CONVERT_SIGNALS QT_NO_STL + !macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD + LIBS += -lfreeimageplus + LIBS += -ltbb -ltbbmalloc + QMAKE_CXXFLAGS += -std=gnu++11 +} + +win32 { + CONFIG(debug, debug|release) { + DEFINES += _DEBUG + DESTDIR = ./win$$(ARCH)/$$(VCVER)/bind + OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/objd + MOC_DIR = ./win$$(ARCH)/$$(VCVER)/mocd + } else { + DEFINES += NDEBUG + DESTDIR = ./win$$(ARCH)/$$(VCVER)/bin + OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/obj + MOC_DIR = ./win$$(ARCH)/$$(VCVER)/moc + } + LIBS = -L$$(QTDIR)/lib;$$(CSF_OCCTLibPath) + DEFINES += NO_COMMONSAMPLE_EXPORTS NO_IESAMPLE_EXPORTS +} + +LIBS += -lTKernel -lTKMath -lTKService -lTKV3d -lTKOpenGl \ + -lTKBRep -lTKIGES -lTKSTL -lTKVRML -lTKSTEP -lTKSTEPAttr -lTKSTEP209 \ + -lTKSTEPBase -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \ + -lTKXSBase -lTKShHealing -lTKHLR -lTKTopAlgo -lTKMesh -lTKPrim \ + -lTKCDF -lTKBool -lTKBO -lTKFillet -lTKOffset -lTKLCAF \ + +!exists($${RES_DIR}) { + win32 { + system(mkdir $${RES_DIR}) + } else { + system(mkdir -p $${RES_DIR}) + } +} + +lrelease.name = LRELEASE ${QMAKE_FILE_IN} +lrelease.commands = lrelease ${QMAKE_FILE_IN} -qm $${RES_DIR}/${QMAKE_FILE_BASE}.qm +lrelease.output = ${QMAKE_FILE_BASE}.qm +lrelease.input = TS_FILES +lrelease.clean = $${RES_DIR}/${QMAKE_FILE_BASE}.qm +lrelease.CONFIG += no_link target_predeps +QMAKE_EXTRA_COMPILERS += lrelease + +copy_res.name = Copy resource ${QMAKE_FILE_IN} +copy_res.output = ${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +copy_res.clean = $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +copy_res.input = RES_FILES +copy_res.CONFIG += no_link target_predeps +win32: copy_res.commands = type ${QMAKE_FILE_IN} > $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +unix: copy_res.commands = cp -f ${QMAKE_FILE_IN} $${RES_DIR} +QMAKE_EXTRA_COMPILERS += copy_res +#QMAKE_CXXFLAGS += /wd4996 + +greaterThan(QT_MAJOR_VERSION, 4) { + QT += widgets +} diff --git a/samples/qt/IESample/IESample0.pro b/samples/qt/IESample/IESample0.pro index 6f3d05bc1c..afea39be9e 100644 --- a/samples/qt/IESample/IESample0.pro +++ b/samples/qt/IESample/IESample0.pro @@ -1,5 +1,5 @@ -TEMPLATE=subdirs - -SUBDIRS=IESample0 - -IESample0.file=IESample.pro +TEMPLATE=subdirs + +SUBDIRS=IESample0 + +IESample0.file=IESample.pro diff --git a/samples/qt/IESample/custom.sh.template b/samples/qt/IESample/custom.sh.template index 52571f097b..cabcf21521 100644 --- a/samples/qt/IESample/custom.sh.template +++ b/samples/qt/IESample/custom.sh.template @@ -1,5 +1,5 @@ -#!/bin/bash -# Rename this file to custom.sh, -# and define QTDIR variable. - -export QTDIR="" +#!/bin/bash +# Rename this file to custom.sh, +# and define QTDIR variable. + +export QTDIR="" diff --git a/samples/qt/Interface/src/Interface-string.ts b/samples/qt/Interface/src/Interface-string.ts index 478dc788fd..b8453014b8 100755 --- a/samples/qt/Interface/src/Interface-string.ts +++ b/samples/qt/Interface/src/Interface-string.ts @@ -1,206 +1,206 @@ - - - - QObject - - INF_ABOUT - Qt based application for Import / Export CASCADE operations. - - - INF_NOTHING_ERROR - Nothing to transfer. - - - INF_APP_IMPORT - Import file - - - INF_APP_EXPORT - Export file - - - TBR_EXPORT_STL - Stl ... - - - TIT_SAMPLE - Sample Import / Export - - - INF_DATA_ERROR - Incorrect Data. - - - INF_FACET_ERROR - At least one shape doesn't contain facetes. - - - INF_TRANSLATE_FILENOTFOUND - File "%1" not found. - - - INF_TRANSLATE_ERROR - The translation is not done. - - - INF_TRANSLATE_ERROR_CANTSAVEDATA - Can't store persistent data. - - - INF_TRANSLATE_ERROR_CANTSAVEFILE - Can't save file "%1". - - - MNU_EXPORT_STL - &Stl ... - - - MNU_FILE_EXPORT - &Export - - - MNU_FILE_IMPORT - &Import - - - TIT_ABOUT - Sample ImportExport. - - - MNU_EXPORT_IMAGE - &Image - - - TBR_EXPORT_IMAGE - Image - - - INF_TRANSLATE_ERROR_INVALIDSHAPE - Some shapes are invalid. - - - MNU_EXPORT_IGES - &Iges ... - - - MNU_EXPORT_BREP - &Brep ... - - - MNU_IMPORT_STEP - &Step ... - - - MNU_IMPORT_BREP - &Brep ... - - - MNU_IMPORT_IGES - &Iges ... - - - MNU_EXPORT_STEP - &Step ... - - - MNU_EXPORT_VRML - &Vrml ... - - - TBR_EXPORT_IGES - Iges ... - - - TBR_EXPORT_BREP - Brep ... - - - TBR_IMPORT_STEP - Step ... - - - TBR_IMPORT_BREP - Brep ... - - - TBR_IMPORT_IGES - Iges ... - - - TBR_EXPORT_STEP - Step ... - - - TBR_EXPORT_VRML - Vrml ... - - - INF_TRIANGLES_NO - Export Without Triangles - - - INF_BREP_MOIFOLD - Manifold Solid Brep - - - INF_PATH_0 - /../data/occ - - - INF_PATH_1 - /../data/iges - - - INF_PATH_2 - /../data/step - - - INF_PATH_4 - /../data/vrml - - - INF_PATH_5 - /../data/stl - - - INF_FILTER_FORMAT_ALL - All Files (*.*) - - - INF_BREP_SHELL - Shell Based Surface Model - - - INF_BREP_CURVE - Geometric Curve Set - - - INF_BREP_FACETED - Faceted Brep - - - INF_TRIANGLES_YES - Export With Triangles - - - INF_FILTER_FORMAT_0 - BREP Files (*.brep *.rle) - - - INF_FILTER_FORMAT_1 - IGES Files (*.igs *.iges) - - - INF_FILTER_FORMAT_2 - STEP Files (*.stp *.step) - - - INF_FILTER_FORMAT_3 - VRML Files (*.vrml) - - - INF_FILTER_FORMAT_4 - STL Files (*.stl) - - - + + + + QObject + + INF_ABOUT + Qt based application for Import / Export CASCADE operations. + + + INF_NOTHING_ERROR + Nothing to transfer. + + + INF_APP_IMPORT + Import file + + + INF_APP_EXPORT + Export file + + + TBR_EXPORT_STL + Stl ... + + + TIT_SAMPLE + Sample Import / Export + + + INF_DATA_ERROR + Incorrect Data. + + + INF_FACET_ERROR + At least one shape doesn't contain facetes. + + + INF_TRANSLATE_FILENOTFOUND + File "%1" not found. + + + INF_TRANSLATE_ERROR + The translation is not done. + + + INF_TRANSLATE_ERROR_CANTSAVEDATA + Can't store persistent data. + + + INF_TRANSLATE_ERROR_CANTSAVEFILE + Can't save file "%1". + + + MNU_EXPORT_STL + &Stl ... + + + MNU_FILE_EXPORT + &Export + + + MNU_FILE_IMPORT + &Import + + + TIT_ABOUT + Sample ImportExport. + + + MNU_EXPORT_IMAGE + &Image + + + TBR_EXPORT_IMAGE + Image + + + INF_TRANSLATE_ERROR_INVALIDSHAPE + Some shapes are invalid. + + + MNU_EXPORT_IGES + &Iges ... + + + MNU_EXPORT_BREP + &Brep ... + + + MNU_IMPORT_STEP + &Step ... + + + MNU_IMPORT_BREP + &Brep ... + + + MNU_IMPORT_IGES + &Iges ... + + + MNU_EXPORT_STEP + &Step ... + + + MNU_EXPORT_VRML + &Vrml ... + + + TBR_EXPORT_IGES + Iges ... + + + TBR_EXPORT_BREP + Brep ... + + + TBR_IMPORT_STEP + Step ... + + + TBR_IMPORT_BREP + Brep ... + + + TBR_IMPORT_IGES + Iges ... + + + TBR_EXPORT_STEP + Step ... + + + TBR_EXPORT_VRML + Vrml ... + + + INF_TRIANGLES_NO + Export Without Triangles + + + INF_BREP_MOIFOLD + Manifold Solid Brep + + + INF_PATH_0 + /../data/occ + + + INF_PATH_1 + /../data/iges + + + INF_PATH_2 + /../data/step + + + INF_PATH_4 + /../data/vrml + + + INF_PATH_5 + /../data/stl + + + INF_FILTER_FORMAT_ALL + All Files (*.*) + + + INF_BREP_SHELL + Shell Based Surface Model + + + INF_BREP_CURVE + Geometric Curve Set + + + INF_BREP_FACETED + Faceted Brep + + + INF_TRIANGLES_YES + Export With Triangles + + + INF_FILTER_FORMAT_0 + BREP Files (*.brep *.rle) + + + INF_FILTER_FORMAT_1 + IGES Files (*.igs *.iges) + + + INF_FILTER_FORMAT_2 + STEP Files (*.stp *.step) + + + INF_FILTER_FORMAT_3 + VRML Files (*.vrml) + + + INF_FILTER_FORMAT_4 + STL Files (*.stl) + + + diff --git a/samples/qt/OCCTOverview/OCCTOverview.pro b/samples/qt/OCCTOverview/OCCTOverview.pro index eb420457da..f6cc6a9bd0 100644 --- a/samples/qt/OCCTOverview/OCCTOverview.pro +++ b/samples/qt/OCCTOverview/OCCTOverview.pro @@ -1,90 +1,90 @@ -TEMPLATE = app -CONFIG += debug_and_release qt -CONFIG += lrelease -CONFIG += embed_translations -QT += xml -greaterThan(QT_MAJOR_VERSION, 4) { - QT += widgets -} - -TARGET = OCCTOverview - -SAMPLESROOT = $$quote($$(CSF_OCCTSamplesPath)/qt) - - -HEADERS = ./src/*.h \ - $${SAMPLESROOT}/../OCCTOverview/code/*.h - -SOURCES = ./src/*.cxx \ - $${SAMPLESROOT}/../OCCTOverview/code/*.cxx - -RESOURCES += $${SAMPLESROOT}/../OCCTOverview/code/Samples.qrc -RESOURCES += ./src/OCCTOverview.qrc - -RES_DIR = $$quote($$(RES_DIR)) - -INCLUDEPATH += $$quote($$(CSF_SampleSources)) -INCLUDEPATH += $$quote($$(CSF_OCCTIncludePath)) \ - $${SAMPLESROOT}/../OCCTOverview/code - - -OCCT_DEFINES = $$(CSF_DEFINES) - -DEFINES = $$split(OCCT_DEFINES, ;) - -unix { - UNAME = $$system(uname -s) - LIBLIST = $$(LD_LIBRARY_PATH) - LIBPATHS = $$split(LIBLIST,":") - for(lib, LIBPATHS):LIBS += -L$${lib} - - CONFIG(debug, debug|release) { - DESTDIR = ./$$UNAME/bind - OBJECTS_DIR = ./$$UNAME/objd - MOC_DIR = ./$$UNAME/mocd - } else { - DESTDIR = ./$$UNAME/bin - OBJECTS_DIR = ./$$UNAME/obj - MOC_DIR = ./$$UNAME/moc - } - - MACOSX_USE_GLX = $$(MACOSX_USE_GLX) - - !macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD - equals(MACOSX_USE_GLX, true): DEFINES += MACOSX_USE_GLX - DEFINES += OCC_CONVERT_SIGNALS QT_NO_STL - !macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD - - QMAKE_CXXFLAGS += -std=gnu++11 -} - -win32 { - CONFIG(debug, debug|release) { - DEFINES += _DEBUG - DESTDIR = ./win$$(ARCH)/$$(VCVER)/bind - OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/objd - MOC_DIR = ./win$$(ARCH)/$$(VCVER)/mocd - } else { - DEFINES += NDEBUG - DESTDIR = ./win$$(ARCH)/$$(VCVER)/bin - OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/obj - MOC_DIR = ./win$$(ARCH)/$$(VCVER)/moc - } - LIBS = -L$$(QTDIR)/lib;$$(CSF_OCCTLibPath) - DEFINES += NO_COMMONSAMPLE_EXPORTS NO_IESAMPLE_EXPORTS -} - -LIBS += -lTKernel -lTKMath -lTKService -lTKV3d -lTKOpenGl \ - -lTKBRep -lTKIGES -lTKSTL -lTKVRML -lTKSTEP -lTKSTEPAttr -lTKSTEP209 \ - -lTKSTEPBase -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \ - -lTKXSBase -lTKShHealing -lTKHLR -lTKTopAlgo -lTKMesh -lTKPrim \ - -lTKCDF -lTKBool -lTKBO -lTKFillet -lTKOffset -lTKLCAF -lTKCAF -lTKVCAF \ - -lTKBin -lTKXml - -!exists($${RES_DIR}) { - win32 { - system(mkdir $${RES_DIR}) - } else { - system(mkdir -p $${RES_DIR}) - } -} +TEMPLATE = app +CONFIG += debug_and_release qt +CONFIG += lrelease +CONFIG += embed_translations +QT += xml +greaterThan(QT_MAJOR_VERSION, 4) { + QT += widgets +} + +TARGET = OCCTOverview + +SAMPLESROOT = $$quote($$(CSF_OCCTSamplesPath)/qt) + + +HEADERS = ./src/*.h \ + $${SAMPLESROOT}/../OCCTOverview/code/*.h + +SOURCES = ./src/*.cxx \ + $${SAMPLESROOT}/../OCCTOverview/code/*.cxx + +RESOURCES += $${SAMPLESROOT}/../OCCTOverview/code/Samples.qrc +RESOURCES += ./src/OCCTOverview.qrc + +RES_DIR = $$quote($$(RES_DIR)) + +INCLUDEPATH += $$quote($$(CSF_SampleSources)) +INCLUDEPATH += $$quote($$(CSF_OCCTIncludePath)) \ + $${SAMPLESROOT}/../OCCTOverview/code + + +OCCT_DEFINES = $$(CSF_DEFINES) + +DEFINES = $$split(OCCT_DEFINES, ;) + +unix { + UNAME = $$system(uname -s) + LIBLIST = $$(LD_LIBRARY_PATH) + LIBPATHS = $$split(LIBLIST,":") + for(lib, LIBPATHS):LIBS += -L$${lib} + + CONFIG(debug, debug|release) { + DESTDIR = ./$$UNAME/bind + OBJECTS_DIR = ./$$UNAME/objd + MOC_DIR = ./$$UNAME/mocd + } else { + DESTDIR = ./$$UNAME/bin + OBJECTS_DIR = ./$$UNAME/obj + MOC_DIR = ./$$UNAME/moc + } + + MACOSX_USE_GLX = $$(MACOSX_USE_GLX) + + !macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD + equals(MACOSX_USE_GLX, true): DEFINES += MACOSX_USE_GLX + DEFINES += OCC_CONVERT_SIGNALS QT_NO_STL + !macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD + + QMAKE_CXXFLAGS += -std=gnu++11 +} + +win32 { + CONFIG(debug, debug|release) { + DEFINES += _DEBUG + DESTDIR = ./win$$(ARCH)/$$(VCVER)/bind + OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/objd + MOC_DIR = ./win$$(ARCH)/$$(VCVER)/mocd + } else { + DEFINES += NDEBUG + DESTDIR = ./win$$(ARCH)/$$(VCVER)/bin + OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/obj + MOC_DIR = ./win$$(ARCH)/$$(VCVER)/moc + } + LIBS = -L$$(QTDIR)/lib;$$(CSF_OCCTLibPath) + DEFINES += NO_COMMONSAMPLE_EXPORTS NO_IESAMPLE_EXPORTS +} + +LIBS += -lTKernel -lTKMath -lTKService -lTKV3d -lTKOpenGl \ + -lTKBRep -lTKIGES -lTKSTL -lTKVRML -lTKSTEP -lTKSTEPAttr -lTKSTEP209 \ + -lTKSTEPBase -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \ + -lTKXSBase -lTKShHealing -lTKHLR -lTKTopAlgo -lTKMesh -lTKPrim \ + -lTKCDF -lTKBool -lTKBO -lTKFillet -lTKOffset -lTKLCAF -lTKCAF -lTKVCAF \ + -lTKBin -lTKXml + +!exists($${RES_DIR}) { + win32 { + system(mkdir $${RES_DIR}) + } else { + system(mkdir -p $${RES_DIR}) + } +} diff --git a/samples/qt/OCCTOverview/OCCTOverview0.pro b/samples/qt/OCCTOverview/OCCTOverview0.pro index ec2948b973..b70594fc54 100644 --- a/samples/qt/OCCTOverview/OCCTOverview0.pro +++ b/samples/qt/OCCTOverview/OCCTOverview0.pro @@ -1,5 +1,5 @@ -TEMPLATE=subdirs - -SUBDIRS=OCCTOverview0 - -OCCTOverview0.file=OCCTOverview.pro +TEMPLATE=subdirs + +SUBDIRS=OCCTOverview0 + +OCCTOverview0.file=OCCTOverview.pro diff --git a/samples/qt/OCCTOverview/custom.sh.template b/samples/qt/OCCTOverview/custom.sh.template index 756d3dda9d..bd8c605901 100644 --- a/samples/qt/OCCTOverview/custom.sh.template +++ b/samples/qt/OCCTOverview/custom.sh.template @@ -1,9 +1,9 @@ -#!/bin/bash -# Rename this file to custom.sh, -# define QTDIR variable - path to QT directory -# and CASROOT variable - path to CasCade installation directory. - -aScriptPath=${BASH_SOURCE%/*} - -export CASROOT=${aScriptPath}/../../.. -export QTDIR= +#!/bin/bash +# Rename this file to custom.sh, +# define QTDIR variable - path to QT directory +# and CASROOT variable - path to CasCade installation directory. + +aScriptPath=${BASH_SOURCE%/*} + +export CASROOT=${aScriptPath}/../../.. +export QTDIR= diff --git a/samples/qt/OCCTOverview/src/OCCTOverview.qrc b/samples/qt/OCCTOverview/src/OCCTOverview.qrc index 8516659917..f5f500bad1 100644 --- a/samples/qt/OCCTOverview/src/OCCTOverview.qrc +++ b/samples/qt/OCCTOverview/src/OCCTOverview.qrc @@ -1,29 +1,29 @@ - - - ../res/lamp.png - ../res/view_axo.png - ../res/view_back.png - ../res/view_bottom.png - ../res/view_comp_off.png - ../res/view_comp_on.png - ../res/view_fitall.png - ../res/view_front.png - ../res/view_left.png - ../res/view_reset.png - ../res/view_top.png - ../res/antialiasing.png - ../res/raytracing.png - ../res/reflections.png - ../res/shadows.png - ../res/view_right.png - ../res/tool_material.png - ../res/tool_color.png - ../res/tool_delete.png - ../res/tool_shading.png - ../res/tool_transparency.png - ../res/tool_wireframe.png - ../res/help.png - ../res/cursor_rotate.png - ../res/cursor_zoom.png - - + + + ../res/lamp.png + ../res/view_axo.png + ../res/view_back.png + ../res/view_bottom.png + ../res/view_comp_off.png + ../res/view_comp_on.png + ../res/view_fitall.png + ../res/view_front.png + ../res/view_left.png + ../res/view_reset.png + ../res/view_top.png + ../res/antialiasing.png + ../res/raytracing.png + ../res/reflections.png + ../res/shadows.png + ../res/view_right.png + ../res/tool_material.png + ../res/tool_color.png + ../res/tool_delete.png + ../res/tool_shading.png + ../res/tool_transparency.png + ../res/tool_wireframe.png + ../res/help.png + ../res/cursor_rotate.png + ../res/cursor_zoom.png + + diff --git a/samples/qt/Tutorial/Tutorial.pro b/samples/qt/Tutorial/Tutorial.pro index 3772f53100..3029ce46ea 100755 --- a/samples/qt/Tutorial/Tutorial.pro +++ b/samples/qt/Tutorial/Tutorial.pro @@ -1,109 +1,109 @@ -TEMPLATE = app -CONFIG += debug_and_release qt - -TARGET = Tutorial - -SAMPLESROOT = $$quote($$(CSF_OCCTSamplesPath)/qt) - -HEADERS = src/*.h \ - $${SAMPLESROOT}/Common/src/*.h \ - $${SAMPLESROOT}/Interface/src/*.h - -SOURCES = src/*.cxx \ - $${SAMPLESROOT}/Common/src/*.cxx \ - $${SAMPLESROOT}/Interface/src/*.cxx - -TS_FILES = $${SAMPLESROOT}/Common/src/Common-icon.ts \ - $${SAMPLESROOT}/Common/src/Common-string.ts \ - ./src/Tutorial-icon.ts \ - ./src/Tutorial-string.ts - -RES_FILES = $${SAMPLESROOT}/Common/res/* \ - ./res/* - -RES_DIR = $$quote($$(RES_DIR)) - -INCLUDEPATH += $$quote($${SAMPLESROOT}/Common/src) -INCLUDEPATH += $$quote($${SAMPLESROOT}/Interface/src) -INCLUDEPATH += $$quote($$(CSF_OCCTIncludePath)) - -OCCT_DEFINES = $$(CSF_DEFINES) - -DEFINES = $$split(OCCT_DEFINES, ;) - -unix { - UNAME = $$system(uname -s) - LIBLIST = $$(LD_LIBRARY_PATH) - LIBPATHS = $$split(LIBLIST,":") - for(lib, LIBPATHS):LIBS += -L$${lib} - - CONFIG(debug, debug|release) { - DESTDIR = ./$$UNAME/bind - OBJECTS_DIR = ./$$UNAME/objd - MOC_DIR = ./$$UNAME/mocd - } else { - DESTDIR = ./$$UNAME/bin - OBJECTS_DIR = ./$$UNAME/obj - MOC_DIR = ./$$UNAME/moc - } - - MACOSX_USE_GLX = $$(MACOSX_USE_GLX) - - !macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD - equals(MACOSX_USE_GLX, true): DEFINES += MACOSX_USE_GLX - DEFINES += OCC_CONVERT_SIGNALS QT_NO_STL - !macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD - QMAKE_CXXFLAGS += -std=gnu++11 -} - -win32 { - CONFIG(debug, debug|release) { - DEFINES += _DEBUG - DESTDIR = ./win$$(ARCH)/$$(VCVER)/bind - OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/objd - MOC_DIR = ./win$$(ARCH)/$$(VCVER)/mocd - } else { - DEFINES += NDEBUG - DESTDIR = ./win$$(ARCH)/$$(VCVER)/bin - OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/obj - MOC_DIR = ./win$$(ARCH)/$$(VCVER)/moc - } - LIBS = -L$$(QTDIR)/lib;$$(CSF_OCCTLibPath) - DEFINES += NO_COMMONSAMPLE_EXPORTS NO_IESAMPLE_EXPORTS -} - -LIBS += -lTKernel -lTKMath -lTKService -lTKV3d -lTKOpenGl \ - -lTKBRep -lTKIGES -lTKSTL -lTKVRML -lTKSTEP -lTKSTEPAttr -lTKSTEP209 \ - -lTKSTEPBase -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \ - -lTKXSBase -lTKShHealing -lTKHLR -lTKTopAlgo -lTKMesh -lTKPrim \ - -lTKCDF -lTKBool -lTKBO -lTKFillet -lTKOffset -lTKLCAF \ - -!exists($${RES_DIR}) { - win32 { - system(mkdir $${RES_DIR}) - } else { - system(mkdir -p $${RES_DIR}) - } -} - -lrelease.name = LRELEASE ${QMAKE_FILE_IN} -lrelease.commands = lrelease ${QMAKE_FILE_IN} -qm $${RES_DIR}/${QMAKE_FILE_BASE}.qm -lrelease.output = ${QMAKE_FILE_BASE}.qm -lrelease.input = TS_FILES -lrelease.clean = $${RES_DIR}/${QMAKE_FILE_BASE}.qm -lrelease.CONFIG += no_link target_predeps -QMAKE_EXTRA_COMPILERS += lrelease - -copy_res.name = Copy resource ${QMAKE_FILE_IN} -copy_res.output = ${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -copy_res.clean = $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -copy_res.input = RES_FILES -copy_res.CONFIG += no_link target_predeps -win32: copy_res.commands = type ${QMAKE_FILE_IN} > $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} -unix: copy_res.commands = cp -f ${QMAKE_FILE_IN} $${RES_DIR} -QMAKE_EXTRA_COMPILERS += copy_res -#QMAKE_CXXFLAGS += /wd4996 - -greaterThan(QT_MAJOR_VERSION, 4) { - QT += widgets +TEMPLATE = app +CONFIG += debug_and_release qt + +TARGET = Tutorial + +SAMPLESROOT = $$quote($$(CSF_OCCTSamplesPath)/qt) + +HEADERS = src/*.h \ + $${SAMPLESROOT}/Common/src/*.h \ + $${SAMPLESROOT}/Interface/src/*.h + +SOURCES = src/*.cxx \ + $${SAMPLESROOT}/Common/src/*.cxx \ + $${SAMPLESROOT}/Interface/src/*.cxx + +TS_FILES = $${SAMPLESROOT}/Common/src/Common-icon.ts \ + $${SAMPLESROOT}/Common/src/Common-string.ts \ + ./src/Tutorial-icon.ts \ + ./src/Tutorial-string.ts + +RES_FILES = $${SAMPLESROOT}/Common/res/* \ + ./res/* + +RES_DIR = $$quote($$(RES_DIR)) + +INCLUDEPATH += $$quote($${SAMPLESROOT}/Common/src) +INCLUDEPATH += $$quote($${SAMPLESROOT}/Interface/src) +INCLUDEPATH += $$quote($$(CSF_OCCTIncludePath)) + +OCCT_DEFINES = $$(CSF_DEFINES) + +DEFINES = $$split(OCCT_DEFINES, ;) + +unix { + UNAME = $$system(uname -s) + LIBLIST = $$(LD_LIBRARY_PATH) + LIBPATHS = $$split(LIBLIST,":") + for(lib, LIBPATHS):LIBS += -L$${lib} + + CONFIG(debug, debug|release) { + DESTDIR = ./$$UNAME/bind + OBJECTS_DIR = ./$$UNAME/objd + MOC_DIR = ./$$UNAME/mocd + } else { + DESTDIR = ./$$UNAME/bin + OBJECTS_DIR = ./$$UNAME/obj + MOC_DIR = ./$$UNAME/moc + } + + MACOSX_USE_GLX = $$(MACOSX_USE_GLX) + + !macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD + equals(MACOSX_USE_GLX, true): DEFINES += MACOSX_USE_GLX + DEFINES += OCC_CONVERT_SIGNALS QT_NO_STL + !macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD + QMAKE_CXXFLAGS += -std=gnu++11 +} + +win32 { + CONFIG(debug, debug|release) { + DEFINES += _DEBUG + DESTDIR = ./win$$(ARCH)/$$(VCVER)/bind + OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/objd + MOC_DIR = ./win$$(ARCH)/$$(VCVER)/mocd + } else { + DEFINES += NDEBUG + DESTDIR = ./win$$(ARCH)/$$(VCVER)/bin + OBJECTS_DIR = ./win$$(ARCH)/$$(VCVER)/obj + MOC_DIR = ./win$$(ARCH)/$$(VCVER)/moc + } + LIBS = -L$$(QTDIR)/lib;$$(CSF_OCCTLibPath) + DEFINES += NO_COMMONSAMPLE_EXPORTS NO_IESAMPLE_EXPORTS +} + +LIBS += -lTKernel -lTKMath -lTKService -lTKV3d -lTKOpenGl \ + -lTKBRep -lTKIGES -lTKSTL -lTKVRML -lTKSTEP -lTKSTEPAttr -lTKSTEP209 \ + -lTKSTEPBase -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \ + -lTKXSBase -lTKShHealing -lTKHLR -lTKTopAlgo -lTKMesh -lTKPrim \ + -lTKCDF -lTKBool -lTKBO -lTKFillet -lTKOffset -lTKLCAF \ + +!exists($${RES_DIR}) { + win32 { + system(mkdir $${RES_DIR}) + } else { + system(mkdir -p $${RES_DIR}) + } +} + +lrelease.name = LRELEASE ${QMAKE_FILE_IN} +lrelease.commands = lrelease ${QMAKE_FILE_IN} -qm $${RES_DIR}/${QMAKE_FILE_BASE}.qm +lrelease.output = ${QMAKE_FILE_BASE}.qm +lrelease.input = TS_FILES +lrelease.clean = $${RES_DIR}/${QMAKE_FILE_BASE}.qm +lrelease.CONFIG += no_link target_predeps +QMAKE_EXTRA_COMPILERS += lrelease + +copy_res.name = Copy resource ${QMAKE_FILE_IN} +copy_res.output = ${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +copy_res.clean = $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +copy_res.input = RES_FILES +copy_res.CONFIG += no_link target_predeps +win32: copy_res.commands = type ${QMAKE_FILE_IN} > $${RES_DIR}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} +unix: copy_res.commands = cp -f ${QMAKE_FILE_IN} $${RES_DIR} +QMAKE_EXTRA_COMPILERS += copy_res +#QMAKE_CXXFLAGS += /wd4996 + +greaterThan(QT_MAJOR_VERSION, 4) { + QT += widgets } \ No newline at end of file diff --git a/samples/qt/Tutorial/Tutorial0.pro b/samples/qt/Tutorial/Tutorial0.pro index 0c46b29be6..bfbf90b218 100644 --- a/samples/qt/Tutorial/Tutorial0.pro +++ b/samples/qt/Tutorial/Tutorial0.pro @@ -1,5 +1,5 @@ -TEMPLATE=subdirs - -SUBDIRS=Tutorial0 - -Tutorial0.file=Tutorial.pro +TEMPLATE=subdirs + +SUBDIRS=Tutorial0 + +Tutorial0.file=Tutorial.pro diff --git a/samples/qt/Tutorial/custom.sh.template b/samples/qt/Tutorial/custom.sh.template index 52571f097b..cabcf21521 100644 --- a/samples/qt/Tutorial/custom.sh.template +++ b/samples/qt/Tutorial/custom.sh.template @@ -1,5 +1,5 @@ -#!/bin/bash -# Rename this file to custom.sh, -# and define QTDIR variable. - -export QTDIR="" +#!/bin/bash +# Rename this file to custom.sh, +# and define QTDIR variable. + +export QTDIR="" diff --git a/samples/qt/Tutorial/src/Tutorial-icon.ts b/samples/qt/Tutorial/src/Tutorial-icon.ts index 79dd82aec0..57489affe1 100755 --- a/samples/qt/Tutorial/src/Tutorial-icon.ts +++ b/samples/qt/Tutorial/src/Tutorial-icon.ts @@ -1,10 +1,10 @@ - - - - QObject - - ICON_MAKE_BOTTLE - Bottle.png - - - + + + + QObject + + ICON_MAKE_BOTTLE + Bottle.png + + + diff --git a/samples/qt/Tutorial/src/Tutorial-string.ts b/samples/qt/Tutorial/src/Tutorial-string.ts index c59ae7c248..22d16a9121 100755 --- a/samples/qt/Tutorial/src/Tutorial-string.ts +++ b/samples/qt/Tutorial/src/Tutorial-string.ts @@ -1,26 +1,26 @@ - - - - QObject - - TIT_SAMPLE - Tutorial - - - INF_MAKE_BOTTLE - Making bottle ......... - - - TBR_MAKEBOT - MakeBottle - - - INF_DONE - Done - - - TIT_ABOUT - Tutorial - - - + + + + QObject + + TIT_SAMPLE + Tutorial + + + INF_MAKE_BOTTLE + Making bottle ......... + + + TBR_MAKEBOT + MakeBottle + + + INF_DONE + Done + + + TIT_ABOUT + Tutorial + + + diff --git a/samples/xaml/App.xaml b/samples/xaml/App.xaml index e922bc13c4..4a5d1cbe3d 100644 --- a/samples/xaml/App.xaml +++ b/samples/xaml/App.xaml @@ -1,7 +1,7 @@ - - + + diff --git a/samples/xaml/MainPage.xaml b/samples/xaml/MainPage.xaml index 58ca32c34e..67d2d5e74b 100644 --- a/samples/xaml/MainPage.xaml +++ b/samples/xaml/MainPage.xaml @@ -1,47 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - -