#################
# to use system malloc 
#################
ADD_DEFINITIONS( -DUSE_SYSTEM_MALLOC=1)

#################
# dftables
#################
IF (NOT DEFINED dftables_executable)
SET(dftables_executable  "${CMAKE_CURRENT_SOURCE_DIR}/dftables.pc")
ENDIF()


#################
# image decoders
#################
SET (WEBKIT_USE_IMAGEDECODER "Generic")
SET (IMAGEDECODER_GIF "Generic/GIF")
SET (IMAGEDECODER_PNG "Generic/PNG")
SET (IMAGEDECODER_JPEG "Generic/JPEG")

IF (NOT DEFINED NO_ASTRONAV_JPEG_GENERIC_DECODER)
SET (IMAGEDECODER_JPEG_FULLPATH "${CMAKE_CURRENT_SOURCE_DIR}/BAL/Implementations/ImageDecoders/Generic/JPEG")
ENDIF()

#################
# events
#################
SET (WEBKIT_USE_EVENTS "Generic")
SET (EVENTS "Generic")
SET (EVENTS_PREFIX "")

#################
# graphics
#################
SET (WEBKIT_USE_GRAPHICS "GraphicManager")
SET (GRAPHICS "GraphicManager")
SET (GRAPHICS_PREFIX "")


#################
# fonts
#################
SET (WEBKIT_USE_FONTS "GraphicManager")
SET (FONTS "GraphicManager")


#################
# Internationalization
#################
SET (WEBKIT_USE_I18N "Generic")
SET (I18N "Generic")
ADD_DEFINITIONS (-D__BAL_I18N__)


#################
# XML
#################
SET (WEBKIT_USE_XML_SUPPORT ON)
IF (WEBKIT_USE_XML_SUPPORT)
    ADD_DEFINITIONS (-D__OWB_XML_SUPPORT__)
ELSE (WEBKIT_USE_XML_SUPPORT)
    SET (WEBKIT_USE_XSLT_SUPPORT OFF)
ENDIF (WEBKIT_USE_XML_SUPPORT)


#################
# XPATH
#################
SET (WEBKIT_USE_XPATH_SUPPORT ON)
ADD_DEFINITIONS (-DENABLE_XPATH=1)


#################
# JAVASCRIPT
#################
OPTION (WEBKIT_USE_JS "Compile WebKit with Java Script support." ON)
ADD_DEFINITIONS (-D__OWB_JS__)
ADD_DEFINITIONS (-DWTF_USE_JAVASCRIPTCORE_BINDINGS)


#################
# Adding definitions
#################
INCLUDE (CheckLibraryExists)
ADD_DEFINITIONS (-DAPPLE_CHANGES=1)
ADD_DEFINITIONS (-DHAVE_FUNC_ISNAN)
ADD_DEFINITIONS (-D_THREAD_SAFE)
ADD_DEFINITIONS (-D__OWB__)
ADD_DEFINITIONS (-DUSE_CONSERVATIVE_GC=0)
ADD_DEFINITIONS (-DD_MULTISCAN_FILES_SUPPORTED)
ADD_DEFINITIONS (-DLINUX)
ADD_DEFINITIONS (-DENABLE_DATABASE=0)

#################
# Configuration checks
#################
check_library_exists(pthread pthread_attr_get_np "" HAVE_PTHREAD_ATTR_GET_NP)
check_library_exists(pthread pthread_getattr_np "" HAVE_PTHREAD_GETATTR_NP)

##############################
# INCLUDE DIRECTORIES
##############################
INCLUDE_DIRECTORIES (
    ${CMAKE_CURRENT_SOURCE_DIR}
	${CMAKE_CURRENT_SOURCE_DIR}/JavaScriptCore/
	${CMAKE_CURRENT_SOURCE_DIR}/BAL/Interfaces/
	${CMAKE_CURRENT_SOURCE_DIR}/BAL/Configuration/
	${CMAKE_CURRENT_SOURCE_DIR}/BAL/Implementations/ImageDecoders/Common/
	${CMAKE_CURRENT_SOURCE_DIR}/BAL/Implementations/Events/Common/
	${CMAKE_CURRENT_SOURCE_DIR}/WebCore/loader/
	${CMAKE_CURRENT_SOURCE_DIR}/WebCore/dom/
	${CMAKE_CURRENT_SOURCE_DIR}/WebCore/page/
	${CMAKE_CURRENT_SOURCE_DIR}/WebCore/editing/
	${CMAKE_CURRENT_SOURCE_DIR}/BALGlue/
	${CMAKE_CURRENT_SOURCE_DIR}/WebCore/rendering/
	${CMAKE_CURRENT_SOURCE_DIR}/WebCore/html/
	${CMAKE_CURRENT_SOURCE_DIR}/WebCore/css/
	${CMAKE_CURRENT_SOURCE_DIR}/WebCore/history/
    ${CMAKE_CURRENT_SOURCE_DIR}/WebCore/bridge/
    ${CMAKE_CURRENT_SOURCE_DIR}/WebCore/bindings/js/
	${CMAKE_CURRENT_SOURCE_DIR}/WebKit/OrigynWebBrowser/WebCoreSupport/
    ${CMAKE_CURRENT_SOURCE_DIR}/JavaScriptCore/pcre/
    ${CMAKE_CURRENT_SOURCE_DIR}/WebCore/xml/
    ${CMAKE_CURRENT_SOURCE_DIR}/JavaScriptCore/ForwardingHeaders/
    ${CMAKE_CURRENT_BINARY_DIR}/generated_sources/WebCore
    ${CMAKE_CURRENT_BINARY_DIR}/generated_sources/WebCore/html
    ${CMAKE_CURRENT_BINARY_DIR}/generated_sources/kjs/
    ${CMAKE_CURRENT_BINARY_DIR}/generated_sources/WebCore/xml/
    ${LIBRARIES_TO_INCLUDE}
    ${PLAT_INCLUDE_DIRECTORIES}
)

##############################
# ClosedBAL
##############################
EXEC_PROGRAM ("find" ARGS " ${CMAKE_CURRENT_SOURCE_DIR} -maxdepth 1 -name ClosedBAL -type d -print | grep -v `basename $(pwd)`" OUTPUT_VARIABLE CLOSEDBAL_DIR)
IF (EXISTS ${CLOSEDBAL_DIR})
    ADD_SUBDIRECTORY (${CLOSEDBAL_DIR})
    INCLUDE (ClosedBAL/CMakeConf.txt)
    INCLUDE (ClosedBAL/Implementations/Facilities/SourcesCMakeLists.txt)
    INCLUDE (ClosedBAL/Implementations/ImageDecoders/SourcesCMakeLists.txt)
    INCLUDE (ClosedBAL/Implementations/Widgets/SourcesCMakeLists.txt)
    INCLUDE (ClosedBAL/Implementations/Events/SourcesCMakeLists.txt)
    INCLUDE (ClosedBAL/Implementations/Network/SourcesCMakeLists.txt)
    INCLUDE (ClosedBAL/Implementations/Fonts/SourcesCMakeLists.txt)
    INCLUDE (ClosedBAL/Implementations/Graphics/SourcesCMakeLists.txt)
ENDIF (EXISTS ${CLOSEDBAL_DIR})

##############################
# BAL
##############################
INCLUDE (BAL/Implementations/Facilities/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${facilities_SRC})

INCLUDE (BAL/Implementations/ImageDecoders/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${decoder_jpeg_SRC})
SET (bal_SRC ${bal_SRC} ${decoder_png_SRC})
SET (bal_SRC ${bal_SRC} ${decoder_gif_SRC})

INCLUDE (BAL/Implementations/Widgets/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${widget_SRC})

INCLUDE (BAL/Implementations/Events/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${events_SRC})

INCLUDE (BAL/Implementations/Network/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${transfers_SRC})

INCLUDE (BAL/Implementations/Fonts/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${fonts_SRC})

INCLUDE (BAL/Implementations/Graphics/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${graphics_SRC})

INCLUDE (BAL/Implementations/Types/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${types_SRC})
    
INCLUDE (BAL/Implementations/Internationalization/SourcesCMakeLists.txt)
SET (bal_SRC ${bal_SRC} ${i18n_SRC})

IF (WEBKIT_USE_XML_SUPPORT)
    INCLUDE (BAL/Implementations/XML/SourcesCMakeLists.txt)
    SET (bal_SRC ${bal_SRC} ${bal_xml_SRC})
ENDIF (WEBKIT_USE_XML_SUPPORT)

IF (WEBKIT_USE_BAL_MATH_POSIX)
    INCLUDE (BAL/Implementations/Posix/Linux/SourcesCMakeLists.txt)
    SET (bal_SRC ${bal_SRC} ${posix_linux_SRC})
ENDIF (WEBKIT_USE_BAL_MATH_POSIX)

SET(ASTRONAV_SRC  ${ASTRONAV_SRC} ${bal_SRC} )



###############
###############
# astronavzlib
###############
###############
ADD_SUBDIRECTORY(BAL/Implementations/Facilities/zlib)
SET(ASTRONAV_LIBS ${ASTRONAV_LIBS} astronavzlib )

##############################
#BAL_GLUE
##############################
INCLUDE (BALGlue/SourcesCMakeLists.txt)
SET(ASTRONAV_SRC  ${ASTRONAV_SRC} ${bal_glue_SRC})


##############################
#WebKit
##############################

INCLUDE (WebKit/OrigynWebBrowser/SourcesCMakeLists.txt)
SET(ASTRONAV_SRC  ${ASTRONAV_SRC} ${webkit_SRC} )


##############################
# JSCore
##############################

INCLUDE (CMakeJSCore.txt)
SET(ASTRONAV_SRC  ${ASTRONAV_SRC} ${jscore_SRC} )


##############################
# WebCore
##############################

INCLUDE (CMakeWebCore.txt)
SET(ASTRONAV_SRC  ${ASTRONAV_SRC} ${webcore_SRC} )


##############################
# AstronavPlayer
##############################

SET (ASTRONAV_SRC ${ASTRONAV_SRC}
     AstroNavPlayer/${GRAPHICS}/AstroNavPlayer.cpp
     AstroNavPlayer/${GRAPHICS}/AstroNavPlayerFactory.cpp  
     AstroNavPlayer/${GRAPHICS}/setget.cpp 
     AstroNavPlayer/${GRAPHICS}/AstroFile.cpp 	 
)

##############################
# TQTVD_ASTRONAV
##############################

ADD_LIBRARY(${MAIN_LIBRARY} SHARED ${ASTRONAV_SRC})
SET_TARGET_PROPERTIES(${MAIN_LIBRARY} PROPERTIES LINKER_LANGUAGE CXX)
TARGET_LINK_LIBRARIES(${MAIN_LIBRARY} ${ASTRONAV_LIBS})
INSTALL(TARGETS ${MAIN_LIBRARY} LIBRARY DESTINATION ${ASTRONAV_TARGET_DEPLOY})
