Add shared library target to CMake (#60)

This commit is contained in:
Saúl Ibarra Corretgé 2023-11-14 22:29:00 +01:00 committed by GitHub
parent cc3e062484
commit 0b09109151
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 5 deletions

View file

@ -48,6 +48,21 @@ jobs:
if: ${{ matrix.buildType == 'Release' }} if: ${{ matrix.buildType == 'Release' }}
run: | run: |
time ./build/run-test262 -m -c test262.conf -a time ./build/run-test262 -m -c test262.conf -a
linux-shared:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: build
run: |
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
cd ..
cmake --build build -j$(getconf _NPROCESSORS_ONLN)
ldd build/qjs
- name: stats
run: |
./build/qjs -qd
linux-asan: linux-asan:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -160,6 +175,21 @@ jobs:
./build/qjs tests/test_loop.js ./build/qjs tests/test_loop.js
./build/qjs tests/test_std.js ./build/qjs tests/test_std.js
./build/qjs tests/test_worker.js ./build/qjs tests/test_worker.js
macos-shared:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: build
run: |
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
cd ..
cmake --build build -j$(getconf _NPROCESSORS_ONLN)
otool -L build/qjs
- name: stats
run: |
./build/qjs -qd
macos-asan: macos-asan:
runs-on: macos-latest runs-on: macos-latest
steps: steps:
@ -248,3 +278,31 @@ jobs:
./build/qjs tests/test_builtin.js ./build/qjs tests/test_builtin.js
./build/qjs tests/test_loop.js ./build/qjs tests/test_loop.js
./build/qjs tests/test_std.js ./build/qjs tests/test_std.js
windows-mingw-shared:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v3
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
install: >-
git
make
pacboy: >-
cmake:p
ninja:p
toolchain:p
- name: build
run: |
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
cd ..
cmake --build build -j$(getconf _NPROCESSORS_ONLN)
ldd build/qjs
- name: stats
run: |
./build/qjs -qd

View file

@ -3,10 +3,8 @@ cmake_minimum_required(VERSION 3.9)
project(quickjs LANGUAGES C) project(quickjs LANGUAGES C)
# TODO: # TODO:
# - LTO
# - Support cross-compilation # - Support cross-compilation
# - Install targets # - Install targets
# - Shared library target
set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS ON) set(CMAKE_C_EXTENSIONS ON)
@ -52,6 +50,11 @@ else()
add_compile_options(-g) add_compile_options(-g)
endif() endif()
option(BUILD_SHARED_LIBS "Build a shared library" OFF)
if(BUILD_SHARED_LIBS)
message(STATUS "Building a shared library")
endif()
option(CONFIG_ASAN "Enable AddressSanitizer (ASan)" OFF) option(CONFIG_ASAN "Enable AddressSanitizer (ASan)" OFF)
option(CONFIG_MSAN "Enable MemorySanitizer (MSan)" OFF) option(CONFIG_MSAN "Enable MemorySanitizer (MSan)" OFF)
option(CONFIG_UBSAN "Enable UndefinedBehaviorSanitizer (UBSan)" OFF) option(CONFIG_UBSAN "Enable UndefinedBehaviorSanitizer (UBSan)" OFF)
@ -97,8 +100,6 @@ add_link_options(
) )
endif() endif()
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")
# QuickJS library # QuickJS library
# #
@ -113,7 +114,7 @@ set(qjs_sources
list(APPEND qjs_defines _GNU_SOURCE) list(APPEND qjs_defines _GNU_SOURCE)
add_library(qjs STATIC ${qjs_sources}) add_library(qjs ${qjs_sources})
target_compile_definitions(qjs PRIVATE ${qjs_defines}) target_compile_definitions(qjs PRIVATE ${qjs_defines})
if (CMAKE_BUILD_TYPE MATCHES Debug) if (CMAKE_BUILD_TYPE MATCHES Debug)
target_compile_definitions(qjs PRIVATE target_compile_definitions(qjs PRIVATE