include_directories( 
    BEFORE	
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${UTILITIES_EXPRESSION_INCLUDE_DIR}
    ${UNMANAGED_INCLUDE_DIR}
    ${UNMANAGED_COMMON_INCLUDE_DIR}
    ${UTILITIES_COMMON_INCLUDE_DIR}
)

set( ExpressionEngine_LIB_SRCS
    Functions/Aggregate/CacheValue.cpp
    Functions/Aggregate/CacheValueCollection.cpp
    Functions/Aggregate/FdoFunctionAvg.cpp
    Functions/Aggregate/FdoFunctionCount.cpp
    Functions/Aggregate/FdoFunctionMax.cpp
    Functions/Aggregate/FdoFunctionMedian.cpp
    Functions/Aggregate/FdoFunctionMin.cpp
    Functions/Aggregate/FdoFunctionSpatialExtents.cpp
    Functions/Aggregate/FdoFunctionStddev.cpp
    Functions/Aggregate/FdoFunctionSum.cpp
    Functions/Conversion/FdoFunctionNullValue.cpp
    Functions/Conversion/FdoFunctionToDate.cpp
    Functions/Conversion/FdoFunctionToDouble.cpp
    Functions/Conversion/FdoFunctionToFloat.cpp
    Functions/Conversion/FdoFunctionToInt32.cpp
    Functions/Conversion/FdoFunctionToInt64.cpp
    Functions/Conversion/FdoFunctionToString.cpp
    Functions/Date/FdoFunctionAddMonths.cpp
    Functions/Date/FdoFunctionCurrentDate.cpp
    Functions/Date/FdoFunctionExtract.cpp
    Functions/Date/FdoFunctionExtractToDouble.cpp
    Functions/Date/FdoFunctionExtractToInt.cpp
    Functions/Date/FdoFunctionMonthsBetween.cpp
    Functions/Geometry/FdoFunctionArea2D.cpp
    Functions/Geometry/FdoFunctionLength2D.cpp
    Functions/Geometry/FdoFunctionX.cpp
    Functions/Geometry/FdoFunctionY.cpp
    Functions/Geometry/FdoFunctionZ.cpp
    Functions/Geometry/FdoFunctionM.cpp
    Functions/Geometry/Util.cpp
    Functions/Math/FdoFunctionAbs.cpp
    Functions/Math/FdoFunctionAcos.cpp
    Functions/Math/FdoFunctionAsin.cpp
    Functions/Math/FdoFunctionAtan2.cpp
    Functions/Math/FdoFunctionAtan.cpp
    Functions/Math/FdoFunctionCos.cpp
    Functions/Math/FdoFunctionExp.cpp
    Functions/Math/FdoFunctionLn.cpp
    Functions/Math/FdoFunctionLog.cpp
    Functions/Math/FdoFunctionMod.cpp
    Functions/Math/FdoFunctionPower.cpp
    Functions/Math/FdoFunctionRemainder.cpp
    Functions/Math/FdoFunctionSin.cpp
    Functions/Math/FdoFunctionSqrt.cpp
    Functions/Math/FdoFunctionTan.cpp
    Functions/Numeric/FdoFunctionCeil.cpp
    Functions/Numeric/FdoFunctionFloor.cpp
    Functions/Numeric/FdoFunctionRound.cpp
    Functions/Numeric/FdoFunctionSign.cpp
    Functions/Numeric/FdoFunctionTrunc.cpp
    Functions/String/FdoFunctionConcat.cpp
    Functions/String/FdoFunctionInstr.cpp
    Functions/String/FdoFunctionLength.cpp
    Functions/String/FdoFunctionLower.cpp
    Functions/String/FdoFunctionLpad.cpp
    Functions/String/FdoFunctionLtrim.cpp
    Functions/String/FdoFunctionRpad.cpp
    Functions/String/FdoFunctionRtrim.cpp
    Functions/String/FdoFunctionSoundex.cpp
    Functions/String/FdoFunctionSubstr.cpp
    Functions/String/FdoFunctionTranslate.cpp
    Functions/String/FdoFunctionTrim.cpp
    Functions/String/FdoFunctionUpper.cpp
    Util/FdoExpressionEngineUtilDataReader.cpp
    Util/FdoExpressionEngineUtilFeatureReader.cpp
    FdoExpressionEngine.cpp
    FdoExpressionEngineFunctionCollection.cpp
    FdoExpressionEngineImp.cpp
    FdoExpressionEngineCopyFilter.cpp
    stdafx.cpp
)

add_library( ExpressionEngine${FDO_VERSION_SUFFIX} SHARED ${ExpressionEngine_LIB_SRCS} )

target_link_libraries( ExpressionEngine${FDO_VERSION_SUFFIX}
    FDO${FDO_VERSION_SUFFIX}
    ProvidersCommon
)

install( TARGETS ExpressionEngine${FDO_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${FDO_COMPONENT} )
install_symlink( ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libExpressionEngine${FDO_VERSION_SUFFIX}.so libExpressionEngine.so COMPONENT ${FDO_COMPONENT} )