mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2026-04-24 23:17:43 -05:00
170 lines
6.6 KiB
CMake
170 lines
6.6 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(CMakeSFMLProject LANGUAGES CXX)
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
|
set(CMAKE_HOST_CXX_COMPILER "g++" CACHE STRING "Host Compiler")
|
|
set(WINDOWS_FTD3XX_USE_SHARED_LIB 0)
|
|
set(FETCHCONTENT_QUIET FALSE)
|
|
set(EXTRA_LINUX_CXX_FLAGS "-DXLIB_BASED 1" CACHE STRING "Extra Linux CXX flags")
|
|
|
|
include(FetchContent)
|
|
FetchContent_Declare(SFML
|
|
GIT_REPOSITORY https://github.com/SFML/SFML.git
|
|
GIT_TAG 2.6.1)
|
|
|
|
set(FTD3XX_BASE_URL https://ftdichip.com/wp-content/uploads/)
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
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_LIB libftd3xx.lib)
|
|
set(FTD3XX_DLL FTD3XX.dll)
|
|
set(FTD3XX_SUBFOLDER win)
|
|
if(${WINDOWS_FTD3XX_USE_SHARED_LIB})
|
|
set(WINDOWS_PATH_SPECIFIER DLL)
|
|
else()
|
|
set(WINDOWS_PATH_SPECIFIER Static_Lib)
|
|
endif()
|
|
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
|
set(FTD3XX_URL_TIME 2023/03)
|
|
set(FTD3XX_VER 1.0.5)
|
|
set(FTD3XX_VOL d3xx-osx.${FTD3XX_VER})
|
|
set(FTD3XX_ARCHIVE ${FTD3XX_VOL}.dmg)
|
|
set(FTD3XX_LIB libftd3xx-static.a)
|
|
set(FTD3XX_MOUNTED_FOLDER /Volumes/${FTD3XX_VOL})
|
|
set(FTD3XX_SUBFOLDER macos)
|
|
else()
|
|
set(FTD3XX_URL_TIME 2023/03)
|
|
set(FTD3XX_VER 1.0.5)
|
|
if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm"))
|
|
if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "64") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "v8"))
|
|
set(FTD3XX_VOL libftd3xx-linux-arm-v8-${FTD3XX_VER})
|
|
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "v7")
|
|
set(FTD3XX_VOL libftd3xx-linux-arm-v7_32-${FTD3XX_VER})
|
|
endif()
|
|
else()
|
|
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "64")
|
|
set(FTD3XX_VOL libftd3xx-linux-x86_64-${FTD3XX_VER})
|
|
elseif((${CMAKE_SYSTEM_PROCESSOR} MATCHES "32") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "86"))
|
|
set(FTD3XX_VOL libftd3xx-linux-x86_32-${FTD3XX_VER})
|
|
endif()
|
|
endif()
|
|
set(FTD3XX_ARCHIVE ${FTD3XX_VOL}.tgz)
|
|
set(FTD3XX_LIB libftd3xx-static.a)
|
|
set(FTD3XX_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
|
|
)
|
|
else()
|
|
FetchContent_Declare(FTD3XX
|
|
URL ${FTD3XX_BASE_URL}${FTD3XX_URL_TIME}/${FTD3XX_ARCHIVE}
|
|
)
|
|
endif()
|
|
|
|
FetchContent_MakeAvailable(FTD3XX SFML)
|
|
file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/win)
|
|
file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/macos)
|
|
file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/linux)
|
|
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
|
|
# search headers and libraries in the target environment
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
set(TOOLS_DATA_DIR ${CMAKE_BINARY_DIR}/tools_and_data)
|
|
file(MAKE_DIRECTORY ${TOOLS_DATA_DIR})
|
|
|
|
set(OUTPUT_NAME cc3dsfs)
|
|
|
|
add_custom_target(CMakeFTD3XX)
|
|
add_custom_target(CMakeBin2C)
|
|
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/3dscapture.cpp source/conversions.cpp ${TOOLS_DATA_DIR}/font_ttf.cpp)
|
|
add_dependencies(${OUTPUT_NAME} CMakeFTD3XX)
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
target_link_libraries(${OUTPUT_NAME} PRIVATE sfml-graphics sfml-audio sfml-window sfml-system FTD3XX)
|
|
else()
|
|
target_link_libraries(${OUTPUT_NAME} PRIVATE sfml-graphics sfml-audio sfml-window sfml-system ftd3xx-static)
|
|
endif()
|
|
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)
|
|
target_compile_features(${OUTPUT_NAME} PRIVATE cxx_std_17)
|
|
target_compile_options(${OUTPUT_NAME} PRIVATE "-std=c++17" ${EXTRA_LINUX_CXX_FLAGS})
|
|
|
|
add_custom_command(
|
|
TARGET CMakeBin2C
|
|
COMMENT "Create Bin2C"
|
|
PRE_BUILD COMMAND ${CMAKE_HOST_CXX_COMPILER} ${CMAKE_SOURCE_DIR}/tools/bin2c.cpp -o ${TOOLS_DATA_DIR}/bin2c
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${TOOLS_DATA_DIR}/font_ttf.cpp
|
|
COMMENT "Convert font to binary"
|
|
COMMAND ${TOOLS_DATA_DIR}/bin2c ${CMAKE_SOURCE_DIR}/data/font.ttf ${TOOLS_DATA_DIR} font_ttf font_ttf
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/data/font.ttf CMakeBin2C
|
|
)
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
add_custom_command(
|
|
TARGET CMakeFTD3XX
|
|
COMMENT "Copy FTD3XX header"
|
|
PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${ftd3xx_SOURCE_DIR}/FTD3XX.h ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}
|
|
)
|
|
if(WIN32)
|
|
set(PATH_WINDOWS_ARCH Win32)
|
|
else ()
|
|
set(PATH_WINDOWS_ARCH x64)
|
|
endif()
|
|
add_custom_command(
|
|
TARGET CMakeFTD3XX
|
|
COMMENT "Copy FTD3XX lib file"
|
|
PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${ftd3xx_SOURCE_DIR}/${PATH_WINDOWS_ARCH}/${WINDOWS_PATH_SPECIFIER}/FTD3XX.lib ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}
|
|
)
|
|
if(${WINDOWS_FTD3XX_USE_SHARED_LIB})
|
|
add_custom_command(
|
|
TARGET CMakeFTD3XX
|
|
COMMENT "Copy FTD3XX lib file"
|
|
PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${ftd3xx_SOURCE_DIR}/${PATH_WINDOWS_ARCH}/${WINDOWS_PATH_SPECIFIER}/FTD3XX.dll ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}
|
|
)
|
|
endif()
|
|
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
|
add_custom_command(
|
|
TARGET CMakeFTD3XX
|
|
COMMENT "Copy FTD3XX files"
|
|
PRE_BUILD COMMAND macos_setup_ftd3xx.sh ${ftd3xx_SOURCE_DIR}/${FTD3XX_ARCHIVE} ${FTD3XX_MOUNTED_FOLDER} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${FTD3XX_LIB}
|
|
)
|
|
else()
|
|
add_custom_command(
|
|
TARGET CMakeFTD3XX
|
|
COMMENT "Copy FTD3XX headers"
|
|
PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${ftd3xx_SOURCE_DIR}/*.h ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}
|
|
)
|
|
add_custom_command(
|
|
TARGET CMakeFTD3XX
|
|
COMMENT "Copy FTD3XX lib files"
|
|
PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${ftd3xx_SOURCE_DIR}/${FTD3XX_LIB} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}
|
|
)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
add_custom_command(
|
|
TARGET ${OUTPUT_NAME}
|
|
COMMENT "Copy OpenAL DLL"
|
|
PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${sfml_SOURCE_DIR}/extlibs/bin/$<IF:$<EQUAL:${CMAKE_SIZEOF_VOID_P},8>,x64,x86>/openal32.dll ${CMAKE_SOURCE_DIR}
|
|
VERBATIM
|
|
)
|
|
endif()
|
|
add_custom_command(
|
|
TARGET ${OUTPUT_NAME}
|
|
COMMENT "Copy OpenAL DLL"
|
|
POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${OUTPUT_NAME}> ${CMAKE_SOURCE_DIR}
|
|
VERBATIM
|
|
)
|
|
|
|
install(TARGETS ${OUTPUT_NAME})
|