# Файл для включения в проект на CMAKE. # Перед включением необходимо определить переменные # OSSPEC_DIR - путь к директории, где находится osspec.cmake # OSSPEC_USE_EVENTS - использовать события # OSSPEC_USE_THREADS - использовать потоки # OSSPEC_USE_MUTEX - использовать мьютексы # После включения будут установлены следующие перменные: # OSSPEC_HEADERS - используемые заголовочные файлы # OSSPEC_SOURCES - используемые файлы исходных кодов # OSSPEC_DEFINITIONS - используемые определения компилятора cmake_policy(PUSH) cmake_minimum_required(VERSION 2.8.12) if(OSSPEC_USE_EVENTS OR OSSPEC_USE_THREADS OR OSSPEC_USE_MUTEX) find_package(Threads) # set(OSSPEC_LIBS ${CMAKE_THREAD_LIBS_INIT}) unset(OSSPEC_LIBS) unset(OSSPEC_DEFINITIONS) set(OSSPEC_HEADERS ${OSSPEC_DIR}/osspec.h) set(OSSPEC_SOURCES ${OSSPEC_DIR}/osspec.c) if(CMAKE_USE_PTHREADS_INIT) include(CheckLibraryExists) if(OSSPEC_USE_MUTEX) set(OSSPEC_DEFINITIONS ${OSSPEC_DEFINITIONS} OSSPEC_USE_MUTEX) check_library_exists(pthread pthread_mutex_timedlock "" HAVE_PTHREAD_MUTEX_TIMEDLOCK) if(HAVE_PTHREAD_MUTEX_TIMEDLOCK) set(OSSPEC_DEFINITIONS ${OSSPEC_DEFINITIONS} HAVE_PTHREAD_MUTEX_TIMEDLOCK) #заглушки для _timedlock функций отстутсвуют в libc, поэтому в любом случае включаем pthread set(OSSPEC_LIBS ${OSSPEC_LIBS} ${CMAKE_THREAD_LIBS_INIT}) endif(HAVE_PTHREAD_MUTEX_TIMEDLOCK) endif(OSSPEC_USE_MUTEX) if(OSSPEC_USE_THREADS) set(OSSPEC_DEFINITIONS ${OSSPEC_DEFINITIONS} OSSPEC_USE_THREADS) if (NOT OSSPEC_LIBS) set(OSSPEC_LIBS ${CMAKE_THREAD_LIBS_INIT}) endif (NOT OSSPEC_LIBS) check_library_exists(pthread pthread_timedjoin_np "" HAVE_PTHREAD_TIMEDJOIN_NP) if(HAVE_PTHREAD_TIMEDJOIN_NP) set(OSSPEC_DEFINITIONS ${OSSPEC_DEFINITIONS} HAVE_PTHREAD_TIMEDJOIN_NP) endif(HAVE_PTHREAD_TIMEDJOIN_NP) endif(OSSPEC_USE_THREADS) else(CMAKE_USE_PTHREADS_INIT) if(OSSPEC_USE_MUTEX) set(OSSPEC_DEFINITIONS ${OSSPEC_DEFINITIONS} OSSPEC_USE_MUTEX) endif(OSSPEC_USE_MUTEX) if(OSSPEC_USE_THREADS) set(OSSPEC_DEFINITIONS ${OSSPEC_DEFINITIONS} OSSPEC_USE_THREADS) endif(OSSPEC_USE_THREADS) endif(CMAKE_USE_PTHREADS_INIT) if(OSSPEC_USE_EVENTS) set(OSSPEC_DEFINITIONS ${OSSPEC_DEFINITIONS} OSSPEC_USE_EVENTS) endif(OSSPEC_USE_EVENTS) endif(OSSPEC_USE_EVENTS OR OSSPEC_USE_THREADS OR OSSPEC_USE_MUTEX) cmake_policy(POP)