# 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 $/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 $/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 $/libRSPTexture${CMAKE_STATIC_LIBRARY_SUFFIX} DESTINATION ${INSTALL_LIB_DIR}) endif() endif()