mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2025-01-20 15:25:38 +00:00
154 lines
4.2 KiB
CMake
154 lines
4.2 KiB
CMake
# Main library
|
|
|
|
add_library(biscuit
|
|
# Source files
|
|
assembler.cpp
|
|
assembler_crypto.cpp
|
|
assembler_vector.cpp
|
|
code_buffer.cpp
|
|
cpuinfo.cpp
|
|
|
|
# Headers
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/assembler.hpp"
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/assert.hpp"
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/code_buffer.hpp"
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/csr.hpp"
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/isa.hpp"
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/label.hpp"
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/registers.hpp"
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/vector.hpp"
|
|
"${PROJECT_SOURCE_DIR}/include/biscuit/cpuinfo.hpp"
|
|
)
|
|
add_library(biscuit::biscuit ALIAS biscuit)
|
|
|
|
target_include_directories(biscuit
|
|
PUBLIC
|
|
$<INSTALL_INTERFACE:include>
|
|
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
|
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
|
|
target_compile_features(biscuit
|
|
PRIVATE
|
|
cxx_std_20
|
|
)
|
|
|
|
if (MSVC)
|
|
target_compile_options(biscuit
|
|
PRIVATE
|
|
/MP
|
|
/Zi
|
|
/Zo
|
|
/permissive-
|
|
/EHsc
|
|
/utf-8
|
|
/volatile:iso
|
|
/Zc:externConstexpr
|
|
/Zc:inline
|
|
/Zc:throwingNew
|
|
|
|
# Warnings
|
|
/W4
|
|
/we4062 # enumerator 'identifier' in a switch of enum 'enumeration' is not handled
|
|
/we4101 # 'identifier': unreferenced local variable
|
|
/we4265 # 'class': class has virtual functions, but destructor is not virtual
|
|
/we4287 # 'operator' : unsigned/negative constant mismatch
|
|
/we4365 # 'action' : conversion from 'type_1' to 'type_2', signed/unsigned mismatch
|
|
/we4388 # signed/unsigned mismatch
|
|
/we4547 # 'operator' : operator before comma has no effect; expected operator with side-effect
|
|
/we4549 # 'operator1': operator before comma has no effect; did you intend 'operator2'?
|
|
/we4555 # Expression has no effect; expected expression with side-effect
|
|
/we4715 # 'function': not all control paths return a value
|
|
/we4834 # Discarding return value of function with 'nodiscard' attribute
|
|
/we5038 # data member 'member1' will be initialized after data member 'member2'
|
|
)
|
|
elseif (("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU"))
|
|
target_compile_options(biscuit
|
|
PRIVATE
|
|
-Wall
|
|
-Wextra
|
|
-Wconversion
|
|
-Wsign-conversion
|
|
|
|
-Werror=array-bounds
|
|
-Werror=cast-qual
|
|
-Werror=ignored-qualifiers
|
|
-Werror=implicit-fallthrough
|
|
-Werror=sign-compare
|
|
-Werror=reorder
|
|
-Werror=uninitialized
|
|
-Werror=unused-function
|
|
-Werror=unused-result
|
|
-Werror=unused-variable
|
|
)
|
|
endif()
|
|
|
|
if (BISCUIT_CODE_BUFFER_MMAP)
|
|
target_compile_definitions(biscuit
|
|
PRIVATE
|
|
-DBISCUIT_CODE_BUFFER_MMAP
|
|
)
|
|
endif()
|
|
|
|
# Install target
|
|
|
|
include(GNUInstallDirs)
|
|
set(BISCUIT_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/biscuit")
|
|
|
|
# Set install target and relevant includes.
|
|
install(TARGETS biscuit
|
|
EXPORT biscuit-targets
|
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
)
|
|
install(
|
|
DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
|
|
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
|
)
|
|
|
|
# Export targets to a script
|
|
install(EXPORT biscuit-targets
|
|
FILE
|
|
biscuit-targets.cmake
|
|
NAMESPACE
|
|
biscuit::
|
|
DESTINATION
|
|
"${BISCUIT_INSTALL_CONFIGDIR}"
|
|
)
|
|
|
|
# Now create the config version script
|
|
include(CMakePackageConfigHelpers)
|
|
write_basic_package_version_file(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-config-version.cmake"
|
|
VERSION
|
|
${PROJECT_VERSION}
|
|
COMPATIBILITY
|
|
SameMajorVersion
|
|
)
|
|
|
|
configure_package_config_file(
|
|
"${PROJECT_SOURCE_DIR}/cmake/biscuit-config.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-config.cmake"
|
|
|
|
INSTALL_DESTINATION "${BISCUIT_INSTALL_CONFIGDIR}"
|
|
)
|
|
|
|
# Now install the config and version files.
|
|
install(FILES
|
|
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-config.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-config-version.cmake"
|
|
|
|
DESTINATION "${BISCUIT_INSTALL_CONFIGDIR}"
|
|
)
|
|
|
|
# Export library from the build tree.
|
|
export(EXPORT biscuit-targets
|
|
FILE
|
|
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-targets.cmake"
|
|
NAMESPACE
|
|
biscuit::
|
|
)
|
|
export(PACKAGE biscuit)
|