diff --git a/CMakeLists.txt b/CMakeLists.txt index dbc9e00..2c1b40d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,10 +13,15 @@ if(WIN32) elseif(NINTENDO_SWITCH) set(LIBRW_PLATFORMS "NULL" "GL3") set(LIBRW_PLATFORM_GL3_REQUIRES_OPENGL OFF) - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/nxtoolchain") + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/nx") include(NXFunctions) +elseif(PS2) + set(LIBRW_PLATFORMS "NULL" "PS2") + set(LIBRW_PLATFORM_GL3_REQUIRES_OPENGL OFF) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/ps2") + include(PS2Functions) else() - set(LIBRW_PLATFORMS "NULL" "GL3" "PS2") + set(LIBRW_PLATFORMS "NULL" "GL3") set(LIBRW_PLATFORM_GL3_REQUIRES_OPENGL ON) endif() set(LIBRW_PLATFORM "NULL" CACHE STRING "Platform") diff --git a/cmake/nx/NXFunctions.cmake b/cmake/nx/NXFunctions.cmake index ce8637e..bab3360 100644 --- a/cmake/nx/NXFunctions.cmake +++ b/cmake/nx/NXFunctions.cmake @@ -24,7 +24,12 @@ function(librw_platform_target TARGET) ) if(LIBRW_INSTALL AND LPT_INSTALL) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.nro" + get_target_property(TARGET_OUTPUT_NAME ${TARGET} OUTPUT_NAME) + if(NOT TARGET_OUTPUT_NAME) + set(TARGET_OUTPUT_NAME "${TARGET}") + endif() + + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_OUTPUT_NAME}.nro" DESTINATION "${CMAKE_INSTALL_BINDIR}" ) endif() diff --git a/cmake/ps2/PS2Functions.cmake b/cmake/ps2/PS2Functions.cmake new file mode 100644 index 0000000..5cd81dd --- /dev/null +++ b/cmake/ps2/PS2Functions.cmake @@ -0,0 +1,18 @@ +if(NOT COMMAND add_erl_executable) + message(FATAL_ERROR "The `add_erl_executable` cmake command is not available. Please use an appropriate Playstation 2 toolchain.") +endif() + +function(librw_platform_target TARGET) + cmake_parse_arguments(LPT "INSTALL" "" "" ${ARGN}) + + get_target_property(TARGET_TYPE "${TARGET}" TYPE) + if(TARGET_TYPE STREQUAL "EXECUTABLE") + add_erl_executable(${TARGET} OUTPUT_VAR ERL_FILE) + + if(LIBRW_INSTALL AND LPT_INSTALL) + install(FILES "${ERL_FILE}" + DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + endif() + endif() +endfunction() diff --git a/conanfile.py b/conanfile.py index 5bc7b41..9f72e08 100644 --- a/conanfile.py +++ b/conanfile.py @@ -46,12 +46,9 @@ class LibrwConan(ConanFile): def validate(self): if self.options.platform == "d3d9" and self.settings.os != "Windows": raise ConanInvalidConfiguration("d3d9 can only be built for Windows") - if self.options.platform == "ps2": - if not self._os_is_playstation2: - raise ConanInvalidConfiguration("platform=ps2 is only valid for os=Playstation2") - else: - if self._os_is_playstation2: - raise ConanInvalidConfiguration("os=Playstation2 only supports platform=ps2") + if self._os_is_playstation2: + if self.options.platform not in ("null", "ps2"): + raise ConanInvalidConfiguration("os=Playstation2 only supports platform=(null,ps2)") def requirements(self): if self.options.platform == "gl3": @@ -115,7 +112,6 @@ class LibrwConan(ConanFile): if self.options.platform == "gl3": cmake.definitions["LIBRW_GL3_GFXLIB"] = str(self.options.gl3_gfxlib).upper() if self._os_is_playstation2: - cmake.definitions["CMAKE_TOOLCHAIN_FILE"] = self.deps_user_info["ps2dev-cmaketoolchain"].cmake_toolchain_file env["PS2SDK"] = self.deps_cpp_info["ps2dev-ps2sdk"].rootpath with tools.environment_append(env): cmake.configure(source_folder=self.build_folder)