diff --git a/CMakeLists.txt b/CMakeLists.txt index 69b630730..992cfd96f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -247,7 +247,7 @@ find_package(xxHash 0.8.2 MODULE) find_package(ZLIB 1.3 MODULE) # Outdated zydis from ports if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") -find_package(Zydis 5.0.0 CONFIG) + find_package(Zydis 5.0.0 CONFIG) endif() find_package(pugixml 1.14 CONFIG) if (APPLE) @@ -1142,7 +1142,16 @@ create_target_directory_groups(shadps4) target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient RenderDoc::API FFmpeg::ffmpeg Dear_ImGui gcn half::half ZLIB::ZLIB PNG::PNG) target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAllocator LibAtrac9 sirit Vulkan::Headers xxHash::xxhash Zydis::Zydis glslang::glslang SDL3::SDL3 SDL3_mixer::SDL3_mixer pugixml::pugixml) -target_link_libraries(shadps4 PRIVATE stb::headers libusb::usb lfreist-hwinfo::hwinfo nlohmann_json::nlohmann_json miniz::miniz fdk-aac CLI11::CLI11 OpenAL::OpenAL Cpp_Httplib) +target_link_libraries(shadps4 PRIVATE stb::headers lfreist-hwinfo::hwinfo nlohmann_json::nlohmann_json miniz::miniz fdk-aac CLI11::CLI11 OpenAL::OpenAL Cpp_Httplib) + +if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") + target_link_libraries(shadps4 PRIVATE "/usr/lib/libusb.so") + target_link_libraries(shadps4 PRIVATE "/usr/local/lib/libuuid.so") + target_link_libraries(shadps4 PRIVATE "/usr/local/lib/libepoll-shim.so") + target_include_directories(shadps4 PRIVATE "/usr/local/include/libepoll-shim") +else() + target_link_libraries(shadps4 PRIVATE libusb::usb) +endif() target_compile_definitions(shadps4 PRIVATE IMGUI_USER_CONFIG="imgui/imgui_config.h") target_compile_definitions(Dear_ImGui PRIVATE IMGUI_USER_CONFIG="${PROJECT_SOURCE_DIR}/src/imgui/imgui_config.h") diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 41a0f71c7..ef41344ab 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -210,8 +210,15 @@ endif() # libusb if (NOT TARGET libusb::usb) - add_subdirectory(ext-libusb) - add_library(libusb::usb ALIAS usb-1.0) + if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") + # YOU MUST USE NATIVE LIBUSB + # using anything else will crash instantly, also freebsd will NOT like it + # no you cant vendor this libusb, its builtin on freebsd + find_package(libusb) + else() + add_subdirectory(ext-libusb) + add_library(libusb::usb ALIAS usb-1.0) + endif() endif() # Discord RPC diff --git a/src/common/signal_context.cpp b/src/common/signal_context.cpp index 442f5c933..b1ac8d96f 100644 --- a/src/common/signal_context.cpp +++ b/src/common/signal_context.cpp @@ -8,8 +8,8 @@ #ifdef _WIN32 #include #elif defined(__FreeBSD__) -#include #include +#include #else #include #endif @@ -28,12 +28,12 @@ void* GetXmmPointer(void* ctx, u8 index) { #elif defined(__FreeBSD__) // In mc_fpstate // See for the internals of mc_fpstate[]. -#define CASE(index) \ - case index: { \ - auto& mctx = ((ucontext_t*)ctx)->uc_mcontext; \ - ASSERT(mctx.mc_fpformat == _MC_FPFMT_XMM); \ - auto* s_fpu = (struct savefpu*)(&mctx.mc_fpstate[0]); \ - return (void*)(&(s_fpu->sv_xmm[0])); \ +#define CASE(index) \ + case index: { \ + auto& mctx = ((ucontext_t*)ctx)->uc_mcontext; \ + ASSERT(mctx.mc_fpformat == _MC_FPFMT_XMM); \ + auto* s_fpu = (struct savefpu*)(&mctx.mc_fpstate[0]); \ + return (void*)(&(s_fpu->sv_xmm[0])); \ } #else #define CASE(index) \ diff --git a/src/core/address_space.cpp b/src/core/address_space.cpp index c6a2dd701..c0102ebcd 100644 --- a/src/core/address_space.cpp +++ b/src/core/address_space.cpp @@ -613,9 +613,9 @@ struct AddressSpace::Impl { user_size = UserSize; constexpr int protection_flags = PROT_READ | PROT_WRITE; - int map_flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED; //compiler knows its constexpr + int map_flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED; // compiler knows its constexpr #if !defined(__FreeBSD__) - map_flags |= MAP_NORESERVE; + map_flags |= MAP_NORESERVE; #endif #if defined(__APPLE__) && defined(ARCH_X86_64) diff --git a/src/core/libraries/network/net_epoll.h b/src/core/libraries/network/net_epoll.h index 42d13b7b9..ce9f3fc99 100644 --- a/src/core/libraries/network/net_epoll.h +++ b/src/core/libraries/network/net_epoll.h @@ -20,7 +20,9 @@ #endif #if defined(__linux__) || defined(__APPLE__) #include -int epoll_create1(int fd) { return 0; } +int epoll_create1(int fd) { + return 0; +} #endif namespace Libraries::Net {