duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

CMakeLists.txt (4343B)


      1 # Main library
      2 
      3 add_library(biscuit
      4     # Source files
      5     assembler.cpp
      6     assembler_crypto.cpp
      7     assembler_vector.cpp
      8     code_buffer.cpp
      9     cpuinfo.cpp
     10 
     11     # Headers
     12     "${PROJECT_SOURCE_DIR}/include/biscuit/assembler.hpp"
     13     "${PROJECT_SOURCE_DIR}/include/biscuit/assert.hpp"
     14     "${PROJECT_SOURCE_DIR}/include/biscuit/code_buffer.hpp"
     15     "${PROJECT_SOURCE_DIR}/include/biscuit/csr.hpp"
     16     "${PROJECT_SOURCE_DIR}/include/biscuit/isa.hpp"
     17     "${PROJECT_SOURCE_DIR}/include/biscuit/label.hpp"
     18     "${PROJECT_SOURCE_DIR}/include/biscuit/registers.hpp"
     19     "${PROJECT_SOURCE_DIR}/include/biscuit/vector.hpp"
     20     "${PROJECT_SOURCE_DIR}/include/biscuit/cpuinfo.hpp"
     21 )
     22 add_library(biscuit::biscuit ALIAS biscuit)
     23 
     24 target_include_directories(biscuit
     25 PUBLIC
     26     $<INSTALL_INTERFACE:include>
     27     $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
     28 
     29 PRIVATE
     30     ${CMAKE_CURRENT_SOURCE_DIR}
     31 )
     32 
     33 target_compile_features(biscuit
     34 PRIVATE
     35     cxx_std_20
     36 )
     37 
     38 if (MSVC)
     39     target_compile_options(biscuit
     40     PRIVATE
     41         /MP
     42         /Zi
     43         /Zo
     44         /permissive-
     45         /EHsc
     46         /utf-8
     47         /volatile:iso
     48         /Zc:externConstexpr
     49         /Zc:inline
     50         /Zc:throwingNew
     51 
     52         # Warnings
     53         /W4
     54         /we4062 # enumerator 'identifier' in a switch of enum 'enumeration' is not handled
     55         /we4101 # 'identifier': unreferenced local variable
     56         /we4265 # 'class': class has virtual functions, but destructor is not virtual
     57         /we4287 # 'operator' : unsigned/negative constant mismatch
     58         /we4365 # 'action' : conversion from 'type_1' to 'type_2', signed/unsigned mismatch
     59         /we4388 # signed/unsigned mismatch
     60         /we4547 # 'operator' : operator before comma has no effect; expected operator with side-effect
     61         /we4549 # 'operator1': operator before comma has no effect; did you intend 'operator2'?
     62         /we4555 # Expression has no effect; expected expression with side-effect
     63         /we4715 # 'function': not all control paths return a value
     64         /we4834 # Discarding return value of function with 'nodiscard' attribute
     65         /we5038 # data member 'member1' will be initialized after data member 'member2'
     66     )
     67 elseif (("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU"))
     68     target_compile_options(biscuit
     69     PRIVATE
     70         -Wall
     71         -Wextra
     72         -Wconversion
     73         -Wsign-conversion
     74 
     75         -Werror=array-bounds
     76         -Werror=cast-qual
     77         -Werror=ignored-qualifiers
     78         -Werror=implicit-fallthrough
     79         -Werror=sign-compare
     80         -Werror=reorder
     81         -Werror=uninitialized
     82         -Werror=unused-function
     83         -Werror=unused-result
     84         -Werror=unused-variable
     85     )
     86 endif()
     87 
     88 if (BISCUIT_CODE_BUFFER_MMAP)
     89     target_compile_definitions(biscuit
     90     PRIVATE
     91         -DBISCUIT_CODE_BUFFER_MMAP
     92     )
     93 endif()
     94 
     95 # Install target
     96 
     97 include(GNUInstallDirs)
     98 set(BISCUIT_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/biscuit")
     99 
    100 # Set install target and relevant includes.
    101 install(TARGETS biscuit
    102     EXPORT biscuit-targets
    103     LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
    104     ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
    105 )
    106 install(
    107     DIRECTORY   "${PROJECT_SOURCE_DIR}/include/"
    108     DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
    109 )
    110 
    111 # Export targets to a script
    112 install(EXPORT biscuit-targets
    113     FILE
    114         biscuit-targets.cmake
    115     NAMESPACE
    116         biscuit::
    117     DESTINATION
    118         "${BISCUIT_INSTALL_CONFIGDIR}"
    119 )
    120 
    121 # Now create the config version script
    122 include(CMakePackageConfigHelpers)
    123 write_basic_package_version_file(
    124     "${CMAKE_CURRENT_BINARY_DIR}/biscuit-config-version.cmake"
    125     VERSION
    126         ${PROJECT_VERSION}
    127     COMPATIBILITY
    128         SameMajorVersion
    129 )
    130 
    131 configure_package_config_file(
    132     "${PROJECT_SOURCE_DIR}/cmake/biscuit-config.cmake.in"
    133     "${CMAKE_CURRENT_BINARY_DIR}/biscuit-config.cmake"
    134 
    135     INSTALL_DESTINATION "${BISCUIT_INSTALL_CONFIGDIR}"
    136 )
    137 
    138 # Now install the config and version files.
    139 install(FILES
    140     "${CMAKE_CURRENT_BINARY_DIR}/biscuit-config.cmake"
    141     "${CMAKE_CURRENT_BINARY_DIR}/biscuit-config-version.cmake"
    142 
    143     DESTINATION "${BISCUIT_INSTALL_CONFIGDIR}"
    144 )
    145 
    146 # Export library from the build tree.
    147 export(EXPORT biscuit-targets
    148     FILE
    149         "${CMAKE_CURRENT_BINARY_DIR}/biscuit-targets.cmake"
    150     NAMESPACE
    151         biscuit::
    152 )
    153 export(PACKAGE biscuit)