# 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_TERRAIN_SOURCES ./src/*.c) source_group("Source Files" FILES ${RSP_TERRAIN_SOURCES}) file(GLOB RSP_PUBLIC_HRDS ./include/*.h) set(RSP_PUBLIC_HRDS ${RSP_PUBLIC_HRDS} PARENT_SCOPE) # Building instructions for RSP-Terrain library if(DEFINED ENV{CI}) set(CMAKE_BUILD_TYPE RELEASE) endif() # Declare the shared library instance if(RSPTERRAIN_SHARED) add_library(rsp-terrain-lib SHARED ${RSP_TERRAIN_SOURCES}) set_property(TARGET rsp-terrain-lib PROPERTY C_STANDARD 90) set_target_properties(rsp-terrain-lib PROPERTIES VERSION 2.1.0) target_include_directories(rsp-terrain-lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) set_target_properties(rsp-terrain-lib PROPERTIES OUTPUT_NAME "${RSP_TERRAIN_LIB_NAME}") if(WIN32) set_target_properties(rsp-terrain-lib PROPERTIES DEFINE_SYMBOL RSPTERRAIN_DLL) endif() # msvc does not append 'lib' - do it here to have consistent name if(MSVC) set_target_properties(rsp-terrain-lib PROPERTIES PREFIX "lib") set_target_properties(rsp-terrain-lib PROPERTIES IMPORT_PREFIX "lib") endif() endif() # Declare the static library instance if(RSPTERRAIN_STATIC) add_library(rsp-terrain-libstatic STATIC ${RSP_TERRAIN_SOURCES}) set_property(TARGET rsp-terrain-libstatic PROPERTY C_STANDARD 90) target_include_directories(rsp-terrain-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-terrain-libstatic PROPERTIES OUTPUT_NAME "${RSP_TERRAIN_LIB_NAME}") set_target_properties(rsp-terrain-libstatic PROPERTIES CLEAN_DIRECT_OUTPUT 1) else() set_target_properties(rsp-terrain-libstatic PROPERTIES OUTPUT_NAME "${RSP_TERRAIN_LIB_NAME}_static") set_target_properties(rsp-terrain-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-terrain-libstatic PROPERTIES PREFIX "lib") endif() endif() include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/create_symlink.cmake) # Install libraries with OS specific name fix if(RSPTERRAIN_SHARED) # Create a symlink for libRSPTerrain.dll.a => libRSPTerrainXX.dll.a on Cygwin/MinGW if(CYGWIN OR MINGW) create_lib_symlink(libRSPTerrain${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET rsp-terrain-lib) install(FILES $/libRSPTerrain${CMAKE_IMPORT_LIBRARY_SUFFIX} DESTINATION ${INSTALL_LIB_DIR}) endif() if(NOT WIN32) create_lib_symlink(libRSPTerrain${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET rsp-terrain-lib) install(FILES $/libRSPTerrain${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${INSTALL_LIB_DIR}) endif() endif() if(RSPTERRAIN_STATIC) if(NOT WIN32 OR CYGWIN OR MINGW) create_lib_symlink(libRSPTerrain${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET rsp-terrain-libstatic) install(FILES $/libRSPTerrain${CMAKE_STATIC_LIBRARY_SUFFIX} DESTINATION ${INSTALL_LIB_DIR}) endif() endif()