mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2024-11-14 13:27:41 -07:00
94b33c924e
These changes modernize the CMake build system to (hopefully) match newer best practices * Library linking is simpler and more automatic because of using imported targets * Multi-configuration builds should be supported (Ninja Multi-Config, Visual Studio, etc. generators) * Clean up build options using cmake_dependent_option * Let CMake do its job in more cases, like finding the math/dl libraries and detecting and enabling LTO support * Remove platform-specific kludges like the Fedora/flatpak LTO workaround and a bunch of Windows stuff * Simplify Windows static builds * Consistent formatting
29 lines
1.1 KiB
CMake
29 lines
1.1 KiB
CMake
# The entire codebase quite reasonably does things like #include <SDL2/SDL.h> or <epoxy/gl.h>
|
|
# CMake apparently doesn't think you should be doing this, so just includes $PREFIX/include/packagename for a given
|
|
# package as include directories when using `target_link_libraries` with an imported target, this hacky function fixes
|
|
# that up so includes can keep working as they always did but we can still use fancy imported targets.
|
|
# This is stupid.
|
|
|
|
function(fix_interface_includes)
|
|
foreach (target ${ARGN})
|
|
set(NEW_DIRS)
|
|
get_target_property(DIRS "${target}" INTERFACE_INCLUDE_DIRECTORIES)
|
|
|
|
if (NOT DIRS)
|
|
continue()
|
|
endif()
|
|
|
|
foreach (DIR ${DIRS})
|
|
get_filename_component(PARENT_DIR "${DIR}" DIRECTORY)
|
|
|
|
if (PARENT_DIR MATCHES "include$")
|
|
list(APPEND NEW_DIRS "${PARENT_DIR}")
|
|
endif()
|
|
endforeach()
|
|
|
|
list(APPEND DIRS ${NEW_DIRS})
|
|
set_target_properties("${target}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${DIRS}")
|
|
endforeach()
|
|
endfunction()
|
|
|