diff --git a/rpcs3/CMakeLists.txt b/rpcs3/CMakeLists.txt index 2b97e36789..a7039d21b0 100644 --- a/rpcs3/CMakeLists.txt +++ b/rpcs3/CMakeLists.txt @@ -35,6 +35,8 @@ if (NOT MSVC) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O1 -D_NDEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O1 -g -D_NDEBUG") add_definitions(-msse -msse2 -mcx16 -mssse3) +else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D _CRT_SECURE_NO_DEPRECATE=1 /D _CRT_NON_CONFORMING_SWPRINTFS=1 /D _SCL_SECURE_NO_WARNINGS=1") endif() if (APPLE) @@ -63,19 +65,20 @@ EndIf() set(CMAKE_MODULE_PATH "${RPCS3_SRC_DIR}/cmake_modules") # TODO: do real installation, including copying directory structure set(EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/../bin") -#include(cotire) -add_definitions(-DGL_GLEXT_PROTOTYPES) -add_definitions(-DGLX_GLXEXT_PROTOTYPES) +if(NOT WIN32) + add_definitions(-DGL_GLEXT_PROTOTYPES) + add_definitions(-DGLX_GLXEXT_PROTOTYPES) +endif() find_package(wxWidgets COMPONENTS core base net aui gl xml REQUIRED) -if(WIN32) +if(NOT WIN32) find_package(GLEW REQUIRED) endif() find_package(OpenGL REQUIRED) -#find_package(ZLIB REQUIRED) test +message(STATUS "OPENGL = ${OPENGL_LIBRARIES}") +message(STATUS "OPENGL_INCL = ${OPENGL_INCLUDE_DIR}") find_package(OpenAL REQUIRED) -#find_package(LLVM REQUIRED CONFIG) find_package(LLVM CONFIG) include("${wxWidgets_USE_FILE}") @@ -108,9 +111,14 @@ if(LLVM_FOUND) else() llvm_map_components_to_libnames(LLVM_LIBS mcjit vectorize x86codegen x86disassembler mcdisassembler) endif() + if(MSVC) + set_source_files_properties(${RPCS3_SRC_DIR}/Emu/Cell/PPULLVMRecompiler.cpp PROPERTIES COMPILE_FLAGS /GR-) + else() + set_source_files_properties(${RPCS3_SRC_DIR}/Emu/Cell/PPULLVMRecompiler.cpp PROPERTIES COMPILE_FLAGS -fno-rtti) + endif() endif() -link_directories("${RPCS3_SRC_DIR}/../ffmpeg/${PLATFORM_ARCH}/lib") +link_directories("${RPCS3_SRC_DIR}/../ffmpeg/${PLATFORM_ARCH}/lib" "${RPCS3_SRC_DIR}/../asmjit/") get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) foreach(dir ${dirs}) @@ -131,12 +139,28 @@ RPCS3_SRC ) list(REMOVE_ITEM RPCS3_SRC ${RPCS3_SRC_DIR}/../Utilities/simpleini/ConvertUTF.c) -set_source_files_properties(${RPCS3_SRC_DIR}/Emu/Cell/PPULLVMRecompiler.cpp PROPERTIES COMPILE_FLAGS -fno-rtti) add_executable(rpcs3 ${RPCS3_SRC}) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_CURRENT_BINARY_DIR}/../asmjit/") #hack because the asmjit cmake file force fno exceptions -target_link_libraries(rpcs3 asmjit.a ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} ${GLEW_LIBRARY} ${OPENGL_LIBRARIES} libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a ${ZLIB_LIBRARIES} ${LLVM_LIBS} ${ADDITIONAL_LIBS} ) +if(NOT MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_CURRENT_BINARY_DIR}/../asmjit/") #hack because the asmjit cmake file force fno exceptions upd: not sure if vs2015 build is affected +else() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS /NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib") +endif() +if(WIN32) # I'm not sure we need all of these libs, but we link them in vs + target_link_libraries(rpcs3 odbc32.lib odbccp32.lib comctl32.lib ws2_32.lib shlwapi.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib) + if(LLVM_FOUND) + target_link_libraries(rpcs3 asmjit.lib xaudio2.lib ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} avformat.lib avcodec.lib avutil.lib swresample.lib swscale.lib ${LLVM_LIBS} ${ADDITIONAL_LIBS}) + else() + target_link_libraries(rpcs3 asmjit.lib xaudio2.lib ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} avformat.lib avcodec.lib avutil.lib swresample.lib swscale.lib ${ADDITIONAL_LIBS}) + endif() +else() + if(LLVM_FOUND) + target_link_libraries(rpcs3 asmjit.a ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} ${GLEW_LIBRARY} ${OPENGL_LIBRARIES} libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a ${LLVM_LIBS} ${ADDITIONAL_LIBS}) + else() + target_link_libraries(rpcs3 asmjit.a ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} ${GLEW_LIBRARY} ${OPENGL_LIBRARIES} libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a ${ADDITIONAL_LIBS}) + endif() +endif() set_target_properties(rpcs3 PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "${RPCS3_SRC_DIR}/stdafx.h") cotire(rpcs3) diff --git a/rpcs3/Emu/Cell/PPULLVMRecompiler.cpp b/rpcs3/Emu/Cell/PPULLVMRecompiler.cpp index 4c2a142478..018f79887f 100644 --- a/rpcs3/Emu/Cell/PPULLVMRecompiler.cpp +++ b/rpcs3/Emu/Cell/PPULLVMRecompiler.cpp @@ -1,4 +1,5 @@ #include "stdafx.h" +#ifdef LLVM_AVAILABLE #include "Utilities/Log.h" #include "Emu/System.h" #include "Emu/Cell/PPULLVMRecompiler.h" @@ -737,3 +738,4 @@ u32 ppu_recompiler_llvm::CPUHybridDecoderRecompiler::ExecuteTillReturn(PPUThread bool ppu_recompiler_llvm::CPUHybridDecoderRecompiler::PollStatus(PPUThread * ppu_state) { return ppu_state->check_status(); } +#endif // LLVM_AVAILABLE \ No newline at end of file diff --git a/rpcs3/Emu/Cell/PPULLVMRecompilerTests.cpp b/rpcs3/Emu/Cell/PPULLVMRecompilerTests.cpp index 234266ee0e..c610e19d2d 100644 --- a/rpcs3/Emu/Cell/PPULLVMRecompilerTests.cpp +++ b/rpcs3/Emu/Cell/PPULLVMRecompilerTests.cpp @@ -1,4 +1,5 @@ #include "stdafx.h" +#ifdef LLVM_AVAILABLE #include "Utilities/Log.h" #include "Emu/Cell/PPULLVMRecompiler.h" #include "llvm/Support/Host.h" @@ -981,4 +982,5 @@ void Compiler::RunAllTests() { m_recompilation_engine.Log() << "Finished Unit Tests\n"; Emu.GetIdManager().remove(s_ppu_state->get_id()); #endif // PPU_LLVM_RECOMPILER_UNIT_TESTS -} \ No newline at end of file +} +#endif // LLVM_AVAILABLE \ No newline at end of file