Skip to content

Commit

Permalink
build with unified CMakeLists.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
bjia56 committed Jan 13, 2025
1 parent e5e9a2e commit c3eb8f7
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 132 deletions.
3 changes: 1 addition & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,9 @@ jobs:
- name: Build plugin
shell: bash
run: |
cd src/linux
export CC="zig cc -target ${{ matrix.arch }}-linux-gnu.2.17"
export CXX="zig c++ -target ${{ matrix.arch }}-linux-gnu.2.17"
cmake -B build
cmake -B build -DBTOP_TARGET=plugin
cmake --build build --parallel 4
cp build/libbtop.so ${{ github.workspace }}/libbtop-Linux-${{ matrix.arch }}.so
Expand Down
157 changes: 107 additions & 50 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,59 +28,116 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()

add_executable(btop
src/btop.cpp
src/btop_config.cpp
src/btop_draw.cpp
src/btop_input.cpp
src/btop_menu.cpp
src/btop_shared.cpp
src/btop_theme.cpp
src/btop_tools_host.cpp
src/btop_tools_shared.cpp
src/btop_plugin.cpp
${LIBCOSMO_PLUGIN_SOURCES}
)
target_compile_definitions(btop PRIVATE BTOP_PLUGIN_HOST)

# Generate build info
execute_process(
COMMAND "git" "rev-parse" "--short" "HEAD"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
get_filename_component(CXX_COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
set(COMPILER "${CXX_COMPILER_BASENAME}")
set(COMPILER_VERSION "${CMAKE_CXX_COMPILER_VERSION}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY IMMEDIATE)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

target_include_directories(btop SYSTEM PRIVATE include ${LIBCOSMO_PLUGIN_INCLUDE_DIRS})

# Enable pthreads
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(btop Threads::Threads)

target_compile_definitions(btop PRIVATE GPU_SUPPORT FMT_HEADER_ONLY _FILE_OFFSET_BITS=64)
if(NOT BTOP_TARGET)
set(BTOP_TARGET "btop")
endif()

# Check if lowdown is installed
find_program(LOWDOWN_EXECUTABLE lowdown)
if(BTOP_TARGET STREQUAL "btop")

if(LOWDOWN_EXECUTABLE)
# Custom target to compile Markdown to man page using lowdown
add_custom_target(btop.1 ALL
COMMAND lowdown -s -Tman -o btop.1 manpage.md
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
add_executable(btop
src/btop.cpp
src/btop_config.cpp
src/btop_draw.cpp
src/btop_input.cpp
src/btop_menu.cpp
src/btop_shared.cpp
src/btop_theme.cpp
src/btop_tools_host.cpp
src/btop_tools_shared.cpp
src/btop_plugin.cpp
${LIBCOSMO_PLUGIN_SOURCES}
)
# Install the man page
install(FILES btop.1 DESTINATION "share/man/man1")
else()
message(WARNING "Command 'lowdown' not found: skipping generating man page btop.1")
endif()
target_compile_definitions(btop PRIVATE BTOP_PLUGIN_HOST)

# Generate build info
execute_process(
COMMAND "git" "rev-parse" "--short" "HEAD"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
get_filename_component(CXX_COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
set(COMPILER "${CXX_COMPILER_BASENAME}")
set(COMPILER_VERSION "${CMAKE_CXX_COMPILER_VERSION}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY IMMEDIATE)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

target_include_directories(btop SYSTEM PRIVATE include ${LIBCOSMO_PLUGIN_INCLUDE_DIRS})

# Enable pthreads
set(THREADS_PREFER_PTHREAD_FLAG ON)
target_link_libraries(btop Threads::Threads)

target_compile_definitions(btop PRIVATE GPU_SUPPORT FMT_HEADER_ONLY _FILE_OFFSET_BITS=64)

# Check if lowdown is installed
find_program(LOWDOWN_EXECUTABLE lowdown)

if(LOWDOWN_EXECUTABLE)
# Custom target to compile Markdown to man page using lowdown
add_custom_target(btop.1 ALL
COMMAND lowdown -s -Tman -o btop.1 manpage.md
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
# Install the man page
install(FILES btop.1 DESTINATION "share/man/man1")
else()
message(WARNING "Command 'lowdown' not found: skipping generating man page btop.1")
endif()

install(TARGETS btop RUNTIME)
install(FILES "btop.desktop" DESTINATION "share/applications")
install(FILES "Img/icon.png" DESTINATION "share/icons/hicolor/48x48/apps" RENAME "btop.png")
install(FILES "Img/icon.svg" DESTINATION "share/icons/hicolor/scalable/apps" RENAME "btop.svg")
install(DIRECTORY "themes" DESTINATION "share/btop")

elseif(BTOP_TARGET STREQUAL "plugin")

if(CMAKE_SYSTEM MATCHES "Linux")
set(PLUGIN_SOURCES
src/btop_plugin.cpp
src/btop_shared.cpp
src/btop_tools_shared.cpp
src/linux/btop_collect.cpp
src/linux/intel_gpu_top/intel_gpu_top.c
src/linux/intel_gpu_top/igt_perf.c
src/linux/intel_gpu_top/intel_device_info.c
src/linux/intel_gpu_top/intel_name_lookup_shim.c
${LIBCOSMO_PLUGIN_SOURCES}
)
endif()

if(BUILD_EXE)
if(NOT DEFINED BINARY_NAME)
set(BINARY_NAME "libbtop.exe")
endif()

add_executable(${BINARY_NAME} ${PLUGIN_SOURCES})
else()
if(NOT DEFINED BINARY_NAME)
set(BINARY_NAME "btop")
endif()

add_library(${BINARY_NAME} SHARED ${PLUGIN_SOURCES})
endif()

target_include_directories(${BINARY_NAME} PRIVATE
include
${LIBCOSMO_PLUGIN_INCLUDE_DIRS}
)
target_compile_definitions(${BINARY_NAME} PRIVATE
BTOP_PLUGIN
GPU_SUPPORT
FMT_HEADER_ONLY
_FILE_OFFSET_BITS=64
)

target_link_libraries(${BINARY_NAME} PUBLIC Threads::Threads)

# error on undefined symbols
if(NOT WIN32)
target_link_options(${BINARY_NAME} PRIVATE -Wl,--no-undefined)
endif()

install(TARGETS btop RUNTIME)
install(FILES "btop.desktop" DESTINATION "share/applications")
install(FILES "Img/icon.png" DESTINATION "share/icons/hicolor/48x48/apps" RENAME "btop.png")
install(FILES "Img/icon.svg" DESTINATION "share/icons/hicolor/scalable/apps" RENAME "btop.svg")
install(DIRECTORY "themes" DESTINATION "share/btop")
endif() # BTOP_TARGET
78 changes: 0 additions & 78 deletions src/linux/CMakeLists.txt

This file was deleted.

1 change: 0 additions & 1 deletion src/linux/include

This file was deleted.

1 change: 0 additions & 1 deletion src/linux/third_party

This file was deleted.

0 comments on commit c3eb8f7

Please sign in to comment.