Blame libfreerdp/CMakeLists.txt

Packit 1fb8d4
# FreeRDP: A Remote Desktop Protocol Implementation
Packit 1fb8d4
# libfreerdp cmake build script
Packit 1fb8d4
#
Packit 1fb8d4
# Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit 1fb8d4
#
Packit 1fb8d4
# Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
# you may not use this file except in compliance with the License.
Packit 1fb8d4
# You may obtain a copy of the License at
Packit 1fb8d4
#
Packit 1fb8d4
#     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
#
Packit 1fb8d4
# Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
# distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
# See the License for the specific language governing permissions and
Packit 1fb8d4
# limitations under the License.
Packit 1fb8d4
Packit 1fb8d4
set(MODULE_NAME "freerdp")
Packit 1fb8d4
set(MODULE_PREFIX "FREERDP")
Packit 1fb8d4
Packit Service 5a9772
# CMake modules includes
Packit Service 5a9772
include(FindCairo)
Packit Service 5a9772
Packit 1fb8d4
# Create imported targets for Intel IPP libraries
Packit 1fb8d4
Packit 1fb8d4
if(IPP_FOUND)
Packit Service 5a9772
        foreach(ipp_lib ${IPP_LIBRARIES})
Packit Service 5a9772
        add_library("${ipp_lib}_imported" STATIC IMPORTED)
Packit Service 5a9772
        set_property(TARGET "${ipp_lib}_imported" PROPERTY IMPORTED_LOCATION "${IPP_LIBRARY_DIRS}/${ipp_lib}")
Packit Service 5a9772
    endforeach()
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
set(LIBFREERDP_DIR ${CMAKE_CURRENT_SOURCE_DIR})
Packit 1fb8d4
set(LIBFREERDP_SRCS "")
Packit 1fb8d4
set(LIBFREERDP_LIBS "")
Packit 1fb8d4
set(LIBFREERDP_INCLUDES "")
Packit 1fb8d4
set(LIBFREERDP_DEFINITIONS "")
Packit 1fb8d4
Packit 1fb8d4
macro (freerdp_module_add)
Packit Service 5a9772
        file (RELATIVE_PATH _relPath "${LIBFREERDP_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
Packit Service 5a9772
        foreach (_src ${ARGN})
Packit Service 5a9772
                if (_relPath)
Packit Service 5a9772
                        list (APPEND LIBFREERDP_SRCS "${_relPath}/${_src}")
Packit Service 5a9772
                else()
Packit Service 5a9772
                        list (APPEND LIBFREERDP_SRCS "${_src}")
Packit Service 5a9772
                endif()
Packit Service 5a9772
        endforeach()
Packit Service 5a9772
        if (_relPath)
Packit Service 5a9772
                set (LIBFREERDP_SRCS ${LIBFREERDP_SRCS} PARENT_SCOPE)
Packit Service 5a9772
        endif()
Packit 1fb8d4
endmacro()
Packit 1fb8d4
Packit 1fb8d4
macro (freerdp_include_directory_add)
Packit Service 5a9772
        file (RELATIVE_PATH _relPath "${LIBFREERDP_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
Packit Service 5a9772
        foreach (_inc ${ARGN})
Packit Service 5a9772
                if (IS_ABSOLUTE ${_inc})
Packit Service 5a9772
                            list (APPEND LIBFREERDP_INCLUDES "${_inc}")
Packit Service 5a9772
                else()
Packit Service 5a9772
                    if (_relPath)
Packit Service 5a9772
                            list (APPEND LIBFREERDP_INCLUDES "${_relPath}/${_inc}")
Packit Service 5a9772
                    else()
Packit Service 5a9772
                            list (APPEND LIBFREERDP_INCLUDES "${_inc}")
Packit Service 5a9772
                    endif()
Packit Service 5a9772
                endif()
Packit Service 5a9772
        endforeach()
Packit Service 5a9772
        if (_relPath)
Packit Service 5a9772
                set (LIBFREERDP_INCLUDES ${LIBFREERDP_INCLUDES} PARENT_SCOPE)
Packit Service 5a9772
        endif()
Packit 1fb8d4
endmacro()
Packit 1fb8d4
Packit 1fb8d4
macro (freerdp_library_add)
Packit Service 5a9772
        foreach (_lib ${ARGN})
Packit Service 5a9772
                        list (APPEND LIBFREERDP_LIBS "${_lib}")
Packit Service 5a9772
        endforeach()
Packit Service 5a9772
         set (LIBFREERDP_LIBS ${LIBFREERDP_LIBS} PARENT_SCOPE)
Packit 1fb8d4
endmacro()
Packit 1fb8d4
Packit 1fb8d4
macro (freerdp_definition_add)
Packit Service 5a9772
        foreach (_define ${ARGN})
Packit Service 5a9772
                        list (APPEND LIBFREERDP_DEFINITIONS "${_define}")
Packit Service 5a9772
        endforeach()
Packit Service 5a9772
         set (LIBFREERDP_DEFINITIONS ${LIBFREERDP_DEFINITIONS} PARENT_SCOPE)
Packit 1fb8d4
endmacro()
Packit 1fb8d4
Packit Service 5a9772
if (WITH_SWSCALE)
Packit Service 5a9772
    find_package(SWScale REQUIRED)
Packit Service 5a9772
endif(WITH_SWSCALE)
Packit Service 5a9772
if (WITH_CAIRO)
Packit Service 5a9772
    find_package(Cairo REQUIRED)
Packit Service 5a9772
endif(WITH_CAIRO)
Packit Service 5a9772
Packit Service 5a9772
# Prefer SWScale over Cairo, both at the same time are not possible.
Packit Service 5a9772
if (WITH_SWSCALE)
Packit Service 5a9772
    add_definitions(-DSWSCALE_FOUND=1)
Packit Service 5a9772
    include_directories(${SWScale_INCLUDE_DIR})
Packit Service 5a9772
    freerdp_library_add(${SWScale_LIBRARY})
Packit Service 5a9772
elseif (WITH_CAIRO)
Packit Service 5a9772
    add_definitions(-DCAIRO_FOUND=1)
Packit Service 5a9772
    include_directories(${CAIRO_INCLUDE_DIR})
Packit Service 5a9772
    freerdp_library_add(${CAIRO_LIBRARY})
Packit Service 5a9772
else()
Packit Service 5a9772
    message(WARNING "-DWITH_SWSCALE=OFF and -DWITH_CAIRO=OFF, compiling without image scaling support!")
Packit Service 5a9772
endif()
Packit Service 5a9772
Packit 1fb8d4
set(${MODULE_PREFIX}_SUBMODULES
Packit Service 5a9772
    utils
Packit Service 5a9772
    common
Packit Service 5a9772
    gdi
Packit Service 5a9772
    cache
Packit Service 5a9772
    crypto
Packit Service 5a9772
    locale
Packit Service 5a9772
    core)
Packit 1fb8d4
Packit 1fb8d4
foreach(${MODULE_PREFIX}_SUBMODULE ${${MODULE_PREFIX}_SUBMODULES})
Packit Service 5a9772
    add_subdirectory(${${MODULE_PREFIX}_SUBMODULE})
Packit 1fb8d4
endforeach()
Packit 1fb8d4
Packit 1fb8d4
## cmake source properties are only seen by targets in the same CMakeLists.txt
Packit 1fb8d4
## therefore primitives and codecs need to be defined here
Packit 1fb8d4
Packit 1fb8d4
# codec
Packit 1fb8d4
set(CODEC_SRCS
Packit Service 5a9772
    codec/dsp.c
Packit Service 5a9772
    codec/color.c
Packit Service 5a9772
    codec/audio.c
Packit Service 5a9772
    codec/planar.c
Packit Service 5a9772
    codec/bitmap.c
Packit Service 5a9772
    codec/interleaved.c
Packit Service 5a9772
    codec/progressive.c
Packit Service 5a9772
    codec/rfx_bitstream.h
Packit Service 5a9772
    codec/rfx_constants.h
Packit Service 5a9772
    codec/rfx_decode.c
Packit Service 5a9772
    codec/rfx_decode.h
Packit Service 5a9772
    codec/rfx_differential.h
Packit Service 5a9772
    codec/rfx_dwt.c
Packit Service 5a9772
    codec/rfx_dwt.h
Packit Service 5a9772
    codec/rfx_encode.c
Packit Service 5a9772
    codec/rfx_encode.h
Packit Service 5a9772
    codec/rfx_quantization.c
Packit Service 5a9772
    codec/rfx_quantization.h
Packit Service 5a9772
    codec/rfx_rlgr.c
Packit Service 5a9772
    codec/rfx_rlgr.h
Packit Service 5a9772
    codec/rfx_types.h
Packit Service 5a9772
    codec/rfx.c
Packit Service 5a9772
    codec/region.c
Packit Service 5a9772
    codec/nsc.c
Packit Service 5a9772
    codec/nsc_encode.c
Packit Service 5a9772
    codec/nsc_encode.h
Packit Service 5a9772
    codec/nsc_types.h
Packit Service 5a9772
    codec/ncrush.c
Packit Service 5a9772
    codec/xcrush.c
Packit Service 5a9772
    codec/mppc.c
Packit Service 5a9772
    codec/zgfx.c
Packit Service 5a9772
    codec/clear.c
Packit Service 5a9772
    codec/jpeg.c
Packit Service 5a9772
    codec/h264.c
Packit Service 5a9772
    codec/yuv.c)
Packit 1fb8d4
Packit 1fb8d4
set(CODEC_SSE2_SRCS
Packit Service 5a9772
    codec/rfx_sse2.c
Packit Service 5a9772
    codec/rfx_sse2.h
Packit Service 5a9772
    codec/nsc_sse2.c
Packit Service 5a9772
    codec/nsc_sse2.h)
Packit 1fb8d4
Packit 1fb8d4
set(CODEC_NEON_SRCS
Packit Service 5a9772
    codec/rfx_neon.c
Packit Service 5a9772
    codec/rfx_neon.h)
Packit 1fb8d4
Packit 1fb8d4
if(WITH_SSE2)
Packit Service 5a9772
    set(CODEC_SRCS ${CODEC_SRCS} ${CODEC_SSE2_SRCS})
Packit 1fb8d4
Packit Service 5a9772
    if(CMAKE_COMPILER_IS_GNUCC OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
Packit Service 5a9772
        set_source_files_properties(${CODEC_SSE2_SRCS} PROPERTIES COMPILE_FLAGS "-msse2" )
Packit Service 5a9772
    endif()
Packit 1fb8d4
Packit Service 5a9772
    if(MSVC)
Packit Service 5a9772
        set_source_files_properties(${CODEC_SSE2_SRCS} PROPERTIES COMPILE_FLAGS "/arch:SSE2" )
Packit Service 5a9772
    endif()
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if (WITH_DSP_FFMPEG)
Packit Service 5a9772
    set(CODEC_SRCS
Packit Service 5a9772
        ${CODEC_SRCS}
Packit Service 5a9772
        codec/dsp_ffmpeg.c
Packit Service 5a9772
        codec/dsp_ffmpeg.h)
Packit 1fb8d4
endif (WITH_DSP_FFMPEG)
Packit 1fb8d4
Packit 1fb8d4
if (WITH_SOXR)
Packit Service 5a9772
    freerdp_library_add(${SOXR_LIBRARIES})
Packit Service 5a9772
    include_directories(${SOXR_INCLUDE_DIR})
Packit 1fb8d4
endif(WITH_SOXR)
Packit 1fb8d4
Packit 1fb8d4
if(GSM_FOUND)
Packit Service 5a9772
    freerdp_library_add(${GSM_LIBRARIES})
Packit Service 5a9772
    include_directories(${GSM_INCLUDE_DIRS})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(LAME_FOUND)
Packit Service 5a9772
    freerdp_library_add(${LAME_LIBRARIES})
Packit Service 5a9772
    include_directories(${LAME_INCLUDE_DIRS})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(FAAD2_FOUND)
Packit Service 5a9772
    freerdp_library_add(${FAAD2_LIBRARIES})
Packit Service 5a9772
    include_directories(${FAAD2_INCLUDE_DIRS})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(FAAC_FOUND)
Packit Service 5a9772
    freerdp_library_add(${FAAC_LIBRARIES})
Packit Service 5a9772
    include_directories(${FAAC_INCLUDE_DIRS})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(WITH_NEON)
Packit Service 5a9772
    set_source_files_properties(${CODEC_NEON_SRCS} PROPERTIES COMPILE_FLAGS "-mfpu=neon -Wno-unused-variable" )
Packit Service 5a9772
    set(CODEC_SRCS ${CODEC_SRCS} ${CODEC_NEON_SRCS})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(WITH_JPEG)
Packit Service 5a9772
    freerdp_include_directory_add(${JPEG_INCLUDE_DIR})
Packit Service 5a9772
    freerdp_library_add(${JPEG_LIBRARIES})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(WITH_X264)
Packit Service 5a9772
    set(CODEC_SRCS ${CODEC_SRCS} codec/h264_x264.c)
Packit Service 5a9772
    freerdp_include_directory_add(${X264_INCLUDE_DIR})
Packit Service 5a9772
    freerdp_library_add(${X264_LIBRARIES})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(WITH_OPENH264)
Packit Service 5a9772
    set(CODEC_SRCS ${CODEC_SRCS} codec/h264_openh264.c)
Packit Service 5a9772
    freerdp_include_directory_add(${OPENH264_INCLUDE_DIR})
Packit Service 5a9772
    if (NOT WITH_OPENH264_LOADING)
Packit Service 5a9772
        freerdp_library_add(${OPENH264_LIBRARIES})
Packit Service 5a9772
    endif (NOT WITH_OPENH264_LOADING)
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(WITH_FFMPEG)
Packit Service 5a9772
    set(CODEC_SRCS ${CODEC_SRCS} codec/h264_ffmpeg.c)
Packit Service 5a9772
    freerdp_include_directory_add(${FFMPEG_INCLUDE_DIRS})
Packit Service 5a9772
    freerdp_library_add(${FFMPEG_LIBRARIES})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(WIN32 AND WITH_MEDIA_FOUNDATION)
Packit Service 5a9772
    set(CODEC_SRCS ${CODEC_SRCS} codec/h264_mf.c)
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
freerdp_module_add(${CODEC_SRCS})
Packit 1fb8d4
Packit 1fb8d4
if(BUILD_TESTING)
Packit Service 5a9772
    add_subdirectory(codec/test)
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
# /codec
Packit 1fb8d4
Packit 1fb8d4
# primitives
Packit 1fb8d4
Packit 1fb8d4
set(PRIMITIVES_SRCS
Packit Service 5a9772
    primitives/prim_add.c
Packit Service 5a9772
    primitives/prim_andor.c
Packit Service 5a9772
    primitives/prim_alphaComp.c
Packit Service 5a9772
    primitives/prim_colors.c
Packit Service 5a9772
    primitives/prim_copy.c
Packit Service 5a9772
    primitives/prim_set.c
Packit Service 5a9772
    primitives/prim_shift.c
Packit Service 5a9772
    primitives/prim_sign.c
Packit Service 5a9772
    primitives/prim_YUV.c
Packit Service 5a9772
    primitives/prim_YCoCg.c
Packit Service 5a9772
    primitives/primitives.c
Packit Service 5a9772
    primitives/prim_internal.h)
Packit 1fb8d4
Packit 1fb8d4
set(PRIMITIVES_SSE2_SRCS
Packit Service 5a9772
    primitives/prim_colors_opt.c
Packit Service 5a9772
    primitives/prim_set_opt.c)
Packit 1fb8d4
Packit 1fb8d4
set(PRIMITIVES_SSE3_SRCS
Packit Service 5a9772
    primitives/prim_add_opt.c
Packit Service 5a9772
    primitives/prim_alphaComp_opt.c
Packit Service 5a9772
    primitives/prim_andor_opt.c
Packit Service 5a9772
    primitives/prim_shift_opt.c)
Packit 1fb8d4
Packit 1fb8d4
set(PRIMITIVES_SSSE3_SRCS
Packit Service 5a9772
    primitives/prim_sign_opt.c
Packit Service 5a9772
    primitives/prim_YCoCg_opt.c)
Packit 1fb8d4
Packit 1fb8d4
if (WITH_SSE2)
Packit Service 5a9772
    set(PRIMITIVES_SSSE3_SRCS ${PRIMITIVES_SSSE3_SRCS}
Packit Service 5a9772
        primitives/prim_YUV_ssse3.c)
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if (WITH_NEON)
Packit Service 5a9772
    set(PRIMITIVES_SSSE3_SRCS ${PRIMITIVES_SSSE3_SRCS}
Packit Service 5a9772
        primitives/prim_YUV_neon.c)
Packit Service 5a9772
endif()
Packit Service 5a9772
Packit Service 5a9772
if (WITH_OPENCL)
Packit Service 5a9772
    set(PRIMITIVES_OPENCL_SRCS primitives/prim_YUV_opencl.c)
Packit Service 5a9772
Packit Service 5a9772
        freerdp_include_directory_add(${OpenCL_INCLUDE_DIRS})
Packit Service 5a9772
        freerdp_library_add(OpenCL::OpenCL)
Packit Service 5a9772
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
set(PRIMITIVES_OPT_SRCS
Packit Service 5a9772
    ${PRIMITIVES_SSE2_SRCS}
Packit Service 5a9772
    ${PRIMITIVES_SSE3_SRCS}
Packit Service 5a9772
    ${PRIMITIVES_SSSE3_SRCS}
Packit Service 5a9772
    ${PRIMITIVES_OPENCL_SRCS})
Packit 1fb8d4
Packit 1fb8d4
freerdp_definition_add(-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
Packit 1fb8d4
Packit 1fb8d4
### IPP Variable debugging
Packit 1fb8d4
if(WITH_IPP)
Packit Service 5a9772
    if(CMAKE_COMPILER_IS_GNUCC)
Packit Service 5a9772
        foreach(INCLDIR ${IPP_INCLUDE_DIRS})
Packit Service 5a9772
            set(OPTIMIZATION "${OPTIMIZATION} -I${INCLDIR}")
Packit Service 5a9772
        endforeach(INCLDIR)
Packit Service 5a9772
    endif()
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(WITH_SSE2)
Packit Service 5a9772
    if(CMAKE_COMPILER_IS_GNUCC OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
Packit Service 5a9772
        set_source_files_properties(${PRIMITIVES_SSE2_SRCS}
Packit Service 5a9772
            PROPERTIES COMPILE_FLAGS "${OPTIMIZATION} -msse2")
Packit Service 5a9772
        set_source_files_properties(${PRIMITIVES_SSE3_SRCS}
Packit Service 5a9772
            PROPERTIES COMPILE_FLAGS "${OPTIMIZATION} -msse3")
Packit Service 5a9772
        set_source_files_properties(${PRIMITIVES_SSSE3_SRCS}
Packit Service 5a9772
            PROPERTIES COMPILE_FLAGS "${OPTIMIZATION} -mssse3")
Packit Service 5a9772
    endif()
Packit Service 5a9772
Packit Service 5a9772
    if(MSVC)
Packit Service 5a9772
        set_source_files_properties(${PRIMITIVES_OPT_SRCS}
Packit Service 5a9772
            PROPERTIES COMPILE_FLAGS "${OPTIMIZATION} /arch:SSE2")
Packit Service 5a9772
    endif()
Packit 1fb8d4
elseif(WITH_NEON)
Packit Service 5a9772
    if(CMAKE_COMPILER_IS_GNUCC)
Packit Service 5a9772
        set_source_files_properties(${PRIMITIVES_OPT_SRCS}
Packit Service 5a9772
            PROPERTIES COMPILE_FLAGS "${OPTIMIZATION} -mfpu=neon")
Packit Service 5a9772
    endif()
Packit Service 5a9772
    # TODO: Add MSVC equivalent
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
set(PRIMITIVES_SRCS ${PRIMITIVES_SRCS} ${PRIMITIVES_OPT_SRCS})
Packit 1fb8d4
Packit 1fb8d4
freerdp_module_add(${PRIMITIVES_SRCS})
Packit 1fb8d4
Packit 1fb8d4
if(IPP_FOUND)
Packit Service 5a9772
    freerdp_include_directory_add(${IPP_INCLUDE_DIRS})
Packit Service 5a9772
        foreach(ipp_lib ${IPP_LIBRARIES})
Packit Service 5a9772
        freerdp_library_add("${ipp_lib}_imported")
Packit Service 5a9772
    endforeach()
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
if(BUILD_TESTING AND NOT WIN32 AND NOT APPLE)
Packit Service 5a9772
    add_subdirectory(primitives/test)
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
# /primitives
Packit 1fb8d4
Packit 1fb8d4
list(REMOVE_DUPLICATES LIBFREERDP_DEFINITIONS)
Packit 1fb8d4
list(REMOVE_DUPLICATES LIBFREERDP_LIBS)
Packit 1fb8d4
list(REMOVE_DUPLICATES LIBFREERDP_INCLUDES)
Packit 1fb8d4
include_directories(${LIBFREERDP_INCLUDES})
Packit 1fb8d4
Packit 1fb8d4
# On windows create dll version information.
Packit 1fb8d4
# Vendor, product and year are already set in top level CMakeLists.txt
Packit 1fb8d4
if (WIN32)
Packit 1fb8d4
  set (RC_VERSION_MAJOR ${FREERDP_VERSION_MAJOR})
Packit 1fb8d4
  set (RC_VERSION_MINOR ${FREERDP_VERSION_MINOR})
Packit 1fb8d4
  set (RC_VERSION_BUILD ${FREERDP_VERSION_REVISION})
Packit 1fb8d4
  set (RC_VERSION_FILE "${CMAKE_SHARED_LIBRARY_PREFIX}${MODULE_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}" )
Packit 1fb8d4
Packit 1fb8d4
  configure_file(
Packit 1fb8d4
    ${CMAKE_SOURCE_DIR}/cmake/WindowsDLLVersion.rc.in
Packit 1fb8d4
    ${CMAKE_CURRENT_BINARY_DIR}/version.rc
Packit 1fb8d4
    @ONLY)
Packit 1fb8d4
Packit 1fb8d4
  set (LIBFREERDP_SRCS ${LIBFREERDP_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
add_library(${MODULE_NAME} ${LIBFREERDP_SRCS})
Packit 1fb8d4
add_definitions(${LIBFREERDP_DEFINITIONS})
Packit 1fb8d4
Packit 1fb8d4
set_target_properties(${MODULE_NAME} PROPERTIES LINKER_LANGUAGE C)
Packit 1fb8d4
set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME ${MODULE_NAME}${FREERDP_VERSION_MAJOR})
Packit 1fb8d4
Packit 1fb8d4
if (WITH_LIBRARY_VERSIONING)
Packit 1fb8d4
    set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION} SOVERSION ${FREERDP_API_VERSION})
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${LIBFREERDP_LIBS} winpr)
Packit 1fb8d4
Packit 1fb8d4
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT FreeRDPTargets)
Packit 1fb8d4
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
Packit 1fb8d4
    get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
Packit 1fb8d4
    install(FILES ${CMAKE_PDB_BINARY_DIR}/${OUTPUT_FILENAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)
Packit 1fb8d4
endif()
Packit 1fb8d4
Packit 1fb8d4
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "FreeRDP/libfreerdp")
Packit 1fb8d4
Packit 1fb8d4
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/freerdp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/freerdp${FREERDP_VERSION_MAJOR}.pc @ONLY)
Packit 1fb8d4
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/freerdp${FREERDP_VERSION_MAJOR}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
Packit 1fb8d4
Packit 1fb8d4
## cmake project
Packit 1fb8d4
if(${CMAKE_VERSION} VERSION_GREATER "2.8.10")
Packit 1fb8d4
Packit Service 5a9772
    export(PACKAGE freerdp)
Packit 1fb8d4
Packit Service 5a9772
    SetFreeRDPCMakeInstallDir(FREERDP_CMAKE_INSTALL_DIR "FreeRDP${FREERDP_VERSION_MAJOR}")
Packit 1fb8d4
Packit Service 5a9772
    configure_package_config_file(FreeRDPConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfig.cmake
Packit Service 5a9772
        INSTALL_DESTINATION ${FREERDP_CMAKE_INSTALL_DIR}
Packit Service 5a9772
        PATH_VARS FREERDP_INCLUDE_DIR)
Packit 1fb8d4
Packit Service 5a9772
    write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfigVersion.cmake
Packit Service 5a9772
        VERSION ${FREERDP_VERSION} COMPATIBILITY SameMajorVersion)
Packit 1fb8d4
Packit Service 5a9772
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfigVersion.cmake
Packit Service 5a9772
        DESTINATION ${FREERDP_CMAKE_INSTALL_DIR})
Packit 1fb8d4
Packit Service 5a9772
    install(EXPORT FreeRDPTargets DESTINATION ${FREERDP_CMAKE_INSTALL_DIR})
Packit 1fb8d4
Packit 1fb8d4
endif()