diff --git a/Source/Core/Common/CMakeLists.txt b/Source/Core/Common/CMakeLists.txt index f375661e0b..d5974ecca6 100644 --- a/Source/Core/Common/CMakeLists.txt +++ b/Source/Core/Common/CMakeLists.txt @@ -48,6 +48,11 @@ if(WIN32) set(SRCS ${SRCS} ExtendedTrace.cpp) endif(WIN32) +set(LIBS "${CMAKE_THREAD_LIBS_INIT}") +if((NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND (NOT ANDROID)) + set(LIBS ${LIBS} rt) +endif() + enable_precompiled_headers(stdafx.h stdafx.cpp SRCS) -add_dolphin_library(common "${SRCS}" "${CMAKE_THREAD_LIBS_INIT}") +add_dolphin_library(common "${SRCS}" "${LIBS}") diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index 77f778c877..1bf53a0519 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -221,7 +221,18 @@ if(_M_ARM_32) ) endif() -set(LIBS bdisasm inputcommon videoogl videosoftware sfml-network) +set(LIBS + audiocommon + bdisasm + common + discio + inputcommon + ${LZO} + sfml-network + videoogl + videosoftware + z + ) if(LIBUSB_FOUND) # Using shared LibUSB @@ -236,6 +247,8 @@ if(WIN32) HW/WiimoteReal/IOWin.cpp) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(SRCS ${SRCS} HW/BBA-TAP/TAP_Apple.cpp HW/WiimoteReal/IOdarwin.mm) + set(LIBS ${LIBS} + ${IOB_LIBRARY}) elseif(UNIX) set(SRCS ${SRCS} HW/BBA-TAP/TAP_Unix.cpp) if((${CMAKE_SYSTEM_NAME} MATCHES "Linux") AND BLUEZ_FOUND) diff --git a/Source/Core/DolphinWX/CMakeLists.txt b/Source/Core/DolphinWX/CMakeLists.txt index 6d044d3279..b7d23eac90 100644 --- a/Source/Core/DolphinWX/CMakeLists.txt +++ b/Source/Core/DolphinWX/CMakeLists.txt @@ -4,41 +4,17 @@ endif() set(LIBS core ${LZO} - discio - bdisasm - inputcommon - common - audiocommon - z - sfml-network ${GTK2_LIBRARIES}) -if((NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND (NOT ANDROID)) - set(LIBS ${LIBS} rt) -endif() - if(NOT ANDROID) if(USE_X11) - set(LIBS ${LIBS} ${X11_LIBRARIES} - ${XINPUT2_LIBRARIES} - ${XRANDR_LIBRARIES}) + set(LIBS ${LIBS} ${XRANDR_LIBRARIES}) endif() if(USE_WAYLAND) - set(LIBS ${LIBS} ${WAYLAND_LIBRARIES} - ${XKBCOMMON_LIBRARIES}) + set(LIBS ${LIBS} ${WAYLAND_LIBRARIES} ${XKBCOMMON_LIBRARIES}) endif() link_directories(${CMAKE_PREFIX_PATH}/lib) - - if(SDL2_FOUND) - # Using shared SDL2 - set(LIBS ${LIBS} ${SDL2_LIBRARY}) - else(SDL2_FOUND) - if(SDL_FOUND) - # Using shared SDL - set(LIBS ${LIBS} ${SDL_LIBRARY}) - endif() - endif() else() set(LIBS ${LIBS} png iconv) endif() @@ -135,7 +111,6 @@ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") ${COREAUDIO_LIBRARY} ${COREFUND_LIBRARY} ${CORESERV_LIBRARY} - ${IOB_LIBRARY} ${IOK_LIBRARY} ${FORCEFEEDBACK} ) diff --git a/Source/Core/InputCommon/CMakeLists.txt b/Source/Core/InputCommon/CMakeLists.txt index 6b771c38e1..92fce634e3 100644 --- a/Source/Core/InputCommon/CMakeLists.txt +++ b/Source/Core/InputCommon/CMakeLists.txt @@ -4,6 +4,9 @@ set(SRCS ControllerEmu.cpp ControllerInterface/Device.cpp ControllerInterface/ExpressionParser.cpp) + +set(LIBS common) + if(WIN32) set(SRCS ${SRCS} ControllerInterface/DInput/DInput.cpp @@ -24,6 +27,7 @@ elseif(X11_FOUND) set(SRCS ${SRCS} ControllerInterface/Xlib/XInput2.cpp) endif() + set(LIBS ${LIBS} ${X11_LIBRARIES} ${XINPUT2_LIBRARIES}) elseif(ANDROID) set(SRCS ${SRCS} ControllerInterface/Android/Android.cpp) @@ -31,6 +35,11 @@ endif() if(SDL_FOUND OR SDL2_FOUND) set(SRCS ${SRCS} ControllerInterface/SDL/SDL.cpp) + if (SDL2_FOUND) + set(LIBS ${LIBS} ${SDL2_LIBRARY}) + elseif(SDL_FOUND) + set(LIBS ${LIBS} ${SDL_LIBRARY}) + endif() endif() -add_dolphin_library(inputcommon "${SRCS}" "") +add_dolphin_library(inputcommon "${SRCS}" "${LIBS}") diff --git a/Source/UnitTests/CMakeLists.txt b/Source/UnitTests/CMakeLists.txt index f75c6199d7..fc896f4e1b 100644 --- a/Source/UnitTests/CMakeLists.txt +++ b/Source/UnitTests/CMakeLists.txt @@ -1,12 +1,19 @@ -macro(add_dolphin_test target srcs libs) - add_executable(Tests/${target} EXCLUDE_FROM_ALL ${srcs}) +macro(add_dolphin_test target srcs) + # Since this is a Core dependency, it can't be linked as a library and has + # to be linked as an object file. Otherwise CMake inserts the library after + # core, but before other core dependencies like videocommon which also use + # Host_ functions. + set(srcs2 ${srcs} ${CMAKE_SOURCE_DIR}/Source/UnitTests/TestUtils/StubHost.cpp) + add_executable(Tests/${target} EXCLUDE_FROM_ALL ${srcs2}) add_custom_command(TARGET Tests/${target} PRE_LINK COMMAND mkdir -p ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests) - target_link_libraries(Tests/${target} ${libs} gtest) + target_link_libraries(Tests/${target} core gtest) add_dependencies(unittests Tests/${target}) add_test(NAME ${target} COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests/${target}) endmacro(add_dolphin_test) +add_subdirectory(TestUtils) + add_subdirectory(Common) add_subdirectory(Core) diff --git a/Source/UnitTests/Common/CMakeLists.txt b/Source/UnitTests/Common/CMakeLists.txt index 42c0a8aaed..05337f4321 100644 --- a/Source/UnitTests/Common/CMakeLists.txt +++ b/Source/UnitTests/Common/CMakeLists.txt @@ -1,7 +1,7 @@ -add_dolphin_test(BitFieldTest BitFieldTest.cpp common) -add_dolphin_test(CommonFuncsTest CommonFuncsTest.cpp common) -add_dolphin_test(EventTest EventTest.cpp common) -add_dolphin_test(FifoQueueTest FifoQueueTest.cpp common) -add_dolphin_test(FixedSizeQueueTest FixedSizeQueueTest.cpp common) -add_dolphin_test(FlagTest FlagTest.cpp common) -add_dolphin_test(MathUtilTest MathUtilTest.cpp common) +add_dolphin_test(BitFieldTest BitFieldTest.cpp) +add_dolphin_test(CommonFuncsTest CommonFuncsTest.cpp) +add_dolphin_test(EventTest EventTest.cpp) +add_dolphin_test(FifoQueueTest FifoQueueTest.cpp) +add_dolphin_test(FixedSizeQueueTest FixedSizeQueueTest.cpp) +add_dolphin_test(FlagTest FlagTest.cpp) +add_dolphin_test(MathUtilTest MathUtilTest.cpp) diff --git a/Source/UnitTests/Core/CMakeLists.txt b/Source/UnitTests/Core/CMakeLists.txt index e52290e387..93f635a3ea 100644 --- a/Source/UnitTests/Core/CMakeLists.txt +++ b/Source/UnitTests/Core/CMakeLists.txt @@ -1 +1 @@ -add_dolphin_test(MMIOTest MMIOTest.cpp core) +add_dolphin_test(MMIOTest MMIOTest.cpp) diff --git a/Source/UnitTests/TestUtils/CMakeLists.txt b/Source/UnitTests/TestUtils/CMakeLists.txt new file mode 100644 index 0000000000..79424a42a6 --- /dev/null +++ b/Source/UnitTests/TestUtils/CMakeLists.txt @@ -0,0 +1,9 @@ +set(SRCS + # Do not add StubHost.cpp here - it is added manually via add_dolphin_test. + ) + +set(LIBS + ) + +# TODO: uncomment when there is actually something here. +#add_dolphin_library(testutils "${SRCS}" "${LIBS}") diff --git a/Source/UnitTests/TestUtils/StubHost.cpp b/Source/UnitTests/TestUtils/StubHost.cpp new file mode 100644 index 0000000000..7dc5871c8e --- /dev/null +++ b/Source/UnitTests/TestUtils/StubHost.cpp @@ -0,0 +1,34 @@ +// Copyright 2014 Dolphin Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +// Stub implementation of the Host_* callbacks for tests. These implementations +// do nothing except return default values when required. + +#include + +#include "Core/Host.h" +#include "VideoBackends/OGL/GLInterfaceBase.h" + +void Host_NotifyMapLoaded() {} +void Host_RefreshDSPDebuggerWindow() {} +void Host_ShowJitResults(unsigned int) {} +void Host_Message(int) {} +void* Host_GetRenderHandle() { return nullptr; } +void* Host_GetInstance() { return nullptr; } +void Host_UpdateTitle(const std::string&) {} +void Host_UpdateLogDisplay() {} +void Host_UpdateDisasmDialog() {} +void Host_UpdateMainFrame() {} +void Host_UpdateBreakPointView() {} +void Host_GetRenderWindowSize(int&, int&, int&, int&) {} +void Host_RequestRenderWindowSize(int, int) {} +void Host_SetStartupDebuggingParameters() {} +bool Host_UIHasFocus() { return false; } +bool Host_RendererHasFocus() { return false; } +void Host_ConnectWiimote(int, bool) {} +void Host_UpdateStatusBar(const std::string&, int) {} +void Host_SysMessage(const char*, ...) {} +void Host_SetWiiMoteConnectionState(int) {} +void Host_ShowVideoConfig(void*, const std::string&, const std::string&) {} +cInterfaceBase* HostGL_CreateGLInterface() { return nullptr; }