mirror of
https://github.com/FunKey-Project/RetroFE.git
synced 2025-12-25 08:08:55 +01:00
225 lines
8.7 KiB
CMake
225 lines
8.7 KiB
CMake
cmake_minimum_required (VERSION 2.8)
|
|
|
|
project (RetroFE)
|
|
|
|
set(RETROFE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
|
set(RETROFE_THIRD_PARTY_DIR "${RETROFE_DIR}/ThirdParty")
|
|
list(APPEND CMAKE_MODULE_PATH "${RETROFE_DIR}/CMake")
|
|
|
|
##############################################################
|
|
# Setup some variables to help find external libraries
|
|
##############################################################
|
|
|
|
set(SQLITE3_ROOT "${RETROFE_THIRD_PARTY_DIR}/sqlite3")
|
|
set(RAPIDXML_ROOT "${RETROFE_THIRD_PARTY_DIR}/rapidxml-1.13")
|
|
|
|
if(WIN32)
|
|
set(CMAKE_PREFIX_PATH "${RETROFE_DIR}/ThirdParty/win32")
|
|
set(SDL2_ROOT "${RETROFE_THIRD_PARTY_DIR}/SDL2-2.0.3")
|
|
set(SDL2_IMAGE_ROOT "${RETROFE_THIRD_PARTY_DIR}/SDL2_image-2.0.0")
|
|
set(SDL2_MIXER_ROOT "${RETROFE_THIRD_PARTY_DIR}/SDL2_mixer-2.0.0")
|
|
set(SDL2_TTF_ROOT "${RETROFE_THIRD_PARTY_DIR}/SDL2_ttf-2.0.12")
|
|
set(ZLIB_ROOT "${RETROFE_THIRD_PARTY_DIR}/zlib128-dll")
|
|
|
|
set(GSTREAMER_ROOT "C:/gstreamer/1.0/x86" CACHE STRING "location of where your gstreamer include and lib folders reside")
|
|
set(GLIB2_ROOT "${GSTREAMER_ROOT}")
|
|
set(DIRENT_INCLUDE_DIR "${RETROFE_THIRD_PARTY_DIR}/dirent-1.20.1/include")
|
|
endif()
|
|
|
|
if(MSVC)
|
|
find_package(Glib2 REQUIRED)
|
|
find_package(GStreamer REQUIRED)
|
|
find_package(SDL2 REQUIRED)
|
|
find_package(SDL2_image REQUIRED)
|
|
find_package(SDL2_mixer REQUIRED)
|
|
find_package(SDL2_ttf REQUIRED)
|
|
find_package(ZLIB REQUIRED)
|
|
else()
|
|
include(FindPkgConfig)
|
|
pkg_search_module(SDL2 REQUIRED sdl2)
|
|
pkg_search_module(SDL2_IMAGE REQUIRED SDL2_image)
|
|
pkg_search_module(SDL2_MIXER REQUIRED SDL2_mixer)
|
|
pkg_search_module(SDL2_TTF REQUIRED SDL2_ttf)
|
|
pkg_search_module(ZLIB REQUIRED zlib)
|
|
pkg_search_module(GSTREAMER REQUIRED gstreamer-1.0 gstbase-1.0)
|
|
pkg_search_module(Glib2 REQUIRED glib-2.0 gobject-2.0 gthread-2.0 gmodule-2.0)
|
|
find_package(Threads REQUIRED)
|
|
endif()
|
|
|
|
set(RETROFE_INCLUDE_DIRS
|
|
"${GLIB2_INCLUDE_DIRS}"
|
|
"${GSTREAMER_INCLUDE_DIRS}"
|
|
"${SDL2_INCLUDE_DIRS}"
|
|
"${SDL2_IMAGE_INCLUDE_DIRS}"
|
|
"${SDL2_MIXER_INCLUDE_DIRS}"
|
|
"${SDL2_TTF_INCLUDE_DIRS}"
|
|
"${ZLIB_INCLUDE_DIRS}"
|
|
"${SQLITE3_ROOT}"
|
|
"${RAPIDXML_ROOT}"
|
|
"${DIRENT_INCLUDE_DIR}"
|
|
)
|
|
|
|
set(RETROFE_LIBRARIES
|
|
${GLIB2_LIBRARIES}
|
|
${GSTREAMER_LIBRARIES}
|
|
${SDL2_LIBRARIES}
|
|
${SDL2_IMAGE_LIBRARIES}
|
|
${SDL2_MIXER_LIBRARIES}
|
|
${SDL2_TTF_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
)
|
|
|
|
if(NOT MSVC)
|
|
LIST(APPEND RETROFE_LIBRARIES ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
|
endif()
|
|
|
|
set(RETROFE_HEADERS
|
|
"${RETROFE_DIR}/Source/Collection/CollectionInfo.h"
|
|
"${RETROFE_DIR}/Source/Collection/CollectionInfoBuilder.h"
|
|
"${RETROFE_DIR}/Source/Collection/Item.h"
|
|
"${RETROFE_DIR}/Source/Collection/MenuParser.h"
|
|
"${RETROFE_DIR}/Source/Control/UserInput.h"
|
|
"${RETROFE_DIR}/Source/Database/CollectionDatabase.h"
|
|
"${RETROFE_DIR}/Source/Database/Configuration.h"
|
|
"${RETROFE_DIR}/Source/Database/DB.h"
|
|
"${RETROFE_DIR}/Source/Database/MamelistMetadata.h"
|
|
"${RETROFE_DIR}/Source/Execute/Launcher.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Animate/Tween.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Animate/TweenTypes.h"
|
|
"${RETROFE_DIR}/Source/Graphics/ComponentItemBinding.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/Component.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Font.h"
|
|
"${RETROFE_DIR}/Source/Graphics/FontCache.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/Image.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/Text.h"
|
|
"${RETROFE_DIR}/Source/Graphics/PageBuilder.h"
|
|
"${RETROFE_DIR}/Source/Graphics/MenuNotifierInterface.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Page.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/ImageBuilder.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/ReloadableMedia.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/ReloadableText.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/ScrollingList.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/VideoComponent.h"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/VideoBuilder.h"
|
|
"${RETROFE_DIR}/Source/Sound/Sound.h"
|
|
"${RETROFE_DIR}/Source/Utility/Log.h"
|
|
"${RETROFE_DIR}/Source/Utility/Utils.h"
|
|
"${RETROFE_DIR}/Source/Video/IVideo.h"
|
|
"${RETROFE_DIR}/Source/Video/GStreamerVideo.h"
|
|
"${RETROFE_DIR}/Source/Video/VideoFactory.h"
|
|
"${RETROFE_DIR}/Source/Graphics/ComponentItemBindingBuilder.h"
|
|
"${RETROFE_DIR}/Source/Graphics/ViewInfo.h"
|
|
"${RETROFE_DIR}/Source/RetroFE.h"
|
|
"${RETROFE_DIR}/Source/SDL.h"
|
|
"${RETROFE_DIR}/Source/Version.h"
|
|
)
|
|
|
|
set(RETROFE_SOURCES
|
|
"${RETROFE_DIR}/Source/Collection/CollectionInfo.cpp"
|
|
"${RETROFE_DIR}/Source/Collection/CollectionInfoBuilder.cpp"
|
|
"${RETROFE_DIR}/Source/Collection/Item.cpp"
|
|
"${RETROFE_DIR}/Source/Collection/MenuParser.cpp"
|
|
"${RETROFE_DIR}/Source/Control/UserInput.cpp"
|
|
"${RETROFE_DIR}/Source/Database/CollectionDatabase.cpp"
|
|
"${RETROFE_DIR}/Source/Database/Configuration.cpp"
|
|
"${RETROFE_DIR}/Source/Database/DB.cpp"
|
|
"${RETROFE_DIR}/Source/Database/MamelistMetadata.cpp"
|
|
"${RETROFE_DIR}/Source/Execute/Launcher.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Animate/Tween.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Font.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/FontCache.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/PageBuilder.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Page.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/ViewInfo.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/ComponentItemBindingBuilder.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/ComponentItemBinding.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/Component.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/Image.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/ImageBuilder.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/Text.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/ReloadableMedia.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/ReloadableText.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/ScrollingList.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/VideoBuilder.cpp"
|
|
"${RETROFE_DIR}/Source/Graphics/Component/VideoComponent.cpp"
|
|
"${RETROFE_DIR}/Source/Sound/Sound.cpp"
|
|
"${RETROFE_DIR}/Source/Utility/Log.cpp"
|
|
"${RETROFE_DIR}/Source/Utility/Utils.cpp"
|
|
"${RETROFE_DIR}/Source/Video/GStreamerVideo.cpp"
|
|
"${RETROFE_DIR}/Source/Video/VideoFactory.cpp"
|
|
"${RETROFE_DIR}/Source/Main.cpp"
|
|
"${RETROFE_DIR}/Source/RetroFE.cpp"
|
|
"${RETROFE_DIR}/Source/SDL.cpp"
|
|
"${RETROFE_DIR}/Source/Version.cpp"
|
|
"${SQLITE3_ROOT}/sqlite3.c"
|
|
)
|
|
|
|
|
|
set(EXECUTABLE_OUTPUT_PATH "${RETROFE_DIR}/Build" CACHE PATH "Build directory" FORCE)
|
|
set(LIBRARY_OUTPUT_PATH "${RETROFE_DIR}/Build" CACHE PATH "Build directory" FORCE)
|
|
|
|
|
|
include_directories(${RETROFE_INCLUDE_DIRS})
|
|
add_executable(RetroFE ${RETROFE_SOURCES} ${RETROFE_HEADERS})
|
|
target_link_libraries(RetroFE ${RETROFE_LIBRARIES})
|
|
set_target_properties(RetroFE PROPERTIES LINKER_LANGUAGE CXX)
|
|
|
|
add_definitions(-DRETROFE_VERSION_MAJOR=${VERSION_MAJOR})
|
|
add_definitions(-DRETROFE_VERSION_MINOR=${VERSION_MINOR})
|
|
add_definitions(-DRETROFE_VERSION_BUILD=${VERSION_BUILD})
|
|
|
|
if(MSVC)
|
|
set(CMAKE_DEBUG_POSTFIX "d")
|
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
|
|
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /WX")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /WX")
|
|
set_target_properties(RetroFE PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
|
|
endif()
|
|
|
|
|
|
set(RETROFE_OUTPUT_PATH "../Build/Artifacts/RetroFE")
|
|
|
|
|
|
ADD_CUSTOM_COMMAND(TARGET RetroFE POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory "../Build/Artifacts/RetroFE" )
|
|
|
|
ADD_CUSTOM_COMMAND(TARGET RetroFE POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "../Assets/Environment/Common" "${RETROFE_OUTPUT_PATH}" )
|
|
|
|
if(WIN32)
|
|
set(RETROFE_OUTPUT_CORE_PATH "${RETROFE_OUTPUT_PATH}/Core")
|
|
file(GLOB CORE_FILES
|
|
"${GSTREAMER_ROOT}/lib/*.dll"
|
|
"${GSTREAMER_ROOT}/lib/gstreamer-1.0/*.dll"
|
|
"${GSTREAMER_ROOT}/bin/*.dll"
|
|
"${SDL2_ROOT}/lib/x86/*.dll"
|
|
"${SDL2_IMAGE_ROOT}/lib/x86/*.dll"
|
|
"${SDL2_TTF_ROOT}/lib/x86/*.dll"
|
|
"${SDL2_MIXER_ROOT}/lib/x86/*.dll"
|
|
)
|
|
|
|
ADD_CUSTOM_COMMAND(TARGET RetroFE POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${RETROFE_OUTPUT_CORE_PATH}" )
|
|
|
|
ADD_CUSTOM_COMMAND(TARGET RetroFE POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "../Assets/Environment/Windows" "${RETROFE_OUTPUT_PATH}" )
|
|
|
|
|
|
foreach(CORE_FILE ${CORE_FILES})
|
|
ADD_CUSTOM_COMMAND(TARGET RetroFE POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CORE_FILE}" "${RETROFE_OUTPUT_CORE_PATH}" )
|
|
endforeach()
|
|
|
|
ADD_CUSTOM_COMMAND(TARGET RetroFE POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy "../Build/Debug/RetroFE.exe" "${RETROFE_OUTPUT_CORE_PATH}" )
|
|
|
|
else()
|
|
ADD_CUSTOM_COMMAND(TARGET RetroFE POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "../Assets/Environment/Linux" "${RETROFE_OUTPUT_PATH}" )
|
|
|
|
ADD_CUSTOM_COMMAND(TARGET RetroFE POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy "../Build/RetroFE" "${RETROFE_OUTPUT_PATH}" )
|
|
endif()
|
|
|