From fedba6c4f83b1d061b05da549cfc7c2364119373 Mon Sep 17 00:00:00 2001 From: NeoBrainX Date: Mon, 1 Nov 2010 15:47:02 +0000 Subject: [PATCH] Add an experimental CMake build system as a possible replacement for SCons. Only tested on Linux, should work on OS X and Windows in the future as well though. Some notes about this: - config.h doesn't get written yet, so you'll have to use one generated by SCons - dependency checking isn't really implemented, yet. Just some basic checks for OpenGL or ALSA, we need something more sophisticated though. - the OpenGL plugin fails to load for some reason which I can't debug right now due to the libc debuginfo package version in openSUSE not matching the runtime packages - there's even some support for generating install packages (rpm/deb/.. packages, NSIS installer, etc). It doesn't work properly right now though, since some paths seem to be hardcoded into Dolphin's source - probably lots of other stuff I forgot... Just take a look at all the TODOs in the CMakeLists.txt files for more information ;P Additionally, I added various files to the svn:ignore list. tl;dr: Unless you are a dev or you're building binary packages, this commit shouldn't bother you :P git-svn-id: http://dolphin-emu.googlecode.com/svn/trunk@6326 8ced0084-cf51-0410-be5f-012b33b47a6e --- CMakeLists.txt | 256 ++++++++++++++++++++++++++ Externals/Bochs_disasm/CMakeLists.txt | 11 ++ Externals/LZO/CMakeLists.txt | 1 + Externals/Lua/CMakeLists.txt | 38 ++++ Externals/SFML/CMakeLists.txt | 12 ++ Externals/SOIL/CMakeLists.txt | 6 + Externals/WiiUse/CMakeLists.txt | 14 ++ Source/CMakeLists.txt | 3 + Source/Core/AudioCommon/CMakeLists.txt | 31 ++++ Source/Core/CMakeLists.txt | 15 ++ Source/Core/Common/CMakeLists.txt | 42 +++++ Source/Core/Core/CMakeLists.txt | 144 +++++++++++++++ Source/Core/DSPCore/CMakeLists.txt | 25 +++ Source/Core/DebuggerUICommon/CMakeLists.txt | 5 + Source/Core/DebuggerWX/CMakeLists.txt | 13 ++ Source/Core/DiscIO/CMakeLists.txt | 25 +++ Source/Core/DolphinWX/CMakeLists.txt | 79 ++++++++ Source/Core/InputCommon/CMakeLists.txt | 26 +++ Source/Core/InputUICommon/CMakeLists.txt | 4 + Source/Core/VideoCommon/CMakeLists.txt | 41 +++++ Source/Plugins/CMakeLists.txt | 4 + Source/Plugins/Plugin_DSP_HLE/CMakeLists.txt | 24 +++ Source/Plugins/Plugin_DSP_LLE/CMakeLists.txt | 22 +++ Source/Plugins/Plugin_VideoOGL/CMakeLists.txt | 38 ++++ 24 files changed, 879 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 Externals/Bochs_disasm/CMakeLists.txt create mode 100644 Externals/LZO/CMakeLists.txt create mode 100644 Externals/Lua/CMakeLists.txt create mode 100644 Externals/SFML/CMakeLists.txt create mode 100644 Externals/SOIL/CMakeLists.txt create mode 100644 Externals/WiiUse/CMakeLists.txt create mode 100644 Source/CMakeLists.txt create mode 100644 Source/Core/AudioCommon/CMakeLists.txt create mode 100644 Source/Core/CMakeLists.txt create mode 100644 Source/Core/Common/CMakeLists.txt create mode 100644 Source/Core/Core/CMakeLists.txt create mode 100644 Source/Core/DSPCore/CMakeLists.txt create mode 100644 Source/Core/DebuggerUICommon/CMakeLists.txt create mode 100644 Source/Core/DebuggerWX/CMakeLists.txt create mode 100644 Source/Core/DiscIO/CMakeLists.txt create mode 100644 Source/Core/DolphinWX/CMakeLists.txt create mode 100644 Source/Core/InputCommon/CMakeLists.txt create mode 100644 Source/Core/InputUICommon/CMakeLists.txt create mode 100644 Source/Core/VideoCommon/CMakeLists.txt create mode 100644 Source/Plugins/CMakeLists.txt create mode 100644 Source/Plugins/Plugin_DSP_HLE/CMakeLists.txt create mode 100644 Source/Plugins/Plugin_DSP_LLE/CMakeLists.txt create mode 100644 Source/Plugins/Plugin_VideoOGL/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..00725be61 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,256 @@ +######################################## +# General setup +# +cmake_minimum_required (VERSION 2.6) +project (dolphin-emu) + +set(DOLPHIN_IS_STABLE FALSE) +set(DOLPHIN_BIN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Binary/${CMAKE_HOST_SYSTEM_NAME}) +set(DOLPHIN_PLUGINS_DIR ${DOLPHIN_BIN_DIR}/plugins) +set(DOLPHIN_USER_DIR ${DOLPHIN_BIN_DIR}) +set(DOLPHIN_SYS_DIR ${DOLPHIN_BIN_DIR}) +set(DOLPHIN_LICENSE_DIR ${DOLPHIN_BIN_DIR}) + +include(FindSubversion OPTIONAL) # for revision info +if(Subversion_FOUND) + Subversion_WC_INFO(. DOLPHIN) # defines DOLPHIN_WC_REVISION +endif() + +include(FindPkgConfig REQUIRED) # TODO: Make this optional or even implement our own package detection + +# setup paths +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DOLPHIN_BIN_DIR}) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${DOLPHIN_PLUGINS_DIR}) + +# Various compile flags - TODO: Can these be simplified with a more general CMake variable? +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2") + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g") + +# gcc uses some optimizations which might break stuff without this flag +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing") + +add_definitions(-DFILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE) + +if(UNIX) + # UNIX needs -fPIC for shared libraries, TODO: Would -fpic be enough as well? + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") +endif(UNIX) + + +######################################## +# Dependency checking +# +# TODO: Use find_library for other stuff? +# +# NOTES: +# there are numerous possible cases: +# - dependency may be required or optional +# - dependency may be already installed (but optionally the bundled one may be used) +# +# TODO: We should have a number of options for optional dependencies (disable, force bundled, bundled or native, force native) +# e.g. the OpenGL plugin defaults to force native, so we error out if no GL libs are found. The user is free to explicitely disable it though. +# Stuff which is likely to be needed by users is made an option with default ON, other stuff (like e.g. sound backends) is made completely optionally. + +# TODO: wxWidgets: Since _DEBUG gets defined in Debug builds, wxWidgets will enable some debugging functionality as well. +# However, because we still link against release wx libs, which makes compilation fail because of undefined references. +# When building the Debug configuration, we should probably check if the debug wx libs are available and fall back to the bundled ones otherwise. + +include(FindOpenGL REQUIRED) + +include(FindALSA OPTIONAL) +include(FindGTK2 OPTIONAL) # TODO: Or REQUIRED? +include(FindOpenAL OPTIONAL) +include(FindwxWidgets OPTIONAL) +include(FindX11 OPTIONAL) # TODO: Or REQUIRED on UNIX? + +pkg_search_module(AO ao) +pkg_search_module(BLUEZ bluez) + +# TODO: Make some of these optional like explained above +if(ALSA_FOUND) + add_definitions(-DHAVE_ALSA=1) + message("ALSA found, enabling ALSA sound backend") +else() + add_definitions(-DHAVE_ALSA=0) + message("ALSA NOT found, disabling ALSA sound backend") +endif(ALSA_FOUND) + +if(AO_FOUND) + add_definitions(-DHAVE_AO=1) + include_directories(${AO_INCLUDE_DIRS}) + message("ao found, enabling ao sound backend") +else() + add_definitions(-DHAVE_AO=0) + message("ao NOT found, disabling ao sound backend") +endif(AO_FOUND) + +if(BLUEZ_FOUND) + add_definitions(-DHAVE_BLUEZ=1) + include_directories(${BLUEZ_INCLUDE_DIRS}) + message("bluez found, enabling bluetooth support") +else() + add_definitions(-DHAVE_BLUEZ=0) + message("bluez NOT found, enabling bluetooth support") +endif(BLUEZ_FOUND) + +include_directories(${OPENGL_INCLUDE_DIR}) + +if(GTK2_FOUND) + include_directories(${GTK2_INCLUDE_DIRS}) + message("GTK 2 found") # TODO: What is this needed for actually? +else() + message("GTK 2 NOT found") +endif(GTK2_FOUND) + +if(OPENAL_FOUND) + add_definitions(-DHAVE_OPENAL=1) + include_directories(${OPENAL_INCLUDE_DIR}) + message("OpenAL found, enabling OpenAL sound backend") +else() + add_definitions(-DHAVE_OPENAL=0) + message("OpenAL NOT found, disabling OpenAL sound backend") +endif(OPENAL_FOUND) + +if(wxWidgets_FOUND) + add_definitions(-DHAVE_WX=1) + include(${wxWidgets_USE_FILE}) + message("wxWidgets found, enabling GUI build") +else(wxWidgets_FOUND) + add_definitions(-DHAVE_WX=0) + message("wxWidgets NOT found, disabling GUI build (using CLI interface)") +endif(wxWidgets_FOUND) + +if(X11_FOUND) + add_definitions(-DHAVE_X11=1) + include_directories(${X11_INCLUDE_DIR}) + message("X11 found") # TODO: What is this needed for actually? +else() + add_definitions(-DHAVE_X11=0) + message("X11 NOT found") +endif(X11_FOUND) + + +######################################## +# Setup include directories (and make sure they are preferred over the Externals) +# +include_directories(Source/PluginSpecs) +include_directories(Externals) +include_directories(.) # config.h, TODO: Move to Source? Or just add the corresponding definitions to the compiler flags? +include_directories(Source/Core/AudioCommon/Src) +include_directories(Source/Core/Common/Src) +include_directories(Source/Core/Core/Src) +include_directories(Source/Core/DebuggerUICommon/Src) +include_directories(Source/Core/DebuggerWX/Src) +include_directories(Source/Core/DiscIO/Src) +include_directories(Source/Core/DolphinWX/Src) +include_directories(Source/Core/DSPCore/Src) +include_directories(Source/Core/InputCommon/Src) +include_directories(Source/Core/InputUICommon/Src) +include_directories(Source/Core/VideoCommon/Src) + + +######################################## +# Process externals and setup their include directories +# +# NOTES about adding Externals: +# - add the include directory here +# - make sure to tell cmake to link them statically or dynamically (most should be linked statically) +# - ideally, the nested CMakeLists.txt should only contain a list of sources and an add_library()+target_link_libraries() call pair +# - place the CMakeLists.txt in the first-level subdirectory, e.g. Externals/WiiUse/CMakeLists.txt (that is: NOT in some Src/ subdirectory) +# +add_subdirectory(Externals/Bochs_disasm) +include_directories(Externals/Bochs_disasm) + +# TODO: Try using the native lib first +add_subdirectory(Externals/Lua) +include_directories(Externals/Lua) + +# TODO: Try using the native lib first +add_subdirectory(Externals/LZO) +include_directories(Externals/LZO) + +include(FindSDL OPTIONAL) +if(SDL_FOUND) + include_directories(SLD_INCLUDE_DIR) +else(SDL_FOUND) + # TODO: No CMakeLists.txt there, yet... + add_subdirectory(Externals/SDL) + include_directories(Externals/SDL/include) +endif(SDL_FOUND) + +# TODO: Try using the native lib first +add_subdirectory(Externals/SFML) +include_directories(Externals/SFML/include) + +# TODO: Try using the native lib first +add_subdirectory(Externals/SOIL) +include_directories(Externals/SOIL) # TODO: Or Externals/SOIL/SOIL? + +include(FindZLIB OPTIONAL) # TODO: Move to top +if(ZLIB_FOUND) + include_directories(ZLIB_INCLUDE_DIRS) +else(ZLIB_FOUND) + # TODO: No CMakeLists.txt there, yet... + add_subdirectory(Externals/zlib) + include_directories(Externals/zlib) +endif(ZLIB_FOUND) + +add_subdirectory(Externals/WiiUse) +include_directories(Externals/WiiUse/Src) + + +######################################## +# Pre-build events: Define configuration variables and write svnrev header +# +file(WRITE ./Source/Core/Common/Src/svnrev.h "#define SVN_REV_STR \"" ${DOLPHIN_WC_REVISION} "-" ${CMAKE_BUILD_TYPE} "\"") +# TODO: Write config.h here or add the corresponding compile definitions using add_definitions + + +######################################## +# Start compiling our code +# +add_subdirectory(Source) + + +######################################## +# copy over the Data folder ... TODO: Don't copy .svn dirs! +# +file(COPY Data/user DESTINATION ${DOLPHIN_USER_DIR}) +file(COPY Data/sys DESTINATION ${DOLPHIN_SYS_DIR}) +file(COPY Data/license.txt DESTINATION ${DOLPHIN_LICENSE_DIR}) + + +######################################## +# Install and CPack information +# +install(DIRECTORY Data/user DESTINATION share/dolphin-emu) +install(DIRECTORY Data/sys DESTINATION share/dolphin-emu) +install(FILES Data/license.txt DESTINATION share/dolphin-emu) +# TODO: Move childrens's install commands here? + +# packaging information +include(CPack) +set(CPACK_PACKAGE_NAME "dolphin-emu") +set(CPACK_PACKAGE_VENDOR "Dolphin Team") +set(CPACK_PACKAGE_VERSION_MAJOR "2") +set(CPACK_PACKAGE_VERSION_MINOR "0") + +if(DOLPHIN_IS_STABLE) + set(CPACK_PACKAGE_VERSION_PATCH "0") +else() + set(CPACK_PACKAGE_VERSION_PATCH ${DOLPHIN_WC_REV}) +endif() + +# TODO: CPACK_PACKAGE_DESCRIPTION_FILE +# TODO: CPACK_PACKAGE_DESCRIPTION_SUMMARY +# TODO: CPACK_RESOURCE_FILE_README +# TODO: CPACK_RESOURCE_FILE_WELCOME +# TODO: CPACK_PACKAGE_EXECUTABLES +# TODO: CPACK_PACKAGE_ICON +# TODO: CPACK_NSIS_* +# TODO: Use CPack components for DSPSpy, etc => cpack_add_component diff --git a/Externals/Bochs_disasm/CMakeLists.txt b/Externals/Bochs_disasm/CMakeLists.txt new file mode 100644 index 000000000..93a73f939 --- /dev/null +++ b/Externals/Bochs_disasm/CMakeLists.txt @@ -0,0 +1,11 @@ +set(SRCS dis_decode.cpp + dis_groups.cpp + resolve.cpp + syntax.cpp + PowerPCDisasm.cpp) + +if(WIN32) + set(SRCS ${SRCS} stdafx.cpp) +endif(WIN32) + +add_library(bdisasm STATIC ${SRCS}) diff --git a/Externals/LZO/CMakeLists.txt b/Externals/LZO/CMakeLists.txt new file mode 100644 index 000000000..78f58eff2 --- /dev/null +++ b/Externals/LZO/CMakeLists.txt @@ -0,0 +1 @@ +add_library(lzo2 STATIC minilzo.c) diff --git a/Externals/Lua/CMakeLists.txt b/Externals/Lua/CMakeLists.txt new file mode 100644 index 000000000..9bec9d894 --- /dev/null +++ b/Externals/Lua/CMakeLists.txt @@ -0,0 +1,38 @@ +# TODO? +#luaenv = env.Clone() +# +#if not sys.platform == 'win32': +# luaenv['CPPDEFINES'].append('LUA_USE_LINUX') # Also works for OS X + +set(SRCS lapi.c + lauxlib.c + lbaselib.c + lcode.c + ldblib.c + ldebug.c + ldo.c + ldump.c + lfunc.c + lgc.c + linit.c + liolib.c + llex.c + lmathlib.c + lmem.c + loadlib.c + lobject.c + lopcodes.c + loslib.c + lparser.c + lstate.c + lstring.c + lstrlib.c + ltable.c + ltablib.c + ltm.c + lundump.c + lvm.c + lzio.c + print.c) + +add_library(lua STATIC ${SRCS}) diff --git a/Externals/SFML/CMakeLists.txt b/Externals/SFML/CMakeLists.txt new file mode 100644 index 000000000..2329435fe --- /dev/null +++ b/Externals/SFML/CMakeLists.txt @@ -0,0 +1,12 @@ +include_directories(include) + +set(SRCS src/SFML/Network/Ftp.cpp + src/SFML/Network/Http.cpp + src/SFML/Network/IPAddress.cpp + src/SFML/Network/Packet.cpp + src/SFML/Network/SelectorBase.cpp + src/SFML/Network/SocketTCP.cpp + src/SFML/Network/SocketUDP.cpp + src/SFML/Network/Unix/SocketHelper.cpp) + +add_library(sfml-network ${SRCS}) diff --git a/Externals/SOIL/CMakeLists.txt b/Externals/SOIL/CMakeLists.txt new file mode 100644 index 000000000..9657ba60f --- /dev/null +++ b/Externals/SOIL/CMakeLists.txt @@ -0,0 +1,6 @@ +set(SRCS image_DXT.c + image_helper.c + SOIL.c + stb_image_aug.c) + +add_library(SOIL STATIC ${SRCS}) diff --git a/Externals/WiiUse/CMakeLists.txt b/Externals/WiiUse/CMakeLists.txt new file mode 100644 index 000000000..e750d16fe --- /dev/null +++ b/Externals/WiiUse/CMakeLists.txt @@ -0,0 +1,14 @@ +set(SRCS Src/ir.c + Src/wiiuse.c) + +if(APPLE) + set(SRCS ${SRCS} Src/io_osx.m) +elseif(UNIX) + set(SRCS ${SRCS} Src/io_nix.c) + set(LIBS ${LIBS} bluetooth) +elseif(WIN32) + set(SRCS ${SRCS} Src/io_win.c) +endif() + +add_library(wiiuse STATIC ${SRCS}) +target_link_libraries(wiiuse ${LIBS}) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt new file mode 100644 index 000000000..a70e15211 --- /dev/null +++ b/Source/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(Core) +add_subdirectory(Plugins) +# TODO: Add DSPSpy, DSPTool, TestSuite and UnitTests. Preferrably make them option()s and cpack components diff --git a/Source/Core/AudioCommon/CMakeLists.txt b/Source/Core/AudioCommon/CMakeLists.txt new file mode 100644 index 000000000..94987926e --- /dev/null +++ b/Source/Core/AudioCommon/CMakeLists.txt @@ -0,0 +1,31 @@ +set(SRCS Src/AudioCommon.cpp + Src/AudioCommonConfig.cpp + Src/Mixer.cpp + Src/WaveFile.cpp) + + +if(APPLE) + set(SRCS ${SRCS} Src/CoreAudioSoundStream.cpp) +else() + if(ALSA_FOUND) + set(SRCS ${SRCS} Src/AlsaSoundStream.cpp) + endif(ALSA_FOUND) + + if(AO_FOUND) + set(SRCS ${SRCS} Src/AOSoundStream.cpp) + endif(AO_FOUND) + + if(OPENAL_FOUND OR WIN32) + set(SRCS ${SRCS} Src/OpenALSoundStream.cpp) + endif(OPENAL_FOUND OR WIN32) + + if(PULSEAUDIO_FOUND) + set(SRCS ${SRCS} Src/PulseAudioStream.cpp) + endif(PULSEAUDIO_FOUND) + + if(WIN32) + set(SRCS ${SRCS} Src/DSoundStream.cpp) + endif(WIN32) +endif() + +add_library(audiocommon STATIC ${SRCS}) diff --git a/Source/Core/CMakeLists.txt b/Source/Core/CMakeLists.txt new file mode 100644 index 000000000..ff9b5c9ae --- /dev/null +++ b/Source/Core/CMakeLists.txt @@ -0,0 +1,15 @@ +add_subdirectory(AudioCommon) +add_subdirectory(Common) +add_subdirectory(Core) + +if(wxWidgets_FOUND) + add_subdirectory(DebuggerUICommon) + add_subdirectory(DebuggerWX) + add_subdirectory(InputUICommon) +endif() + +add_subdirectory(DiscIO) +add_subdirectory(DolphinWX) +add_subdirectory(DSPCore) +add_subdirectory(InputCommon) +add_subdirectory(VideoCommon) diff --git a/Source/Core/Common/CMakeLists.txt b/Source/Core/Common/CMakeLists.txt new file mode 100644 index 000000000..e7aded6b8 --- /dev/null +++ b/Source/Core/Common/CMakeLists.txt @@ -0,0 +1,42 @@ +set(SRCS Src/ABI.cpp + Src/BreakPoints.cpp + Src/CDUtils.cpp + Src/ColorUtil.cpp + Src/ConsoleListener.cpp + Src/CPUDetect.cpp + Src/DynamicLibrary.cpp + Src/FileSearch.cpp + Src/FileUtil.cpp + Src/Hash.cpp + Src/IniFile.cpp + Src/LogManager.cpp + Src/MathUtil.cpp + Src/MemArena.cpp + Src/MemoryUtil.cpp + Src/Misc.cpp + Src/MsgHandler.cpp + Src/NandPaths.cpp + Src/OpenCL.cpp + Src/Plugin.cpp + Src/PluginDSP.cpp + Src/PluginVideo.cpp + Src/SDCardUtil.cpp + Src/StringUtil.cpp + Src/SymbolDB.cpp + Src/SysConf.cpp + Src/Thread.cpp + Src/Thunk.cpp + Src/Timer.cpp + Src/Version.cpp + Src/x64Analyzer.cpp + Src/x64Emitter.cpp + Src/Crypto/bn.cpp + Src/Crypto/ec.cpp + Src/Crypto/md5.cpp + Src/Crypto/sha1.cpp) + +if(WIN32) + set(SRCS ${SRCS} Src/ExtendedTrace.cpp Src/stdafx.cpp) +endif(WIN32) + +add_library(common STATIC ${SRCS}) diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt new file mode 100644 index 000000000..1f6679855 --- /dev/null +++ b/Source/Core/Core/CMakeLists.txt @@ -0,0 +1,144 @@ +set(SRCS Src/ActionReplay.cpp + Src/ARDecrypt.cpp + Src/ConfigManager.cpp + Src/Console.cpp + Src/Core.cpp + Src/CoreParameter.cpp + Src/CoreRerecording.cpp + Src/CoreTiming.cpp + Src/GeckoCodeConfig.cpp + Src/GeckoCode.cpp + Src/LuaInterface.cpp + Src/MemTools.cpp + Src/OnFrame.cpp + Src/PatchEngine.cpp + Src/PluginManager.cpp + Src/State.cpp + Src/stdafx.cpp + Src/Tracer.cpp + Src/VolumeHandler.cpp + Src/Boot/Boot_BS2Emu.cpp + Src/Boot/Boot.cpp + Src/Boot/Boot_DOL.cpp + Src/Boot/Boot_ELF.cpp + Src/Boot/Boot_WiiWAD.cpp + Src/Boot/ElfReader.cpp + Src/Debugger/Debugger_SymbolMap.cpp + Src/Debugger/Dump.cpp + Src/Debugger/PPCDebugInterface.cpp + Src/HLE/HLE.cpp + Src/HLE/HLE_Misc.cpp + Src/HLE/HLE_OS.cpp + Src/HW/AudioInterface.cpp + Src/HW/CPU.cpp + Src/HW/DSP.cpp + Src/HW/DVDInterface.cpp + Src/HW/EXI_Channel.cpp + Src/HW/EXI.cpp + Src/HW/EXI_Device.cpp + Src/HW/EXI_DeviceAD16.cpp + Src/HW/EXI_DeviceAMBaseboard.cpp + Src/HW/EXI_DeviceEthernet.cpp + Src/HW/EXI_DeviceIPL.cpp + Src/HW/EXI_DeviceMemoryCard.cpp + Src/HW/EXI_DeviceMic.cpp + Src/HW/GCPad.cpp + Src/HW/GCPadEmu.cpp + Src/HW/GPFifo.cpp + Src/HW/HW.cpp + Src/HW/Memmap.cpp + Src/HW/MemmapFunctions.cpp + Src/HW/MemoryInterface.cpp + Src/HW/ProcessorInterface.cpp + Src/HW/SI.cpp + Src/HW/SI_DeviceAMBaseboard.cpp + Src/HW/SI_Device.cpp + Src/HW/SI_DeviceGBA.cpp + Src/HW/SI_DeviceGCController.cpp + Src/HW/StreamADPCM.cpp + Src/HW/SystemTimers.cpp + Src/HW/VideoInterface.cpp + Src/HW/WII_IOB.cpp + Src/HW/WII_IPC.cpp + Src/HW/Wiimote.cpp + Src/HW/WiimoteEmu/WiimoteEmu.cpp + Src/HW/WiimoteEmu/Attachment/Classic.cpp + Src/HW/WiimoteEmu/Attachment/Attachment.cpp + Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp + Src/HW/WiimoteEmu/Attachment/Drums.cpp + Src/HW/WiimoteEmu/Attachment/Guitar.cpp + Src/HW/WiimoteEmu/Attachment/Turntable.cpp + Src/HW/WiimoteEmu/EmuSubroutines.cpp + Src/HW/WiimoteEmu/Encryption.cpp + #Src/HW/WiimoteEmu/Speaker.cpp + Src/HW/WiimoteReal/WiimoteReal.cpp + Src/IPC_HLE/WII_IPC_HLE.cpp + Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp + Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp + Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp + Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp + Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp + Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp + Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp + Src/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp + Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp + Src/IPC_HLE/WiiMote_HID_Attr.cpp + Src/PowerPC/LUT_frsqrtex.cpp + Src/PowerPC/PowerPC.cpp + Src/PowerPC/PPCAnalyst.cpp + Src/PowerPC/PPCCache.cpp + Src/PowerPC/PPCSymbolDB.cpp + Src/PowerPC/PPCTables.cpp + Src/PowerPC/Profiler.cpp + Src/PowerPC/SignatureDB.cpp + Src/PowerPC/Interpreter/Interpreter_Branch.cpp + Src/PowerPC/Interpreter/Interpreter.cpp + Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp + Src/PowerPC/Interpreter/Interpreter_Integer.cpp + Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp + Src/PowerPC/Interpreter/Interpreter_LoadStorePaired.cpp + Src/PowerPC/Interpreter/Interpreter_Paired.cpp + Src/PowerPC/Interpreter/Interpreter_SystemRegisters.cpp + Src/PowerPC/Interpreter/Interpreter_Tables.cpp + Src/PowerPC/Jit64IL/IR.cpp + Src/PowerPC/Jit64IL/IR_X86.cpp + Src/PowerPC/Jit64IL/JitILAsm.cpp + Src/PowerPC/Jit64IL/JitIL_Branch.cpp + Src/PowerPC/Jit64IL/JitIL.cpp + Src/PowerPC/Jit64IL/JitIL_FloatingPoint.cpp + Src/PowerPC/Jit64IL/JitIL_Integer.cpp + Src/PowerPC/Jit64IL/JitIL_LoadStore.cpp + Src/PowerPC/Jit64IL/JitIL_LoadStoreFloating.cpp + Src/PowerPC/Jit64IL/JitIL_LoadStorePaired.cpp + Src/PowerPC/Jit64IL/JitIL_Paired.cpp + Src/PowerPC/Jit64IL/JitIL_SystemRegisters.cpp + Src/PowerPC/Jit64IL/JitIL_Tables.cpp + Src/PowerPC/Jit64/Jit64_Tables.cpp + Src/PowerPC/Jit64/JitAsm.cpp + Src/PowerPC/Jit64/Jit_Branch.cpp + Src/PowerPC/Jit64/Jit.cpp + Src/PowerPC/Jit64/Jit_FloatingPoint.cpp + Src/PowerPC/Jit64/Jit_Integer.cpp + Src/PowerPC/Jit64/Jit_LoadStore.cpp + Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp + Src/PowerPC/Jit64/Jit_LoadStorePaired.cpp + Src/PowerPC/Jit64/Jit_Paired.cpp + Src/PowerPC/Jit64/JitRegCache.cpp + Src/PowerPC/Jit64/Jit_SystemRegisters.cpp + Src/PowerPC/JitCommon/JitAsmCommon.cpp + Src/PowerPC/JitCommon/JitBackpatch.cpp + Src/PowerPC/JitCommon/JitBase.cpp + Src/PowerPC/JitCommon/JitCache.cpp + Src/PowerPC/JitCommon/Jit_Util.cpp) + +if(WIN32) + set(SRCS ${SRCS} Src/HW/BBA-TAP/TAP_Win32.cpp Src/stdafx.cpp) +elseif(APPLE) + set(SRCS ${SRCS} Src/HW/BBA-TAP/TAP_Apple.cpp) +elseif(UNIX) + set(SRCS ${SRCS} Src/HW/BBA-TAP/TAP_Unix.cpp) +endif() + +add_library(core STATIC ${SRCS}) +target_link_libraries(core bdisasm inputcommon lua sfml-network wiiuse) + diff --git a/Source/Core/DSPCore/CMakeLists.txt b/Source/Core/DSPCore/CMakeLists.txt new file mode 100644 index 000000000..8212a545d --- /dev/null +++ b/Source/Core/DSPCore/CMakeLists.txt @@ -0,0 +1,25 @@ +set(SRCS Src/assemble.cpp + Src/disassemble.cpp + Src/DSPAccelerator.cpp + Src/DSPIntCCUtil.cpp + Src/DSPIntExtOps.cpp + Src/DSPHWInterface.cpp + Src/DSPMemoryMap.cpp + Src/DSPStacks.cpp + Src/DSPAnalyzer.cpp + Src/DspIntArithmetic.cpp + Src/DspIntBranch.cpp + Src/DspIntLoadStore.cpp + Src/DspIntMisc.cpp + Src/DspIntMultiplier.cpp + Src/DSPEmitter.cpp + Src/DSPCodeUtil.cpp + Src/LabelMap.cpp + Src/DSPInterpreter.cpp + Src/DSPCore.cpp + Src/DSPTables.cpp + Src/Jit/DSPJitExtOps.cpp + Src/Jit/DSPJitUtil.cpp + Src/Jit/DSPJitMisc.cpp) + +add_library(dspcore STATIC ${SRCS}) diff --git a/Source/Core/DebuggerUICommon/CMakeLists.txt b/Source/Core/DebuggerUICommon/CMakeLists.txt new file mode 100644 index 000000000..a036501b7 --- /dev/null +++ b/Source/Core/DebuggerUICommon/CMakeLists.txt @@ -0,0 +1,5 @@ +set(SRCS Src/CodeView.cpp + Src/DebuggerUIUtil.cpp + Src/MemoryView.cpp) + +add_library(debugger_ui_util STATIC ${SRCS}) diff --git a/Source/Core/DebuggerWX/CMakeLists.txt b/Source/Core/DebuggerWX/CMakeLists.txt new file mode 100644 index 000000000..990c97f57 --- /dev/null +++ b/Source/Core/DebuggerWX/CMakeLists.txt @@ -0,0 +1,13 @@ +set(SRCS Src/BreakpointDlg.cpp + Src/BreakpointView.cpp + Src/BreakpointWindow.cpp + Src/CodeWindow.cpp + Src/CodeWindowFunctions.cpp + Src/JitWindow.cpp + Src/MemoryCheckDlg.cpp + Src/MemoryWindow.cpp + Src/RegisterView.cpp + Src/RegisterWindow.cpp) + +add_library(debwx STATIC ${SRCS}) +target_link_libraries(debwx common debugger_ui_util) diff --git a/Source/Core/DiscIO/CMakeLists.txt b/Source/Core/DiscIO/CMakeLists.txt new file mode 100644 index 000000000..d1433e91f --- /dev/null +++ b/Source/Core/DiscIO/CMakeLists.txt @@ -0,0 +1,25 @@ +set(SRCS Src/BannerLoader.cpp + Src/BannerLoaderGC.cpp + Src/BannerLoaderWii.cpp + Src/Blob.cpp + Src/CompressedBlob.cpp + Src/DiscScrubber.cpp + Src/DriveBlob.cpp + Src/FileBlob.cpp + Src/FileHandlerARC.cpp + Src/FileMonitor.cpp + Src/Filesystem.cpp + Src/FileSystemGCWii.cpp + Src/NANDContentLoader.cpp + Src/VolumeCommon.cpp + Src/VolumeCreator.cpp + Src/VolumeDirectory.cpp + Src/VolumeGC.cpp + Src/VolumeWad.cpp + Src/VolumeWiiCrypted.cpp + Src/WiiWad.cpp + Src/AES/aes_cbc.c + Src/AES/aes_core.c) + +add_library(discio STATIC ${SRCS}) +target_link_libraries(discio common) diff --git a/Source/Core/DolphinWX/CMakeLists.txt b/Source/Core/DolphinWX/CMakeLists.txt new file mode 100644 index 000000000..666a0466d --- /dev/null +++ b/Source/Core/DolphinWX/CMakeLists.txt @@ -0,0 +1,79 @@ +set(SRCS Src/BootManager.cpp) + +set(LIBS core + lzo2 + discio + bdisasm + inputcommon + common + lua + z + sfml-network) + +if(wxWidgets_FOUND) + set(MEMCARDSRCS Src/MemcardManager.cpp + Src/MemoryCards/GCMemcard.cpp + Src/WxUtils.cpp) + + set(SRCS ${SRCS} + Src/AboutDolphin.cpp + Src/ARCodeAddEdit.cpp + Src/CheatsWindow.cpp + Src/ConfigMain.cpp + Src/Frame.cpp + Src/FrameAui.cpp + Src/FrameTools.cpp + Src/GameListCtrl.cpp + Src/GeckoCodeDiag.cpp + Src/HotkeyDlg.cpp + Src/InputConfigDiag.cpp + Src/InputConfigDiagBitmaps.cpp + Src/ISOFile.cpp + Src/ISOProperties.cpp + Src/LogWindow.cpp + Src/LuaWindow.cpp + Src/Main.cpp + Src/NetPlay.cpp + Src/NetPlayClient.cpp + Src/NetPlayServer.cpp + Src/NetWindow.cpp + Src/PatchAddEdit.cpp + Src/WiimoteConfigDiag.cpp + Src/MemoryCards/WiiSaveCrypted.cpp) + + set(WXLIBS debwx + debugger_ui_util + inputuicommon + memcard + ${wxWidgets_LIBRARIES}) + +else(wxWidgets_FOUND) + set(SRCS ${SRCS} + Src/MainNoGUI.cpp + Src/cmdline.c) +endif() + +if(WIN32) + set(SRCS ${SRCS} Src/stdafx.cpp) +elseif(APPLE AND NOT wxWidgets_FOUND) + # TODO +elseif(APPLE AND wxWidgets_FOUND) + # TODO +else() + set(SRCS ${SRCS} Src/X11Utils.cpp) +endif() + +set(LIBS ${LIBS} SDL) +set(EXEGUI dolphin-emu) +set(EXENOGUI dolphin-emu-nogui) + +if(wxWidgets_FOUND) + add_library(memcard STATIC ${MEMCARDSRCS}) + add_executable(${EXEGUI} ${SRCS}) + target_link_libraries(${EXEGUI} ${LIBS} ${WXLIBS}) + install(TARGETS ${EXEGUI} RUNTIME DESTINATION bin) # TODO: Move to root dir? +else() + add_executable(${EXENOGUI} ${SRCS}) + target_link_libraries(${EXENOGUI} ${LIBS}) + install(TARGETS ${EXENOGUI} RUNTIME DESTINATION bin) # TODO: Move to root dir? +endif() diff --git a/Source/Core/InputCommon/CMakeLists.txt b/Source/Core/InputCommon/CMakeLists.txt new file mode 100644 index 000000000..7b205fa2e --- /dev/null +++ b/Source/Core/InputCommon/CMakeLists.txt @@ -0,0 +1,26 @@ +set(SRCS Src/ControllerEmu.cpp + Src/InputConfig.cpp + #Src/UDPWiimote.cpp + #Src/UDPWrapper.cpp + Src/ControllerInterface/ControllerInterface.cpp) + +if(WIN32) + set(SRCS ${SRCS} + Src/ControllerInterface/DInput/DInput.cpp + Src/ControllerInterface/DInput/DInputJoystick.cpp + Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp + Src/ControllerInterface/SDL/SDL.cpp + Src/ControllerInterface/XInput/XInput.cpp) +elseif(APPLE) + set(SRCS ${SRCS} + Src/ControllerInterface/OSX/OSX.mm + Src/ControllerInterface/OSX/OSXKeyboard.mm + Src/ControllerInterface/OSX/OSXMouse.mm + Src/ControllerInterface/SDL/SDL.cpp) +elseif(X11_FOUND) + set(SRCS ${SRCS} + Src/ControllerInterface/SDL/SDL.cpp + Src/ControllerInterface/Xlib/Xlib.cpp) +endif() + +add_library(inputcommon ${SRCS}) diff --git a/Source/Core/InputUICommon/CMakeLists.txt b/Source/Core/InputUICommon/CMakeLists.txt new file mode 100644 index 000000000..eea7e1b3d --- /dev/null +++ b/Source/Core/InputUICommon/CMakeLists.txt @@ -0,0 +1,4 @@ +set(SRCS Src/WXInputBase.cpp) + +add_library(inputuicommon ${SRCS}) +target_link_libraries(inputuicommon inputcommon) diff --git a/Source/Core/VideoCommon/CMakeLists.txt b/Source/Core/VideoCommon/CMakeLists.txt new file mode 100644 index 000000000..7ebae9776 --- /dev/null +++ b/Source/Core/VideoCommon/CMakeLists.txt @@ -0,0 +1,41 @@ +set(SRCS Src/BPMemory.cpp + Src/BPStructs.cpp + Src/CommandProcessor.cpp + Src/CPMemory.cpp + Src/DLCache.cpp + Src/Fifo.cpp + Src/HiresTextures.cpp + Src/ImageWrite.cpp + Src/IndexGenerator.cpp + Src/memcpy_amd.cpp + Src/OnScreenDisplay.cpp + Src/OpcodeDecoding.cpp + Src/PixelEngine.cpp + Src/PixelShaderGen.cpp + Src/PixelShaderManager.cpp + Src/Profiler.cpp + Src/Statistics.cpp + Src/TextureCacheBase.cpp + Src/TextureConversionShader.cpp + Src/TextureDecoder.cpp + Src/VertexLoader.cpp + Src/VertexLoaderManager.cpp + Src/VertexLoader_Color.cpp + Src/VertexLoader_Normal.cpp + Src/VertexLoader_Position.cpp + Src/VertexLoader_TextCoord.cpp + Src/VertexManagerBase.cpp + Src/VertexShaderGen.cpp + Src/VertexShaderManager.cpp + Src/VideoConfig.cpp + Src/VideoState.cpp + Src/XFBConvert.cpp + Src/XFMemory.cpp + Src/XFStructs.cpp) + +# TODO? +if(OPENCL_FOUND) + set(SRCS ${SRCS} Src/OpenCL/OCLTextureDecoder.cpp) +endif(OPENCL_FOUND) + +add_library(videocommon STATIC ${SRCS}) diff --git a/Source/Plugins/CMakeLists.txt b/Source/Plugins/CMakeLists.txt new file mode 100644 index 000000000..5e01d5ae7 --- /dev/null +++ b/Source/Plugins/CMakeLists.txt @@ -0,0 +1,4 @@ +add_subdirectory(Plugin_DSP_HLE) +add_subdirectory(Plugin_DSP_LLE) +add_subdirectory(Plugin_VideoOGL) +# TODO: Add other plugins here! diff --git a/Source/Plugins/Plugin_DSP_HLE/CMakeLists.txt b/Source/Plugins/Plugin_DSP_HLE/CMakeLists.txt new file mode 100644 index 000000000..46d5d820e --- /dev/null +++ b/Source/Plugins/Plugin_DSP_HLE/CMakeLists.txt @@ -0,0 +1,24 @@ +set(SRCS + Src/DSPHandler.cpp + Src/MailHandler.cpp + Src/HLEMixer.cpp + Src/main.cpp + Src/Config.cpp + Src/UCodes/UCode_AX.cpp + Src/UCodes/UCode_AXWii.cpp + Src/UCodes/UCode_CARD.cpp + Src/UCodes/UCode_InitAudioSystem.cpp + Src/UCodes/UCode_ROM.cpp + Src/UCodes/UCodes.cpp + Src/UCodes/UCode_GBA.cpp + Src/UCodes/UCode_Zelda.cpp + Src/UCodes/UCode_Zelda_ADPCM.cpp + Src/UCodes/UCode_Zelda_Voice.cpp + Src/UCodes/UCode_Zelda_Synth.cpp) + +if(wxWidgets_FOUND) + set(SRCS ${SRCS} Src/ConfigDlg.cpp) +endif(wxWidgets_FOUND) + +add_library(Plugin_DSP_HLE SHARED ${SRCS}) +target_link_libraries(Plugin_DSP_HLE common audiocommon) diff --git a/Source/Plugins/Plugin_DSP_LLE/CMakeLists.txt b/Source/Plugins/Plugin_DSP_LLE/CMakeLists.txt new file mode 100644 index 000000000..23801d5fc --- /dev/null +++ b/Source/Plugins/Plugin_DSP_LLE/CMakeLists.txt @@ -0,0 +1,22 @@ +set(SRCS + Src/Config.cpp + Src/DSPDebugInterface.cpp + Src/DSPHost.cpp + Src/DSPSymbols.cpp + Src/Globals.cpp + Src/main.cpp + Src/Tools.cpp) + +set(LIBS dspcore audiocommon common) + +if(wxWidgets_FOUND) + set(SRCS + ${SRCS} + Src/DSPConfigDlgLLE.cpp + Src/Debugger/DSPDebugWindow.cpp + Src/Debugger/DSPRegisterView.cpp) + set(LIBS ${LIBS} debugger_ui_util) +endif(wxWidgets_FOUND) + +add_library(Plugin_DSP_LLE SHARED ${SRCS}) +target_link_libraries(Plugin_DSP_LLE ${LIBS}) diff --git a/Source/Plugins/Plugin_VideoOGL/CMakeLists.txt b/Source/Plugins/Plugin_VideoOGL/CMakeLists.txt new file mode 100644 index 000000000..5e6f9e0c4 --- /dev/null +++ b/Source/Plugins/Plugin_VideoOGL/CMakeLists.txt @@ -0,0 +1,38 @@ +set(SRCS Src/BPFunctions.cpp + Src/FramebufferManager.cpp + Src/GLUtil.cpp + Src/main.cpp + Src/NativeVertexFormat.cpp + Src/PixelShaderCache.cpp + Src/PostProcessing.cpp + Src/RasterFont.cpp + Src/Render.cpp + Src/TextureCache.cpp + Src/TextureConverter.cpp + Src/VertexShaderCache.cpp + Src/VertexManager.cpp + Src/XFB.cpp) + +set(LIBS videocommon + GLEW + SOIL + common + Cg + CgGL) + +if(wxWidgets_FOUND) + set(SRCS ${SRCS} + Src/GUI/ConfigDlg.cpp + Src/Debugger/Debugger.cpp) +endif(wxWidgets_FOUND) + +if(APPLE AND NOT wxWidgets_FOUND) + set(SRCS ${SRCS} cocoaGL.m) +elif(WIN32) + set(SRCS ${SRCS} OS/Win32.cpp) +#elif(NOT APPLE AND OPENCL_FOUND) # TODO: Add OpenCL support +# set(LIBS ${LIBS} OpenCL) +endif() + +add_library(Plugin_VideoOGL SHARED ${SRCS}) +target_link_libraries(Plugin_VideoOGL ${LIBS}) -- 2.11.4.GIT