mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2025-06-18 16:45:39 -04:00
Statically link ftd2 library
This commit is contained in:
parent
8d6d57ca20
commit
65e2950970
140
CMakeLists.txt
140
CMakeLists.txt
@ -7,6 +7,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
||||
set(CMAKE_HOST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE STRING "Host Compiler")
|
||||
set(WINDOWS_FTD3XX_USE_SHARED_LIB 0)
|
||||
set(WINDOWS_FTD2XX_USE_SHARED_LIB 0)
|
||||
set(BUILD_SHARED_LIBS FALSE)
|
||||
set(FETCHCONTENT_QUIET FALSE)
|
||||
set(EXTRA_CXX_FLAGS "")
|
||||
@ -14,6 +15,8 @@ set(RASPBERRY_PI_COMPILATION FALSE CACHE BOOL "Option for compiling the Raspberr
|
||||
set(SFML_BUILD_NETWORK FALSE)
|
||||
set(EXTRA_LIBRARIES "")
|
||||
set(FINAL_EXTENSION "")
|
||||
set(SETUP_SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/setup_scripts)
|
||||
set(USB_RULES_DIR ${CMAKE_SOURCE_DIR}/usb_rules)
|
||||
|
||||
if (RASPBERRY_PI_COMPILATION)
|
||||
set(EXTRA_LIBRARIES "gpiod")
|
||||
@ -34,29 +37,35 @@ FetchContent_Declare(libusb1
|
||||
GIT_REPOSITORY https://github.com/libusb/libusb-cmake.git
|
||||
GIT_TAG main)
|
||||
|
||||
set(FTD3XX_BASE_URL https://ftdichip.com/wp-content/uploads/)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
set(FINAL_EXTENSION ".exe")
|
||||
set(FTD3XX_BUILD_COMMAND ${CMAKE_SOURCE_DIR}/windows_setup_ftd3xx.bat)
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
else()
|
||||
set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS}-DXLIB_BASED 1 ")
|
||||
endif()
|
||||
|
||||
set(FTD3XX_BASE_URL https://ftdichip.com/wp-content/uploads/)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/windows_setup_ftd3xx.bat)
|
||||
set(FTD3XX_URL_TIME 2024/01)
|
||||
set(FTD3XX_VER 1.3.0.9)
|
||||
set(FTD3XX_VOL FTD3XXLibrary_v${FTD3XX_VER})
|
||||
set(FTD3XX_ARCHIVE ${FTD3XX_VOL}.zip)
|
||||
set(FTD3XX_SUBFOLDER win)
|
||||
if(${WINDOWS_FTD3XX_USE_SHARED_LIB})
|
||||
set(WINDOWS_PATH_SPECIFIER DLL)
|
||||
set(FTD3XX_WINDOWS_PATH_SPECIFIER DLL)
|
||||
set(FTD3XX_LIB FTD3XX.dll)
|
||||
else()
|
||||
set(WINDOWS_PATH_SPECIFIER Static_Lib)
|
||||
set(FTD3XX_WINDOWS_PATH_SPECIFIER Static_Lib)
|
||||
set(FTD3XX_LIB FTD3XX.lib)
|
||||
endif()
|
||||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
||||
set(PATH_WINDOWS_ARCH Win32)
|
||||
set(FTD3XX_PATH_WINDOWS_ARCH Win32)
|
||||
else ()
|
||||
set(PATH_WINDOWS_ARCH x64)
|
||||
set(FTD3XX_PATH_WINDOWS_ARCH x64)
|
||||
endif()
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
set(FTD3XX_BUILD_COMMAND ${CMAKE_SOURCE_DIR}/macos_setup_ftd3xx.sh)
|
||||
set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/macos_setup_ftd3xx.sh)
|
||||
set(FTD3XX_URL_TIME 2023/03)
|
||||
set(FTD3XX_VER 1.0.5)
|
||||
set(FTD3XX_VOL d3xx-osx.${FTD3XX_VER})
|
||||
@ -65,8 +74,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
set(FTD3XX_MOUNTED_FOLDER /Volumes/${FTD3XX_VOL})
|
||||
set(FTD3XX_SUBFOLDER macos)
|
||||
else()
|
||||
set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS}-DXLIB_BASED 1 ")
|
||||
set(FTD3XX_BUILD_COMMAND ${CMAKE_SOURCE_DIR}/linux_setup_ftd3xx.sh)
|
||||
set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/linux_setup_ftd3xx.sh)
|
||||
set(FTD3XX_URL_TIME 2023/03)
|
||||
set(FTD3XX_VER 1.0.5)
|
||||
if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm"))
|
||||
@ -87,18 +95,80 @@ else()
|
||||
set(FTD3XX_SUBFOLDER linux)
|
||||
endif()
|
||||
|
||||
set(FTD2XX_BASE_URL https://ftdichip.com/wp-content/uploads/)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/windows_setup_ftd2xx.bat)
|
||||
set(FTD2XX_URL_TIME 2023/09)
|
||||
set(FTD2XX_VER 2.12.36.4-WHQL-Certified)
|
||||
set(FTD2XX_VOL CDM-v${FTD2XX_VER})
|
||||
set(FTD2XX_ARCHIVE ${FTD2XX_VOL}.zip)
|
||||
set(FTD2XX_SUBFOLDER win)
|
||||
if(${WINDOWS_FTD2XX_USE_SHARED_LIB})
|
||||
set(FTD2XX_WINDOWS_PATH_SPECIFIER "")
|
||||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
||||
set(FTD2XX_LIB ftd2xx.dll)
|
||||
else()
|
||||
set(FTD2XX_LIB ftd2xx64.dll)
|
||||
endif()
|
||||
else()
|
||||
set(FTD2XX_WINDOWS_PATH_SPECIFIER Static)
|
||||
set(FTD2XX_LIB ftd2xx.lib)
|
||||
endif()
|
||||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
||||
set(FTD2XX_PATH_WINDOWS_ARCH i386)
|
||||
else ()
|
||||
set(FTD2XX_PATH_WINDOWS_ARCH amd64)
|
||||
endif()
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/macos_setup_ftd2xx.sh)
|
||||
set(FTD2XX_URL_TIME 2024/04)
|
||||
set(FTD2XX_VER 1.4.30)
|
||||
set(FTD2XX_VOL D2XX${FTD2XX_VER})
|
||||
set(FTD2XX_ARCHIVE ${FTD2XX_VOL}.dmg)
|
||||
set(FTD2XX_LIB libftd2xx.a)
|
||||
set(FTD2XX_MOUNTED_FOLDER /Volumes/dmg)
|
||||
set(FTD2XX_SUBFOLDER macos)
|
||||
else()
|
||||
set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/linux_setup_ftd3xx.sh)
|
||||
set(FTD2XX_URL_TIME 2022/07)
|
||||
set(FTD2XX_VER 1.4.27)
|
||||
if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm"))
|
||||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
set(FTD2XX_VOL libftd2xx-arm-v8-${FTD2XX_VER})
|
||||
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
||||
set(FTD2XX_VOL libftd2xx-arm-v7-hf-${FTD2XX_VER})
|
||||
endif()
|
||||
else()
|
||||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
set(FTD2XX_VOL libftd2xx-x86_64-${FTD2XX_VER})
|
||||
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
||||
set(FTD2XX_VOL libftd2xx-x86_32-${FTD2XX_VER})
|
||||
endif()
|
||||
endif()
|
||||
set(FTD2XX_ARCHIVE ${FTD2XX_VOL}.tgz)
|
||||
set(FTD2XX_LIB libftd2xx.a)
|
||||
set(FTD2XX_SUBFOLDER linux)
|
||||
endif()
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
FetchContent_Declare(FTD3XX
|
||||
URL ${FTD3XX_BASE_URL}${FTD3XX_URL_TIME}/${FTD3XX_ARCHIVE}
|
||||
DOWNLOAD_NO_EXTRACT TRUE
|
||||
)
|
||||
FetchContent_Declare(FTD2XX
|
||||
URL ${FTD2XX_BASE_URL}${FTD2XX_URL_TIME}/${FTD2XX_ARCHIVE}
|
||||
DOWNLOAD_NO_EXTRACT TRUE
|
||||
)
|
||||
else()
|
||||
FetchContent_Declare(FTD3XX
|
||||
URL ${FTD3XX_BASE_URL}${FTD3XX_URL_TIME}/${FTD3XX_ARCHIVE}
|
||||
)
|
||||
FetchContent_Declare(FTD2XX
|
||||
URL ${FTD2XX_BASE_URL}${FTD2XX_URL_TIME}/${FTD2XX_ARCHIVE}
|
||||
)
|
||||
endif()
|
||||
|
||||
FetchContent_MakeAvailable(SFML FTD3XX libusb1)
|
||||
FetchContent_MakeAvailable(SFML FTD3XX FTD2XX libusb1)
|
||||
|
||||
if(IS_DIRECTORY "${sfml_SOURCE_DIR}")
|
||||
set_property(DIRECTORY ${sfml_SOURCE_DIR} PROPERTY EXCLUDE_FROM_ALL YES)
|
||||
@ -112,6 +182,10 @@ file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/win)
|
||||
file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/macos)
|
||||
file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/linux)
|
||||
|
||||
file(MAKE_DIRECTORY ${ftd2xx_BINARY_DIR}/win)
|
||||
file(MAKE_DIRECTORY ${ftd2xx_BINARY_DIR}/macos)
|
||||
file(MAKE_DIRECTORY ${ftd2xx_BINARY_DIR}/linux)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
ExternalProject_Add(FTD3XX_BUILD_PROJECT
|
||||
SOURCE_DIR ${ftd3xx_SOURCE_DIR}
|
||||
@ -121,11 +195,27 @@ ExternalProject_Add(FTD3XX_BUILD_PROJECT
|
||||
CONFIGURE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
ExternalProject_Add(FTD2XX_BUILD_PROJECT
|
||||
SOURCE_DIR ${ftd2xx_SOURCE_DIR}
|
||||
BINARY_DIR ${ftd2xx_BINARY_DIR}
|
||||
BUILD_COMMAND ${FTD2XX_BUILD_COMMAND} ${ftd2xx_SOURCE_DIR}/${FTD2XX_ARCHIVE} ${FTD2XX_MOUNTED_FOLDER} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${FTD2XX_LIB}
|
||||
UPDATE_COMMAND ""
|
||||
CONFIGURE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
ExternalProject_Add(FTD3XX_BUILD_PROJECT
|
||||
SOURCE_DIR ${ftd3xx_SOURCE_DIR}
|
||||
BINARY_DIR ${ftd3xx_BINARY_DIR}
|
||||
BUILD_COMMAND ${FTD3XX_BUILD_COMMAND} ${ftd3xx_SOURCE_DIR} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${PATH_WINDOWS_ARCH}/${WINDOWS_PATH_SPECIFIER}/${FTD3XX_LIB}
|
||||
BUILD_COMMAND ${FTD3XX_BUILD_COMMAND} ${ftd3xx_SOURCE_DIR} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${FTD3XX_PATH_WINDOWS_ARCH}/${FTD3XX_WINDOWS_PATH_SPECIFIER}/${FTD3XX_LIB}
|
||||
UPDATE_COMMAND ""
|
||||
CONFIGURE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
ExternalProject_Add(FTD2XX_BUILD_PROJECT
|
||||
SOURCE_DIR ${ftd2xx_SOURCE_DIR}
|
||||
BINARY_DIR ${ftd2xx_BINARY_DIR}
|
||||
BUILD_COMMAND ${FTD2XX_BUILD_COMMAND} ${ftd2xx_SOURCE_DIR} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${FTD2XX_WINDOWS_PATH_SPECIFIER}/${FTD2XX_PATH_WINDOWS_ARCH}/${FTD2XX_LIB}
|
||||
UPDATE_COMMAND ""
|
||||
CONFIGURE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
@ -139,6 +229,14 @@ ExternalProject_Add(FTD3XX_BUILD_PROJECT
|
||||
CONFIGURE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
ExternalProject_Add(FTD2XX_BUILD_PROJECT
|
||||
SOURCE_DIR ${ftd2xx_SOURCE_DIR}
|
||||
BINARY_DIR ${ftd2xx_BINARY_DIR}
|
||||
BUILD_COMMAND ${FTD2XX_BUILD_COMMAND} ${ftd2xx_SOURCE_DIR} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} build/${FTD2XX_LIB}
|
||||
UPDATE_COMMAND ""
|
||||
CONFIGURE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
endif()
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
@ -152,11 +250,11 @@ file(MAKE_DIRECTORY ${TOOLS_DATA_DIR})
|
||||
set(OUTPUT_NAME cc3dsfs)
|
||||
|
||||
add_executable(CMakeBin2C tools/bin2c.cpp)
|
||||
add_executable(${OUTPUT_NAME} source/cc3dsfs.cpp source/utils.cpp source/audio_data.cpp source/audio.cpp source/frontend.cpp source/TextRectangle.cpp source/WindowScreen.cpp source/WindowScreen_Menu.cpp source/3dscapture_ftd3.cpp source/usb_ds_3ds_capture.cpp source/devicecapture.cpp source/conversions.cpp source/ExtraButtons.cpp source/Menus/ConnectionMenu.cpp source/Menus/OptionSelectionMenu.cpp source/Menus/MainMenu.cpp source/Menus/VideoMenu.cpp source/Menus/CropMenu.cpp source/Menus/PARMenu.cpp source/Menus/RotationMenu.cpp source/Menus/OffsetMenu.cpp source/Menus/AudioMenu.cpp source/Menus/BFIMenu.cpp source/Menus/RelativePositionMenu.cpp source/Menus/ResolutionMenu.cpp source/Menus/FileConfigMenu.cpp source/Menus/ExtraSettingsMenu.cpp source/Menus/StatusMenu.cpp source/Menus/LicenseMenu.cpp source/WindowCommands.cpp source/Menus/ShortcutMenu.cpp source/Menus/ActionSelectionMenu.cpp ${TOOLS_DATA_DIR}/font_ttf.cpp)
|
||||
add_dependencies(${OUTPUT_NAME} FTD3XX_BUILD_PROJECT CMakeBin2C)
|
||||
target_link_libraries(${OUTPUT_NAME} PRIVATE sfml-graphics sfml-audio sfml-window sfml-system usb-1.0 ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}/${FTD3XX_LIB} ${EXTRA_LIBRARIES})
|
||||
target_link_directories(${OUTPUT_NAME} PRIVATE ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER})
|
||||
target_include_directories(${OUTPUT_NAME} PRIVATE ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${TOOLS_DATA_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include/Menus)
|
||||
add_executable(${OUTPUT_NAME} source/cc3dsfs.cpp source/utils.cpp source/audio_data.cpp source/audio.cpp source/frontend.cpp source/TextRectangle.cpp source/WindowScreen.cpp source/WindowScreen_Menu.cpp source/3dscapture_ftd3.cpp source/dscapture_ftd2.cpp source/usb_ds_3ds_capture.cpp source/devicecapture.cpp source/conversions.cpp source/ExtraButtons.cpp source/Menus/ConnectionMenu.cpp source/Menus/OptionSelectionMenu.cpp source/Menus/MainMenu.cpp source/Menus/VideoMenu.cpp source/Menus/CropMenu.cpp source/Menus/PARMenu.cpp source/Menus/RotationMenu.cpp source/Menus/OffsetMenu.cpp source/Menus/AudioMenu.cpp source/Menus/BFIMenu.cpp source/Menus/RelativePositionMenu.cpp source/Menus/ResolutionMenu.cpp source/Menus/FileConfigMenu.cpp source/Menus/ExtraSettingsMenu.cpp source/Menus/StatusMenu.cpp source/Menus/LicenseMenu.cpp source/WindowCommands.cpp source/Menus/ShortcutMenu.cpp source/Menus/ActionSelectionMenu.cpp ${TOOLS_DATA_DIR}/font_ttf.cpp)
|
||||
add_dependencies(${OUTPUT_NAME} FTD3XX_BUILD_PROJECT FTD2XX_BUILD_PROJECT CMakeBin2C)
|
||||
target_link_libraries(${OUTPUT_NAME} PRIVATE sfml-graphics sfml-audio sfml-window sfml-system usb-1.0 ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}/${FTD3XX_LIB} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER}/${FTD2XX_LIB} ${EXTRA_LIBRARIES})
|
||||
target_link_directories(${OUTPUT_NAME} PRIVATE ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER})
|
||||
target_include_directories(${OUTPUT_NAME} PRIVATE ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${TOOLS_DATA_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include/Menus)
|
||||
target_compile_features(${OUTPUT_NAME} PRIVATE cxx_std_20)
|
||||
target_compile_options(${OUTPUT_NAME} PRIVATE ${EXTRA_CXX_FLAGS})
|
||||
target_compile_features(CMakeBin2C PRIVATE cxx_std_17)
|
||||
@ -186,7 +284,7 @@ add_custom_command(
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
install(TARGETS ${OUTPUT_NAME} DESTINATION .)
|
||||
install(FILES un_quarantine_macos.sh DESTINATION .)
|
||||
install(FILES ${SETUP_SCRIPTS_DIR}/un_quarantine_macos.sh DESTINATION .)
|
||||
else()
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/${OUTPUT_NAME}${FINAL_EXTENSION} DESTINATION .)
|
||||
endif()
|
||||
@ -216,15 +314,15 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
add_custom_command(
|
||||
TARGET ${OUTPUT_NAME}
|
||||
COMMENT "Set bundle path for Frameworks"
|
||||
POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/macos_bundle_setup.sh ${FW_APP}/Contents/MacOS/${OUTPUT_NAME}
|
||||
POST_BUILD COMMAND ${SETUP_SCRIPTS_DIR}/macos_bundle_setup.sh ${FW_APP}/Contents/MacOS/${OUTPUT_NAME}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
else()
|
||||
install(FILES 51-ftd3xx.rules DESTINATION .)
|
||||
install(FILES 95-usb3dscapture.rules DESTINATION .)
|
||||
install(FILES 95-usbdscapture.rules DESTINATION .)
|
||||
install(FILES ${USB_RULES_DIR}/51-ftd3xx.rules DESTINATION .)
|
||||
install(FILES ${USB_RULES_DIR}/95-usb3dscapture.rules DESTINATION .)
|
||||
install(FILES ${USB_RULES_DIR}/95-usbdscapture.rules DESTINATION .)
|
||||
endif()
|
||||
|
||||
|
||||
|
@ -21,7 +21,7 @@ cc3dsfs has three build dependencies: CMake, g++ and git.
|
||||
Make sure all are installed.
|
||||
On MacOS, [Homebrew](https://brew.sh/) can be used to install both CMake and git. An automatic popup should appear to install g++ at Compile time.
|
||||
|
||||
cc3dsfs has three library dependencies: [FTDI's D3XX driver](https://ftdichip.com/drivers/d3xx-drivers/), [libusb](https://libusb.info/) and [SFML](https://www.sfml-dev.org/).
|
||||
cc3dsfs has four library dependencies: [FTDI's D3XX driver](https://ftdichip.com/drivers/d3xx-drivers/), [FTDI's D2XX driver](https://ftdichip.com/drivers/d2xx-drivers/), [libusb](https://libusb.info/) and [SFML](https://www.sfml-dev.org/).
|
||||
All of them should get downloaded automatically via CMake during the building process.
|
||||
|
||||
Linux users will also need to install the SFML dependencies. Different distributions will require slightly different processes.
|
||||
@ -58,7 +58,7 @@ To compile the program, assuming CMake, git and g++ are installed on the system,
|
||||
cmake -B build ; cmake --build build --config Release
|
||||
```
|
||||
|
||||
This will download FTD3XX, libusb and SFML, which may take a while during the first execution of the command. Later runs should be much faster.
|
||||
This will download FTD3XX, FTD2XX, libusb and SFML, which may take a while during the first execution of the command. Later runs should be much faster.
|
||||
On MacOS, you may also be prompted to install the Apple Command Line Developer Tools first.
|
||||
|
||||
When compiling on a Raspberry Pi, to enable usage of GPIO, use:
|
||||
@ -129,7 +129,7 @@ On Linux and MacOS, the profiles can be found at the "${HOME}/.config/cc3dsfs" f
|
||||
On Windows, the profiles can be found in the ".config/cc3dsfs" folder inside the directory in which the program runs from.
|
||||
|
||||
## Notes
|
||||
- On Linux, you may need to include the udev USB access rules. You can use the .rules files available in the repository, or define your own.
|
||||
- On Linux, you may need to include the udev USB access rules. You can use the .rules files available in the repository's usb\_rules directory, or define your own.
|
||||
- At startup, the audio may be unstable. It should fix itself, if you give it enough time.
|
||||
- If, at first, the connection to the 3DS/DS fails, reconnect the 3DS/DS and then try again. If that also doesn't work, try restarting the program. If that also doesn't work, try restarting the computer.
|
||||
- USB Hubs can be the cause of connection issues. If you're having problems, try checking whether the 3DS/DS connects fine or not without any other devices connected.
|
||||
|
19
include/dscapture_ftd2.hpp
Executable file
19
include/dscapture_ftd2.hpp
Executable file
@ -0,0 +1,19 @@
|
||||
#ifndef __DSCAPTURE_FTD2_HPP
|
||||
#define __DSCAPTURE_FTD2_HPP
|
||||
|
||||
#include <vector>
|
||||
#include "utils.hpp"
|
||||
#include "hw_defs.hpp"
|
||||
#include "capture_structs.hpp"
|
||||
#include "display_structs.hpp"
|
||||
|
||||
#define USE_FTD2
|
||||
|
||||
void list_devices_ftd2(std::vector<CaptureDevice> &devices_list);
|
||||
bool connect_ftd2(bool print_failed, CaptureData* capture_data, CaptureDevice* device);
|
||||
void ftd2_capture_main_loop(CaptureData* capture_data);
|
||||
void ftd2_capture_cleanup(CaptureData* capture_data);
|
||||
void ftd2_convertVideoToOutput(CaptureReceived *p_in, VideoOutputData *p_out, bool enabled_3d);
|
||||
uint64_t ftd2_get_video_in_size(CaptureData* capture_data);
|
||||
|
||||
#endif
|
4
setup_scripts/macos_setup_ftd2xx.sh
Executable file
4
setup_scripts/macos_setup_ftd2xx.sh
Executable file
@ -0,0 +1,4 @@
|
||||
hdiutil attach ${1}
|
||||
cp ${2}/release/build/${4} ${3}
|
||||
cp ${2}/release/*.h ${3}
|
||||
hdiutil detach ${2} || true
|
8
setup_scripts/windows_setup_ftd2xx.bat
Executable file
8
setup_scripts/windows_setup_ftd2xx.bat
Executable file
@ -0,0 +1,8 @@
|
||||
set "a=%~1"
|
||||
set "b=%~2"
|
||||
set "c=%~3"
|
||||
set "a=%a:/=\%"
|
||||
set "b=%b:/=\%"
|
||||
set "c=%c:/=\%"
|
||||
copy %a%\%c% %b%\
|
||||
copy %a%\ftd2xx.h %b%\
|
@ -1,6 +1,7 @@
|
||||
#include "conversions.hpp"
|
||||
#include "devicecapture.hpp"
|
||||
#include "3dscapture_ftd3.hpp"
|
||||
#include "dscapture_ftd2.hpp"
|
||||
#include "usb_ds_3ds_capture.hpp"
|
||||
|
||||
#include <cstring>
|
||||
@ -10,6 +11,10 @@ void convertVideoToOutput(CaptureReceived *p_in, VideoOutputData *p_out, Capture
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD3)
|
||||
ftd3_convertVideoToOutput(p_in, p_out, capture_data->status.enabled_3d);
|
||||
#endif
|
||||
#ifdef USE_FTD2
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2)
|
||||
ftd2_convertVideoToOutput(p_in, p_out, capture_data->status.enabled_3d);
|
||||
#endif
|
||||
#ifdef USE_USB
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB)
|
||||
usb_convertVideoToOutput(p_in, p_out, &capture_data->status.device, capture_data->status.enabled_3d);
|
||||
@ -28,6 +33,10 @@ void convertAudioToOutput(CaptureReceived *p_in, sf::Int16 *p_out, uint64_t n_sa
|
||||
base_ptr = (uint8_t*)p_in->ftd3_received_3d.audio_data;
|
||||
}
|
||||
#endif
|
||||
#ifdef USE_FTD2
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2) {
|
||||
}
|
||||
#endif
|
||||
#ifdef USE_USB
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB) {
|
||||
if(!capture_data->status.enabled_3d)
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "devicecapture.hpp"
|
||||
#include "3dscapture_ftd3.hpp"
|
||||
#include "dscapture_ftd2.hpp"
|
||||
#include "usb_ds_3ds_capture.hpp"
|
||||
|
||||
#include <vector>
|
||||
@ -72,6 +73,9 @@ bool connect(bool print_failed, CaptureData* capture_data, FrontendData* fronten
|
||||
#ifdef USE_FTD3
|
||||
list_devices_ftd3(devices_list);
|
||||
#endif
|
||||
#ifdef USE_FTD2
|
||||
list_devices_ftd2(devices_list);
|
||||
#endif
|
||||
#ifdef USE_USB
|
||||
list_devices_usb_ds_3ds(devices_list);
|
||||
#endif
|
||||
@ -92,6 +96,10 @@ bool connect(bool print_failed, CaptureData* capture_data, FrontendData* fronten
|
||||
if((devices_list[chosen_device].cc_type == CAPTURE_CONN_FTD3) && (!connect_ftd3(print_failed, capture_data, &devices_list[chosen_device])))
|
||||
return false;
|
||||
#endif
|
||||
#ifdef USE_FTD2
|
||||
if((devices_list[chosen_device].cc_type == CAPTURE_CONN_FTD2) && (!connect_ftd2(print_failed, capture_data, &devices_list[chosen_device])))
|
||||
return false;
|
||||
#endif
|
||||
#ifdef USE_USB
|
||||
if((devices_list[chosen_device].cc_type == CAPTURE_CONN_USB) && (!connect_usb(print_failed, capture_data, &devices_list[chosen_device])))
|
||||
return false;
|
||||
@ -122,6 +130,10 @@ void captureCall(CaptureData* capture_data) {
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD3)
|
||||
ftd3_capture_main_loop(capture_data);
|
||||
#endif
|
||||
#ifdef USE_FTD2
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2)
|
||||
ftd2_capture_main_loop(capture_data);
|
||||
#endif
|
||||
#ifdef USE_USB
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB)
|
||||
usb_capture_main_loop(capture_data);
|
||||
@ -140,6 +152,10 @@ void captureCall(CaptureData* capture_data) {
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD3)
|
||||
ftd3_capture_cleanup(capture_data);
|
||||
#endif
|
||||
#ifdef USE_FTD2
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2)
|
||||
ftd2_capture_cleanup(capture_data);
|
||||
#endif
|
||||
#ifdef USE_USB
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB)
|
||||
usb_capture_cleanup(capture_data);
|
||||
@ -166,6 +182,10 @@ uint64_t get_video_in_size(CaptureData* capture_data) {
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD3)
|
||||
return ftd3_get_video_in_size(capture_data);
|
||||
#endif
|
||||
#ifdef USE_FTD2
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2)
|
||||
return ftd2_get_video_in_size(capture_data);
|
||||
#endif
|
||||
#ifdef USE_USB
|
||||
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB)
|
||||
return usb_get_video_in_size(capture_data);
|
||||
|
35
source/dscapture_ftd2.cpp
Executable file
35
source/dscapture_ftd2.cpp
Executable file
@ -0,0 +1,35 @@
|
||||
#include "dscapture_ftd2.hpp"
|
||||
#include "devicecapture.hpp"
|
||||
|
||||
#define FTD2XX_STATIC
|
||||
#include <ftd2xx.h>
|
||||
|
||||
#include <cstring>
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
#include <iostream>
|
||||
|
||||
void list_devices_ftd2(std::vector<CaptureDevice> &devices_list) {
|
||||
}
|
||||
|
||||
uint64_t ftd2_get_video_in_size(CaptureData* capture_data) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint64_t get_capture_size(CaptureData* capture_data) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool connect_ftd2(bool print_failed, CaptureData* capture_data, CaptureDevice* device) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void ftd2_capture_main_loop(CaptureData* capture_data) {
|
||||
}
|
||||
|
||||
void ftd2_capture_cleanup(CaptureData* capture_data) {
|
||||
}
|
||||
|
||||
void ftd2_convertVideoToOutput(CaptureReceived *p_in, VideoOutputData *p_out, bool enabled_3d) {
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user