project(TKSTL)

if (WIN32)
  list( APPEND TKSTL_PRECOMPILED_DEFS "-D__StlMesh_DLL" )
  list( APPEND TKSTL_PRECOMPILED_DEFS "-D__StlAPI_DLL" )
  list( APPEND TKSTL_PRECOMPILED_DEFS "-D__StlTransfer_DLL" )
  list( APPEND TKSTL_PRECOMPILED_DEFS "-D__RWStl_DLL" )
  string( REGEX REPLACE ";" " " TKSTL_PRECOMPILED_DEFS "${TKSTL_PRECOMPILED_DEFS}")
endif()

  list( APPEND TKSTL_COMPILER_DIRECTORIES "${WOK_LIB_PATH}" )
  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}/inc")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/inc" )
  ENDIF()
  IF(EXISTS "${CMAKE_SOURCE_DIR}/inc")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/inc" )
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "")
    IF(EXISTS "${BUILD_PATCH_DIR}/drv/StlMesh")
      list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/drv/StlMesh" )
    ENDIF()
    IF(EXISTS "${BUILD_PATCH_DIR}/src/StlMesh")
      list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/src/StlMesh" )
    ENDIF()

    IF(EXISTS "${BUILD_PATCH_DIR}/drv/StlAPI")
      list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/drv/StlAPI" )
    ENDIF()
    IF(EXISTS "${BUILD_PATCH_DIR}/src/StlAPI")
      list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/src/StlAPI" )
    ENDIF()

    IF(EXISTS "${BUILD_PATCH_DIR}/drv/StlTransfer")
      list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/drv/StlTransfer" )
    ENDIF()
    IF(EXISTS "${BUILD_PATCH_DIR}/src/StlTransfer")
      list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/src/StlTransfer" )
    ENDIF()

    IF(EXISTS "${BUILD_PATCH_DIR}/drv/RWStl")
      list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/drv/RWStl" )
    ENDIF()
    IF(EXISTS "${BUILD_PATCH_DIR}/src/RWStl")
      list( APPEND TKSTL_COMPILER_DIRECTORIES "${BUILD_PATCH_DIR}/src/RWStl" )
    ENDIF()

  ENDIF()

  IF(EXISTS "${CMAKE_SOURCE_DIR}/drv/StlMesh")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/drv/StlMesh" )
  ENDIF()
  IF(EXISTS "${CMAKE_SOURCE_DIR}/src/StlMesh")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/StlMesh" )
  ENDIF()

  IF(EXISTS "${CMAKE_SOURCE_DIR}/drv/StlAPI")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/drv/StlAPI" )
  ENDIF()
  IF(EXISTS "${CMAKE_SOURCE_DIR}/src/StlAPI")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/StlAPI" )
  ENDIF()

  IF(EXISTS "${CMAKE_SOURCE_DIR}/drv/StlTransfer")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/drv/StlTransfer" )
  ENDIF()
  IF(EXISTS "${CMAKE_SOURCE_DIR}/src/StlTransfer")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/StlTransfer" )
  ENDIF()

  IF(EXISTS "${CMAKE_SOURCE_DIR}/drv/RWStl")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/drv/RWStl" )
  ENDIF()
  IF(EXISTS "${CMAKE_SOURCE_DIR}/src/RWStl")
    list( APPEND TKSTL_COMPILER_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/RWStl" )
  ENDIF()

IF (WIN32)
  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "")
  ENDIF()

ELSE()
  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "")
  ENDIF()

ENDIF()

  list( APPEND TKSTL_USED_LIBS TKernel )
  list( APPEND TKSTL_USED_LIBS TKMath )
  list( APPEND TKSTL_USED_LIBS TKBRep )
  list( APPEND TKSTL_USED_LIBS TKG2d )
  list( APPEND TKSTL_USED_LIBS TKG3d )
  list( APPEND TKSTL_USED_LIBS TKMesh )
  list( APPEND TKSTL_USED_LIBS TKTopAlgo )

if (WIN32)
elseif(APPLE)
elseif(ANDROID)
else()
endif()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshDomain_0.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshDomain_0.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshDomain_0.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshDomain_0.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshDomain_0.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshDomain_0.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshTriangle_0.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshTriangle_0.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshTriangle_0.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshTriangle_0.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshTriangle_0.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMeshTriangle_0.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMesh_0.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMesh_0.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMesh_0.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMesh_0.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMesh_0.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceNodeOfSequenceOfMesh_0.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshDomain_0.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshDomain_0.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshDomain_0.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshDomain_0.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshDomain_0.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshDomain_0.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshTriangle_0.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshTriangle_0.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshTriangle_0.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshTriangle_0.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshTriangle_0.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMeshTriangle_0.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMesh_0.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMesh_0.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//drv/StlMesh/StlMesh_SequenceOfMesh_0.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMesh_0.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMesh_0.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//drv/StlMesh/StlMesh_SequenceOfMesh_0.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_Mesh.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_Mesh.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_Mesh.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_Mesh.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_Mesh.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_Mesh.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshDomain.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshDomain.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshDomain.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshDomain.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshDomain.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshDomain.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshExplorer.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshExplorer.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshExplorer.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshExplorer.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshExplorer.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshExplorer.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshTriangle.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshTriangle.cxx" )
    SOURCE_GROUP (StlMesh FILES "${BUILD_PATCH_DIR}//src/StlMesh/StlMesh_MeshTriangle.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshTriangle.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshTriangle.cxx" )
      SOURCE_GROUP (StlMesh FILES "${CMAKE_SOURCE_DIR}//src/StlMesh/StlMesh_MeshTriangle.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI.cxx" )
    SOURCE_GROUP (StlAPI FILES "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI.cxx" )
      SOURCE_GROUP (StlAPI FILES "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI_Reader.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI_Reader.cxx" )
    SOURCE_GROUP (StlAPI FILES "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI_Reader.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI_Reader.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI_Reader.cxx" )
      SOURCE_GROUP (StlAPI FILES "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI_Reader.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI_Writer.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI_Writer.cxx" )
    SOURCE_GROUP (StlAPI FILES "${BUILD_PATCH_DIR}//src/StlAPI/StlAPI_Writer.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI_Writer.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI_Writer.cxx" )
      SOURCE_GROUP (StlAPI FILES "${CMAKE_SOURCE_DIR}//src/StlAPI/StlAPI_Writer.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/StlTransfer/StlTransfer.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/StlTransfer/StlTransfer.cxx" )
    SOURCE_GROUP (StlTransfer FILES "${BUILD_PATCH_DIR}//src/StlTransfer/StlTransfer.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/StlTransfer/StlTransfer.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/StlTransfer/StlTransfer.cxx" )
      SOURCE_GROUP (StlTransfer FILES "${CMAKE_SOURCE_DIR}//src/StlTransfer/StlTransfer.cxx")
    ENDIF()
  ENDIF()

  IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}//src/RWStl/RWStl.cxx")
    list( APPEND TKSTL_USED_SRCFILES "${BUILD_PATCH_DIR}//src/RWStl/RWStl.cxx" )
    SOURCE_GROUP (RWStl FILES "${BUILD_PATCH_DIR}//src/RWStl/RWStl.cxx")
  ELSE()
    IF(EXISTS "${CMAKE_SOURCE_DIR}//src/RWStl/RWStl.cxx")
      list( APPEND TKSTL_USED_SRCFILES "${CMAKE_SOURCE_DIR}//src/RWStl/RWStl.cxx" )
      SOURCE_GROUP (RWStl FILES "${CMAKE_SOURCE_DIR}//src/RWStl/RWStl.cxx")
    ENDIF()
  ENDIF()


IF (WIN32)
ELSE()

  IF (APPLE)

  ENDIF()

ENDIF()

if ("${USED_TOOLKITS}" STREQUAL "" OR DEFINED TurnONtheTKSTL)
 add_library( TKSTL SHARED ${TKSTL_USED_SRCFILES} )

 set_property(TARGET TKSTL PROPERTY FOLDER DataExchange)

 install( TARGETS TKSTL
                                 RUNTIME DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}"
                                 ARCHIVE DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}"
                                 LIBRARY DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}")

 if (MSVC)
  install( FILES  ${CMAKE_BINARY_DIR}/out/bind/Debug/TKSTL.pdb CONFIGURATIONS Debug
                                  DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}")
 endif()


 set_target_properties( TKSTL PROPERTIES COMPILE_FLAGS "${TKSTL_PRECOMPILED_DEFS}" )
 include_directories( ${TKSTL_COMPILER_DIRECTORIES} )
 target_link_libraries( TKSTL ${TKSTL_USED_LIBS} )
endif()
