Skip to content

Commit b9cc317

Browse files
zasgarJamesMBartlett
authored andcommitted
Add some more options to the BCC build
Signed-off-by: Zain Asgar <zasgar@pixielabs.ai>
1 parent 341d921 commit b9cc317

File tree

3 files changed

+70
-39
lines changed

3 files changed

+70
-39
lines changed

CMakeLists.txt

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ include(GNUInstallDirs)
8484
include(CheckCXXCompilerFlag)
8585
include(cmake/FindCompilerFlag.cmake)
8686

87+
88+
option(ENABLE_INTROSPECTIONS "Enable introspection tool" OFF)
89+
option(ENABLE_LUA "Enable lua bindings" OFF)
90+
option(ENABLE_PYTHON "Enable python binding" OFF)
91+
option(ENABLE_SHARED "Enable shared libraries" OFF)
8792
option(ENABLE_LLVM_NATIVECODEGEN "Enable use of llvm nativecodegen module (needed by rw-engine)" ON)
8893
option(ENABLE_RTTI "Enable compiling with real time type information" OFF)
8994
option(ENABLE_LLVM_SHARED "Enable linking LLVM as a shared library" OFF)
@@ -179,16 +184,23 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
179184
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ${CXX_ISYSTEM_DIRS}")
180185

181186
add_subdirectory(src)
182-
add_subdirectory(introspection)
187+
188+
if(ENABLE_INTROSPECTIONS)
189+
add_subdirectory(introspection)
190+
endif(ENABLE_INTROSPECTIONS)
191+
183192
if(ENABLE_CLANG_JIT)
184-
if(ENABLE_EXAMPLES)
185-
add_subdirectory(examples)
186-
endif(ENABLE_EXAMPLES)
187-
if(ENABLE_MAN)
188-
add_subdirectory(man)
189-
endif(ENABLE_MAN)
190-
if(ENABLE_TESTS)
191-
add_subdirectory(tests)
192-
endif(ENABLE_TESTS)
193-
add_subdirectory(tools)
193+
if(ENABLE_EXAMPLES)
194+
add_subdirectory(examples)
195+
endif(ENABLE_EXAMPLES)
196+
197+
if(ENABLE_MAN)
198+
add_subdirectory(man)
199+
endif(ENABLE_MAN)
200+
201+
if(ENABLE_TESTS)
202+
add_subdirectory(tests)
203+
endif(ENABLE_TESTS)
204+
205+
add_subdirectory(tools)
194206
endif(ENABLE_CLANG_JIT)

src/CMakeLists.txt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,24 @@
44
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
55

66
if (ENABLE_RTTI)
7-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
7+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
88
else()
9-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
9+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
1010
endif()
1111

1212
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
1313
include_directories(${CMAKE_CURRENT_BINARY_DIR})
1414

1515
if(NOT PYTHON_ONLY)
16-
add_subdirectory(cc)
16+
add_subdirectory(cc)
1717
endif()
18+
1819
if(ENABLE_CLANG_JIT)
19-
add_subdirectory(python)
20-
add_subdirectory(lua)
20+
if(ENABLE_PYTHON)
21+
add_subdirectory(python)
22+
endif(ENABLE_PYTHON)
23+
24+
if(ENABLE_LUA)
25+
add_subdirectory(lua)
26+
endif(ENABLE_LUA)
2127
endif()

src/cc/CMakeLists.txt

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33

44
include_directories(${CMAKE_CURRENT_BINARY_DIR})
55
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
6-
# to be removed
7-
include_directories(${CMAKE_CURRENT_BINARY_DIR}/frontends/b)
8-
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/frontends/b)
6+
97
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/frontends/clang)
108
include_directories(${LLVM_INCLUDE_DIRS})
119
include_directories(${LIBELF_INCLUDE_DIRS})
10+
1211
if (LIBDEBUGINFOD_FOUND)
1312
include_directories(${LIBDEBUGINFOD_INCLUDE_DIRS})
1413
endif (LIBDEBUGINFOD_FOUND)
14+
1515
# todo: if check for kernel version
1616
if (CMAKE_USE_LIBBPF_PACKAGE AND LIBBPF_FOUND)
1717
include_directories(${LIBBPF_INCLUDE_DIRS})
@@ -38,8 +38,6 @@ endif()
3838
string(REGEX MATCH "^([0-9]+).*" _ ${LLVM_PACKAGE_VERSION})
3939
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLLVM_MAJOR_VERSION=${CMAKE_MATCH_1}")
4040

41-
include(static_libstdc++)
42-
4341
if(LIBBPF_INCLUDE_DIR)
4442
# Add user libbpf include and notify compilation
4543
# that we are using external libbpf. It's checked
@@ -82,11 +80,13 @@ if(LIBBPF_FOUND)
8280
endif()
8381

8482
if(ENABLE_CLANG_JIT)
85-
add_library(bcc-shared SHARED
86-
link_all.cc ${bcc_common_sources} ${bcc_table_sources} ${bcc_sym_sources}
87-
${bcc_util_sources})
88-
set_target_properties(bcc-shared PROPERTIES VERSION ${REVISION_LAST} SOVERSION 0)
89-
set_target_properties(bcc-shared PROPERTIES OUTPUT_NAME bcc)
83+
if(ENABLE_SHARED)
84+
add_library(bcc-shared SHARED
85+
link_all.cc ${bcc_common_sources} ${bcc_table_sources} ${bcc_sym_sources}
86+
${bcc_util_sources})
87+
set_target_properties(bcc-shared PROPERTIES VERSION ${REVISION_LAST} SOVERSION 0)
88+
set_target_properties(bcc-shared PROPERTIES OUTPUT_NAME bcc)
89+
endif(ENABLE_SHARED)
9090

9191
if(ENABLE_USDT)
9292
add_definitions(-DEXPORT_USDT)
@@ -106,16 +106,19 @@ set(bpf_sources libbpf.c perf_reader.c ${libbpf_sources} ${bcc_sym_sources} ${bc
106106
add_library(bpf-static STATIC ${bpf_sources})
107107
set_target_properties(bpf-static PROPERTIES OUTPUT_NAME bcc_bpf)
108108
target_link_libraries(bpf-static elf z)
109-
add_library(bpf-shared SHARED ${bpf_sources})
110-
set_target_properties(bpf-shared PROPERTIES VERSION ${REVISION_LAST} SOVERSION 0)
111-
set_target_properties(bpf-shared PROPERTIES OUTPUT_NAME bcc_bpf)
112-
target_link_libraries(bpf-shared elf z)
113-
if(LIBDEBUGINFOD_FOUND)
114-
target_link_libraries(bpf-shared ${LIBDEBUGINFOD_LIBRARIES})
115-
endif(LIBDEBUGINFOD_FOUND)
116-
if(CMAKE_USE_LIBBPF_PACKAGE AND LIBBPF_FOUND)
117-
target_link_libraries(bpf-shared ${LIBBPF_LIBRARIES})
118-
endif()
109+
110+
if(ENABLE_SHARED)
111+
add_library(bpf-shared SHARED ${bpf_sources})
112+
set_target_properties(bpf-shared PROPERTIES VERSION ${REVISION_LAST} SOVERSION 0)
113+
set_target_properties(bpf-shared PROPERTIES OUTPUT_NAME bcc_bpf)
114+
target_link_libraries(bpf-shared elf z)
115+
if(LIBDEBUGINFOD_FOUND)
116+
target_link_libraries(bpf-shared ${LIBDEBUGINFOD_LIBRARIES})
117+
endif(LIBDEBUGINFOD_FOUND)
118+
if(CMAKE_USE_LIBBPF_PACKAGE AND LIBBPF_FOUND)
119+
target_link_libraries(bpf-shared ${LIBBPF_LIBRARIES})
120+
endif()
121+
endif(ENABLE_SHARED)
119122

120123
include(clang_libs)
121124
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${clang_lib_exclude_flags}")
@@ -161,15 +164,25 @@ endif()
161164
add_subdirectory(frontends)
162165

163166
# Link against LLVM libraries
164-
target_link_libraries(bcc-shared ${bcc_common_libs_for_s})
167+
if(ENABLE_SHARED)
168+
target_link_libraries(bcc-shared ${bcc_common_libs_for_s})
169+
endif(ENABLE_SHARED)
170+
165171
target_link_libraries(bcc-static ${bcc_common_libs_for_a} bcc-loader-static)
166172
set(bcc-lua-static ${bcc-lua-static} ${bcc_common_libs_for_lua})
167173

168-
install(TARGETS bcc-shared bcc-static bcc-loader-static bpf-static LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
174+
install(TARGETS bcc-static bcc-loader-static bpf-static LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
169175
install(FILES ${bcc_table_headers} DESTINATION include/bcc)
170176
install(FILES ${bcc_api_headers} DESTINATION include/bcc)
171177
install(DIRECTORY ${libbpf_uapi} DESTINATION include/bcc/compat/linux FILES_MATCHING PATTERN "*.h")
172178
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libbcc.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
179+
if(ENABLE_SHARED)
180+
install(TARGETS bcc-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
181+
endif(ENABLE_SHARED)
182+
173183
endif(ENABLE_CLANG_JIT)
174184
install(FILES ${bcc_common_headers} DESTINATION include/bcc)
175-
install(TARGETS bpf-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
185+
186+
if(ENABLE_SHARED)
187+
install(TARGETS bpf-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
188+
endif(ENABLE_SHARED)

0 commit comments

Comments
 (0)