summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorclaude-bot <[email protected]>2026-07-13 12:40:03 +0000
committerclaude-bot <[email protected]>2026-07-13 12:40:03 +0000
commit847962910f0bff071f3bf07c9abb87764fb6cac3 (patch)
treeddcd429e134c7fd5f72ddc97ced175de8d66fcd0 /CMakeLists.txt
downloadlibrw-master.tar.gz
librw-master.zip
Import aap/librw @ masterHEADmaster
Snapshot for re3/reVC vendoring, per @lzcnt. Source: https://github.com/aap/librw (master).
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt165
1 files changed, 165 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..92e5796
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,165 @@
+set(librw_MAINPROJECT ON)
+if(DEFINED PROJECT_NAME)
+ set(librw_MAINPROJECT OFF)
+endif()
+
+cmake_minimum_required(VERSION 3.8)
+project(librw
+ VERSION 0.0.1
+ LANGUAGES C CXX
+)
+set(librw_AUTHOR aap)
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
+
+if(WIN32)
+ set(LIBRW_PLATFORMS "NULL" "GL3" "D3D9")
+ set(LIBRW_PLATFORM_GL3_REQUIRES_OPENGL ON)
+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/nx")
+ include(NXFunctions)
+elseif(PS2)
+ set(LIBRW_PLATFORMS "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")
+ set(LIBRW_PLATFORM_GL3_REQUIRES_OPENGL ON)
+endif()
+list(GET LIBRW_PLATFORMS 0 LIBRW_PLATFORM_DEFAULT)
+set(LIBRW_PLATFORM "${LIBRW_PLATFORM_DEFAULT}" CACHE STRING "Platform (choices=${LIBRW_PLATFORMS})")
+set_property(CACHE LIBRW_PLATFORM PROPERTY STRINGS ${LIBRW_PLATFORMS})
+message(STATUS "LIBRW_PLATFORM = ${LIBRW_PLATFORM} (choices=${LIBRW_PLATFORMS})")
+set("LIBRW_PLATFORM_${LIBRW_PLATFORM}" ON)
+if(NOT LIBRW_PLATFORM IN_LIST LIBRW_PLATFORMS)
+ message(FATAL_ERROR "Illegal LIBRW_PLATFORM=${LIBRW_PLATFORM}")
+endif()
+
+if(LIBRW_PLATFORM_GL3)
+ set(LIBRW_GL3_GFXLIBS "GLFW" "SDL2" "SDL3")
+ set(LIBRW_GL3_GFXLIB "GLFW" CACHE STRING "gfxlib for gl3 (choices=${LIBRW_GL3_GFXLIBS})")
+ set_property(CACHE LIBRW_GL3_GFXLIB PROPERTY STRINGS ${LIBRW_GL3_GFXLIBS})
+ if(LIBRW_PLATFORM_GL3)
+ message(STATUS "LIBRW_GL3_GFXLIB = ${LIBRW_GL3_GFXLIB} (choices=${LIBRW_GL3_GFXLIBS})")
+ endif()
+ if(NOT LIBRW_GL3_GFXLIB IN_LIST LIBRW_GL3_GFXLIBS)
+ message(FATAL_ERROR "Illegal LIBRW_GL3_GFXLIB=${LIBRW_GL3_GFXLIB}")
+ endif()
+endif()
+
+if(LIBRW_PLATFORM_PS2)
+ enable_language(DSM)
+endif()
+
+if(NOT COMMAND librw_platform_target)
+ function(librw_platform_target)
+ endfunction()
+endif()
+
+include(CMakeDependentOption)
+
+option(LIBRW_TOOLS "Build librw tools" ${librw_MAINPROJECT})
+option(LIBRW_INSTALL "Install librw files" ${librw_MAINPROJECT})
+cmake_dependent_option(LIBRW_EXAMPLES "Build librw examples" ON "LIBRW_TOOLS;NOT LIBRW_PLATFORM_NULL" OFF)
+
+if(LIBRW_INSTALL)
+ include(GNUInstallDirs)
+ set(LIBRW_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}/librw")
+endif()
+
+add_subdirectory(src)
+
+if(LIBRW_TOOLS AND NOT LIBRW_PLATFORM_PS2 AND NOT LIBRW_PLATFORM_NULL)
+ add_subdirectory(skeleton)
+endif()
+
+add_subdirectory(tools)
+
+if(LIBRW_INSTALL)
+ include(CMakePackageConfigHelpers)
+ configure_package_config_file(cmake/librw-config.cmake.in librw-config.cmake
+ INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}"
+ )
+ install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/librw-config.cmake"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
+ )
+ install(
+ EXPORT librw-targets NAMESPACE librw::
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
+ )
+ export(TARGETS librw NAMESPACE librw:: FILE librw-targets.cmake)
+
+ if(LIBRW_GL3_GFXLIB STREQUAL "SDL2")
+ install(
+ FILES "${CMAKE_CURRENT_LIST_DIR}/cmake/FindSDL2.cmake"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake"
+ )
+ endif()
+
+ string(REPLACE "." ";" cmake_c_compiler_version_list "${CMAKE_C_COMPILER_VERSION}")
+ list(GET cmake_c_compiler_version_list 0 cmake_c_compiler_version_major)
+
+ string(TOLOWER "${LIBRW_PLATFORM}" librw_platform)
+ set(compiler)
+ set(os)
+ if(NOT LIBRW_PLATFORM STREQUAL "PS2")
+ if(MSVC)
+ set(compiler "-msvc${MSVC_VERSION}")
+ elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ set(compiler "-gcc${cmake_c_compiler_version_major}")
+ elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ set(compiler "-clang${cmake_c_compiler_version_major}")
+ elseif(CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
+ set(compiler "-appleclang${cmake_c_compiler_version_major}")
+ else()
+ set(compiler "-UNK")
+ message(WARNING "Unknown compiler. Created cpack package will be wrong. (override using cpack -P)")
+ endif()
+ endif()
+ if(LIBRW_PLATFORM_NULL)
+ set(platform "-null")
+ elseif(LIBRW_PLATFORM_PS2)
+ set(platform "-ps2")
+ elseif(LIBRW_PLATFORM_GL3)
+ if(LIBRW_GL3_GFXLIB STREQUAL "GLFW")
+ set(platform "-gl3-glfw")
+ elseif(LIBRW_GL3_GFXLIB STREQUAL "SDL2")
+ set(platform "-gl3-sdl2")
+ elseif(LIBRW_GL3_GFXLIB STREQUAL "SDL3")
+ set(platform "-gl3-sdl3")
+ endif()
+ elseif(LIBRW_PLATFORM_D3D9)
+ set(platform "-d3d9")
+ endif()
+ if(NOT LIBRW_PLATFORM_PS2)
+ if(WIN32)
+ set(os "-win")
+ elseif(NINTENDO_SWITCH)
+ set(os "-switch")
+ elseif(PS2)
+ set(os "-ps2")
+ elseif(APPLE)
+ set(os "-apple")
+ elseif(UNIX)
+ set(os "-linux")
+ else()
+ set(compiler "-UNK")
+ message(WARNING "Unknown os. Created cpack package will be wrong. (override using cpack -P)")
+ endif()
+ endif()
+
+ set(CPACK_PACKAGE_NAME "${PROJECT_NAME}${platform}${os}${compiler}")
+ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A (partial) re-implementation of RenderWare Graphics")
+ set(CPACK_PACKAGE_VENDOR "aap")
+ set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/LICENSE")
+ set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
+ set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}")
+ set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
+ set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
+ set(CPACK_GENERATOR "TXZ")
+ include(CPack)
+endif()