build: improve the Linux aspect of things (#75)

Improved, fixed and streamlined cmake files. Optionally use system libraries instead of vcpkg (-DENABLE_VCPKG=OFF)
This commit is contained in:
Andrea Pappacoda 2022-08-29 07:19:48 +02:00 committed by GitHub
parent 0f24b0663e
commit f51a51df3b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 368 additions and 96 deletions

View file

@ -79,18 +79,21 @@ set_target_properties(CemuBin PROPERTIES
OUTPUT_NAME "Cemu"
)
target_link_libraries(CemuBin PRIVATE CemuCommon CemuComponents CemuCafe CemuConfig CemuGui CemuAudio CemuInput CemuUtil)
target_link_libraries(CemuBin PRIVATE
CemuAudio
CemuCafe
CemuCommon
CemuComponents
CemuConfig
CemuGui
CemuInput
CemuUtil
)
target_link_libraries(CemuBin PRIVATE CemuAsm)
target_link_libraries(CemuBin PRIVATE OpenSSL::SSL)
target_link_libraries(CemuBin PRIVATE ZLIB::ZLIB)
target_link_libraries(CemuBin PRIVATE ${wxWidgets_LIBRARIES})
target_link_libraries(CemuBin PRIVATE CURL::libcurl)
target_link_libraries(CemuBin PRIVATE imgui::imgui)
target_link_libraries(CemuBin PRIVATE pugixml pugixml::static pugixml::pugixml)
target_link_libraries(CemuBin PRIVATE SDL2::SDL2 SDL2::SDL2main) # is SDL2main needed?
target_link_libraries(CemuBin PRIVATE imguiImpl OpenGL::GL)
target_link_libraries(CemuBin PUBLIC
CemuCommon CemuAudio CemuInput CemuComponents CemuCafe CemuConfig CemuGui imguiImpl)
# needed because of some cyclic dependencies. fix this
target_link_libraries(CemuBin PUBLIC
CemuCommon CemuInput CemuComponents CemuCafe CemuResource CemuGui CemuAsm)
if (ENABLE_WXWIDGETS)
target_link_libraries(CemuBin PRIVATE wx::base wx::core)
endif()

View file

@ -1,7 +1,5 @@
project(CemuCafe)
include_directories(".")
if((CMAKE_C_COMPILER_ID STREQUAL "GNU") OR (CMAKE_C_COMPILER_ID STREQUAL "Clang"))
add_compile_options(-mssse3 -mavx2)
endif()
@ -14,20 +12,39 @@ set_property(TARGET CemuCafe PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CON
target_precompile_headers(CemuCafe PRIVATE ../Common/precompiled.h)
target_include_directories(CemuCafe PRIVATE ../)
target_include_directories(CemuCafe PUBLIC "../")
#target_link_libraries(CemuCafe ZArchivexx)
#target_link_libraries(CemuCafe CemuCommon CemuCore CemuConfig CemuUtil CemuResource)
#target_link_libraries(CemuCafe OpenSSL::SSL)
#target_link_libraries(CemuCafe ZLIB::ZLIB)
#target_link_libraries(CemuCafe imgui::imgui)
#target_link_libraries(CemuCafe imguiImpl)
#target_link_libraries(CemuCafe pugixml pugixml::static pugixml::pugixml)
#target_link_libraries(CemuCafe libzip::zip)
target_link_libraries(CemuCafe glslang SPIRV)
target_link_libraries(CemuCafe ih264d zarchive)
#target_link_libraries(CemuCafe zstd::libzstd_static)
target_link_libraries(CemuCafe PRIVATE
CemuAsm
CemuAudio
CemuCommon
CemuComponents
CemuConfig
CemuGui
CemuInput
CemuResource
CemuUtil
imguiImpl
Boost::headers
Boost::nowide
CURL::libcurl
fmt::fmt
glslang::SPIRV
ih264d
imgui::imgui
OpenSSL::Crypto
OpenSSL::SSL
PNG::PNG
pugixml::pugixml
ZArchive::zarchive
ZLIB::ZLIB
zstd::zstd
)
IF(WIN32)
target_link_libraries(CemuCafe iphlpapi)
ENDIF()
if (ENABLE_WXWIDGETS)
target_link_libraries(CemuCafe PRIVATE wx::base wx::core)
endif()
if(WIN32)
target_link_libraries(CemuCafe PRIVATE iphlpapi)
endif()

View file

@ -8,9 +8,25 @@ set_property(TARGET CemuComponents PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$
target_precompile_headers(CemuComponents PRIVATE ../Common/precompiled.h)
target_include_directories(CemuComponents PRIVATE ../)
target_include_directories(CemuComponents PUBLIC "../")
target_link_libraries(CemuComponents PRIVATE
CemuCafe
CemuCommon
CemuConfig
CemuGui
CemuUtil
Boost::headers
CURL::libcurl
OpenSSL::Crypto
OpenSSL::SSL
pugixml::pugixml
ZLIB::ZLIB
)
# PUBLIC because fmt/format.h is included in ExpressionParser/ExpressionParser.h
target_link_libraries(CemuComponents PUBLIC fmt::fmt)
if(ENABLE_DISCORD_RPC)
target_link_libraries(CemuComponents PRIVATE discord-rpc)
endif()
target_link_libraries(CemuComponents PRIVATE CemuUtil)

View file

@ -1,7 +1,5 @@
project(CemuCommon)
#include_directories(".")
file(GLOB CPP_FILES *.cpp)
file(GLOB H_FILES *.h)
add_library(CemuCommon ${CPP_FILES} ${H_FILES})
@ -29,4 +27,22 @@ target_sources(CemuCommon
)
target_precompile_headers(CemuCommon PUBLIC precompiled.h)
target_include_directories(CemuCommon PRIVATE ../)
target_include_directories(CemuCommon PUBLIC "../")
target_link_libraries(CemuCommon PRIVATE
CemuCafe
CemuConfig
CemuComponents
Boost::nowide
Boost::filesystem
glm::glm
)
if (UNIX)
target_link_libraries(CemuCommon PRIVATE X11::X11 X11::Xrender X11::Xutil)
endif()
# PUBLIC because:
# - boost/predef/os.h is included in platform.h
# - fmt/core.h is included in precompiled.h
target_link_libraries(CemuCommon PUBLIC Boost::headers fmt::fmt)

View file

@ -1,6 +1,6 @@
#pragma once
#include "boost/predef/os.h"
#include <boost/predef/os.h>
#include <cstdint>
#if BOOST_OS_WINDOWS

View file

@ -34,9 +34,16 @@ endif()
target_precompile_headers(CemuAudio PRIVATE ../Common/precompiled.h)
#target_link_libraries(CemuAudio CemuCommon CemuGui CemuPlatform)
target_include_directories(CemuAudio PRIVATE ../)
target_include_directories(CemuAudio PUBLIC "../")
target_link_libraries(CemuAudio PRIVATE CemuCafe CemuConfig CemuGui CemuUtil)
if(ENABLE_CUBEB)
target_link_libraries(CemuAudio cubeb)
# PUBLIC because cubeb.h/cubeb.h is included in CubebAPI.h
target_link_libraries(CemuAudio PUBLIC cubeb::cubeb)
endif()
if (ENABLE_WXWIDGETS)
# PUBLIC because wx/wx.h is included in audioDebuggerWindow.h
target_link_libraries(CemuAudio PUBLIC wx::base wx::core)
endif()

View file

@ -8,4 +8,19 @@ set_property(TARGET CemuConfig PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<C
target_precompile_headers(CemuConfig PRIVATE ../Common/precompiled.h)
target_include_directories(CemuConfig PRIVATE ../)
target_include_directories(CemuConfig PUBLIC "../")
target_link_libraries(CemuConfig PRIVATE
CemuCafe
CemuCommon
CemuUtil
Boost::headers
Boost::program_options
pugixml::pugixml
)
if (ENABLE_WXWIDGETS)
# PUBLIC because wx/language.h is included in CemuConfig.h
# Could be made PRIVATE by using 0 instead of wxLANGUAGE_DEFAULT
target_link_libraries(CemuConfig PUBLIC wx::base wx::core)
endif()

View file

@ -1,7 +1,5 @@
project(CemuGui)
include_directories(".")
file(GLOB_RECURSE CPP_FILES *.cpp)
file(GLOB_RECURSE H_FILES *.h)
add_library(CemuGui ${CPP_FILES} ${H_FILES})
@ -17,13 +15,32 @@ wxcomponents/checktree.h
target_precompile_headers(CemuGui PRIVATE ../Common/precompiled.h)
target_include_directories(CemuGui PRIVATE ../)
target_include_directories(CemuGui PUBLIC "../")
# PUBLIC because rapidjson/document.h is included in ChecksumTool.h
target_include_directories(CemuGui PUBLIC ${RAPIDJSON_INCLUDE_DIRS})
target_link_libraries(CemuGui ${wxWidgets_LIBRARIES})
target_link_libraries(CemuGui libzip::zip)
target_link_libraries(CemuGui CemuCafe CemuComponents CemuResource)
target_link_libraries(CemuGui zarchive)
target_link_libraries(CemuGui PRIVATE
CemuAudio
CemuCafe
CemuCommon
CemuComponents
CemuConfig
CemuInput
CemuResource
CemuUtil
Boost::headers
CURL::libcurl
libzip::zip
OpenSSL::Crypto
pugixml::pugixml
ZArchive::zarchive
)
if(ENABLE_CUBEB)
target_link_libraries(CemuGui cubeb)
target_link_libraries(CemuGui PRIVATE cubeb::cubeb)
endif()
if (ENABLE_WXWIDGETS)
# PUBLIC because wx/app.h is included in CemuApp.h
target_link_libraries(CemuGui PUBLIC wx::base wx::core wx::gl wx::propgrid wx::xrc)
endif()

View file

@ -1,7 +1,5 @@
project(imguiImpl)
include_directories(".")
add_library(imguiImpl)
set_property(TARGET imguiImpl PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
@ -17,5 +15,14 @@ target_sources(imguiImpl PRIVATE
target_precompile_headers(imguiImpl PRIVATE ../Common/precompiled.h)
target_link_libraries(CemuCommon)
target_include_directories(imguiImpl PRIVATE ../)
target_include_directories(imguiImpl PUBLIC "../")
target_link_libraries(imguiImpl PRIVATE
CemuCafe
CemuCommon
CemuGui
CemuInput
CemuResource
CemuUtil
imgui::imgui
)

View file

@ -1,7 +1,5 @@
project(CemuInput)
include_directories(".")
add_library(CemuInput
InputManager.cpp
InputManager.h
@ -95,4 +93,21 @@ endif()
target_precompile_headers(CemuInput PRIVATE ../Common/precompiled.h)
target_include_directories(CemuInput PRIVATE ../)
target_include_directories(CemuInput PUBLIC "../")
target_link_libraries(CemuInput PRIVATE
CemuCafe
CemuCommon
CemuConfig
CemuGui
CemuUtil
Boost::headers
Boost::program_options
glm::glm
pugixml::pugixml
SDL2::SDL2
)
if (ENABLE_WXWIDGETS)
target_link_libraries(CemuInput PRIVATE wx::base wx::core)
endif()

View file

@ -16,4 +16,6 @@ target_sources(CemuResource PRIVATE
CafeDefaultFont.cpp
)
target_include_directories(CemuResource PRIVATE ../)
target_include_directories(CemuResource PUBLIC "../")
target_link_libraries(CemuResource PRIVATE CemuComponents)

View file

@ -1,7 +1,5 @@
project(CemuUtil)
include_directories(".")
file(GLOB_RECURSE CPP_FILES *.cpp)
file(GLOB_RECURSE H_FILES *.h)
@ -11,5 +9,16 @@ set_property(TARGET CemuUtil PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CON
target_precompile_headers(CemuUtil PRIVATE ../Common/precompiled.h)
target_link_libraries(CemuUtil CemuCommon CemuConfig)
target_include_directories(CemuUtil PRIVATE ../)
target_include_directories(CemuUtil PUBLIC "../")
target_link_libraries(CemuUtil PRIVATE
CemuCommon
CemuConfig
Boost::headers
Boost::nowide
OpenSSL::Crypto
)
if (ENABLE_WXWIDGETS)
target_link_libraries(CemuUtil PRIVATE wx::base wx::core)
endif()