Fix FreeBSD build

This commit is contained in:
Gustaf Alhäll 2026-02-20 23:45:26 +01:00
parent 649523e4c8
commit 47ed04d864
No known key found for this signature in database
GPG key ID: C76C5BD78354B5A9
5 changed files with 21 additions and 35 deletions

View file

@ -279,6 +279,11 @@ if("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
target_compile_definitions(BLANKART PRIVATE -DMACOSX)
endif()
if("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
target_compile_definitions(BLANKART PRIVATE -DFREEBSD)
target_link_libraries(BLANKART PRIVATE execinfo)
endif()
if("${SRB2_CONFIG_USE_GME}")
target_link_libraries(BLANKART PRIVATE gme)
target_compile_definitions(BLANKART PRIVATE -DHAVE_GME)

View file

@ -1792,6 +1792,8 @@ boolean I_SetSongTrack(INT32 track)
return false;
}
#endif
#ifdef HAVE_GME
}
#endif

View file

@ -88,7 +88,7 @@ typedef LPVOID (WINAPI *p_MapViewOfFile) (HANDLE, DWORD, DWORD, DWORD, SIZE_T);
#include <kvm.h>
#endif
#include <nlist.h>
#include <sys/vmmeter.h>
#include <sys/sysctl.h>
#endif
#endif
@ -2080,40 +2080,17 @@ static long get_entry(const char* name, const char* buf)
UINT32 I_GetFreeMem(UINT32 *total)
{
#ifdef FREEBSD
struct vmmeter sum;
kvm_t *kd;
struct nlist namelist[] =
{
#define X_SUM 0
{"_cnt"},
{NULL}
};
if ((kd = kvm_open(NULL, NULL, NULL, O_RDONLY, "kvm_open")) == NULL)
{
if (total)
*total = 0L;
return 0;
}
if (kvm_nlist(kd, namelist) != 0)
{
kvm_close (kd);
if (total)
*total = 0L;
return 0;
}
if (kvm_read(kd, namelist[X_SUM].n_value, &sum,
sizeof (sum)) != sizeof (sum))
{
kvm_close(kd);
if (total)
*total = 0L;
return 0;
}
kvm_close(kd);
u_int v_free_count, v_page_size, v_page_count;
size_t size = sizeof(v_free_count);
sysctlbyname("vm.stats.vm.v_free_count", &v_free_count, &size, NULL, 0);
size = sizeof(v_page_size);
sysctlbyname("vm.stats.vm.v_page_size", &v_page_size, &size, NULL, 0);
size = sizeof(v_page_count);
sysctlbyname("vm.stats.vm.v_page_count", &v_page_count, &size, NULL, 0);
if (total)
*total = sum.v_page_count * sum.v_page_size;
return sum.v_free_count * sum.v_page_size;
*total = v_page_count * v_page_size;
return v_free_count * v_page_size;
#elif defined (SOLARIS)
/* Just guess */
if (total)

View file

@ -11,7 +11,7 @@
/* https://tools.ietf.org/html/rfc5389 */
#if defined (__linux__)
#if defined (__linux__) || defined (__FreeBSD__)
#include <sys/random.h>
#elif defined (_WIN32)
#define _CRT_RAND_S

View file

@ -34,5 +34,7 @@ if(SRB2_CONFIG_UPNP)
set(UPNPC_BUILD_SHARED ${SRB2_CONFIG_SHARED_INTERNAL_LIBRARIES})
set(UPNPC_BUILD_TESTS FALSE)
set(UPNPC_BUILD_SAMPLE FALSE)
add_subdirectory("miniupnp/miniupnpc" EXCLUDE_FROM_ALL)
if(NOT "${SRB2_CONFIG_SYSTEM_LIBRARIES}")
add_subdirectory("miniupnp/miniupnpc" EXCLUDE_FROM_ALL)
endif()
endif()