summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2014-08-01 23:23:52 -0700
committerPierre Bourdon <delroth@gmail.com>2014-08-02 09:34:39 -0700
commit8b26d7bf1ef478ff2f06d3cf0b0712418d1a8627 (patch)
tree9611fbdb109eb470136d827aae43b5d9bfae7d0d /Source
parent226a9c239220c5ba99508a6b96ce28903a35be80 (diff)
UnitTests: make it possible to build tests for code that has global dependencies
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Common/CMakeLists.txt7
-rw-r--r--Source/Core/Core/CMakeLists.txt15
-rw-r--r--Source/Core/DolphinWX/CMakeLists.txt29
-rw-r--r--Source/Core/InputCommon/CMakeLists.txt11
-rw-r--r--Source/UnitTests/CMakeLists.txt13
-rw-r--r--Source/UnitTests/Common/CMakeLists.txt14
-rw-r--r--Source/UnitTests/Core/CMakeLists.txt2
-rw-r--r--Source/UnitTests/TestUtils/CMakeLists.txt9
-rw-r--r--Source/UnitTests/TestUtils/StubHost.cpp34
9 files changed, 93 insertions, 41 deletions
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 <string>
+
+#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; }