diff --git a/CMakeLists.txt b/CMakeLists.txt index 03d143b..8bbedc3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,14 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.19) + +# Get the absolute path and normalize it to avoid junction/space issues +# Junctions with spaces breaks the build process.... +get_filename_component(BIN_DIR "${CMAKE_BINARY_DIR}" REALPATH) if (NOT MAIN_RUN) project(dependencies) include(ExternalProject) + include(FetchContent) ExternalProject_Add(samp-plugin-sdk PREFIX "samp-plugin-sdk" @@ -11,104 +16,124 @@ if (NOT MAIN_RUN) GIT_TAG "master" UPDATE_COMMAND "" CONFIGURE_COMMAND "" + SOURCE_DIR "${BIN_DIR}/external/samp-plugin-sdk-src" + BINARY_DIR "${BIN_DIR}/external/samp-plugin-sdk-build" + STAMP_DIR "${BIN_DIR}/external/samp-plugin-sdk-stamp" BUILD_COMMAND "" INSTALL_COMMAND "" + CMAKE_ARGS + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" ) if (NOT WIN32) + set(SAMPGDK_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/sampgdk_install") ExternalProject_Add(sampgdk PREFIX "sampgdk" - GIT_REPOSITORY "https://github.com/Zeex/sampgdk.git" + GIT_REPOSITORY "https://github.com/Just-Archives/sampgdk.git" GIT_TAG "master" UPDATE_COMMAND "" - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release - INSTALL_COMMAND "" - CMAKE_ARGS "-DSAMP_SDK_ROOT=${CMAKE_SOURCE_DIR}/samp-plugin-sdk/src/samp-plugin-sdk" + SOURCE_DIR "${BIN_DIR}/external/sampgdk-src" + BINARY_DIR "${BIN_DIR}/external/sampgdk-build" + STAMP_DIR "${BIN_DIR}/external/sampgdk-stamp" + CMAKE_ARGS + "-DCMAKE_INSTALL_PREFIX=${SAMPGDK_INSTALL_DIR}" + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + "-DSAMP_SDK_ROOT=${BIN_DIR}/external/samp-plugin-sdk-src/src/samp-plugin-sdk" + "-DINSTALL_PDB=OFF" + BUILD_COMMAND ${CMAKE_COMMAND} --build --config Release + INSTALL_COMMAND "" ) endif () - ExternalProject_Add(cmake-modules - PREFIX "cmake-modules" - GIT_REPOSITORY "https://github.com/Zeex/cmake-modules.git" - GIT_TAG "master" - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" + FetchContent_Declare( + cmake_modules + GIT_REPOSITORY https://github.com/Just-Archives/cmake-modules.git + GIT_TAG main + SOURCE_DIR "${BIN_DIR}/external/cmake-modules" ) + FetchContent_MakeAvailable(cmake_modules) ExternalProject_Add(subhook PREFIX "subhook" - GIT_REPOSITORY "https://github.com/Zeex/subhook.git" - GIT_TAG "master" + GIT_REPOSITORY "https://github.com/Just-Archives/subhook.git" + GIT_TAG "main" UPDATE_COMMAND "" CONFIGURE_COMMAND "" + SOURCE_DIR "${BIN_DIR}/external/subhook-src" + BINARY_DIR "${BIN_DIR}/external/subhook-build" + STAMP_DIR "${BIN_DIR}/external/subhook-stamp" BUILD_COMMAND "" INSTALL_COMMAND "" + CMAKE_ARGS + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" ) if (WIN32) # Windows seems to go top-to-bottom. Linux the other way... + set(SAMPGDK_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/sampgdk_install") ExternalProject_Add(sampgdk PREFIX "sampgdk" - GIT_REPOSITORY "https://github.com/Zeex/sampgdk.git" + GIT_REPOSITORY "https://github.com/Just-Archives/sampgdk.git" GIT_TAG "master" UPDATE_COMMAND "" - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target Install - CMAKE_ARGS "-DSAMP_SDK_ROOT=${CMAKE_SOURCE_DIR}/samp-plugin-sdk/src/samp-plugin-sdk" + SOURCE_DIR "${BIN_DIR}/external/sampgdk-src" + BINARY_DIR "${BIN_DIR}/external/sampgdk-build" + STAMP_DIR "${BIN_DIR}/external/sampgdk-stamp" + CMAKE_ARGS + "-DCMAKE_INSTALL_PREFIX=${SAMPGDK_INSTALL_DIR}" + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + "-DSAMP_SDK_ROOT=${BIN_DIR}/external/samp-plugin-sdk-src/src/samp-plugin-sdk" + "-DINSTALL_PDB=OFF" + BUILD_COMMAND ${CMAKE_COMMAND} --build --config Release + INSTALL_COMMAND "" ) endif () - - add_custom_command(TARGET sampgdk POST_BUILD - COMMAND "${CMAKE_COMMAND}" ${CMAKE_SOURCE_DIR} -DMAIN_RUN=TRUE - COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_SOURCE_DIR} - COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_SOURCE_DIR} --config Release - ) else () project(pawn-natives) # Now that we have them, use them. - list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake-modules/src/cmake-modules) + list(APPEND CMAKE_MODULE_PATH ${BIN_DIR}/external/cmake-modules) include(AMXConfig) include(AddSAMPPlugin) - include_directories( - samp-plugin-sdk/src/samp-plugin-sdk/ - samp-plugin-sdk/src/samp-plugin-sdk/amx - subhook/src/ - sampgdk/src/sampgdk/include/ - sampgdk/src/sampgdk-build/include/ + add_samp_plugin(pawn-natives + ${BIN_DIR}/external/subhook-src/subhook.c + ${BIN_DIR}/external/samp-plugin-sdk-src/amxplugin.cpp + ${BIN_DIR}/external/samp-plugin-sdk-src/amxplugin2.cpp + ) + + target_include_directories(pawn-natives + PRIVATE + $ + $ + $ + ) + + target_include_directories(pawn-natives + PRIVATE + $ + $ + $ ) add_definitions(-D_CRT_SECURE_NO_WARNINGS) add_definitions(-DSUBHOOK_IMPLEMENTATION) add_definitions(-DHAVE_STDINT_H=1) - add_samp_plugin(pawn-natives - test.cpp - subhook/src/subhook/subhook.c - samp-plugin-sdk/src/samp-plugin-sdk/amxplugin.cpp - samp-plugin-sdk/src/samp-plugin-sdk/amxplugin2.cpp - ) if (WIN32) target_link_libraries(pawn-natives - ${CMAKE_SOURCE_DIR}/sampgdk/src/sampgdk-build/Release/sampgdk4.lib + ${BIN_DIR}/external/sampgdk-build/Release/sampgdk3.lib ) set_target_properties(pawn-natives PROPERTIES LINKER_LANGUAGE CXX) else () target_link_libraries(pawn-natives - ${CMAKE_SOURCE_DIR}/sampgdk/src/sampgdk-build/libsampgdk.so + ${BIN_DIR}/external/sampgdk-build/libsampgdk.so ) - set(CMAKE_CXX_FLAGS "-std=gnu++0x") - if(TARGET_BUILD_ARCH MATCHES "(i[3-6]86|x86)" AND NOT TARGET_BUILD_ARCH MATCHES "(x64|x86_64|amd64)") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") - endif() + set(CMAKE_CXX_FLAGS "-std=gnu++0x -m32") endif () endif () -