CMake: Correct inter-module dependencies and library visibility
Modules didn't correctly define their dependencies before, which relied on the frontends implicitly including every module for linking to succeed. Also changed every target_link_libraries call to specify visibility of dependencies to avoid leaking definitions to dependents when not necessary.
This commit is contained in:
parent
62f34c8e5c
commit
7b81903756
@ -38,9 +38,10 @@ endif()
|
|||||||
create_directory_groups(${SRCS} ${HEADERS})
|
create_directory_groups(${SRCS} ${HEADERS})
|
||||||
|
|
||||||
add_library(audio_core STATIC ${SRCS} ${HEADERS})
|
add_library(audio_core STATIC ${SRCS} ${HEADERS})
|
||||||
target_link_libraries(audio_core SoundTouch)
|
target_link_libraries(audio_core PUBLIC common core)
|
||||||
|
target_link_libraries(audio_core PRIVATE SoundTouch)
|
||||||
|
|
||||||
if(SDL2_FOUND)
|
if(SDL2_FOUND)
|
||||||
target_link_libraries(audio_core ${SDL2_LIBRARY})
|
target_link_libraries(audio_core PRIVATE ${SDL2_LIBRARY})
|
||||||
set_property(TARGET audio_core APPEND PROPERTY COMPILE_DEFINITIONS HAVE_SDL2)
|
target_compile_definitions(audio_core PRIVATE HAVE_SDL2)
|
||||||
endif()
|
endif()
|
||||||
|
@ -18,12 +18,12 @@ create_directory_groups(${SRCS} ${HEADERS})
|
|||||||
include_directories(${SDL2_INCLUDE_DIR})
|
include_directories(${SDL2_INCLUDE_DIR})
|
||||||
|
|
||||||
add_executable(citra ${SRCS} ${HEADERS})
|
add_executable(citra ${SRCS} ${HEADERS})
|
||||||
target_link_libraries(citra core video_core audio_core common input_common)
|
target_link_libraries(citra PRIVATE common core input_common)
|
||||||
target_link_libraries(citra ${SDL2_LIBRARY} ${OPENGL_gl_LIBRARY} inih glad)
|
target_link_libraries(citra PRIVATE ${SDL2_LIBRARY} ${OPENGL_gl_LIBRARY} inih glad)
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
target_link_libraries(citra getopt)
|
target_link_libraries(citra PRIVATE getopt)
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(citra ${PLATFORM_LIBRARIES} Threads::Threads)
|
target_link_libraries(citra PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
install(TARGETS citra RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
install(TARGETS citra RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
||||||
|
@ -91,9 +91,9 @@ if (APPLE)
|
|||||||
else()
|
else()
|
||||||
add_executable(citra-qt ${SRCS} ${HEADERS} ${UI_HDRS})
|
add_executable(citra-qt ${SRCS} ${HEADERS} ${UI_HDRS})
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(citra-qt core video_core audio_core common input_common)
|
target_link_libraries(citra-qt PRIVATE audio_core common core input_common video_core)
|
||||||
target_link_libraries(citra-qt ${OPENGL_gl_LIBRARY} ${CITRA_QT_LIBS})
|
target_link_libraries(citra-qt PRIVATE ${OPENGL_gl_LIBRARY} ${CITRA_QT_LIBS} glad)
|
||||||
target_link_libraries(citra-qt ${PLATFORM_LIBRARIES} Threads::Threads)
|
target_link_libraries(citra-qt PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
install(TARGETS citra-qt RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
install(TARGETS citra-qt RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
||||||
|
@ -96,5 +96,5 @@ create_directory_groups(${SRCS} ${HEADERS})
|
|||||||
|
|
||||||
add_library(common STATIC ${SRCS} ${HEADERS})
|
add_library(common STATIC ${SRCS} ${HEADERS})
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64)
|
||||||
target_link_libraries(common xbyak)
|
target_link_libraries(common PRIVATE xbyak)
|
||||||
endif()
|
endif()
|
||||||
|
@ -380,5 +380,5 @@ include_directories(../../externals/cryptopp)
|
|||||||
create_directory_groups(${SRCS} ${HEADERS})
|
create_directory_groups(${SRCS} ${HEADERS})
|
||||||
|
|
||||||
add_library(core STATIC ${SRCS} ${HEADERS})
|
add_library(core STATIC ${SRCS} ${HEADERS})
|
||||||
|
target_link_libraries(core PUBLIC common PRIVATE audio_core video_core)
|
||||||
target_link_libraries(core dynarmic cryptopp)
|
target_link_libraries(core PRIVATE cryptopp dynarmic)
|
||||||
|
@ -19,9 +19,9 @@ endif()
|
|||||||
create_directory_groups(${SRCS} ${HEADERS})
|
create_directory_groups(${SRCS} ${HEADERS})
|
||||||
|
|
||||||
add_library(input_common STATIC ${SRCS} ${HEADERS})
|
add_library(input_common STATIC ${SRCS} ${HEADERS})
|
||||||
target_link_libraries(input_common common core)
|
target_link_libraries(input_common PUBLIC core PRIVATE common)
|
||||||
|
|
||||||
if(SDL2_FOUND)
|
if(SDL2_FOUND)
|
||||||
target_link_libraries(input_common ${SDL2_LIBRARY})
|
target_link_libraries(input_common PRIVATE ${SDL2_LIBRARY})
|
||||||
set_property(TARGET input_common APPEND PROPERTY COMPILE_DEFINITIONS HAVE_SDL2)
|
target_compile_definitions(input_common PRIVATE HAVE_SDL2)
|
||||||
endif()
|
endif()
|
||||||
|
@ -13,7 +13,8 @@ create_directory_groups(${SRCS} ${HEADERS})
|
|||||||
include_directories(../../externals/catch/single_include/)
|
include_directories(../../externals/catch/single_include/)
|
||||||
|
|
||||||
add_executable(tests ${SRCS} ${HEADERS})
|
add_executable(tests ${SRCS} ${HEADERS})
|
||||||
target_link_libraries(tests core video_core audio_core common)
|
target_link_libraries(tests PRIVATE common core)
|
||||||
target_link_libraries(tests ${PLATFORM_LIBRARIES} Threads::Threads)
|
target_link_libraries(tests PRIVATE glad) # To support linker work-around
|
||||||
|
target_link_libraries(tests PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
||||||
|
|
||||||
add_test(NAME tests COMMAND $<TARGET_FILE:tests>)
|
add_test(NAME tests COMMAND $<TARGET_FILE:tests>)
|
||||||
|
@ -79,13 +79,15 @@ endif()
|
|||||||
create_directory_groups(${SRCS} ${HEADERS})
|
create_directory_groups(${SRCS} ${HEADERS})
|
||||||
|
|
||||||
add_library(video_core STATIC ${SRCS} ${HEADERS})
|
add_library(video_core STATIC ${SRCS} ${HEADERS})
|
||||||
target_link_libraries(video_core glad)
|
target_link_libraries(video_core PUBLIC common core)
|
||||||
|
target_link_libraries(video_core PRIVATE glad)
|
||||||
|
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64)
|
||||||
target_link_libraries(video_core xbyak)
|
target_link_libraries(video_core PRIVATE xbyak)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (PNG_FOUND)
|
if (PNG_FOUND)
|
||||||
target_link_libraries(video_core ${PNG_LIBRARIES})
|
target_link_libraries(video_core PRIVATE ${PNG_LIBRARIES})
|
||||||
include_directories(${PNG_INCLUDE_DIRS})
|
target_include_directories(video_core PRIVATE ${PNG_INCLUDE_DIRS})
|
||||||
add_definitions(${PNG_DEFINITIONS})
|
target_compile_definitions(video_core PRIVATE ${PNG_DEFINITIONS})
|
||||||
endif()
|
endif()
|
||||||
|
Loading…
Reference in New Issue
Block a user