diff --git a/CMakeLists.txt b/CMakeLists.txt index eb2591d6..e89c9c51 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -197,26 +197,24 @@ set(AUDIO_SOURCE_FILES src/core/audio/dsp_core.cpp src/core/audio/null_core.cpp set(RENDERER_SW_SOURCE_FILES src/core/renderer_sw/renderer_sw.cpp) # Frontend source files -if(NOT ANDROID) - if(ENABLE_QT_GUI) - set(FRONTEND_SOURCE_FILES src/panda_qt/main.cpp src/panda_qt/screen.cpp src/panda_qt/main_window.cpp src/panda_qt/about_window.cpp - src/panda_qt/config_window.cpp src/panda_qt/zep.cpp src/panda_qt/text_editor.cpp src/panda_qt/cheats_window.cpp - ) - set(FRONTEND_HEADER_FILES include/panda_qt/screen.hpp include/panda_qt/main_window.hpp include/panda_qt/about_window.hpp - include/panda_qt/config_window.hpp include/panda_qt/text_editor.hpp include/panda_qt/cheats_window.hpp - ) +if(ENABLE_QT_GUI) + set(FRONTEND_SOURCE_FILES src/panda_qt/main.cpp src/panda_qt/screen.cpp src/panda_qt/main_window.cpp src/panda_qt/about_window.cpp + src/panda_qt/config_window.cpp src/panda_qt/zep.cpp src/panda_qt/text_editor.cpp src/panda_qt/cheats_window.cpp + ) + set(FRONTEND_HEADER_FILES include/panda_qt/screen.hpp include/panda_qt/main_window.hpp include/panda_qt/about_window.hpp + include/panda_qt/config_window.hpp include/panda_qt/text_editor.hpp include/panda_qt/cheats_window.hpp + ) - source_group("Source Files\\Qt" FILES ${FRONTEND_SOURCE_FILES}) - source_group("Header Files\\Qt" FILES ${FRONTEND_HEADER_FILES}) - include_directories(${Qt6Gui_PRIVATE_INCLUDE_DIRS}) + source_group("Source Files\\Qt" FILES ${FRONTEND_SOURCE_FILES}) + source_group("Header Files\\Qt" FILES ${FRONTEND_HEADER_FILES}) + include_directories(${Qt6Gui_PRIVATE_INCLUDE_DIRS}) - include_directories(third_party/zep/include) # Include zep for text editor usage - configure_file(third_party/zep/cmake/config_app.h.cmake ${CMAKE_BINARY_DIR}/zep_config/config_app.h) - include_directories(${CMAKE_BINARY_DIR}/zep_config) - else() - set(FRONTEND_SOURCE_FILES src/panda_sdl/main.cpp src/panda_sdl/frontend_sdl.cpp) - set(FRONTEND_HEADER_FILES "") - endif() + include_directories(third_party/zep/include) # Include zep for text editor usage + configure_file(third_party/zep/cmake/config_app.h.cmake ${CMAKE_BINARY_DIR}/zep_config/config_app.h) + include_directories(${CMAKE_BINARY_DIR}/zep_config) +else() + set(FRONTEND_SOURCE_FILES src/panda_sdl/main.cpp src/panda_sdl/frontend_sdl.cpp) + set(FRONTEND_HEADER_FILES "") endif() set(HEADER_FILES include/emulator.hpp include/helpers.hpp include/termcolor.hpp @@ -406,6 +404,10 @@ set(ALL_SOURCES ${SOURCE_FILES} ${FS_SOURCE_FILES} ${CRYPTO_SOURCE_FILES} ${KERN ${LOADER_SOURCE_FILES} ${SERVICE_SOURCE_FILES} ${APPLET_SOURCE_FILES} ${RENDERER_SW_SOURCE_FILES} ${PICA_SOURCE_FILES} ${THIRD_PARTY_SOURCE_FILES} ${AUDIO_SOURCE_FILES} ${HEADER_FILES} ${FRONTEND_HEADER_FILES}) +if(ANDROID) + set(ALL_SOURCES ${ALL_SOURCES} src/jni_driver.cpp) +endif() + if(ENABLE_OPENGL) # Add the OpenGL source files to ALL_SOURCES set(ALL_SOURCES ${ALL_SOURCES} ${RENDERER_GL_SOURCE_FILES}) @@ -416,17 +418,7 @@ if(ENABLE_VULKAN) set(ALL_SOURCES ${ALL_SOURCES} ${RENDERER_VK_SOURCE_FILES}) endif() -if(ANDROID) - set(ALL_SOURCES ${ALL_SOURCES} src/jni_driver.cpp) -endif() - -if(BUILD_HYDRA_CORE) - add_library(AlberCore SHARED ${ALL_SOURCES} src/hydra_core.cpp) - target_compile_definitions(AlberCore PRIVATE PANDA3DS_HYDRA_CORE=1) - include_directories(third_party/hydra_core/include) -else() - add_library(AlberCore STATIC ${ALL_SOURCES}) -endif() +add_library(AlberCore STATIC ${ALL_SOURCES}) if(ANDROID) target_link_libraries(AlberCore PRIVATE EGL log) @@ -485,37 +477,48 @@ if(ENABLE_HTTP_SERVER) endif() # Configure frontend -add_executable(Alber ${FRONTEND_SOURCE_FILES} ${FRONTEND_HEADER_FILES}) -target_link_libraries(Alber PRIVATE AlberCore) if(ENABLE_QT_GUI) target_compile_definitions(AlberCore PUBLIC "PANDA3DS_FRONTEND_QT=1") - - target_compile_definitions(Alber PUBLIC "ZEP_QT=1") - target_compile_definitions(Alber PUBLIC "ZEP_FEATURE_CPP_FILE_SYSTEM=1") - - target_link_libraries(Alber PRIVATE Qt6::Widgets) - - # We can't use qt_standard_project_setup since it's Qt 6.3+ and we don't need to set the minimum that high - set_target_properties(Alber PROPERTIES AUTOMOC ON) - set_target_properties(Alber PROPERTIES AUTORCC ON) - set_target_properties(Alber PROPERTIES AUTOUIC ON) - - if(LINUX OR FREEBSD) - find_package(X11 REQUIRED) - target_link_libraries(Alber PRIVATE ${X11_LIBRARIES}) - - if(ENABLE_OPENGL) - find_package(OpenGL REQUIRED COMPONENTS OpenGL EGL GLX) - target_link_libraries(Alber PRIVATE OpenGL::OpenGL OpenGL::EGL OpenGL::GLX) - endif() - endif() - - qt_add_resources(AlberCore "app_images" - PREFIX "/" - FILES - docs/img/rsob_icon.png docs/img/rstarstruck_icon.png - ) else() target_compile_definitions(AlberCore PUBLIC "PANDA3DS_FRONTEND_SDL=1") endif() + +if(NOT BUILD_HYDRA_CORE) + add_executable(Alber ${FRONTEND_SOURCE_FILES} ${FRONTEND_HEADER_FILES}) + target_link_libraries(Alber PRIVATE AlberCore) + + if(ENABLE_QT_GUI) + target_compile_definitions(Alber PUBLIC "ZEP_QT=1") + target_compile_definitions(Alber PUBLIC "ZEP_FEATURE_CPP_FILE_SYSTEM=1") + target_link_libraries(Alber PRIVATE Qt6::Widgets) + + # We can't use qt_standard_project_setup since it's Qt 6.3+ and we don't need to set the minimum that high + set_target_properties(Alber PROPERTIES AUTOMOC ON) + set_target_properties(Alber PROPERTIES AUTORCC ON) + set_target_properties(Alber PROPERTIES AUTOUIC ON) + + if(LINUX OR FREEBSD) + find_package(X11 REQUIRED) + target_link_libraries(Alber PRIVATE ${X11_LIBRARIES}) + + if(ENABLE_OPENGL) + find_package(OpenGL REQUIRED COMPONENTS OpenGL EGL GLX) + target_link_libraries(Alber PRIVATE OpenGL::OpenGL OpenGL::EGL OpenGL::GLX) + endif() + endif() + + qt_add_resources(AlberCore "app_images" + PREFIX "/" + FILES + docs/img/rsob_icon.png docs/img/rstarstruck_icon.png + ) + else() + endif() +elseif(BUILD_HYDRA_CORE) + target_compile_definitions(AlberCore PRIVATE PANDA3DS_HYDRA_CORE=1) + include_directories(third_party/hydra_core/include) + add_library(Alber SHARED src/hydra_core.cpp) + target_link_libraries(Alber PUBLIC AlberCore) +else() +endif() \ No newline at end of file