diff options
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r-- | src/CMakeLists.txt | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..e87878a8 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,113 @@ +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) + +if(${REVC_AUDIO} STREQUAL "OAL") + find_package(OpenAL REQUIRED) + find_package(MPG123 REQUIRED) + find_package(SndFile REQUIRED) +endif() + +file(GLOB_RECURSE Sources "*.cpp" "*.h") + +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() + +HEADER_DIRECTORIES(header_list) +include_directories(${header_list}) + + +add_executable(reVC ${Sources}) +target_link_libraries(reVC librw) +target_link_libraries(reVC Threads::Threads) + +if(${REVC_AUDIO} STREQUAL "OAL") + target_link_libraries(reVC ${OPENAL_LIBRARY}) + target_link_libraries(reVC ${MPG123_LIBRARIES}) + target_link_libraries(reVC ${SNDFILE_LIBRARIES}) +endif() + +target_include_directories(reVC + INTERFACE + $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> + ) + +target_compile_definitions(reVC + PRIVATE + "$<IF:$<CONFIG:DEBUG>,DEBUG,NDEBUG>" + PUBLIC + "RW_${REVC_PLATFORM}" + ) + +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(reVC + PRIVATE + "-Wall" + ) + 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(reVC + PUBLIC + /wd4996 /wd4244 + ) +endif() + +set_target_properties(reVC + PROPERTIES + C_STANDARD 11 + C_EXTENSIONS OFF + C_STANDARD_REQUIRED ON + CXX_STANDARD 11 + CXX_EXTENSIONS OFF + CXX_STANDARD_REQUIRED ON + PREFIX "" + ) + +if(REVC_INSTALL) + target_include_directories(reVC + INTERFACE + $<INSTALL_INTERFACE:${REVC_INSTALL_INCLUDEDIR}> + ) + + install( + TARGETS reVC + EXPORT reVC-targets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) +endif() |