RingRacers/libs/ACSVM/include/CMakeLists.txt
Sally Coolatta 26477941ed Attempt using ACSVM to implement
It's having trouble linking the dll on Windows currently
2022-10-03 01:23:58 -04:00

193 lines
4.4 KiB
CMake

##-----------------------------------------------------------------------------
##
## Copyright (C) 2015-2016 David Hill
##
## See COPYING for license information.
##
##-----------------------------------------------------------------------------
##
## Root CMake file.
##
##-----------------------------------------------------------------------------
cmake_minimum_required(VERSION 2.6)
cmake_policy(SET CMP0017 NEW)
project(acsvm)
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
##----------------------------------------------------------------------------|
## Functions |
##
##
## ACSVM_INSTALL_EXE
##
function(ACSVM_INSTALL_EXE name)
if(ACSVM_INSTALL_EXE)
install(TARGETS ${name}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
endif()
endfunction()
##
## ACSVM_INSTALL_LIB
##
function(ACSVM_INSTALL_LIB name)
if(ACSVM_INSTALL_LIB)
if(ACSVM_INSTALL_API)
install(TARGETS ${name}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
elseif(ACSVM_SHARED)
install(TARGETS ${name}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
)
endif()
endif()
endfunction()
##
## ACSVM_TRY_C_FLAG
##
function(ACSVM_TRY_C_FLAG flag name)
CHECK_C_COMPILER_FLAG(${flag} ACSVM_C_FLAG_${name})
if(ACSVM_C_FLAG_${name})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}" PARENT_SCOPE)
endif()
endfunction()
##
## ACSVM_TRY_CXX_FLAG
##
function(ACSVM_TRY_CXX_FLAG flag name)
CHECK_CXX_COMPILER_FLAG(${flag} ACSVM_CXX_FLAG_${name})
if(ACSVM_CXX_FLAG_${name})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" PARENT_SCOPE)
endif()
endfunction()
##----------------------------------------------------------------------------|
## Environment Detection |
##
set(ACSVM_SHARED_DEFAULT ON)
if(NOT ACSVM_NOFLAGS)
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
ACSVM_TRY_C_FLAG(-Wall Wall)
ACSVM_TRY_C_FLAG(-Wextra Wextra)
ACSVM_TRY_C_FLAG(-std=c11 STD_C)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
ACSVM_TRY_CXX_FLAG(-Wall Wall)
ACSVM_TRY_CXX_FLAG(-Wextra Wextra)
ACSVM_TRY_CXX_FLAG(-std=c++11 STD_CXX)
endif()
endif()
if(MSVC)
# Disable shared by default, as the source does not contain the needed
# declaration annotations to make that work under MSVC.
set(ACSVM_SHARED_DEFAULT OFF)
endif()
##----------------------------------------------------------------------------|
## Variables |
##
##
## ACSVM_INSTALL_API
##
if(NOT DEFINED ACSVM_INSTALL_API)
set(ACSVM_INSTALL_API ON CACHE BOOL "Install ACSVM headers.")
endif()
##
## ACSVM_INSTALL_DOC
##
if(NOT DEFINED ACSVM_INSTALL_DOC)
set(ACSVM_INSTALL_DOC ON CACHE BOOL "Install ACSVM documentation.")
endif()
##
## ACSVM_INSTALL_EXE
##
if(NOT DEFINED ACSVM_INSTALL_EXE)
set(ACSVM_INSTALL_EXE ON CACHE BOOL "Install ACSVM executables.")
endif()
##
## ACSVM_INSTALL_LIB
##
if(NOT DEFINED ACSVM_INSTALL_LIB)
set(ACSVM_INSTALL_LIB ON CACHE BOOL "Install ACSVM libraries.")
endif()
##
## ACSVM_SHARED
##
## If true (or equiavalent), libraries will be built as SHARED. Otherwise,
## they are built as STATIC.
##
if(NOT DEFINED ACSVM_SHARED)
set(ACSVM_SHARED ${ACSVM_SHARED_DEFAULT} CACHE BOOL
"Build libraries as shared objects.")
endif()
##
## ACSVM_SHARED_DECL
##
## Used internally for convenience in add_library commands.
##
if(ACSVM_SHARED)
set(ACSVM_SHARED_DECL SHARED)
else()
set(ACSVM_SHARED_DECL STATIC)
endif()
##----------------------------------------------------------------------------|
## Environment Configuration |
##
include_directories(.)
##----------------------------------------------------------------------------|
## Targets |
##
add_subdirectory(ACSVM)
if(EXISTS "${CMAKE_SOURCE_DIR}/CAPI")
add_subdirectory(CAPI)
endif()
if(EXISTS "${CMAKE_SOURCE_DIR}/Exec")
add_subdirectory(Exec)
endif()
if(EXISTS "${CMAKE_SOURCE_DIR}/Util")
add_subdirectory(Util)
endif()
## EOF