Skip to content

Commit 9d31abf

Browse files
committed
Rewrite CMakeLists.txt. Add new targets, bump version
1 parent 7aab29b commit 9d31abf

1 file changed

Lines changed: 92 additions & 11 deletions

File tree

CMakeLists.txt

Lines changed: 92 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,102 @@
1-
cmake_minimum_required(VERSION 3.16)
2-
project(bbfmux)
1+
cmake_minimum_required(VERSION 3.20)
2+
project(libbbf VERSION 3.0.0 LANGUAGES C CXX)
33

44
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6+
set(CMAKE_CXX_EXTENSIONS OFF)
67

7-
find_package(Threads REQUIRED)
8+
find_package(Catch2 3)
89

9-
add_executable(bbfmux
10-
src/bbfenc.cpp
11-
src/libbbf.cpp
12-
src/xxhash.c
10+
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
11+
if( NOT CMAKE_BUILD_TYPE )
12+
set( CMAKE_BUILD_TYPE Debug)
13+
endif()
14+
15+
add_library(libbbf
16+
src/libbbf.h
17+
src/vend/xxhash.c
18+
src/bbfcodec.cpp
19+
src/muxer/dedupemap.cpp
20+
src/muxer/stringpool.cpp
21+
)
22+
23+
add_library(libbbf_shared SHARED
24+
src/libbbf.h
25+
src/vend/xxhash.c
26+
src/bbfcodec.cpp
27+
src/muxer/dedupemap.cpp
28+
src/muxer/stringpool.cpp
1329
)
1430

15-
target_link_libraries(bbfmux PRIVATE Threads::Threads)
31+
target_include_directories(libbbf PUBLIC
32+
"${CMAKE_CURRENT_SOURCE_DIR}/src"
33+
"${CMAKE_CURRENT_SOURCE_DIR}/src/vend"
34+
"${CMAKE_CURRENT_SOURCE_DIR}/src/muxer"
35+
)
36+
37+
target_include_directories(libbbf_shared PUBLIC
38+
"${CMAKE_CURRENT_SOURCE_DIR}/src"
39+
"${CMAKE_CURRENT_SOURCE_DIR}/src/vend"
40+
"${CMAKE_CURRENT_SOURCE_DIR}/src/muxer"
41+
)
42+
43+
target_compile_definitions(libbbf_shared PRIVATE LIBBBF_EXPORT_SYMBOLS)
44+
45+
add_executable(bbfmux src/muxer/bbfmux.cpp)
46+
47+
target_link_libraries(bbfmux PRIVATE libbbf)
48+
49+
if ( Catch2_FOUND )
50+
51+
add_executable(bbfbench src/bench/bbfbench.cpp src/bench/miniz.c)
52+
target_link_libraries(bbfbench PRIVATE libbbf Catch2::Catch2WithMain)
1653

17-
if(WIN32)
18-
target_compile_options(bbfmux PRIVATE -municode)
54+
enable_testing()
55+
include( Catch )
56+
catch_discover_tests( bbfbench )
57+
58+
else()
59+
message(WARNING "Catch2 not found! Not building bbfbench.")
60+
endif()
61+
62+
if(MSVC)
63+
target_compile_options(bbfmux PRIVATE /W4 /O2)
64+
else()
65+
target_compile_options(bbfmux PRIVATE -g -Wall -Wextra -Wshadow -Wpedantic -std=gnu++17 -Werror)
1966
endif()
2067

21-
install(TARGETS bbfmux DESTINATION bin)
68+
if(EMSCRIPTEN)
69+
70+
message(STATUS "Configuring for WebAssembly (Emscripten)...")
71+
72+
add_executable(libbbf_wasm
73+
src/libbbf.h
74+
src/vend/xxhash.c
75+
src/bbfcodec.cpp
76+
src/muxer/dedupemap.cpp
77+
src/muxer/stringpool.cpp
78+
src/bind/bbfwasm.cpp
79+
)
80+
81+
target_include_directories(libbbf_wasm PRIVATE
82+
"${CMAKE_CURRENT_SOURCE_DIR}/src"
83+
"${CMAKE_CURRENT_SOURCE_DIR}/src/vend"
84+
"${CMAKE_CURRENT_SOURCE_DIR}/src/muxer"
85+
)
86+
87+
target_compile_definitions(libbbf_wasm PRIVATE
88+
LIBBBF_EXPORT_SYMBOLS
89+
__EMSCRIPTEN__
90+
)
91+
92+
target_link_options(libbbf_wasm PUBLIC
93+
"-s WASM=1"
94+
"-s ALLOW_MEMORY_GROWTH=1"
95+
"-s FILESYSTEM=1"
96+
"-s EXPORTED_RUNTIME_METHODS=['ccall','cwrap','FS']"
97+
"-s MODULARIZE=1"
98+
"-s EXPORT_NAME='libbbfAPI'"
99+
)
100+
101+
set(CMAKE_EXECUTABLE_SUFFIX ".js")
102+
endif()

0 commit comments

Comments
 (0)