diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f6044d..99d06d0 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,16 +12,29 @@ option(BUILD_SHARED_LIBS "Build shared libraries" OFF) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") set(SFML_USE_STATIC_STD_LIBS TRUE) set(CMAKE_HOST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE STRING "Host Compiler") +if(FORCE_WINDOWS_FTD3XX_SHARED_LIB) +set(WINDOWS_FTD3XX_USE_SHARED_LIB 1) +else() set(WINDOWS_FTD3XX_USE_SHARED_LIB 0) +endif() +if(FORCE_WINDOWS_FTD2XX_SHARED_LIB) +set(WINDOWS_FTD2XX_USE_SHARED_LIB 1) +else() set(WINDOWS_FTD2XX_USE_SHARED_LIB 0) +endif() set(FETCHCONTENT_QUIET FALSE) set(EXTRA_CXX_FLAGS "") set(RASPBERRY_PI_COMPILATION FALSE CACHE BOOL "Option for compiling the Raspberry Pi GPIO library in") set(SFML_BUILD_NETWORK FALSE) set(EXTRA_LIBRARIES "") +if(MINGW_CROSS_COMPILATION) + set(EXTRA_LIBRARIES "libpthread.a") +endif() set(FINAL_EXTENSION "") +set(HOST_FINAL_EXTENSION "") set(SETUP_SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/setup_scripts) set(USB_RULES_DIR ${CMAKE_SOURCE_DIR}/usb_rules) +set(SCRIPT_EXTENSION "") if (RASPBERRY_PI_COMPILATION) set(EXTRA_LIBRARIES "gpiod") @@ -32,7 +45,7 @@ if((${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND ((${CMAKE_GENERATOR_PLATFORM} M set(WINDOWS_ARM64 1) endif() -if((${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND ((${CMAKE_GENERATOR_PLATFORM} MATCHES "Win32") OR (("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "") AND (${CMAKE_SYSTEM_PROCESSOR} MATCHES "Win32")))) +if((${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND ((${CMAKE_GENERATOR_PLATFORM} MATCHES "Win32") OR (("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "") AND ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "Win32") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "X86"))))) set(WINDOWS_x86_32 1) endif() @@ -50,6 +63,13 @@ FetchContent_Declare(libusb1 GIT_REPOSITORY https://github.com/libusb/libusb-cmake.git GIT_TAG main) +if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") + set(HOST_FINAL_EXTENSION ".exe") + set(SCRIPT_EXTENSION ".bat") +else() + set(SCRIPT_EXTENSION ".sh") +endif() + if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") set(FINAL_EXTENSION ".exe") elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") @@ -59,30 +79,19 @@ 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_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/windows_setup_ftd3xx) 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(FTD3XX_WINDOWS_PATH_SPECIFIER DLL) - set(FTD3XX_LIB FTD3XX.dll) - if(WINDOWS_ARM64) - set(FTD3XX_WINDOWS_PATH_SPECIFIER Dynamic) - set(FTD3XX_LIB FTD3XXWU.dll) - endif() - else() - set(FTD3XX_WINDOWS_PATH_SPECIFIER Static_Lib) - set(FTD3XX_LIB FTD3XX.lib) - if(WINDOWS_ARM64) - set(FTD3XX_WINDOWS_PATH_SPECIFIER Static) - set(FTD3XX_LIB FTD3XXWU.lib) - endif() - endif() + set(FTD3XX_LIB FTD3XX.lib) + set(FTD3XX_DLL FTD3XX.dll) if(WINDOWS_ARM64) + set(FTD3XX_LIB FTD3XXWU.lib) + set(FTD3XX_DLL FTD3XXWU.dll) set(FTD3XX_URL_TIME 2024/06) - set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/windows_setup_ftd3xx_winusb.bat) + set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/windows_setup_ftd3xx_winusb) set(FTD3XX_ARCHIVE FTD3XX_WinUSB_Package.zip) set(FTD3XX_PATH_WINDOWS_ARCH ARM64) elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") @@ -90,12 +99,24 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") else () set(FTD3XX_PATH_WINDOWS_ARCH x64) endif() + if(${WINDOWS_FTD3XX_USE_SHARED_LIB}) + set(FTD3XX_BUILD_COMMAND ${FTD3XX_BUILD_COMMAND}_dll) + set(FTD3XX_WINDOWS_PATH_SPECIFIER DLL) + if(WINDOWS_ARM64) + set(FTD3XX_WINDOWS_PATH_SPECIFIER Dynamic) + endif() + else() + set(FTD3XX_WINDOWS_PATH_SPECIFIER Static_Lib) + if(WINDOWS_ARM64) + set(FTD3XX_WINDOWS_PATH_SPECIFIER Static) + endif() + endif() set(FTD3XX_PRE_WINDOWS_PATH ${FTD3XX_PATH_WINDOWS_ARCH}/${FTD3XX_WINDOWS_PATH_SPECIFIER}) if(WINDOWS_ARM64) set(FTD3XX_PRE_WINDOWS_PATH ${FTD3XX_WINDOWS_PATH_SPECIFIER}/${FTD3XX_PATH_WINDOWS_ARCH}) endif() elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") - set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/macos_setup_ftd3xx.sh) + set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/macos_setup_ftd3xx) set(FTD3XX_URL_TIME 2023/03) set(FTD3XX_VER 1.0.5) set(FTD3XX_VOL d3xx-osx.${FTD3XX_VER}) @@ -104,7 +125,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") set(FTD3XX_MOUNTED_FOLDER /Volumes/${FTD3XX_VOL}) set(FTD3XX_SUBFOLDER macos) else() - set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/linux_setup_ftd3xx.sh) + set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/linux_setup_ftd3xx) set(FTD3XX_URL_TIME 2023/03) set(FTD3XX_VER 1.0.5) if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")) @@ -127,7 +148,7 @@ 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_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/windows_setup_ftd2xx) set(FTD2XX_URL_TIME 2023/09) set(FTD2XX_VER 2.12.36.4-WHQL-Certified) set(FTD2XX_VOL CDM-v${FTD2XX_VER}) @@ -135,14 +156,18 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") set(FTD2XX_SUBFOLDER win) set(FTD2XX_HEADER_PATH ftd2xx.h) if(${WINDOWS_FTD2XX_USE_SHARED_LIB}) + set(FTD2XX_BUILD_COMMAND ${FTD3XX_BUILD_COMMAND}_dll) set(FTD2XX_WINDOWS_PATH_SPECIFIER "") if(WINDOWS_ARM64) set(FTD2XX_WINDOWS_PATH_SPECIFIER Release) - set(FTD2XX_LIB FTD2XX.dll) + set(FTD2XX_LIB FTD2XX.lib) + set(FTD2XX_DLL FTD2XX.dll) elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") - set(FTD2XX_LIB ftd2xx.dll) + set(FTD2XX_LIB ftd2xx.lib) + set(FTD2XX_DLL ftd2xx.dll) else() - set(FTD2XX_LIB ftd2xx64.dll) + set(FTD2XX_LIB ftd2xx.lib) + set(FTD2XX_DLL ftd2xx64.lib) endif() else() set(FTD2XX_WINDOWS_PATH_SPECIFIER Static) @@ -169,7 +194,7 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") set(FTD2XX_PRE_WINDOWS_PATH ${FTD2XX_PATH_WINDOWS_ARCH}/${FTD2XX_WINDOWS_PATH_SPECIFIER}) endif() elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") - set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/macos_setup_ftd2xx.sh) + set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/macos_setup_ftd2xx) set(FTD2XX_URL_TIME 2024/04) set(FTD2XX_VER 1.4.30) set(FTD2XX_VOL D2XX${FTD2XX_VER}) @@ -178,7 +203,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") set(FTD2XX_MOUNTED_FOLDER /Volumes/dmg) set(FTD2XX_SUBFOLDER macos) else() - set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/linux_setup_ftd3xx.sh) + set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/linux_setup_ftd3xx) set(FTD2XX_URL_TIME 2022/07) set(FTD2XX_VER 1.4.27) if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")) @@ -236,57 +261,37 @@ 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} - BINARY_DIR ${ftd3xx_BINARY_DIR} - BUILD_COMMAND ${FTD3XX_BUILD_COMMAND} ${ftd3xx_SOURCE_DIR}/${FTD3XX_ARCHIVE} ${FTD3XX_MOUNTED_FOLDER} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${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_ARCHIVE} ${FTD2XX_MOUNTED_FOLDER} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${FTD2XX_LIB} - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - INSTALL_COMMAND "" -) +set(FTD3XX_BUILD_COMMAND_PARAMETERS ${ftd3xx_SOURCE_DIR}/${FTD3XX_ARCHIVE} ${FTD3XX_MOUNTED_FOLDER} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${FTD3XX_LIB}) +set(FTD2XX_BUILD_COMMAND_PARAMETERS ${ftd2xx_SOURCE_DIR}/${FTD2XX_ARCHIVE} ${FTD2XX_MOUNTED_FOLDER} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${FTD2XX_LIB}) 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} ${FTD3XX_PRE_WINDOWS_PATH}/${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_PRE_WINDOWS_PATH}/${FTD2XX_LIB} ${FTD2XX_HEADER_PATH} - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - INSTALL_COMMAND "" -) -else() -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} ${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} build/${FTD2XX_LIB} - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - INSTALL_COMMAND "" -) +set(FTD3XX_BUILD_COMMAND_PARAMETERS ${ftd3xx_SOURCE_DIR} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${FTD3XX_PRE_WINDOWS_PATH}/${FTD3XX_LIB}) +if(WINDOWS_FTD3XX_USE_SHARED_LIB) + set(FTD3XX_BUILD_COMMAND_PARAMETERS ${FTD3XX_BUILD_COMMAND_PARAMETERS} ${FTD3XX_PRE_WINDOWS_PATH}/${FTD3XX_DLL}) endif() +set(FTD2XX_BUILD_COMMAND_PARAMETERS ${ftd2xx_SOURCE_DIR} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${FTD2XX_PRE_WINDOWS_PATH}/${FTD2XX_LIB} ${FTD2XX_HEADER_PATH}) +if(WINDOWS_FTD2XX_USE_SHARED_LIB) + set(FTD2XX_BUILD_COMMAND_PARAMETERS ${FTD2XX_BUILD_COMMAND_PARAMETERS} ${FTD2XX_PRE_WINDOWS_PATH}/${FTD2XX_DLL}) +endif() +else() +set(FTD3XX_BUILD_COMMAND_PARAMETERS ${ftd3xx_SOURCE_DIR} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${FTD3XX_LIB}) +set(FTD2XX_BUILD_COMMAND_PARAMETERS ${ftd2xx_SOURCE_DIR} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} build/${FTD2XX_LIB}) +endif() +ExternalProject_Add(FTD3XX_BUILD_PROJECT + SOURCE_DIR ${ftd3xx_SOURCE_DIR} + BINARY_DIR ${ftd3xx_BINARY_DIR} + BUILD_COMMAND ${FTD3XX_BUILD_COMMAND}${SCRIPT_EXTENSION} ${FTD3XX_BUILD_COMMAND_PARAMETERS} + 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}${SCRIPT_EXTENSION} ${FTD2XX_BUILD_COMMAND_PARAMETERS} + UPDATE_COMMAND "" + CONFIGURE_COMMAND "" + INSTALL_COMMAND "" +) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) @@ -312,8 +317,8 @@ target_compile_options(${OUTPUT_NAME} PRIVATE ${EXTRA_CXX_FLAGS}) add_custom_command( OUTPUT ${TOOLS_DATA_DIR}/font_ttf.cpp COMMENT "Convert font to binary" - COMMAND ${TOOLS_DATA_DIR}/CMakeBin2C${FINAL_EXTENSION} ${CMAKE_SOURCE_DIR}/data/font.ttf ${TOOLS_DATA_DIR} font_ttf font_ttf - DEPENDS ${CMAKE_SOURCE_DIR}/data/font.ttf ${TOOLS_DATA_DIR}/CMakeBin2C${FINAL_EXTENSION} + COMMAND ${TOOLS_DATA_DIR}/CMakeBin2C${HOST_FINAL_EXTENSION} ${CMAKE_SOURCE_DIR}/data/font.ttf ${TOOLS_DATA_DIR} font_ttf font_ttf + DEPENDS ${CMAKE_SOURCE_DIR}/data/font.ttf ${TOOLS_DATA_DIR}/CMakeBin2C${HOST_FINAL_EXTENSION} ) if(WIN32) @@ -332,6 +337,22 @@ if(WIN32) VERBATIM ) endif() + if(WINDOWS_FTD3XX_USE_SHARED_LIB) + add_custom_command( + TARGET ${OUTPUT_NAME} + COMMENT "Copy FTD3XX DLL" + POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}/${FTD3XX_DLL} ${CMAKE_SOURCE_DIR} + VERBATIM + ) + endif() + if(WINDOWS_FTD2XX_USE_SHARED_LIB) + add_custom_command( + TARGET ${OUTPUT_NAME} + COMMENT "Copy FTD2XX DLL" + POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER}/${FTD2XX_DLL} ${CMAKE_SOURCE_DIR} + VERBATIM + ) + endif() endif() add_custom_command( @@ -350,6 +371,12 @@ install(FILES LICENSE README.md DESTINATION .) install(DIRECTORY "other licenses" DESTINATION .) if(WIN32) install(FILES openal32.dll DESTINATION .) + if(WINDOWS_FTD3XX_USE_SHARED_LIB) + install(FILES ${FTD3XX_DLL} DESTINATION .) + endif() + if(WINDOWS_FTD2XX_USE_SHARED_LIB) + install(FILES ${FTD2XX_DLL} DESTINATION .) + endif() endif() if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") @@ -365,7 +392,7 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") add_custom_command( TARGET ${OUTPUT_NAME} COMMENT "Prepare bundle" - POST_BUILD COMMAND ${SETUP_SCRIPTS_DIR}/macos_bundle_setup.sh ${FW_APP}/Contents/MacOS/${OUTPUT_NAME} ${FW_DIRS} ${FW_APP}/Contents/Frameworks + POST_BUILD COMMAND ${SETUP_SCRIPTS_DIR}/macos_bundle_setup${SCRIPT_EXTENSION} ${FW_APP}/Contents/MacOS/${OUTPUT_NAME} ${FW_DIRS} ${FW_APP}/Contents/Frameworks VERBATIM ) diff --git a/setup_scripts/windows_setup_ftd2xx.sh b/setup_scripts/windows_setup_ftd2xx.sh new file mode 100644 index 0000000..1ed7605 --- /dev/null +++ b/setup_scripts/windows_setup_ftd2xx.sh @@ -0,0 +1,2 @@ +cp ${1}/${3} ${2} +cp ${1}/${4} ${2}/ftd2xx.h diff --git a/setup_scripts/windows_setup_ftd2xx_dll.bat b/setup_scripts/windows_setup_ftd2xx_dll.bat new file mode 100644 index 0000000..d5768c5 --- /dev/null +++ b/setup_scripts/windows_setup_ftd2xx_dll.bat @@ -0,0 +1,13 @@ +set "a=%~1" +set "b=%~2" +set "c=%~3" +set "d=%~4" +set "e=%~5" +set "a=%a:/=\%" +set "b=%b:/=\%" +set "c=%c:/=\%" +set "d=%d:/=\%" +set "e=%e:/=\%" +copy %a%\%c% %b%\ +copy %a%\%e% %b%\ +copy %a%\%d% %b%\ftd2xx.h diff --git a/setup_scripts/windows_setup_ftd2xx_dll.sh b/setup_scripts/windows_setup_ftd2xx_dll.sh new file mode 100644 index 0000000..f338c06 --- /dev/null +++ b/setup_scripts/windows_setup_ftd2xx_dll.sh @@ -0,0 +1,3 @@ +cp ${1}/${3} ${2} +cp ${1}/${5} ${2} +cp ${1}/${4} ${2}/ftd2xx.h diff --git a/setup_scripts/windows_setup_ftd3xx.sh b/setup_scripts/windows_setup_ftd3xx.sh new file mode 100644 index 0000000..50e426f --- /dev/null +++ b/setup_scripts/windows_setup_ftd3xx.sh @@ -0,0 +1,2 @@ +cp ${1}/${3} ${2} +cp ${1}/FTD3XX.h ${2}/ftd3xx.h diff --git a/setup_scripts/windows_setup_ftd3xx_dll.bat b/setup_scripts/windows_setup_ftd3xx_dll.bat new file mode 100644 index 0000000..8b6cc54 --- /dev/null +++ b/setup_scripts/windows_setup_ftd3xx_dll.bat @@ -0,0 +1,11 @@ +set "a=%~1" +set "b=%~2" +set "c=%~3" +set "d=%~4" +set "a=%a:/=\%" +set "b=%b:/=\%" +set "c=%c:/=\%" +set "d=%d:/=\%" +copy %a%\%c% %b%\ +copy %a%\%d% %b%\ +copy %a%\FTD3XX.h %b%\ftd3xx.h diff --git a/setup_scripts/windows_setup_ftd3xx_dll.sh b/setup_scripts/windows_setup_ftd3xx_dll.sh new file mode 100644 index 0000000..253ee88 --- /dev/null +++ b/setup_scripts/windows_setup_ftd3xx_dll.sh @@ -0,0 +1,3 @@ +cp ${1}/${3} ${2} +cp ${1}/${4} ${2} +cp ${1}/FTD3XX.h ${2}/ftd3xx.h diff --git a/setup_scripts/windows_setup_ftd3xx_winusb.sh b/setup_scripts/windows_setup_ftd3xx_winusb.sh new file mode 100644 index 0000000..90c0812 --- /dev/null +++ b/setup_scripts/windows_setup_ftd3xx_winusb.sh @@ -0,0 +1,3 @@ +unzip ${1}/WU_FTD3XXLib.zip +cp ${1}/WU_FTD3XXLib/Lib/${3} ${2} +cp ${1}/WU_FTD3XXLib/Lib/*.h ${2} diff --git a/setup_scripts/windows_setup_ftd3xx_winusb_dll.bat b/setup_scripts/windows_setup_ftd3xx_winusb_dll.bat new file mode 100644 index 0000000..4c41721 --- /dev/null +++ b/setup_scripts/windows_setup_ftd3xx_winusb_dll.bat @@ -0,0 +1,12 @@ +set "a=%~1" +set "b=%~2" +set "c=%~3" +set "d=%~4" +set "a=%a:/=\%" +set "b=%b:/=\%" +set "c=%c:/=\%" +set "d=%d:/=\%" +unzip %a%\WU_FTD3XXLib.zip -d %a% +copy %a%\WU_FTD3XXLib\Lib\%c% %b%\ +copy %a%\WU_FTD3XXLib\Lib\%d% %b%\ +copy %a%\WU_FTD3XXLib\Lib\FTD3XX.h %b%\ftd3xx.h diff --git a/setup_scripts/windows_setup_ftd3xx_winusb_dll.sh b/setup_scripts/windows_setup_ftd3xx_winusb_dll.sh new file mode 100644 index 0000000..fce4f7c --- /dev/null +++ b/setup_scripts/windows_setup_ftd3xx_winusb_dll.sh @@ -0,0 +1,4 @@ +unzip ${1}/WU_FTD3XXLib.zip +cp ${1}/WU_FTD3XXLib/Lib/${3} ${2} +cp ${1}/WU_FTD3XXLib/Lib/${4} ${2} +cp ${1}/WU_FTD3XXLib/Lib/*.h ${2} diff --git a/toolchains/linux_win32.cmake b/toolchains/linux_win32.cmake new file mode 100644 index 0000000..4ba261e --- /dev/null +++ b/toolchains/linux_win32.cmake @@ -0,0 +1,24 @@ +# the name of the target operating system +SET(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR x86) + +# which C and C++ compiler to use +set(CMAKE_C_COMPILER "/usr/bin/i686-w64-mingw32-gcc-posix" "-static-libstdc++" "-static-libgcc") +set(CMAKE_CXX_COMPILER "/usr/bin/i686-w64-mingw32-g++-posix" "-static-libstdc++" "-static-libgcc") + +# here is the target environment located +#SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# This doesn't work on Ubuntu 22.04 due to libkernel32.dll being too old. It does work on 24.01. +# For some reason, in windows 32 bit builds, ftd3xx requires some missing +# unspecified symbols. For that reason, we link dynamically with it +set(FORCE_WINDOWS_FTD3XX_SHARED_LIB ON) +# Link with libpthread +set(MINGW_CROSS_COMPILATION ON) diff --git a/toolchains/linux_win64.cmake b/toolchains/linux_win64.cmake new file mode 100644 index 0000000..ad9cfa6 --- /dev/null +++ b/toolchains/linux_win64.cmake @@ -0,0 +1,20 @@ +# the name of the target operating system +SET(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +# which C and C++ compiler to use +set(CMAKE_C_COMPILER "/usr/bin/x86_64-w64-mingw32-gcc-posix" "-static-libstdc++" "-static-libgcc") +set(CMAKE_CXX_COMPILER "/usr/bin/x86_64-w64-mingw32-g++-posix" "-static-libstdc++" "-static-libgcc") + +# here is the target environment located +#SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# Link with libpthread +set(MINGW_CROSS_COMPILATION ON)