Слияние кода завершено, страница обновится автоматически
#
# Copyright (c) 2014 - 2019 Oleh Kulykov <info@resident.name>
#
# Разрешается бесплатно копировать, распространять и модифицировать
# данное программное обеспечение и связанные с ним документы («Программа»),
# включая, но не ограничиваясь, правом использовать, копировать, изменять,
# объединять, публиковать, распространять, предоставлять в аренду и продавать
# копии Программы, а также разрешать лицам, которым Программа предоставляется,
# делать то же самое, при условии соблюдения следующих условий:
#
# В каждой копии или значительной части Программы должны быть включены
# указанные выше уведомления об авторском праве и настоящие условия лицензии.
#
# Программа предоставляется «как есть», без каких-либо гарантий, явных или
# подразумеваемых, включая, но не ограничиваясь, гарантии пригодности для
# использования, соответствия специфическим целям и отсутствия нарушений
# прав интеллектуальной собственности. В случае возникновения каких-либо
# претензий, убытков или других обязательств, включая, но не ограничиваясь,
# действия по контракту, деликту или иным образом, возникшие из-за, в связи с
# или в результате использования Программы или других сделок, связанных с
# Программой, авторы и держатели авторских прав не несут ответственности.
#
# cmake_minimum_required(VERSION 2.8)
#project(librws)
set(PACKAGE "librws")
set(CPACK_PACKAGE_NAME "${PACKAGE}")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "2")
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
set(CPACK_PACKAGE_VENDOR "info@resident.name")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE} ${PACKAGE_VERSION}")
set(SOVERSION "1.2.4")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
set(VERSION "${CPACK_PACKAGE_VERSION}")
include(CheckLibraryExists)
include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckIncludeFileCXX)
include(CheckTypeSize)
include(CheckSymbolExists)
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
# ОПЦИИ КОМАНДНОЙ СТРОКИ
option(RWS_OPT_SHARED "Сборка с поддержкой динамической библиотеки" ON)
option(RWS_OPT_STATIC "Сборка с поддержкой статической библиотеки" ON)
option(RWS_OPT_TESTS "Сборка тестов librws" ON)
option(RWS_OPT_APPVEYOR_CI "Сборка с использованием AppVeyor CI" OFF)
# C с -fPIC
check_c_compiler_flag("-fPIC" WITH_FPIC_C)
if(WITH_FPIC_C)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
endif(WITH_FPIC_C)
# CXX с флагом -fPIC
check_cxx_compiler_flag("-fPIC" WITH_FPIC_CXX)
if(WITH_FPIC_CXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
endif(WITH_FPIC_CXX)
# Определение переменных для Windows
if(WIN32)
add_definitions(-DWIN32)
add_definitions(-D_WIN32)
set(RWS_OS_WINDOWS 1)
endif(WIN32)
# Определение переменных для Mingw
if(MINGW)
set(RWS_COMPILER_MINGW 1)
endif(MINGW)
add_definitions(-DCMAKE_BUILD)
if(RWS_OPT_APPVEYOR_CI)
add_definitions(-DRWS_APPVEYOR_CI)
endif()
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
# Проверка наличия заголовочных файлов
#check_include_file("netdb.h" RWS_HAVE_NETDB_H)
#check_include_file("sys/socket.h" RWS_HAVE_SYS_SOCKET_H)
#check_include_file("sys/types.h" RWS_HAVE_SYS_TYPES_H)
#check_include_file("netinet/tcp.h" RWS_HAVE_NETINET_TCP_H)
#check_include_file("unistd.h" RWS_HAVE_UNISTD_H)
#check_include_file("fcntl.h" RWS_HAVE_FCNTL_H)
check_include_file("pthread.h" RWS_HAVE_PTHREAD_H)сообщение(CMAKE_EXTRA_INCLUDE_FILES ": " ${CMAKE_EXTRA_INCLUDE_FILES})
# Для проверки размера примитивного типа:
check_type_size("void*" RWS_SIZEOF_VOIDP_T)
если(RWS_SIZEOF_VOIDP_T И (НЕ RWS_VOIDP_TYPE))
установить(RWS_VOIDP_TYPE void*)
#endif()
если(RWS_SIZEOF_VOIDP_T РАВНО 4)
установить(RWS_32BIT_PLATFORM 1)
#endif()
если(RWS_SIZEOF_VOIDP_T РАВНО 8)
установить(RWS_64BIT_PLATFORM 1)
#endif()
# функции
#check_function_exists(usleep RWS_HAVE_FUNCTION_USLEEP)
#если(RWS_HAVE_PTHREAD_H)
#check_function_exists(pthread_attr_setscope RWS_HAVE_FUNCTION_PTHREAD_ATTR_SETSCOPE)
#check_function_exists(pthread_attr_setstacksize RWS_HAVE_FUNCTION_PTHREAD_ATTR_SETSTACKSIZE)
#check_function_exists(pthread_cancel RWS_HAVE_FUNCTION_PTHREAD_CANCEL)
#check_function_exists(pthread_setname_np RWS_HAVE_FUNCTION_PTHREAD_SETNAME_NP)
#check_function_exists(pthread_set_name_np RWS_HAVE_FUNCTION_PTHREAD_SET_NAME_NP)
#endif(RWS_HAVE_PTHREAD_H)
если((НЕ RWS_HAVE_PTHREAD_H) И (НЕ WIN32))
сообщение(FATAL_ERROR "Невозможно собрать librws без поддержки многопоточности")
#endif()
если(НЕ ОПРЕДЕЛЕН CMAKE_INSTALL_LIBDIR)
установить(CMAKE_INSTALL_LIBDIR lib)
#endif(НЕ ОПРЕДЕЛЕН CMAKE_INSTALL_LIBDIR)
# Теперь убедитесь, что вы используете папку сборки в вашем "Include" пути при компиляции
включить_папки(${PROJECT_BINARY_DIR})
установить(LIBRWS_SOURCES src/rws_common.c
src/rws_error.c
src/rws_frame.c
src/librws.c
src/rws_list.c
src/rws_memory.c
src/rws_socketpriv.c
src/rws_socketpub.c
src/rws_string.c
src/rws_thread.c)
установить(LIBRWS_HEADERS librws.h)
add_definitions(-DRWS_BUILD)
если(RWS_OPT_SHARED)
add_library(rws SHARED ${LIBRWS_SOURCES} ${LIBRWS_HEADERS})
если(MSVC)
# msvc does not append 'lib' - do it here to have consistent name
set_property(TARGET rws PROPERTY PREFIX "lib")
set_property(TARGET rws PROPERTY IMPORT_PREFIX "lib")
endif()
endif()
если(RWS_OPT_STATIC)
add_library(rws_static STATIC ${LIBRWS_SOURCES} ${LIBRWS_HEADERS})
set_property(TARGET rws_static APPEND PROPERTY COMPILE_FLAGS -DLIBRWS_STATIC)
если(MSVC)
# msvc does not append 'lib' - do it here to have consistent name
set_target_properties(rws_static PROPERTIES PREFIX "lib")
endif()
endif()if(RWS_HAVE_PTHREAD_H)
target_link_libraries(rws pthread)
endif(RWS_HAVE_PTHREAD_H)
if(WIN32)
target_link_libraries(rws ws2_32)
endif(WIN32)
install(TARGETS rws
DESTINATION lib)
install(TARGETS rws_static
DESTINATION lib)
install(FILES librws.h
DESTINATION include)
if(RWS_OPT_TESTS)
enable_testing()
add_subdirectory(test)
# Это должно всегда быть последним!
include(CPack)
endif()
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )