103 lines
3.5 KiB
CMake
103 lines
3.5 KiB
CMake
# CMakeLists.txt
|
|
|
|
####################################################
|
|
# Written by JackCarterSmith, 2022
|
|
# This code is released under the RSE license.
|
|
####################################################
|
|
|
|
|
|
# General library configuration
|
|
if(DEFINED ENV{MS_COMPATIBLE})
|
|
set(CMAKE_GNUtoMS ON) # Enable compatibility level to exported libraries
|
|
endif()
|
|
|
|
include(CheckIncludeFile)
|
|
include(CheckCSourceCompiles)
|
|
|
|
|
|
# Define src/headers files
|
|
file(GLOB_RECURSE RSP_TEXTURE_SOURCES ./src/*.c)
|
|
source_group("Source Files" FILES ${RSP_TEXTURE_SOURCES})
|
|
file(GLOB RSP_PUBLIC_HRDS ./include/*.h)
|
|
set(RSP_PUBLIC_HRDS ${RSP_PUBLIC_HRDS} PARENT_SCOPE)
|
|
|
|
|
|
# Building instructions for RSP-Texture library
|
|
if(DEFINED ENV{CI})
|
|
set(CMAKE_BUILD_TYPE RELEASE)
|
|
endif()
|
|
|
|
|
|
# Declare the shared library instance
|
|
if(RSPTEXTURE_SHARED)
|
|
add_library(rsp-texture-lib SHARED ${RSP_TEXTURE_SOURCES})
|
|
set_property(TARGET rsp-texture-lib PROPERTY C_STANDARD 90)
|
|
set_target_properties(rsp-texture-lib PROPERTIES VERSION 2.1.0)
|
|
|
|
target_include_directories(rsp-texture-lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
|
|
set_target_properties(rsp-texture-lib PROPERTIES OUTPUT_NAME "${RSP_TEXTURE_LIB_NAME}")
|
|
|
|
if(WIN32)
|
|
set_target_properties(rsp-texture-lib PROPERTIES DEFINE_SYMBOL RSPTEXTURE_DLL)
|
|
endif()
|
|
|
|
# msvc does not append 'lib' - do it here to have consistent name
|
|
if(MSVC)
|
|
set_target_properties(rsp-texture-lib PROPERTIES PREFIX "lib")
|
|
set_target_properties(rsp-texture-lib PROPERTIES IMPORT_PREFIX "lib")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
# Declare the static library instance
|
|
if(RSPTEXTURE_STATIC)
|
|
add_library(rsp-texture-libstatic STATIC ${RSP_TEXTURE_SOURCES})
|
|
set_property(TARGET rsp-texture-libstatic PROPERTY C_STANDARD 90)
|
|
|
|
target_include_directories(rsp-texture-libstatic PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
|
|
# MSVC doesn't use a different file extension for shared vs. static
|
|
# libs. We are able to change OUTPUT_NAME to remove the _static
|
|
# for all other platforms.
|
|
if(NOT MSVC)
|
|
set_target_properties(rsp-texture-libstatic PROPERTIES OUTPUT_NAME "${RSP_TEXTURE_LIB_NAME}")
|
|
set_target_properties(rsp-texture-libstatic PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
|
else()
|
|
set_target_properties(rsp-texture-libstatic PROPERTIES OUTPUT_NAME "${RSP_TEXTURE_LIB_NAME}_static")
|
|
set_target_properties(rsp-texture-libstatic PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
|
endif()
|
|
|
|
# MSVC does not append 'lib' - do it here to have consistent name
|
|
if(MSVC)
|
|
set_target_properties(rsp-texture-libstatic PROPERTIES PREFIX "lib")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/create_symlink.cmake)
|
|
|
|
# Install libraries with OS specific name fix
|
|
if(RSPTEXTURE_SHARED)
|
|
# Create a symlink for libRSPTexture.dll.a => libRSPTextureXX.dll.a on Cygwin/MinGW
|
|
if(CYGWIN OR MINGW)
|
|
create_lib_symlink(libRSPTexture${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET rsp-texture-lib)
|
|
install(FILES $<TARGET_LINKER_FILE_DIR:rsp-texture-lib>/libRSPTexture${CMAKE_IMPORT_LIBRARY_SUFFIX}
|
|
DESTINATION ${INSTALL_LIB_DIR})
|
|
endif()
|
|
|
|
if(NOT WIN32)
|
|
create_lib_symlink(libRSPTexture${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET rsp-texture-lib)
|
|
install(FILES $<TARGET_LINKER_FILE_DIR:rsp-texture-lib>/libRSPTexture${CMAKE_SHARED_LIBRARY_SUFFIX}
|
|
DESTINATION ${INSTALL_LIB_DIR})
|
|
endif()
|
|
endif()
|
|
|
|
if(RSPTEXTURE_STATIC)
|
|
if(NOT WIN32 OR CYGWIN OR MINGW)
|
|
create_lib_symlink(libRSPTexture${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET rsp-texture-libstatic)
|
|
install(FILES $<TARGET_LINKER_FILE_DIR:rsp-texture-libstatic>/libRSPTexture${CMAKE_STATIC_LIBRARY_SUFFIX}
|
|
DESTINATION ${INSTALL_LIB_DIR})
|
|
endif()
|
|
endif()
|