diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4008cdc..a1f16f6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -299,8 +299,8 @@ libretro-build-rs90-odbeta-mips32: - .libretro-rs90-odbeta-cmake-mips32 - .core-defs -# djgpp-static-cmake.yml -libretro-build-djgpp: # TODO: What should this be called? - extends: - - .libretro-djgpp-static-cmake-retroarch-master - - .core-defs +## djgpp-static-cmake.yml +#libretro-build-djgpp: # TODO: What should this be called? +# extends: +# - .libretro-djgpp-static-cmake-retroarch-master +# - .core-defs diff --git a/CMakeLists.txt b/CMakeLists.txt index 9dd6f46..1f7eaa0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,39 @@ message("that you are resting well.") message(" -- Your friend, Stephanie") message("******************************") +# Some platforms cannot use FPIC code +if(PLATFORM_PSP OR PSP) + set(MU_FPIC OFF) +else() + set(MU_FPIC ON) +endif() + +# Where should dynamic libraries go when output? +if(NOT DEFINED MU_DYLIB_OUTPUT_DIR) + set(MU_DYLIB_OUTPUT_DIR + "${CMAKE_BINARY_DIR}") +endif() + +# Need to set specific locations for output libraries? +# Note that RUNTIME_OUTPUT_DIRECTORY is needed for the Windows build to output +# directories since .DLL files are output there and not where shared libraries +# go??? No idea really. +macro(mu_target_binary_output target where) + set_target_properties(${target} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${where}" + LIBRARY_OUTPUT_DIRECTORY "${where}" + ARCHIVE_OUTPUT_DIRECTORY "${where}") + + foreach(outputConfig ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER "${outputConfig}" outputConfig) + + set_target_properties(${target} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY_${outputConfig} "${where}" + LIBRARY_OUTPUT_DIRECTORY_${outputConfig} "${where}" + ARCHIVE_OUTPUT_DIRECTORY_${outputConfig} "${where}") + endforeach() +endmacro() + # Main project sources add_subdirectory(src) diff --git a/libretroBuildSystem/CMakeLists.txt b/libretroBuildSystem/CMakeLists.txt index d8edda5..4ca9797 100644 --- a/libretroBuildSystem/CMakeLists.txt +++ b/libretroBuildSystem/CMakeLists.txt @@ -23,6 +23,14 @@ target_include_directories(mu_libretro PUBLIC "${PROJECT_SOURCE_DIR}/include" "libretro-common/include") +# Library location must be placed in the build output for the RetroArch +# build system to pick up the library +# Note that RUNTIME_OUTPUT_DIRECTORY is needed for the Windows build to output +# directories since .DLL files are output there and not where shared libraries +# go??? No idea really. +mu_target_binary_output(mu_libretro + "${MU_DYLIB_OUTPUT_DIR}") + # Custom launching the core, tries to find RetroArch on the system ## Determine RetroArch directory if(CMAKE_SYSTEM_NAME STREQUAL Windows) @@ -47,4 +55,9 @@ if(DEFINED MU_LIBRETRO_DIR) COMMAND "${MU_LIBRETRO_DIR}/retroarch${MU_LIBRETRO_EXTENSION}" "-v" "-L" "$" WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" COMMENT "Starting RetroArch with Mu") + + # Do not try running this by default + set_target_properties(RetroArch PROPERTIES + EXCLUDE_FROM_ALL TRUE + EXCLUDE_FROM_DEFAULT_BUILD TRUE) endif() diff --git a/qtBuildSystem/CMakeLists.txt b/qtBuildSystem/CMakeLists.txt index 6cf61f8..60713a6 100644 --- a/qtBuildSystem/CMakeLists.txt +++ b/qtBuildSystem/CMakeLists.txt @@ -1,7 +1,7 @@ # Only include the sub-project if Qt was actually found -find_package(Qt5 OPTIONAL_COMPONENTS Core Widgets) +find_package(Qt5 OPTIONAL_COMPONENTS Core Gui Widgets Multimedia Svg) if(Qt5_FOUND EQUAL 0) - message("Qt5 was not found by CMake, check readme.md!") + message("Qt5 or one of their components were not found, check readme.md!") endif() # Was this actually found now? diff --git a/readme.md b/readme.md index f99ee29..e6e1424 100644 --- a/readme.md +++ b/readme.md @@ -85,6 +85,14 @@ First install _Qt 5.14.2_, you may optionally install as well _Qt Creator_. * Mac: * Linux: +You need the following components of Qt5: + + * Core + * Gui + * Widgets + * Multimedia + * Svg + When running _CMake_ you will need to pass `-DCMAKE_PREFIX_PATH` to the location of `Qt5Config.cmake`. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ec59dab..1bef1d4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,8 +14,10 @@ add_library(MuCore STATIC w86l488.c) # Make this position independent so it can be linked into shared libraries -set_property(TARGET MuCore - PROPERTY POSITION_INDEPENDENT_CODE ON) +if(MU_FPIC) + set_property(TARGET MuCore + PROPERTY POSITION_INDEPENDENT_CODE ON) +endif() # Bring all the sub-modules as needed target_link_libraries(MuCore diff --git a/src/armv5te/CMakeLists.txt b/src/armv5te/CMakeLists.txt index 32cc3c4..231f8c5 100644 --- a/src/armv5te/CMakeLists.txt +++ b/src/armv5te/CMakeLists.txt @@ -14,8 +14,10 @@ add_library(MuCoreArmV5TEExperimental STATIC thumb_interpreter.cpp) # Make this position independent so it can be linked into shared libraries -set_property(TARGET MuCoreArmV5TEExperimental - PROPERTY POSITION_INDEPENDENT_CODE ON) +if(MU_FPIC) + set_property(TARGET MuCoreArmV5TEExperimental + PROPERTY POSITION_INDEPENDENT_CODE ON) +endif() # Currently do not enable the dynamic recompiler set(NO_TRANSLATION) diff --git a/src/audio/CMakeLists.txt b/src/audio/CMakeLists.txt index b84fbf9..0de6e30 100644 --- a/src/audio/CMakeLists.txt +++ b/src/audio/CMakeLists.txt @@ -3,8 +3,10 @@ add_library(MuCoreAudio STATIC blip_buf.c) # Make this position independent so it can be linked into shared libraries -set_property(TARGET MuCoreAudio - PROPERTY POSITION_INDEPENDENT_CODE ON) +if(MU_FPIC) + set_property(TARGET MuCoreAudio + PROPERTY POSITION_INDEPENDENT_CODE ON) +endif() # Includes for the project target_include_directories(MuCoreAudio PUBLIC diff --git a/src/fileLauncher/CMakeLists.txt b/src/fileLauncher/CMakeLists.txt index 652e8d1..9168394 100644 --- a/src/fileLauncher/CMakeLists.txt +++ b/src/fileLauncher/CMakeLists.txt @@ -3,8 +3,10 @@ add_library(MuCoreFileLauncher STATIC launcher.c) # Make this position independent so it can be linked into shared libraries -set_property(TARGET MuCoreFileLauncher - PROPERTY POSITION_INDEPENDENT_CODE ON) +if(MU_FPIC) + set_property(TARGET MuCoreFileLauncher + PROPERTY POSITION_INDEPENDENT_CODE ON) +endif() # Includes for the project target_include_directories(MuCoreFileLauncher PUBLIC diff --git a/src/m68k/CMakeLists.txt b/src/m68k/CMakeLists.txt index 70f2664..fc0a7d5 100644 --- a/src/m68k/CMakeLists.txt +++ b/src/m68k/CMakeLists.txt @@ -8,8 +8,10 @@ add_library(MuCoreM68k STATIC m68kops.c) # Make this position independent so it can be linked into shared libraries -set_property(TARGET MuCoreM68k - PROPERTY POSITION_INDEPENDENT_CODE ON) +if(MU_FPIC) + set_property(TARGET MuCoreM68k + PROPERTY POSITION_INDEPENDENT_CODE ON) +endif() # Includes for the project target_include_directories(MuCoreM68k PUBLIC diff --git a/src/pxa260/CMakeLists.txt b/src/pxa260/CMakeLists.txt index 5e5104b..00e6342 100644 --- a/src/pxa260/CMakeLists.txt +++ b/src/pxa260/CMakeLists.txt @@ -17,8 +17,10 @@ add_library(MuCorePxa260Experimental STATIC pxa260Udc.c) # Make this position independent so it can be linked into shared libraries -set_property(TARGET MuCorePxa260Experimental - PROPERTY POSITION_INDEPENDENT_CODE ON) +if(MU_FPIC) + set_property(TARGET MuCorePxa260Experimental + PROPERTY POSITION_INDEPENDENT_CODE ON) +endif() # Bring all the sub-modules as needed target_link_libraries(MuCorePxa260Experimental