From ef7f64470982da4817a735d58abe55d6435c79b6 Mon Sep 17 00:00:00 2001 From: John Magdy Lotfy Kamel <19735243+Zorono@users.noreply.github.com> Date: Thu, 23 Apr 2026 16:57:06 +0000 Subject: [PATCH 1/3] Update CMakeLists.txt for dependencies and sources --- CMakeLists.txt | 96 +++++++++++++++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 40 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 03d143b..8557c34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,10 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.19) if (NOT MAIN_RUN) project(dependencies) include(ExternalProject) + include(FetchContent) ExternalProject_Add(samp-plugin-sdk PREFIX "samp-plugin-sdk" @@ -11,74 +12,92 @@ if (NOT MAIN_RUN) GIT_TAG "master" UPDATE_COMMAND "" CONFIGURE_COMMAND "" + SOURCE_DIR "${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-build" + STAMP_DIR "${CMAKE_BINARY_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 "${CMAKE_BINARY_DIR}/external/sampgdk-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-build" + STAMP_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-stamp" + CMAKE_ARGS + "-DCMAKE_INSTALL_PREFIX=${SAMPGDK_INSTALL_DIR}" + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + "-DSAMP_SDK_ROOT=${CMAKE_BINARY_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 "${CMAKE_BINARY_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 "${CMAKE_BINARY_DIR}/external/subhook-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/external/subhook-build" + STAMP_DIR "${CMAKE_BINARY_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 "${CMAKE_BINARY_DIR}/external/sampgdk-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-build" + STAMP_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-stamp" + CMAKE_ARGS + "-DCMAKE_INSTALL_PREFIX=${SAMPGDK_INSTALL_DIR}" + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + "-DSAMP_SDK_ROOT=${CMAKE_BINARY_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 ${CMAKE_BINARY_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/ + ${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src + ${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src/amx + ${CMAKE_BINARY_DIR}/external/subhook-src + ${CMAKE_BINARY_DIR}/external/sampgdk-src/src/sampgdk/include/ + ${CMAKE_BINARY_DIR}/external/sampgdk-src/src/sampgdk-build/include/ ) add_definitions(-D_CRT_SECURE_NO_WARNINGS) @@ -87,26 +106,23 @@ else () 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 + ${CMAKE_BINARY_DIR}/external/subhook-src/subhook.c + ${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src/amxplugin.cpp + ${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src/amxplugin2.cpp ) if (WIN32) target_link_libraries(pawn-natives - ${CMAKE_SOURCE_DIR}/sampgdk/src/sampgdk-build/Release/sampgdk4.lib + ${CMAKE_BINARY_DIR}/external/sampgdk-src/src/sampgdk-build/Release/sampgdk4.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 + ${CMAKE_BINARY_DIR}/external/sampgdk-src/src/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 () From 26c8d34ef1e2424ed63e7eda05a8b2d8dc58de5d Mon Sep 17 00:00:00 2001 From: John Magdy Lotfy Kamel <19735243+Zorono@users.noreply.github.com> Date: Fri, 24 Apr 2026 07:42:55 +0000 Subject: [PATCH 2/3] Junctions & spaces problem fix --- CMakeLists.txt | 57 ++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8557c34..0f9f99a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,15 +6,19 @@ if (NOT MAIN_RUN) include(ExternalProject) include(FetchContent) + # 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) + ExternalProject_Add(samp-plugin-sdk PREFIX "samp-plugin-sdk" GIT_REPOSITORY "https://github.com/Y-Less/samp-plugin-sdk.git" GIT_TAG "master" UPDATE_COMMAND "" CONFIGURE_COMMAND "" - SOURCE_DIR "${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src" - BINARY_DIR "${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-build" - STAMP_DIR "${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-stamp" + 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 @@ -28,13 +32,13 @@ if (NOT MAIN_RUN) GIT_REPOSITORY "https://github.com/Just-Archives/sampgdk.git" GIT_TAG "master" UPDATE_COMMAND "" - SOURCE_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-src" - BINARY_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-build" - STAMP_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-stamp" + 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=${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src/src/samp-plugin-sdk" + "-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 "" @@ -45,7 +49,7 @@ if (NOT MAIN_RUN) cmake_modules GIT_REPOSITORY https://github.com/Just-Archives/cmake-modules.git GIT_TAG main - SOURCE_DIR "${CMAKE_BINARY_DIR}/external/cmake-modules" + SOURCE_DIR "${BIN_DIR}/external/cmake-modules" ) FetchContent_MakeAvailable(cmake_modules) @@ -55,9 +59,9 @@ if (NOT MAIN_RUN) GIT_TAG "main" UPDATE_COMMAND "" CONFIGURE_COMMAND "" - SOURCE_DIR "${CMAKE_BINARY_DIR}/external/subhook-src" - BINARY_DIR "${CMAKE_BINARY_DIR}/external/subhook-build" - STAMP_DIR "${CMAKE_BINARY_DIR}/external/subhook-stamp" + 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 @@ -72,13 +76,13 @@ if (NOT MAIN_RUN) GIT_REPOSITORY "https://github.com/Just-Archives/sampgdk.git" GIT_TAG "master" UPDATE_COMMAND "" - SOURCE_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-src" - BINARY_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-build" - STAMP_DIR "${CMAKE_BINARY_DIR}/external/sampgdk-stamp" + 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=${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src/src/samp-plugin-sdk" + "-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 "" @@ -88,16 +92,16 @@ else () project(pawn-natives) # Now that we have them, use them. - list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}/external/cmake-modules) + list(APPEND CMAKE_MODULE_PATH ${BIN_DIR}/external/cmake-modules) include(AMXConfig) include(AddSAMPPlugin) include_directories( - ${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src - ${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src/amx - ${CMAKE_BINARY_DIR}/external/subhook-src - ${CMAKE_BINARY_DIR}/external/sampgdk-src/src/sampgdk/include/ - ${CMAKE_BINARY_DIR}/external/sampgdk-src/src/sampgdk-build/include/ + ${BIN_DIR}/external/samp-plugin-sdk-src + ${BIN_DIR}/external/samp-plugin-sdk-src/amx + ${BIN_DIR}/external/subhook-src + ${BIN_DIR}/external/sampgdk-src/src/sampgdk/include/ + ${BIN_DIR}/external/sampgdk-src/src/sampgdk-build/include/ ) add_definitions(-D_CRT_SECURE_NO_WARNINGS) @@ -106,20 +110,20 @@ else () add_samp_plugin(pawn-natives test.cpp - ${CMAKE_BINARY_DIR}/external/subhook-src/subhook.c - ${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src/amxplugin.cpp - ${CMAKE_BINARY_DIR}/external/samp-plugin-sdk-src/amxplugin2.cpp + ${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 ) if (WIN32) target_link_libraries(pawn-natives - ${CMAKE_BINARY_DIR}/external/sampgdk-src/src/sampgdk-build/Release/sampgdk4.lib + ${BIN_DIR}/external/sampgdk-src/src/sampgdk-build/Release/sampgdk4.lib ) set_target_properties(pawn-natives PROPERTIES LINKER_LANGUAGE CXX) else () target_link_libraries(pawn-natives - ${CMAKE_BINARY_DIR}/external/sampgdk-src/src/sampgdk-build/libsampgdk.so + ${BIN_DIR}/external/sampgdk-src/src/sampgdk-build/libsampgdk.so ) set(CMAKE_CXX_FLAGS "-std=gnu++0x -m32") @@ -127,4 +131,3 @@ else () endif () - From 54b26e53d89b751c35c66a7df0dd259d28f1b7bd Mon Sep 17 00:00:00 2001 From: John Magdy Lotfy Kamel <19735243+Zorono@users.noreply.github.com> Date: Sat, 25 Apr 2026 01:21:37 +0000 Subject: [PATCH 3/3] Refactor & minor fixes --- CMakeLists.txt | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f9f99a..8bbedc3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,15 @@ 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) - # 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) - ExternalProject_Add(samp-plugin-sdk PREFIX "samp-plugin-sdk" GIT_REPOSITORY "https://github.com/Y-Less/samp-plugin-sdk.git" @@ -96,34 +96,40 @@ else () include(AMXConfig) include(AddSAMPPlugin) - include_directories( - ${BIN_DIR}/external/samp-plugin-sdk-src - ${BIN_DIR}/external/samp-plugin-sdk-src/amx - ${BIN_DIR}/external/subhook-src - ${BIN_DIR}/external/sampgdk-src/src/sampgdk/include/ - ${BIN_DIR}/external/sampgdk-src/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 - ${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 - ) if (WIN32) target_link_libraries(pawn-natives - ${BIN_DIR}/external/sampgdk-src/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 - ${BIN_DIR}/external/sampgdk-src/src/sampgdk-build/libsampgdk.so + ${BIN_DIR}/external/sampgdk-build/libsampgdk.so ) set(CMAKE_CXX_FLAGS "-std=gnu++0x -m32")