diff --git a/cmake/BuildPJProject.cmake b/cmake/BuildPJProject.cmake new file mode 100644 index 0000000..9838479 --- /dev/null +++ b/cmake/BuildPJProject.cmake @@ -0,0 +1,72 @@ +include(FetchContent) + +set(PJ_VERSION_TAG 2.16) + + + +set(PJ_REPO https://github.com/pjsip/pjproject.git) +set(PJ_INSTALL_PATH ${PROJECT_SOURCE_DIR}/bin/pjproject/) + +set(PJ_CONFIG_CMD "configure --prefix=${PJ_INSTALL_PATH}") +set(PJ_BUILD_CMD "make dep; make -j") + +message(STATUS "PJProject build information:") +message(STATUS "Repo: ${PJ_REPO}") +message(STATUS "Version: ${PJ_VERSION_TAG}") + +set(FETCHCONTENT_QUIET OFF) + +FetchContent_Declare( + PJProject + GIT_REPOSITORY ${PJ_REPO} + GIT_TAG ${PJ_VERSION_TAG} + GIT_PROGRESS ON +) + +FetchContent_GetProperties(PJProject) + +if (NOT pjproject_POPULATED) + FetchContent_Populate(PJProject) +endif() + +message(STATUS "PJProject sources at: ${pjproject_SOURCE_DIR}") +message(STATUS "Start building PJProject...") + +execute_process(COMMAND "./configure --disable-pjsua2" WORKING_DIRECTORY ${pjproject_SOURCE_DIR} OUTPUT_VARIABLE exec_output_msgs) +message("${exec_output_msgs}") +execute_process(COMMAND make dep WORKING_DIRECTORY ${pjproject_SOURCE_DIR} OUTPUT_VARIABLE exec_output_msgs) +message("${exec_output_msgs}") +execute_process(COMMAND make WORKING_DIRECTORY ${pjproject_SOURCE_DIR} OUTPUT_VARIABLE exec_output_msgs) +message("${exec_output_msgs}") + +file(GLOB PJ_LIB "${pjproject_SOURCE_DIR}/pjlib/lib/*pj-*") +if (NOT PJ_LIB) + message(FATAL_ERROR "Couldn't find pj-lib compiled library.") +endif() + +message(STATUS "pj-lib lib at: ${PJSUA_LIB}") + +file(GLOB PJSUA_LIB "${pjproject_SOURCE_DIR}/pjsip/lib/*pjsua-*") + +if (NOT PJSUA_LIB) + message(FATAL_ERROR "Couldn't find pjsua compiled library.") +endif() + +message(STATUS "pjsua lib at: ${PJSUA_LIB}") + +add_library(pjproject::pj STATIC IMPORTED) +set_target_properties(pjproject::pj PROPERTIES + IMPORTED_LOCATION ${PJ_LIB} +) + +add_library(pjproject::pjsua STATIC IMPORTED) +set_target_properties(pjproject::pjsua PROPERTIES + IMPORTED_LOCATION ${PJSUA_LIB} +) + +target_include_directories(pjproject::pjsua + INTERFACE + $ + $ +) + diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index e69de29..febd4f0 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(src) diff --git a/core/src/CMakeLists.txt b/core/src/CMakeLists.txt new file mode 100644 index 0000000..7bb624f --- /dev/null +++ b/core/src/CMakeLists.txt @@ -0,0 +1,13 @@ +set(CORE_SRC + core.c +) + +list(TRANSFORM CORE_SRC PREPEND ${CMAKE_CURRENT_LIST_DIR}/) + +include(FetchContent) + +find_package(OpenSSL REQUIRED) + +add_library(pigeon-core ${CORE_SRC}) +target_include_directories(pigeon-core PUBLIC ${CMAKE_CURRENT_LIST_DIR}/src) +target_link_libraries(pigeon-core OpenSSL::SSL) diff --git a/core/src/core.c b/core/src/core.c new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/core/src/core.c @@ -0,0 +1 @@ + diff --git a/core/src/core.h b/core/src/core.h new file mode 100644 index 0000000..e69de29 diff --git a/core/src/thread_util.h b/core/src/thread_util.h new file mode 100644 index 0000000..ce88638 --- /dev/null +++ b/core/src/thread_util.h @@ -0,0 +1,26 @@ +#ifndef THREAD_UTIL_H +#define THREAD_UTIL_H + +#include + +// Method return count of physical cores in system + +#if defined(_WIN32) || defined(_WIN64) +#include + +size_t get_core_count(void) { + SYSTEM_INFO sys_info; + GetSystemInfo(&sys_info); + + return (size_t)sys_info.dwNumberOfProcessors; +} +#elif defined(__unix__) || defined(__unix) || \ + (defined(__APPLE__) && defined(__MACH__)) +#include + +size_t get_core_count(void) { return (size_t)sysconf(_SC_NPROCESSORS_ONLN); } +#else +#error "Get core count feature not realised for current platform." +#endif + +#endif // !THREAD_UTIL_H