Skip to content

Commit

Permalink
fix: Build independent target for cli
Browse files Browse the repository at this point in the history
  • Loading branch information
magic-akari committed Sep 19, 2024
1 parent 40bd53d commit cc182e7
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 354 deletions.
42 changes: 36 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ include(FetchContent)

set(LLVM_ENABLE_PROJECTS clang CACHE STRING "")

set(LLVM_INCLUDE_UTILS OFF)
set(LLVM_INCLUDE_EXAMPLES OFF)
set(LLVM_INCLUDE_TESTS OFF)
set(LLVM_INCLUDE_BENCHMARKS OFF)

set(NO_RTTI "-fno-rtti")
add_definitions(${NO_RTTI})

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "MinSizeRel")
endif()
Expand Down Expand Up @@ -38,20 +46,22 @@ set(LLVM_LIBRARIES
)

project(clang-format-wasm)
add_executable(clang-format-wasm src/lib.cc src/binding.cc)

target_include_directories(clang-format-wasm PRIVATE ${LLVM_INCLUDE_DIRS})
target_compile_features(clang-format-wasm PRIVATE cxx_std_17)
target_compile_options(clang-format-wasm PRIVATE
add_custom_target(clang-format-wasm)
add_dependencies(clang-format-wasm clang-format-esm clang-format-cli)

add_executable(clang-format-esm src/lib.cc src/binding.cc)
target_include_directories(clang-format-esm PRIVATE ${LLVM_INCLUDE_DIRS})
target_compile_features(clang-format-esm PRIVATE cxx_std_17)
target_compile_options(clang-format-esm PRIVATE
-Os
-DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0
)

target_link_libraries(clang-format-wasm PRIVATE
target_link_libraries(clang-format-esm PRIVATE
${LLVM_LIBRARIES}
"-lembind"
"-fno-rtti"
# "-flto"
"-s MINIMAL_RUNTIME=1"
"-s DYNAMIC_EXECUTION=0"
"-s FILESYSTEM=0"
Expand All @@ -61,3 +71,23 @@ target_link_libraries(clang-format-wasm PRIVATE
"-s ALLOW_MEMORY_GROWTH=1"
"-s MINIMAL_RUNTIME_STREAMING_WASM_COMPILATION=1"
)

add_executable(clang-format-cli
${llvm_project_SOURCE_DIR}/clang/tools/clang-format/ClangFormat.cpp
)
target_include_directories(clang-format-cli PRIVATE ${LLVM_INCLUDE_DIRS})
target_compile_features(clang-format-cli PRIVATE cxx_std_17)
target_compile_options(clang-format-cli PRIVATE
-Os
-DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0
)

target_link_libraries(clang-format-cli PRIVATE
${LLVM_LIBRARIES}
"-fno-rtti"
"-lnodefs.js"
"-s DYNAMIC_EXECUTION=0"
"-s ENVIRONMENT=node"
"-s NODERAWFS=1"
"-s ALLOW_MEMORY_GROWTH=1"
)
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"url": "git+https://github.com/wasm-fmt/clang-format.git"
},
"bin": {
"clang-format": "./clang-format-cli.js",
"clang-format": "./clang-format-cli.cjs",
"git-clang-format": "./git-clang-format",
"clang-format-diff": "./clang-format-diff.py"
},
Expand Down
9 changes: 6 additions & 3 deletions scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,17 @@ ninja clang-format-wasm
cd $project_root

if [[ ! -z "${WASM_OPT}" ]]; then
wasm-opt -Os build/clang-format-wasm.wasm -o build/clang-format-Os.wasm
wasm-opt -Oz build/clang-format-wasm.wasm -o build/clang-format-Oz.wasm
wasm-opt -Os build/clang-format-esm.wasm -o build/clang-format-Os.wasm
wasm-opt -Oz build/clang-format-esm.wasm -o build/clang-format-Oz.wasm
fi

SMALLEST_WASM=$(ls -Sr build/*.wasm | head -1)

cp $SMALLEST_WASM pkg/clang-format.wasm
npm exec terser -- src/template.js build/clang-format-wasm.js --config-file .terser.json --output pkg/clang-format.js
npm exec terser -- src/template.js build/clang-format-esm.js --config-file .terser.json --output pkg/clang-format.js

cp ./build/clang-format-cli.wasm ./pkg/
cp ./build/clang-format-cli.js ./pkg/clang-format-cli.cjs

cp ./src/clang-format.d.ts src/clang-format-*.js ./pkg/
cp ./package.json LICENSE README.md .npmignore ./pkg/
Expand Down
4 changes: 1 addition & 3 deletions src/binding.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,4 @@ EMSCRIPTEN_BINDINGS(my_module) {
function<Result, const std::string, const std::string, const std::string>("dump_config", &dump_config);
}

auto main(int argc, const char** argv) -> int {
return 0;
}
int main(void) {}
Loading

0 comments on commit cc182e7

Please sign in to comment.