librw/src/CMakeLists.txt
2021-02-17 13:55:30 +01:00

245 lines
5.0 KiB
CMake

add_library(librw
"${PROJECT_SOURCE_DIR}/args.h"
"${PROJECT_SOURCE_DIR}/rw.h"
anim.cpp
base.cpp
bmp.cpp
camera.cpp
charset.cpp
clump.cpp
engine.cpp
error.cpp
frame.cpp
geometry.cpp
geoplg.cpp
hanim.cpp
image.cpp
light.cpp
matfx.cpp
pipeline.cpp
plg.cpp
png.cpp
prim.cpp
raster.cpp
render.cpp
rwanim.h
rwengine.h
rwerror.h
rwobjects.h
rwpipeline.h
rwplg.h
rwplugins.h
rwrender.h
rwuserdata.h
skin.cpp
texture.cpp
tga.cpp
tristrip.cpp
userdata.cpp
uvanim.cpp
world.cpp
d3d/d3d8.cpp
d3d/d3d8matfx.cpp
d3d/d3d8render.cpp
d3d/d3d8skin.cpp
d3d/d3d9.cpp
d3d/d3d9matfx.cpp
d3d/d3d9render.cpp
d3d/d3d9skin.cpp
d3d/d3d.cpp
d3d/d3ddevice.cpp
d3d/d3dimmed.cpp
d3d/d3drender.cpp
d3d/rwd3d8.h
d3d/rwd3d9.h
d3d/rwd3d.h
d3d/rwd3dimpl.h
d3d/rwxbox.h
d3d/rwxboximpl.h
d3d/xbox.cpp
d3d/xboxmatfx.cpp
d3d/xboxskin.cpp
d3d/xboxvfmt.cpp
gl/gl3.cpp
gl/gl3device.cpp
gl/gl3immed.cpp
gl/gl3matfx.cpp
gl/gl3pipe.cpp
gl/gl3raster.cpp
gl/gl3render.cpp
gl/gl3shader.cpp
gl/gl3skin.cpp
gl/rwgl3.h
gl/rwgl3impl.h
gl/rwgl3plg.h
gl/rwgl3shader.h
gl/rwwdgl.h
gl/wdgl.cpp
gl/glad/glad.h
gl/glad/glad.c
gl/glad/khrplatform.h
lodepng/lodepng.h
lodepng/lodepng.cpp
ps2/pds.cpp
ps2/ps2.cpp
ps2/ps2device.cpp
ps2/ps2matfx.cpp
ps2/ps2raster.cpp
ps2/ps2skin.cpp
ps2/rwps2.h
ps2/rwps2impl.h
ps2/rwps2plg.h
)
add_library(librw::librw ALIAS librw)
target_include_directories(librw
INTERFACE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
)
target_compile_definitions(librw
PRIVATE
LODEPNG_NO_COMPILE_CPP
"$<IF:$<CONFIG:DEBUG>,DEBUG,NDEBUG>"
PUBLIC
"RW_${LIBRW_PLATFORM}"
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_link_libraries(librw
PRIVATE
m
)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
target_compile_options(librw
PRIVATE
"-Wall"
)
if (NOT LIBRW_PLATFORM_PS2)
target_compile_options(librw
PRIVATE
"-Wextra"
"-Wdouble-promotion"
"-Wpedantic"
)
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
target_compile_options(librw
PUBLIC
/wd4996 /wd4244
)
endif()
set_target_properties(librw
PROPERTIES
C_STANDARD 11
C_EXTENSIONS OFF
C_STANDARD_REQUIRED ON
CXX_STANDARD 11
CXX_EXTENSIONS OFF
CXX_STANDARD_REQUIRED ON
PREFIX ""
)
if(LIBRW_PLATFORM_GL3)
set(OpenGL_GL_PREFERENCE GLVND)
find_package(OpenGL REQUIRED)
target_link_libraries(librw
PUBLIC
OpenGL::GL
)
if (LIBRW_GL3_GFXLIB STREQUAL "GLFW")
find_package(glfw3 REQUIRED)
target_link_libraries(librw
PUBLIC
glfw
)
elseif (LIBRW_GL3_GFXLIB STREQUAL "SDL2")
find_package(SDL2 REQUIRED)
target_compile_definitions(librw PUBLIC LIBRW_SDL2)
target_link_libraries(librw
PUBLIC
SDL2::SDL2
)
if(TARGET SDL2::SDL2main)
target_link_libraries(librw
PUBLIC
SDL2::SDL2main
)
endif()
endif()
elseif(LIBRW_PLATFORM_D3D9)
target_link_libraries(librw
PUBLIC
d3d9
xinput
)
endif()
if(LIBRW_INSTALL)
target_include_directories(librw
INTERFACE
$<INSTALL_INTERFACE:${LIBRW_INSTALL_INCLUDEDIR}>
)
install(
FILES
"${PROJECT_SOURCE_DIR}/args.h"
"${PROJECT_SOURCE_DIR}/rw.h"
DESTINATION "${LIBRW_INSTALL_INCLUDEDIR}"
)
install(
FILES
base.err
rwbase.h
rwcharset.h
rwerror.h
rwplg.h
rwrender.h
rwengine.h
rwpipeline.h
rwobjects.h
rwanim.h
rwplugins.h
rwuserdata.h
DESTINATION "${LIBRW_INSTALL_INCLUDEDIR}/src"
)
install(
FILES
d3d/rwxbox.h
d3d/rwd3d.h
d3d/rwd3d8.h
d3d/rwd3d9.h
DESTINATION "${LIBRW_INSTALL_INCLUDEDIR}/src/d3d"
)
install(
FILES
ps2/rwps2.h
ps2/rwps2plg.h
DESTINATION "${LIBRW_INSTALL_INCLUDEDIR}/src/ps2"
)
install(
FILES
gl/rwwdgl.h
gl/rwgl3.h
gl/rwgl3plg.h
gl/rwgl3shader.h
DESTINATION "${LIBRW_INSTALL_INCLUDEDIR}/src/gl"
)
install(
TARGETS librw
EXPORT librw-targets
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)
endif()