diff options
Diffstat (limited to '')
-rw-r--r-- | src/CMakeLists.txt | 166 |
1 files changed, 79 insertions, 87 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dc204d17..e87878a8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,105 +1,92 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) -file(GLOB_RECURSE ${PROJECT}_SOURCES "*.cpp" "*.h" "*.rc") +if(${REVC_AUDIO} STREQUAL "OAL") + find_package(OpenAL REQUIRED) + find_package(MPG123 REQUIRED) + find_package(SndFile REQUIRED) +endif() -function(header_directories RETURN_LIST) - file(GLOB_RECURSE ALL_SRCS *.h *.cpp *.c) - set(RELDIRS) - foreach(SRC ${ALL_SRCS}) - file(RELATIVE_PATH RELSRC "${CMAKE_CURRENT_SOURCE_DIR}" "${SRC}") - get_filename_component(RELDIR "${RELSRC}" DIRECTORY) - list(APPEND RELDIRS ${RELDIR}) - endforeach() - list(REMOVE_DUPLICATES RELDIRS) - set(${RETURN_LIST} ${RELDIRS} PARENT_SCOPE) -endfunction() +file(GLOB_RECURSE Sources "*.cpp" "*.h") -header_directories(${PROJECT}_INCLUDES) +MACRO(HEADER_DIRECTORIES return_list) + FILE(GLOB_RECURSE new_list *.cpp) + SET(dir_list "animation" + "audio" + "collision" + "control" + "core" + "entities" + "extras" + "fakerw" + "math" + "modelinfo" + "objects" + "peds" + "render" + "rw" + "save" + "skel" + "text" + "vehicles" + "weapons") + FOREACH(file_path ${new_list}) + GET_FILENAME_COMPONENT(dir_path ${file_path} PATH) + SET(dir_list ${dir_list} ${dir_path}) + ENDFOREACH() + LIST(REMOVE_DUPLICATES dir_list) + SET(${return_list} ${dir_list}) +ENDMACRO() -add_executable(${EXECUTABLE} WIN32 - ${${PROJECT}_SOURCES} -) +HEADER_DIRECTORIES(header_list) +include_directories(${header_list}) -target_link_libraries(${EXECUTABLE} PRIVATE - librw::librw - Threads::Threads -) -target_include_directories(${EXECUTABLE} - PRIVATE - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> - $<BUILD_INTERFACE:${${PROJECT}_INCLUDES}> -) +add_executable(reVC ${Sources}) +target_link_libraries(reVC librw) +target_link_libraries(reVC Threads::Threads) -target_compile_definitions(${EXECUTABLE} - PRIVATE - $<IF:$<CONFIG:DEBUG>,DEBUG,NDEBUG> - LIBRW - ${PROJECT}_NO_AUTOLINK -) - -if(LIBRW_PLATFORM_D3D9) - target_compile_definitions(${EXECUTABLE} - PUBLIC - USE_D3D9 - ) +if(${REVC_AUDIO} STREQUAL "OAL") + target_link_libraries(reVC ${OPENAL_LIBRARY}) + target_link_libraries(reVC ${MPG123_LIBRARIES}) + target_link_libraries(reVC ${SNDFILE_LIBRARIES}) endif() -if(${PROJECT}_AUDIO STREQUAL "OAL") - find_package(OpenAL REQUIRED) - target_include_directories(${EXECUTABLE} PRIVATE ${OPENAL_INCLUDE_DIR}) - target_link_libraries(${EXECUTABLE} PRIVATE ${OPENAL_LIBRARY}) - target_compile_definitions(${EXECUTABLE} PRIVATE ${OPENAL_DEFINITIONS}) - target_compile_definitions(${EXECUTABLE} PRIVATE AUDIO_OAL) -elseif(${PROJECT}_AUDIO STREQUAL "MSS") - find_package(MilesSDK REQUIRED) - target_compile_definitions(${EXECUTABLE} PRIVATE AUDIO_MSS) - target_link_libraries(${EXECUTABLE} PRIVATE MilesSDK::MilesSDK) -endif() - -find_package(mpg123 REQUIRED) -target_link_libraries(${EXECUTABLE} PRIVATE - MPG123::libmpg123 -) -if(${PROJECT}_WITH_OPUS) - find_package(opusfile REQUIRED) - target_link_libraries(${EXECUTABLE} PRIVATE - opusfile::opusfile +target_include_directories(reVC + INTERFACE + $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> ) - target_compile_definitions(${EXECUTABLE} PRIVATE AUDIO_OPUS) -endif() -if(${PROJECT}_WITH_LIBSNDFILE) - find_package(SndFile REQUIRED) - target_link_libraries(${EXECUTABLE} PRIVATE - SndFile::SndFile + +target_compile_definitions(reVC + PRIVATE + "$<IF:$<CONFIG:DEBUG>,DEBUG,NDEBUG>" + PUBLIC + "RW_${REVC_PLATFORM}" ) - target_compile_definitions(${EXECUTABLE} PRIVATE AUDIO_OAL_USE_SNDFILE) -endif() -target_compile_definitions(${EXECUTABLE} PRIVATE ) +target_compile_definitions(reVC PRIVATE LIBRW=1 AUDIO_OAL=1) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - target_compile_options(${EXECUTABLE} + target_compile_options(reVC PRIVATE "-Wall" - ) - if (NOT LIBRW_PLATFORM_PS2) - target_compile_options(${EXECUTABLE} - PRIVATE - -Wextra - -Wdouble-promotion - -Wpedantic ) + if (NOT REVC_PLATFORM_PS2) + target_compile_options(reVC + PRIVATE + "-Wextra" + "-Wdouble-promotion" + "-Wpedantic" + ) endif() elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - target_compile_options(${EXECUTABLE} + target_compile_options(reVC PUBLIC - /Zc:sizedDealloc- - ) + /wd4996 /wd4244 + ) endif() -set_target_properties(${EXECUTABLE} +set_target_properties(reVC PROPERTIES C_STANDARD 11 C_EXTENSIONS OFF @@ -107,15 +94,20 @@ set_target_properties(${EXECUTABLE} CXX_STANDARD 11 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON -) + PREFIX "" + ) + +if(REVC_INSTALL) + target_include_directories(reVC + INTERFACE + $<INSTALL_INTERFACE:${REVC_INSTALL_INCLUDEDIR}> + ) -if(${PROJECT}_INSTALL) install( - TARGETS ${EXECUTABLE} - EXPORT ${EXECUTABLE}-targets - RUNTIME DESTINATION "." - ) - if(MSVC) - install(FILES $<TARGET_PDB_FILE:${EXECUTABLE}> DESTINATION "." OPTIONAL) - endif() + TARGETS reVC + EXPORT reVC-targets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) endif() |