Blame winpr/libwinpr/CMakeLists.txt

Packit Service fa4841
# WinPR: Windows Portable Runtime
Packit Service fa4841
# winpr cmake build script
Packit Service fa4841
#
Packit Service fa4841
# Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit Service fa4841
#
Packit Service fa4841
# Licensed under the Apache License, Version 2.0 (the "License");
Packit Service fa4841
# you may not use this file except in compliance with the License.
Packit Service fa4841
# You may obtain a copy of the License at
Packit Service fa4841
#
Packit Service fa4841
#     http://www.apache.org/licenses/LICENSE-2.0
Packit Service fa4841
#
Packit Service fa4841
# Unless required by applicable law or agreed to in writing, software
Packit Service fa4841
# distributed under the License is distributed on an "AS IS" BASIS,
Packit Service fa4841
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit Service fa4841
# See the License for the specific language governing permissions and
Packit Service fa4841
# limitations under the License.
Packit Service fa4841
Packit Service fa4841
include(CheckFunctionExists)
Packit Service fa4841
Packit Service fa4841
set(WINPR_DIR ${CMAKE_CURRENT_SOURCE_DIR})
Packit Service fa4841
set(WINPR_SRCS "")
Packit Service fa4841
set(WINPR_LIBS_PRIVATE "")
Packit Service fa4841
set(WINPR_LIBS_PUBLIC "")
Packit Service fa4841
set(WINPR_INCLUDES "")
Packit Service fa4841
set(WINPR_DEFINITIONS "")
Packit Service fa4841
Packit Service fa4841
macro (winpr_module_add)
Packit Service fa4841
    file (RELATIVE_PATH _relPath "${WINPR_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
Packit Service fa4841
    foreach (_src ${ARGN})
Packit Service fa4841
        if (_relPath)
Packit Service fa4841
            list (APPEND WINPR_SRCS "${_relPath}/${_src}")
Packit Service fa4841
        else()
Packit Service fa4841
            list (APPEND WINPR_SRCS "${_src}")
Packit Service fa4841
        endif()
Packit Service fa4841
    endforeach()
Packit Service fa4841
    if (_relPath)
Packit Service fa4841
        set (WINPR_SRCS ${WINPR_SRCS} PARENT_SCOPE)
Packit Service fa4841
    endif()
Packit Service fa4841
endmacro()
Packit Service fa4841
Packit Service fa4841
macro (winpr_include_directory_add)
Packit Service fa4841
    file (RELATIVE_PATH _relPath "${WINPR_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
Packit Service fa4841
    foreach (_inc ${ARGN})
Packit Service fa4841
                if (IS_ABSOLUTE ${_inc})
Packit Service fa4841
                            list (APPEND WINPR_INCLUDES "${_inc}")
Packit Service fa4841
                else()
Packit Service fa4841
                    if (_relPath)
Packit Service fa4841
                            list (APPEND WINPR_INCLUDES "${_relPath}/${_inc}")
Packit Service fa4841
                    else()
Packit Service fa4841
                            list (APPEND WINPR_INCLUDES "${_inc}")
Packit Service fa4841
                    endif()
Packit Service fa4841
                endif()
Packit Service fa4841
    endforeach()
Packit Service fa4841
    if (_relPath)
Packit Service fa4841
        set (WINPR_INCLUDES ${WINPR_INCLUDES} PARENT_SCOPE)
Packit Service fa4841
    endif()
Packit Service fa4841
endmacro()
Packit Service fa4841
Packit Service fa4841
macro (winpr_library_add_private)
Packit Service fa4841
    foreach (_lib ${ARGN})
Packit Service fa4841
            list (APPEND WINPR_LIBS_PRIVATE "${_lib}")
Packit Service fa4841
    endforeach()
Packit Service fa4841
     set (WINPR_LIBS_PRIVATE ${WINPR_LIBS_PRIVATE} PARENT_SCOPE)
Packit Service fa4841
endmacro()
Packit Service fa4841
Packit Service fa4841
macro (winpr_library_add_public)
Packit Service fa4841
    foreach (_lib ${ARGN})
Packit Service fa4841
            list (APPEND WINPR_LIBS_PUBLIC "${_lib}")
Packit Service fa4841
    endforeach()
Packit Service fa4841
     set (WINPR_LIBS_PUBLIC ${WINPR_LIBS_PUBLIC} PARENT_SCOPE)
Packit Service fa4841
endmacro()
Packit Service fa4841
Packit Service fa4841
macro (winpr_definition_add)
Packit Service fa4841
    foreach (_define ${ARGN})
Packit Service fa4841
            list (APPEND WINPR_DEFINITIONS "${_define}")
Packit Service fa4841
    endforeach()
Packit Service fa4841
     set (WINPR_DEFINITIONS ${WINPR_DEFINITIONS} PARENT_SCOPE)
Packit Service fa4841
endmacro()
Packit Service fa4841
Packit Service fa4841
set(CMAKE_REQUIRED_LIBRARIES rt)
Packit Service fa4841
check_function_exists(timer_create TIMER_CREATE)
Packit Service fa4841
check_function_exists(timer_delete TIMER_DELETE)
Packit Service fa4841
check_function_exists(timer_settime TIMER_SETTIME)
Packit Service fa4841
check_function_exists(timer_gettime TIMER_GETTIME)
Packit Service fa4841
if (TIMER_CREATE AND TIMER_DELETE AND TIMER_SETTIME AND TIMER_GETTIME)
Packit Service fa4841
    add_definitions(-DWITH_POSIX_TIMER)
Packit Service fa4841
	winpr_library_add_private(rt)
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
if (ANDROID)
Packit Service fa4841
    winpr_library_add_private(log)
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
# Level "1" API as defined for MinCore.lib
Packit Service fa4841
set(WINPR_CORE synch locale library file comm pipe interlocked security
Packit Service fa4841
	environment crypto registry credentials path io memory input shell
Packit Service fa4841
	heap utils error timezone sysinfo pool handle thread)
Packit Service fa4841
Packit Service fa4841
foreach(DIR ${WINPR_CORE})
Packit Service fa4841
	add_subdirectory(${DIR})
Packit Service fa4841
	source_group("${DIR}" REGULAR_EXPRESSION "${DIR}/.*\\.[ch]")
Packit Service fa4841
endforeach()
Packit Service fa4841
Packit Service fa4841
set(WINPR_LEVEL2 winsock sspi winhttp asn1 sspicli crt bcrypt rpc credui
Packit Service fa4841
	wtsapi dsparse wnd smartcard nt clipboard)
Packit Service fa4841
Packit Service fa4841
foreach(DIR ${WINPR_LEVEL2})
Packit Service fa4841
	add_subdirectory(${DIR})
Packit Service fa4841
	source_group("${DIR}" REGULAR_EXPRESSION "${DIR}/.*\\.[ch]")
Packit Service fa4841
endforeach()
Packit Service fa4841
Packit Service fa4841
set(MODULE_NAME winpr)
Packit Service fa4841
list(REMOVE_DUPLICATES WINPR_DEFINITIONS)
Packit Service fa4841
list(REMOVE_DUPLICATES WINPR_LIBS_PRIVATE)
Packit Service fa4841
list(REMOVE_DUPLICATES WINPR_LIBS_PUBLIC)
Packit Service fa4841
list(REMOVE_DUPLICATES WINPR_INCLUDES)
Packit Service fa4841
include_directories(${WINPR_INCLUDES})
Packit Service fa4841
Packit Service fa4841
# On windows create dll version information.
Packit Service fa4841
# Vendor, product and year are already set in top level CMakeLists.txt
Packit Service fa4841
if (WIN32)
Packit Service fa4841
  set (RC_VERSION_MAJOR ${WINPR_VERSION_MAJOR})
Packit Service fa4841
  set (RC_VERSION_MINOR ${WINPR_VERSION_MINOR})
Packit Service fa4841
  set (RC_VERSION_BUILD ${WINPR_VERSION_REVISION})
Packit Service fa4841
  set (RC_VERSION_FILE "${CMAKE_SHARED_LIBRARY_PREFIX}${MODULE_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}" )
Packit Service fa4841
Packit Service fa4841
  configure_file(
Packit Service fa4841
    ${CMAKE_SOURCE_DIR}/cmake/WindowsDLLVersion.rc.in
Packit Service fa4841
    ${CMAKE_CURRENT_BINARY_DIR}/version.rc
Packit Service fa4841
    @ONLY)
Packit Service fa4841
Packit Service fa4841
  set (WINPR_SRCS ${WINPR_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
Packit Service fa4841
  winpr_library_add_public("shlwapi")
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
add_library(${MODULE_NAME} ${WINPR_SRCS})
Packit Service fa4841
set_target_properties(${MODULE_NAME} PROPERTIES LINKER_LANGUAGE C)
Packit Service fa4841
set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME ${MODULE_NAME}${WINPR_API_VERSION})
Packit Service fa4841
if (WITH_LIBRARY_VERSIONING)
Packit Service fa4841
    set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${WINPR_VERSION} SOVERSION ${WINPR_API_VERSION})
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
add_definitions(${WINPR_DEFINITIONS})
Packit Service fa4841
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${WINPR_LIBS_PRIVATE} ${PUBLIC_KEYWORD} ${WINPR_LIBS_PUBLIC})
Packit Service fa4841
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT WinPRTargets)
Packit Service fa4841
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
Packit Service fa4841
    get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
Packit Service fa4841
    install(FILES ${CMAKE_PDB_BINARY_DIR}/${OUTPUT_FILENAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)
Packit Service fa4841
endif()
Packit Service fa4841
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/libwinpr")