From 4b06b2eec37ff51fdc8d018fb858b8e5c8688d57 Mon Sep 17 00:00:00 2001 From: craftablescience Date: Sat, 29 Jun 2024 05:07:05 -0400 Subject: [PATCH] feat: move all thirdparty libraries to ext directory, out of src --- .gitmodules | 18 ++--- CMakeLists.txt | 101 +++----------------------- cmake/IncludeSubdirectory.cmake | 6 ++ ext/_ext.cmake | 48 ++++++++++++ {src/thirdparty => ext}/bufferstream | 0 {src/thirdparty => ext}/cryptopp | 0 ext/miniz | 1 + {src/thirdparty => ext}/minizip-ng | 0 lang/c/src/sourceppc/_sourceppc.cmake | 9 +++ src/sourcepp/_sourcepp.cmake | 26 +++++++ src/thirdparty/miniz | 1 - 11 files changed, 108 insertions(+), 102 deletions(-) create mode 100644 cmake/IncludeSubdirectory.cmake create mode 100644 ext/_ext.cmake rename {src/thirdparty => ext}/bufferstream (100%) rename {src/thirdparty => ext}/cryptopp (100%) create mode 160000 ext/miniz rename {src/thirdparty => ext}/minizip-ng (100%) create mode 100644 lang/c/src/sourceppc/_sourceppc.cmake create mode 100644 src/sourcepp/_sourcepp.cmake delete mode 160000 src/thirdparty/miniz diff --git a/.gitmodules b/.gitmodules index c3a90779..2bbc0a0e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,12 @@ -[submodule "src/thirdparty/bufferstream"] - path = src/thirdparty/bufferstream +[submodule "ext/bufferstream"] + path = ext/bufferstream url = https://github.com/craftablescience/BufferStream -[submodule "src/thirdparty/cryptopp"] - path = src/thirdparty/cryptopp +[submodule "ext/cryptopp"] + path = ext/cryptopp url = https://github.com/abdes/cryptopp-cmake -[submodule "src/thirdparty/miniz"] - path = src/thirdparty/miniz - url = https://github.com/richgel999/miniz -[submodule "src/thirdparty/minizip-ng"] - path = src/thirdparty/minizip-ng +[submodule "ext/miniz"] + path = ext/miniz + url = https://github.com/richgel999/miniz +[submodule "ext/minizip-ng"] + path = ext/minizip-ng url = https://github.com/zlib-ng/minizip-ng diff --git a/CMakeLists.txt b/CMakeLists.txt index d7124dcb..1dddc3a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,105 +38,30 @@ if(SOURCEPP_USE_STATIC_MSVC_RUNTIME) endif() -# bufferstream -if(NOT TARGET bufferstream) - add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/thirdparty/bufferstream") -endif() - - -# compressonator -add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ext/compressonator") - - -# cryptopp -if (NOT TARGET cryptopp::cryptopp) - set(CRYPTOPP_BUILD_TESTING OFF CACHE INTERNAL "") - set(CRYPTOPP_INSTALL OFF CACHE INTERNAL "") - add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/thirdparty/cryptopp") -endif() - - -# ice -if(SOURCEPP_USE_VICEPP) - add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ext/ice") -endif() - - -# miniz -if(SOURCEPP_USE_VTFPP AND NOT TARGET miniz) - add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/thirdparty/miniz") -endif() - - -# minizip-ng -if (SOURCEPP_USE_VPKPP AND NOT TARGET MINIZIP::minizip) - set(MZ_COMPAT OFF CACHE INTERNAL "") - set(MZ_ZLIB OFF CACHE INTERNAL "") - set(MZ_BZIP2 OFF CACHE INTERNAL "") - set(MZ_LZMA OFF CACHE INTERNAL "") - set(MZ_ZSTD OFF CACHE INTERNAL "") - set(MZ_LIBCOMP OFF CACHE INTERNAL "") - set(MZ_PKCRYPT OFF CACHE INTERNAL "") - set(MZ_WZAES OFF CACHE INTERNAL "") - set(MZ_OPENSSL OFF CACHE INTERNAL "") - set(MZ_FETCH_LIBS ON CACHE INTERNAL "") - set(MZ_FORCE_FETCH_LIBS ON CACHE INTERNAL "") - set(SKIP_INSTALL_ALL ON CACHE INTERNAL "") - add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/src/thirdparty/minizip-ng") -endif() +# Add scripts +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include(AddPrettyParser) +include(AddSourcePPLibrary) +include(IncludeSubdirectory) -# stb -if(SOURCEPP_USE_VTFPP) - add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ext/stb") -endif() +# Include thirdparty libraries +include_subdirectory(ext) # Shared code -add_library(${PROJECT_NAME} STATIC - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/buffer/Buffer.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/Adler32.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/CRC32.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/MD5.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/RSA.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/String.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/fs/FS.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Angles.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Float.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Integer.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Matrix.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Vector.h" - "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/string/String.h" - "${CMAKE_CURRENT_SOURCE_DIR}/src/sourcepp/buffer/Buffer.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/sourcepp/crypto/Adler32.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/sourcepp/crypto/CRC32.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/sourcepp/crypto/MD5.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/sourcepp/crypto/RSA.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/sourcepp/crypto/String.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/sourcepp/fs/FS.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/sourcepp/string/String.cpp") -target_link_libraries(${PROJECT_NAME} PUBLIC bufferstream cryptopp::cryptopp) -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") +include_subdirectory(src/sourcepp) # Shared C code if(SOURCEPP_BUILD_C_WRAPPERS) - list(APPEND ${PROJECT_NAME}c_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/API.h" - "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/Buffer.h" - "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/Convert.hpp" - "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/Helpers.h" - "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/String.h" - "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/src/sourceppc/Buffer.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/src/sourceppc/Convert.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/src/sourceppc/String.cpp") + include_subdirectory(lang/c/src/sourceppc PROPAGATE ${PROJECT_NAME}c_SOURCES) endif() # Tests, part 1 if(SOURCEPP_BUILD_TESTS) set(SOURCEPP_TEST_NAME "${PROJECT_NAME}_test") - include(FetchContent) FetchContent_Declare( googletest @@ -144,18 +69,11 @@ if(SOURCEPP_BUILD_TESTS) GIT_TAG v1.14.0) FetchContent_MakeAvailable(googletest) enable_testing() - set(${SOURCEPP_TEST_NAME}_SOURCES "") list(APPEND ${SOURCEPP_TEST_NAME}_DEPS gtest_main) endif() -# Add scripts -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -include(AddPrettyParser) -include(AddSourcePPLibrary) - - # Add libraries add_sourcepp_library(dmxpp) add_sourcepp_library(fgdpp) @@ -172,7 +90,6 @@ if(SOURCEPP_BUILD_TESTS) add_executable(${SOURCEPP_TEST_NAME} ${${SOURCEPP_TEST_NAME}_SOURCES}) target_link_libraries(${SOURCEPP_TEST_NAME} PUBLIC ${${SOURCEPP_TEST_NAME}_DEPS}) target_compile_definitions(${SOURCEPP_TEST_NAME} PUBLIC ASSET_ROOT="${CMAKE_CURRENT_SOURCE_DIR}/test/res/") - include(GoogleTest) gtest_discover_tests(${SOURCEPP_TEST_NAME}) endif() diff --git a/cmake/IncludeSubdirectory.cmake b/cmake/IncludeSubdirectory.cmake new file mode 100644 index 00000000..7725c518 --- /dev/null +++ b/cmake/IncludeSubdirectory.cmake @@ -0,0 +1,6 @@ +function(include_subdirectory SUBDIR) + cmake_parse_arguments(PARSE_ARGV 1 OPTIONS "" "" "PROPAGATE") + cmake_path(GET SUBDIR FILENAME SUBDIR_FILENAME) + include("${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIR}/_${SUBDIR_FILENAME}.cmake") + return(PROPAGATE ${OPTIONS_PROPAGATE}) +endfunction() diff --git a/ext/_ext.cmake b/ext/_ext.cmake new file mode 100644 index 00000000..280c2766 --- /dev/null +++ b/ext/_ext.cmake @@ -0,0 +1,48 @@ +# bufferstream +if(NOT TARGET bufferstream) + add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/bufferstream") +endif() + + +# compressonator +add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/compressonator") + + +# cryptopp +if (NOT TARGET cryptopp::cryptopp) + set(CRYPTOPP_BUILD_TESTING OFF CACHE INTERNAL "") + set(CRYPTOPP_INSTALL OFF CACHE INTERNAL "") + add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/cryptopp") +endif() + + +# ice +add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/ice") + + +# miniz +if(NOT TARGET miniz) + add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/miniz") +endif() + + +# minizip-ng +if (NOT TARGET MINIZIP::minizip) + set(MZ_COMPAT OFF CACHE INTERNAL "") + set(MZ_ZLIB OFF CACHE INTERNAL "") + set(MZ_BZIP2 OFF CACHE INTERNAL "") + set(MZ_LZMA OFF CACHE INTERNAL "") + set(MZ_ZSTD OFF CACHE INTERNAL "") + set(MZ_LIBCOMP OFF CACHE INTERNAL "") + set(MZ_PKCRYPT OFF CACHE INTERNAL "") + set(MZ_WZAES OFF CACHE INTERNAL "") + set(MZ_OPENSSL OFF CACHE INTERNAL "") + set(MZ_FETCH_LIBS ON CACHE INTERNAL "") + set(MZ_FORCE_FETCH_LIBS ON CACHE INTERNAL "") + set(SKIP_INSTALL_ALL ON CACHE INTERNAL "") + add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/minizip-ng") +endif() + + +# stb +add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/stb") diff --git a/src/thirdparty/bufferstream b/ext/bufferstream similarity index 100% rename from src/thirdparty/bufferstream rename to ext/bufferstream diff --git a/src/thirdparty/cryptopp b/ext/cryptopp similarity index 100% rename from src/thirdparty/cryptopp rename to ext/cryptopp diff --git a/ext/miniz b/ext/miniz new file mode 160000 index 00000000..8573fd7c --- /dev/null +++ b/ext/miniz @@ -0,0 +1 @@ +Subproject commit 8573fd7cd6f49b262a0ccc447f3c6acfc415e556 diff --git a/src/thirdparty/minizip-ng b/ext/minizip-ng similarity index 100% rename from src/thirdparty/minizip-ng rename to ext/minizip-ng diff --git a/lang/c/src/sourceppc/_sourceppc.cmake b/lang/c/src/sourceppc/_sourceppc.cmake new file mode 100644 index 00000000..7f49f387 --- /dev/null +++ b/lang/c/src/sourceppc/_sourceppc.cmake @@ -0,0 +1,9 @@ +list(APPEND ${PROJECT_NAME}c_SOURCES + "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/API.h" + "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/Buffer.h" + "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/Convert.hpp" + "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/Helpers.h" + "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/sourceppc/String.h" + "${CMAKE_CURRENT_LIST_DIR}/Buffer.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Convert.cpp" + "${CMAKE_CURRENT_LIST_DIR}/String.cpp") diff --git a/src/sourcepp/_sourcepp.cmake b/src/sourcepp/_sourcepp.cmake new file mode 100644 index 00000000..22641c68 --- /dev/null +++ b/src/sourcepp/_sourcepp.cmake @@ -0,0 +1,26 @@ +add_library(${PROJECT_NAME} STATIC + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/buffer/Buffer.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/Adler32.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/CRC32.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/MD5.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/RSA.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/crypto/String.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/fs/FS.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Angles.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Float.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Integer.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Matrix.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/math/Vector.h" + "${CMAKE_CURRENT_SOURCE_DIR}/include/sourcepp/string/String.h" + "${CMAKE_CURRENT_LIST_DIR}/buffer/Buffer.cpp" + "${CMAKE_CURRENT_LIST_DIR}/crypto/Adler32.cpp" + "${CMAKE_CURRENT_LIST_DIR}/crypto/CRC32.cpp" + "${CMAKE_CURRENT_LIST_DIR}/crypto/MD5.cpp" + "${CMAKE_CURRENT_LIST_DIR}/crypto/RSA.cpp" + "${CMAKE_CURRENT_LIST_DIR}/crypto/String.cpp" + "${CMAKE_CURRENT_LIST_DIR}/fs/FS.cpp" + "${CMAKE_CURRENT_LIST_DIR}/string/String.cpp") + +target_link_libraries(${PROJECT_NAME} PUBLIC bufferstream cryptopp::cryptopp) + +target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") diff --git a/src/thirdparty/miniz b/src/thirdparty/miniz deleted file mode 160000 index 8714fd3c..00000000 --- a/src/thirdparty/miniz +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8714fd3cd8788eb18304200607247926f9728d1f