ADD_CORE_FILES(.)

SET(STL_SIP_FILES
    ${CMAKE_CURRENT_SOURCE_DIR}/std_list.sip
    ${CMAKE_CURRENT_SOURCE_DIR}/std_map.sip
    ${CMAKE_CURRENT_SOURCE_DIR}/Module.sip
    ${CMAKE_CURRENT_SOURCE_DIR}/std_pair.sip
    ${CMAKE_CURRENT_SOURCE_DIR}/std_set.sip
    ${CMAKE_CURRENT_SOURCE_DIR}/std_string.sip
    ${CMAKE_CURRENT_SOURCE_DIR}/std_vector.sip
    ${CMAKE_CURRENT_SOURCE_DIR}/std_ostream.sip
    CACHE INTERNAL ""
)

SET(STL_PYTHON_BINDINGS_SRC
    sip_stlpart0.cpp
    sip_stlpart1.cpp
    sip_stlpart2.cpp
    sip_stlpart3.cpp
)

ADD_CUSTOM_COMMAND(OUTPUT ${STL_PYTHON_BINDINGS_SRC}
                   COMMAND ${SIP_EXE} -n ${SIP_MODULE} -I ${CMAKE_CURRENT_BINARY_DIR} -c ${CMAKE_CURRENT_BINARY_DIR} -j4 ${CMAKE_CURRENT_SOURCE_DIR}/Module.sip
                   COMMENT "Generating Python Bindings for stl"
                   DEPENDS ${STL_SIP_FILES} VERBATIM)
           
DISABLE_COMPILER_WARNINGS()

# Force to use SIP and headers located in thirdparty
# instead of those installed in the system
INCLUDE_DIRECTORIES(BEFORE ${SIP_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIR} ${PYTHON_INCLUDE_PATH})

ADD_LIBRARY(${LibStlPythonBindingsName} SHARED ${STL_PYTHON_BINDINGS_SRC})

SET_TARGET_PROPERTIES(${LibStlPythonBindingsName} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${TULIP_PYTHON_NATIVE_FOLDER})
SET_TARGET_PROPERTIES(${LibStlPythonBindingsName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TULIP_PYTHON_NATIVE_FOLDER})
SET_TARGET_PROPERTIES(${LibStlPythonBindingsName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${TULIP_PYTHON_NATIVE_FOLDER})
SET_TARGET_PROPERTIES(${LibStlPythonBindingsName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${TULIP_PYTHON_NATIVE_FOLDER})
SET_TARGET_PROPERTIES(${LibStlPythonBindingsName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${TULIP_PYTHON_NATIVE_FOLDER})
SET_TARGET_PROPERTIES(${LibStlPythonBindingsName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${TULIP_PYTHON_NATIVE_FOLDER})

ADD_DEPENDENCIES(${LibStlPythonBindingsName} ${LibTulipCorePythonBindingsName})

IF(NOT SYSTEM_SIP)
ADD_DEPENDENCIES(${LibStlPythonBindingsName} ${SIP_LIB})
ENDIF(NOT SYSTEM_SIP)

SET_TARGET_PROPERTIES(${LibStlPythonBindingsName}
              PROPERTIES OUTPUT_NAME stl PREFIX "_")

IF(WIN32)
SET_TARGET_PROPERTIES(${LibStlPythonBindingsName}
		      PROPERTIES SUFFIX ".pyd")
ELSE(WIN32)
SET_TARGET_PROPERTIES(${LibStlPythonBindingsName}
		      PROPERTIES SUFFIX ".so")		      
ENDIF(WIN32)

# When building Python wheel for MacOS, don't link the C extension module with the Python library
# and use dynamic lookup for retrieving its symbols.
# That way, we can produce a C extension module that can be imported through the Python interpreter
# provided by Apple with the System and the one provided by Python.org
IF(APPLE AND TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)
  SET_TARGET_PROPERTIES(${LibStlPythonBindingsName} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
ELSE(APPLE AND TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)
  IF(NOT LINUX OR NOT TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)
    TARGET_LINK_LIBRARIES(${LibStlPythonBindingsName} ${PYTHON_LIBRARY})
  ENDIF(NOT LINUX OR NOT TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)
ENDIF(APPLE AND TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)

TULIP_INSTALL_PYTHON_FILES(tulip/native ${LibStlPythonBindingsName})

SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "sipAPI_stl.h")
