Added cmake build system
This commit is contained in:
parent
878b25a1f5
commit
352b28b1fd
|
@ -14,6 +14,9 @@ build/
|
||||||
|
|
||||||
# Windows build output
|
# Windows build output
|
||||||
*.exe
|
*.exe
|
||||||
|
*.dll
|
||||||
|
*.lib
|
||||||
|
*.pdb
|
||||||
|
|
||||||
# User-specific files
|
# User-specific files
|
||||||
*.rsuser
|
*.rsuser
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
cmake_minimum_required(VERSION 3.20)
|
||||||
|
project(MMRecomp)
|
||||||
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
set(LINUX TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
add_subdirectory(${CMAKE_SOURCE_DIR}/../mupen_rt64/mupen64plus-video-rt64 ${CMAKE_BINARY_DIR}/rt64)
|
||||||
|
|
||||||
|
target_include_directories(rt64 PRIVATE ${CMAKE_BINARY_DIR}/rt64/src)
|
||||||
|
get_target_property(RT64_BASENAME rt64 OUTPUT_NAME)
|
||||||
|
set(RT64_DLL ${RT64_BASENAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||||
|
|
||||||
|
file(GLOB FUNC_C_SOURCES ${CMAKE_SOURCE_DIR}/RecompiledFuncs/*.c)
|
||||||
|
file(GLOB FUNC_CXX_SOURCES ${CMAKE_SOURCE_DIR}/RecompiledFuncs/*.cpp)
|
||||||
|
|
||||||
|
add_library(RecompiledFuncs STATIC)
|
||||||
|
|
||||||
|
target_compile_options(RecompiledFuncs PRIVATE
|
||||||
|
# -Wno-unused-but-set-variable
|
||||||
|
-fno-strict-aliasing
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(RecompiledFuncs PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR}/include
|
||||||
|
)
|
||||||
|
|
||||||
|
target_sources(RecompiledFuncs PRIVATE ${FUNC_C_SOURCES} ${FUNC_CXX_SOURCES})
|
||||||
|
|
||||||
|
set (SOURCES
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/audio.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/events.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/mesgqueue.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/misc_ultra.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/port_main.c
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/scheduler.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/task_win32.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/threads.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/timer.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/portultra/ultrainit.cpp
|
||||||
|
|
||||||
|
${CMAKE_SOURCE_DIR}/src/ai.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/cont.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/dp.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/eep.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/euc-jp.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/flash.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/math_routines.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/overlays.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/pak.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/pi.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/portultra_stubs.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/portultra_translation.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/print.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/recomp.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/rt64_layer.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/sp.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/vi.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/main/main.cpp
|
||||||
|
|
||||||
|
${CMAKE_SOURCE_DIR}/rsp/aspMain.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/rsp/njpgdspMain.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(MMRecomp)
|
||||||
|
|
||||||
|
target_include_directories(MMRecomp PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR}/include
|
||||||
|
${CMAKE_SOURCE_DIR}/thirdparty
|
||||||
|
${CMAKE_SOURCE_DIR}/../mupen_rt64/mupen64plus-win32-deps/SDL2-2.26.3/include
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_options(MMRecomp PRIVATE
|
||||||
|
-march=nehalem
|
||||||
|
-fno-strict-aliasing
|
||||||
|
-fms-extensions
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_directories(MMRecomp PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR}/../mupen_rt64/mupen64plus-win32-deps/SDL2-2.26.3/lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(MMRecomp PRIVATE
|
||||||
|
RecompiledFuncs
|
||||||
|
SDL2
|
||||||
|
rt64
|
||||||
|
)
|
||||||
|
|
||||||
|
target_sources(MMRecomp PRIVATE ${SOURCES})
|
||||||
|
|
||||||
|
set_property(TARGET MMRecomp PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
||||||
|
|
||||||
|
add_custom_command(TARGET MMRecomp POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_BINARY_DIR}/${RT64_DLL}
|
||||||
|
${CMAKE_SOURCE_DIR}
|
||||||
|
MAIN_DEPENDENCY ${CMAKE_BINARY_DIR}/${RT64_DLL})
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "x64-Debug",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "Debug",
|
||||||
|
"inheritEnvironments": [ "clang_cl_x64" ],
|
||||||
|
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||||
|
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||||
|
"cmakeCommandArgs": "",
|
||||||
|
"buildCommandArgs": "",
|
||||||
|
"ctestCommandArgs": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "x64-Release",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "Release",
|
||||||
|
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||||
|
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||||
|
"cmakeCommandArgs": "",
|
||||||
|
"buildCommandArgs": "",
|
||||||
|
"ctestCommandArgs": "",
|
||||||
|
"inheritEnvironments": [ "clang_cl_x64" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,6 +1,8 @@
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
#include <vector>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
#include "../../portultra/ultra64.h"
|
#include "../../portultra/ultra64.h"
|
||||||
#include "../../portultra/multilibultra.hpp"
|
#include "../../portultra/multilibultra.hpp"
|
||||||
|
@ -131,7 +133,7 @@ int sdl_event_filter(void* userdata, SDL_Event* event) {
|
||||||
{
|
{
|
||||||
SDL_ControllerDeviceEvent* controller_event = (SDL_ControllerDeviceEvent*)event;
|
SDL_ControllerDeviceEvent* controller_event = (SDL_ControllerDeviceEvent*)event;
|
||||||
printf("Controller removed: %d\n", controller_event->which);
|
printf("Controller removed: %d\n", controller_event->which);
|
||||||
std::remove(controllers.begin(), controllers.end(), controller_event->which);
|
std::erase(controllers, controller_event->which);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SDL_EventType::SDL_QUIT:
|
case SDL_EventType::SDL_QUIT:
|
||||||
|
@ -325,6 +327,8 @@ int main(int argc, char** argv) {
|
||||||
std::setlocale(LC_ALL, "en_US.UTF-8");
|
std::setlocale(LC_ALL, "en_US.UTF-8");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
printf("Current dir: %ls\n", std::filesystem::current_path().c_str());
|
||||||
|
|
||||||
// Initialize SDL audio.
|
// Initialize SDL audio.
|
||||||
SDL_InitSubSystem(SDL_INIT_AUDIO);
|
SDL_InitSubSystem(SDL_INIT_AUDIO);
|
||||||
// Pick an initial dummy sample rate; this will be set by the game later to the true sample rate.
|
// Pick an initial dummy sample rate; this will be set by the game later to the true sample rate.
|
||||||
|
|
Loading…
Reference in New Issue