set(MODULE_NAME "libtoolkit") set(MODULE_PREFIX "LIBTOOLKIT") set(TOOLKIT_VERSION_STRING "1.1.0-dev3") include(CheckLibraryExists) check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP) if(MSVC) if(HAVE_DBGHELP) message(STATUS "have dbghelp") endif(HAVE_DBGHELP) endif(MSVC) # negative impact: every times you add new file, you must sync once again or the new # structure would not be defined. file(GLOB ${MODULE_PREFIX}_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp" "*.h" "*.c") # remove the no use file at all platform so far # list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS # ) if(NOT WIN32) list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS dllmain.c gettimeofday.c shm.h shm.c wavfile.c wavfile.h ) list(APPEND ${MODULE_PREFIX}_SRCS unix/bus.c unix/bus_daemon.c unix/ioqueue.c unix/process_monitor.c unix/evtpoll.c unix/core.c unix/mutex.c unix/thread.c unix/library.c unix/misc.c ) else() list(APPEND ${MODULE_PREFIX}_SRCS win/bus.c win/bus_daemon.c win/ioqueue.c win/process_monitor.c win/mutex.c win/thread.c win/library.c win/misc.c win/error.c win/util.c win/winapi.c ) endif() rvc_set_win_dll_ver(${MODULE_PREFIX} ${TOOLKIT_VERSION_STRING}) add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS}) target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) if(MSVC) target_compile_definitions(${MODULE_NAME} PRIVATE "-DLIBTOOLKIT_EXPORTS") list(APPEND ${MODULE_PREFIX}_LIBS dbghelp uuid ws2_32 Winmm pdh MsWSock # ioqueue IPHlpApi winpr) else(MSVC) list(APPEND ${MODULE_PREFIX}_LIBS ${PRIVATE_KEYWORD} winpr ${PRIVATE_KEYWORD} rt ${PRIVATE_KEYWORD} uuid) endif(MSVC) set_target_properties(${MODULE_NAME} PROPERTIES DEBUG_POSTFIX "d") target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) if (BUILD_TESTING) add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS}) target_link_libraries(${MODULE_NAME}_a ${${MODULE_PREFIX}_LIBS}) target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY") add_subdirectory(test) endif() if(MSVC) install(TARGETS ${MODULE_NAME} RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries ) else() install(TARGETS ${MODULE_NAME} RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" LIBRARY DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries) endif(MSVC) if (WITH_PDB_SAVE AND MSVC AND BUILD_SHARED_LIBS) install(FILES ${RVC_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${RVC_PDBSAVE_PATH} COMPONENT symbols) endif() if(INSTALL_DEVELOP_FILES) file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") install( FILES ${PUBLIC_HEADERS} DESTINATION "${RVC_INCLUDE_PATH}/${MODULE_NAME}" COMPONENT headers) endif()