IF (Python_FOUND)

IF(MINGW AND X86_64)
  ADD_DEFINITIONS(-DMS_WIN64)
ENDIF(MINGW AND X86_64)

# 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_DIRS} ${CMAKE_CURRENT_SOURCE_DIR})

SET(siplib_SRCS
    apiversions.c
    array.c
    bool.cpp
    descriptors.c
    int_convertors.c
    objmap.c
    qtlib.c
    siplib.c
    threads.c
    voidptr.c
)

DISABLE_COMPILER_WARNINGS()

IF(NOT MSVC)
  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
ENDIF(NOT MSVC)

ADD_LIBRARY(${SIP_LIB} SHARED ${siplib_SRCS})

ADD_DEFINITIONS("-DSIP_MODULE_NAME=${SIP_MODULE}")

SET_TARGET_PROPERTIES(${SIP_LIB}
                      PROPERTIES OUTPUT_NAME ${SIP_LIB} PREFIX "")

IF(WIN32)
  SET_TARGET_PROPERTIES(${SIP_LIB} PROPERTIES SUFFIX ".pyd")
ELSE(WIN32)
  SET_TARGET_PROPERTIES(${SIP_LIB} 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(${SIP_LIB} 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(${SIP_LIB} ${Python_LIBRARIES})
  ENDIF(NOT LINUX OR NOT TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)
ENDIF(APPLE AND TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)

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

# Ensure bindings build output folder exists
ADD_CUSTOM_TARGET(create-sip-output-folder ALL
                  COMMAND ${CMAKE_COMMAND} -E make_directory ${TULIP_PYTHON_NATIVE_FOLDER}
                  COMMAND ${CMAKE_COMMAND} -E touch ${TULIP_PYTHON_NATIVE_FOLDER}/__init__.py)
ADD_DEPENDENCIES(${SIP_LIB} create-sip-output-folder)

TULIP_INSTALL_PYTHON_FILES(tulip/native ${SIP_LIB} ${TULIP_PYTHON_NATIVE_FOLDER}/__init__.py)

IF(TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)
  TULIP_COPY_TARGET_LIBRARY_POST_BUILD(${SIP_LIB} ${TULIP_PYTHON_NATIVE_FOLDER} wheel)
ENDIF(TULIP_ACTIVATE_PYTHON_WHEEL_TARGET)

ENDIF (Python_FOUND)
