Skip to content

Commit

Permalink
Feature: Improve CMake project structure (LiteLDev#787)
Browse files Browse the repository at this point in the history
* Feature: Improve CMake project structure

* Rename Test to test

* Move RELEASE to assets

* Rename Scripts to scripts

* Fix CI

* Merge PackOutput into CMake build workflow

* Pack SDK wit CMake
  • Loading branch information
RimuruChan authored Sep 13, 2022
1 parent d6556b4 commit 561a848
Show file tree
Hide file tree
Showing 69 changed files with 182 additions and 185 deletions.
39 changes: 18 additions & 21 deletions .github/workflows/cmake-self-hosted.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ jobs:
path: |
${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_api.lib
${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_var.lib
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Scripts/LINK.txt') }}
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('scripts/LINK.txt') }}

- name: Download Server
if: steps.cache-bds-lib.outputs.cache-hit != 'true'
working-directory: ${{ env.GITHUB_WORKSPACE }}
run: |
mkdir Tools/Server
ServerLink=$(cat 'Scripts/LINK.txt')
ServerLink=$(cat 'scripts/LINK.txt')
curl -L -o Tools/Server/server.zip "$ServerLink"
unzip Tools/Server/server.zip -d Tools/Server/ > /dev/null
shell: bash
Expand Down Expand Up @@ -107,39 +107,36 @@ jobs:
- name: Build SymDBHelper
run: cmake --build ${{github.workspace}}/build_clang --config ${{env.BUILD_TYPE}} --target SymDBHelper

- name: Compress Resource Packs
- name: Configure CMake(MSVC)
run: |
cd RELEASE/plugins/LiteLoader/ResourcePacks
7z a LiteLoaderBDS-CUI.tar LiteLoaderBDS-CUI
rm -r LiteLoaderBDS-CUI
shell: bash
cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
shell: cmd

- name: Copy Release
working-directory: ${{ env.GITHUB_WORKSPACE }}
- name: Pack output and SDK
run: |
cd Scripts
./CopyRelease.cmd action
cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target PackOutput
cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target PackSDK
shell: cmd

- name: Move PDB to path
working-directory: ${{ env.GITHUB_WORKSPACE }}
- name: Compress Resource Packs
run: |
mkdir PDB
cp x64/Release/*.pdb PDB
cd build/output/plugins/LiteLoader/ResourcePacks
7z a LiteLoaderBDS-CUI.tar LiteLoaderBDS-CUI
rm -r LiteLoaderBDS-CUI
shell: bash

- name: Pack PDB
- name: Pack PDB for Release
working-directory: ${{ env.GITHUB_WORKSPACE }}
if: startsWith(github.ref, 'refs/tags/')
run: 7z a -tzip PDB.zip PDB
run: 7z a -tzip PDB.zip build/pdb
shell: bash

- name: Update LiteLoaderSDK
working-directory: ${{ env.GITHUB_WORKSPACE }}
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
cd Scripts
cd scripts
./UploadSDK.cmd action
env:
REPO_KEY: ${{secrets.PUSH_TOKEN}}
Expand All @@ -150,16 +147,16 @@ jobs:
uses: actions/[email protected]
with:
name: LiteLoader
path: ${{ github.workspace }}\RELEASE\
path: ${{ github.workspace }}\build\output\

- name: Upload PDB
uses: actions/[email protected]
with:
name: PDB
path: ${{ github.workspace }}\PDB
path: ${{ github.workspace }}\build\pdb\

- name: Pack Release
working-directory: ${{ env.GITHUB_WORKSPACE }}/RELEASE
working-directory: ${{ env.GITHUB_WORKSPACE }}/build/output
id: rel
if: startsWith(github.ref, 'refs/tags/')
run: |
Expand Down
22 changes: 4 additions & 18 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ jobs:
path: |
${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_api.lib
${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_var.lib
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Scripts/LINK.txt') }}
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('scripts/LINK.txt') }}

- name: Download Server
if: steps.cache-bds-lib.outputs.cache-hit != 'true'
working-directory: ${{ env.GITHUB_WORKSPACE }}
run: |
mkdir Tools/Server
ServerLink=$(cat 'Scripts/LINK.txt')
ServerLink=$(cat 'scripts/LINK.txt')
curl -L -o Tools/Server/server.zip "$ServerLink"
unzip Tools/Server/server.zip -d Tools/Server/ > /dev/null
shell: bash
Expand Down Expand Up @@ -97,28 +97,14 @@ jobs:
- name: Build SymDBHelper
run: cmake --build ${{github.workspace}}/build_clang --config ${{env.BUILD_TYPE}} --target SymDBHelper

- name: Copy Release
working-directory: ${{ env.GITHUB_WORKSPACE }}
run: |
cd Scripts
./CopyRelease.cmd action
shell: cmd

- name: Move PDB to path
working-directory: ${{ env.GITHUB_WORKSPACE }}
run: |
mkdir PDB
cp x64/Release/*.pdb PDB
shell: bash

- name: Upload LiteLoader
uses: actions/[email protected]
with:
name: LiteLoader
path: ${{ github.workspace }}\RELEASE\
path: ${{ github.workspace }}\build\output\

- name: Upload PDB
uses: actions/[email protected]
with:
name: PDB
path: ${{ github.workspace }}\PDB
path: ${{ github.workspace }}\build\pdb\
43 changes: 13 additions & 30 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,36 +1,19 @@
x64/
**/.vs/
**/x64/
**/*.user
**/.vscode/
# Visual Studio related
/.vs/
/CMakeSettings.json

**/bedrock_server_api.lib
**/bedrock_server_var.lib
**/SymDB_DelayLoadHelper.lib
LiteLoader/Lib/SymDBHelper.lib
**/*.lastcodeanalysissucceeded
*.zip

/LiteLoader/out/
LiteLoaderSDK/

RELEASE/*.dll
RELEASE/LLPeEditor.exe
!RELEASE/ChakraCore.dll
RELEASE/plugins/LiteLoader/LiteLoader.*.dll
RELEASE/plugins/LiteLoader/LiteLoader.*.pdb
RELEASE/plugins/LiteLoader/pdb
!RELEASE/plugins/LiteLoader/CrashLogger.dll
# Visual Studio Code related
/.vscode/

# Idea related
.idea/**
!.idea/cmake.xml

cmake-build-release/
/out
LiteLoader/Lib/Demangler.pdb
LiteLoader/Lib/Demangler.lib

# Build related
/build
**/Directory.build.props
RELEASE/plugins/lib/BaseLib.js
RELEASE/plugins/lib/BaseLib.lua
**/bedrock_server_api.lib
**/bedrock_server_var.lib

# Misc
LiteLoaderSDK/
/output/
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "RELEASE/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI"]
path = RELEASE/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI
[submodule "assets/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI"]
path = assets/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI
url = https://github.com/OEOTYAN/LiteLoaderBDS-CUI.git
2 changes: 1 addition & 1 deletion .idea/cmake.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions CMake/CleanOutput.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
add_custom_target(
CleanOutput
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/output
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/pdb
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/sdk
COMMENT "Cleaning output/pdb/sdk directory"
VERBATIM
)
29 changes: 29 additions & 0 deletions CMake/PackOutput.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/pdb)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/output)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/output/plugins/LiteLoader/)

add_custom_target(PackOutput)

# Copy assets to output after build all.
add_custom_command(
TARGET PackOutput POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/assets ${CMAKE_BINARY_DIR}/output/
COMMENT "Copying assets to output"
VERBATIM
)

# Copy ScriptEngine BaseLib to output after build all.
add_custom_command(
TARGET PackOutput POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/ScriptEngine/BaseLib ${CMAKE_BINARY_DIR}/output/plugins/lib/
COMMENT "Copying ScriptEngine BaseLib to output"
VERBATIM
)

# Copy LLPeEditor to output after build all.
add_custom_command(
TARGET PackOutput POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/LLPeEditor.exe ${CMAKE_BINARY_DIR}/output/
COMMENT "Copying LLPeEditor to output"
VERBATIM
)
17 changes: 17 additions & 0 deletions CMake/PackSDK.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/sdk)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/sdk/Tools)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/sdk/Lib)

add_custom_target(PackSDK)

add_custom_command(
TARGET PackSDK POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LiteLoader_SOURCE_DIR}/Header ${CMAKE_BINARY_DIR}/sdk/Header
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/LibraryBuilder.exe ${CMAKE_BINARY_DIR}/sdk/Tools/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/LLPeEditor.exe ${CMAKE_BINARY_DIR}/sdk/Tools/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/SDK-submodule-add.cmd ${CMAKE_BINARY_DIR}/sdk/Tools/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/SDK-submodule-update.cmd ${CMAKE_BINARY_DIR}/sdk/Tools/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/SDK-subtree.cmd ${CMAKE_BINARY_DIR}/sdk/Tools/
COMMENT "Copying SDK files"
VERBATIM
)
8 changes: 6 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.21)
project(LiteLoaderBDS)

# Add sub directories
add_subdirectory(PreLoader)
add_subdirectory(LLPreLoader)
add_subdirectory(LiteLoader)
add_subdirectory(ScriptEngine/CMake/ScriptEngine-Lua)
add_subdirectory(ScriptEngine/CMake/ScriptEngine-QuickJs)
Expand All @@ -11,4 +11,8 @@ add_subdirectory(Tools/Demangler)
add_subdirectory(ScriptEngine/third-party/ScriptX/CMake/ScriptX-Lua)
add_subdirectory(ScriptEngine/third-party/ScriptX/CMake/ScriptX-QuickJs)
add_subdirectory(ScriptEngine/third-party/ScriptX/CMake/ScriptX-NodeJs)
add_subdirectory(Tools/SymDBHelper)
add_subdirectory(Tools/SymDBHelper)

include(${CMAKE_SOURCE_DIR}/CMake/PackOutput.cmake)
include(${CMAKE_SOURCE_DIR}/CMake/PackSDK.cmake)
include(${CMAKE_SOURCE_DIR}/CMake/CleanOutput.cmake)
15 changes: 12 additions & 3 deletions PreLoader/CMakeLists.txt → LLPreLoader/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ project(LLPreLoader)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_BUILD_TYPE Release)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/x64/)

add_definitions(-D"NDEBUG" -D"_WINDOWS" -D"_USRDLL" -D"_WINDLL" -D"_UNICODE" -D"UNICODE")

Expand All @@ -24,6 +23,16 @@ link_directories(${CMAKE_SOURCE_DIR}/x64/Release/)

aux_source_directory(../LiteLoader/Lib/third-party/rawpdb DIR_LIB_SRCS)
add_library(LLPreLoader SHARED dllmain.cpp SymDB.cpp PreLoader.cpp Utils.cpp ${DIR_LIB_SRCS})
target_link_libraries(LLPreLoader SymDBHelper
target_link_libraries(
LLPreLoader SymDBHelper Demangler
"${CMAKE_SOURCE_DIR}/LiteLoader/Lib/third-party/detours/detours.lib"
"${CMAKE_SOURCE_DIR}/LiteLoader/Lib/Demangler.lib")
)

# Copy the dll and pdb to the output directory
add_custom_command(
TARGET LLPreLoader POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:LLPreLoader> ${CMAKE_BINARY_DIR}/output/
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PDB_FILE:LLPreLoader> ${CMAKE_BINARY_DIR}/pdb/
COMMENT "Copying dll and pdb to output directory"
VERBATIM
)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
32 changes: 24 additions & 8 deletions LiteLoader/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,8 @@ project(LiteLoader)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_BUILD_TYPE Release) # Always uses Release mode to build BDS plugin for ABI Compatibility

set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/x64/)

set(TARGET_DIR ${CMAKE_SOURCE_DIR}/x64/Release/)

file(GLOB_RECURSE SRC_FILES
file(
GLOB_RECURSE SRC_FILES
${PROJECT_SOURCE_DIR}/Lib/third-party/nbt-cpp/*.cpp
${PROJECT_SOURCE_DIR}/Header/*.cpp
${PROJECT_SOURCE_DIR}/Header/*.hpp
Expand Down Expand Up @@ -51,7 +48,8 @@ link_directories(${CMAKE_SOURCE_DIR}/x64/Release)

add_library(LiteLoader SHARED ${SRC_FILES})

target_link_libraries(LiteLoader
target_link_libraries(
LiteLoader
"${PROJECT_SOURCE_DIR}/Lib/third-party/leveldb/leveldb.lib"
"${PROJECT_SOURCE_DIR}/Lib/third-party/openssl/libcrypto.lib"
"${PROJECT_SOURCE_DIR}/Lib/third-party/openssl/libssl.lib"
Expand All @@ -70,6 +68,24 @@ target_link_libraries(LiteLoader
LLPreLoader
)

add_custom_command(TARGET LiteLoader PRE_BUILD
add_custom_command(
TARGET LiteLoader PRE_BUILD
COMMAND cmd /c ${CMAKE_SOURCE_DIR}/Scripts/PrepareLibraries.cmd ${CMAKE_SOURCE_DIR}
)
)

# Copy the built DLL and PDB to the output directory
add_custom_command(
TARGET LiteLoader POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:LiteLoader> ${CMAKE_BINARY_DIR}/output/
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PDB_FILE:LiteLoader> ${CMAKE_BINARY_DIR}/pdb/
COMMENT "Copying LiteLoader DLL and PDB to output directory"
VERBATIM
)

# Copy the built lib to the SDK directory
add_custom_command(
TARGET LiteLoader POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_LINKER_FILE:LiteLoader> ${CMAKE_BINARY_DIR}/sdk/lib/
COMMENT "Copying LiteLoader Lib to SDK directory"
VERBATIM
)
9 changes: 9 additions & 0 deletions ScriptEngine/CMake/ScriptEngine-Lua/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,12 @@ set(SCRIPTX_BACKEND Lua)
set(LLSE_BACKEND_LIBRARY Lua)

include(../../CMakeLists.txt)

# copy target DLL and PDB to output directory
add_custom_command(
TARGET LiteLoader.Lua POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:LiteLoader.Lua> ${CMAKE_BINARY_DIR}/output/plugins/LiteLoader/
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PDB_FILE:LiteLoader.Lua> ${CMAKE_BINARY_DIR}/pdb/
COMMENT "Copying LiteLoader.Lua DLL and PDB to output directory"
VERBATIM
)
9 changes: 9 additions & 0 deletions ScriptEngine/CMake/ScriptEngine-NodeJs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,12 @@ set(SCRIPTX_BACKEND V8)
set(LLSE_BACKEND_LIBRARY NodeJs)

include(../../CMakeLists.txt)

# copy target DLL and PDB to output directory
add_custom_command(
TARGET LiteLoader.NodeJs POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:LiteLoader.NodeJs> ${CMAKE_BINARY_DIR}/output/plugins/LiteLoader/
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PDB_FILE:LiteLoader.NodeJs> ${CMAKE_BINARY_DIR}/pdb/
COMMENT "Copying LiteLoader.NodeJs DLL and PDB to output directory"
VERBATIM
)
9 changes: 9 additions & 0 deletions ScriptEngine/CMake/ScriptEngine-QuickJs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,12 @@ set(SCRIPTX_BACKEND QuickJs)
set(LLSE_BACKEND_LIBRARY QuickJs)

include(../../CMakeLists.txt)

# copy target DLL and PDB to output directory
add_custom_command(
TARGET LiteLoader.Js POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:LiteLoader.Js> ${CMAKE_BINARY_DIR}/output/plugins/LiteLoader/
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PDB_FILE:LiteLoader.Js> ${CMAKE_BINARY_DIR}/pdb/
COMMENT "Copying LiteLoader.Js DLL and PDB to output directory"
VERBATIM
)
Loading

0 comments on commit 561a848

Please sign in to comment.