Skip to content

Commit

Permalink
cleans build system and LLVM source files
Browse files Browse the repository at this point in the history
  • Loading branch information
eyck committed Jul 30, 2023
1 parent 4f5cb87 commit 4bef9fc
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 77 deletions.
55 changes: 30 additions & 25 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
cmake_minimum_required(VERSION 3.12)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

project(dbt-rise-core VERSION 1.0.0)

include(GNUInstallDirs)
include(add_whole_library)

find_package(Boost COMPONENTS serialization thread REQUIRED)
find_package(tcc QUIET)
Expand Down Expand Up @@ -30,6 +32,7 @@ if(WITH_LLVM)
endif()
endif()

set(LIB_NAME ${PROJECT_NAME}_a)
set(LIB_SOURCES
src/iss/debugger/gdb_session.cpp
src/iss/debugger/encoderdecoder.cpp
Expand All @@ -48,64 +51,64 @@ if(WITH_TCC)
list(APPEND LIB_SOURCES src/iss/tcc/jit_helper.cpp)
endif()

add_library(${PROJECT_NAME} STATIC ${LIB_SOURCES})
target_include_directories(${PROJECT_NAME} PUBLIC src)
add_library(${LIB_NAME} STATIC ${LIB_SOURCES})
target_include_directories(${LIB_NAME} PUBLIC src)
if (MSVC)
target_compile_definitions(${PROJECT_NAME} PUBLIC NOMINMAX)
target_compile_definitions(${LIB_NAME} PUBLIC NOMINMAX)
endif()

if(WITH_LLVM)
target_compile_definitions(${PROJECT_NAME} PUBLIC ${LLVM_DEFINITIONS})
target_include_directories(${PROJECT_NAME} PRIVATE ${LLVM_INCLUDE_DIRS})
target_link_libraries( ${PROJECT_NAME} PUBLIC ${LLVM_LIBRARIES})
target_compile_definitions(${LIB_NAME} PUBLIC ${LLVM_DEFINITIONS})
target_include_directories(${LIB_NAME} PRIVATE ${LLVM_INCLUDE_DIRS})
target_link_libraries( ${LIB_NAME} PUBLIC ${LLVM_LIBRARIES})
endif()
if(TARGET Boost::thread)
target_link_libraries(${PROJECT_NAME} PUBLIC Boost::thread)
target_link_libraries(${LIB_NAME} PUBLIC Boost::thread)
else()
target_include_directories(${PROJECT_NAME} PUBLIC ${Boost_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PUBLIC ${Boost_thread_LIBRARY})
target_include_directories(${LIB_NAME} PUBLIC ${Boost_INCLUDE_DIRS})
target_link_libraries(${LIB_NAME} PUBLIC ${Boost_thread_LIBRARY})
endif()
if(TARGET Boost::serialization)
target_link_libraries(${PROJECT_NAME} PUBLIC Boost::serialization)
target_link_libraries(${LIB_NAME} PUBLIC Boost::serialization)
else()
target_include_directories(${PROJECT_NAME} PUBLIC ${Boost_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PUBLIC ${Boost_serialization_LIBRARY})
target_include_directories(${LIB_NAME} PUBLIC ${Boost_INCLUDE_DIRS})
target_link_libraries(${LIB_NAME} PUBLIC ${Boost_serialization_LIBRARY})
endif()
if(TARGET CONAN_PKG::scc)
target_link_libraries(${PROJECT_NAME} PUBLIC CONAN_PKG::scc)
target_link_libraries(${LIB_NAME} PUBLIC CONAN_PKG::scc)
else()
target_link_libraries(${PROJECT_NAME} PUBLIC scc-util)
target_link_libraries(${LIB_NAME} PUBLIC scc-util)
endif()
if(WITH_TCC)
if(TARGET CONAN_PKG::tcc)
target_compile_definitions(${PROJECT_NAME} PUBLIC HAS_TCC)
target_link_libraries(${PROJECT_NAME} PUBLIC CONAN_PKG::tcc)
target_compile_definitions(${LIB_NAME} PUBLIC HAS_TCC)
target_link_libraries(${LIB_NAME} PUBLIC CONAN_PKG::tcc)
elseif(TARGET tcc::tcc)
target_compile_definitions(${PROJECT_NAME} PUBLIC HAS_TCC)
target_link_libraries(${PROJECT_NAME} PUBLIC tcc::tcc)
target_compile_definitions(${LIB_NAME} PUBLIC HAS_TCC)
target_link_libraries(${LIB_NAME} PUBLIC tcc::tcc)
else()
message(FATAL_ERROR "No TCC library found, maybe a find_package() call is missing")
endif()
endif()
if(TARGET CONAN_PKG::fmt)
target_compile_definitions(${PROJECT_NAME} PUBLIC FMT_HEADER_ONLY FMT_USE_WINDOWS_H=0)
target_link_libraries(${PROJECT_NAME} PUBLIC CONAN_PKG::fmt)
target_compile_definitions(${LIB_NAME} PUBLIC FMT_HEADER_ONLY FMT_USE_WINDOWS_H=0)
target_link_libraries(${LIB_NAME} PUBLIC CONAN_PKG::fmt)
elseif(TARGET fmt::fmt)
target_compile_definitions(${PROJECT_NAME} PUBLIC FMT_HEADER_ONLY FMT_USE_WINDOWS_H=0)
target_link_libraries(${PROJECT_NAME} PUBLIC fmt::fmt)
target_compile_definitions(${LIB_NAME} PUBLIC FMT_HEADER_ONLY FMT_USE_WINDOWS_H=0)
target_link_libraries(${LIB_NAME} PUBLIC fmt::fmt)
else()
message(FATAL_ERROR "No FMT library found, maybe a find_package() call is missing")
endif()
target_link_libraries(${PROJECT_NAME} PUBLIC ${CMAKE_DL_LIBS})
target_link_libraries(${LIB_NAME} PUBLIC ${CMAKE_DL_LIBS})

set(LIB_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/dbt_rise_common.h)
set_target_properties(${PROJECT_NAME} PROPERTIES
set_target_properties(${LIB_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
FRAMEWORK FALSE
PUBLIC_HEADER "${LIB_HEADERS}"
)

install(TARGETS ${PROJECT_NAME} COMPONENT ${PROJECT_NAME}
install(TARGETS ${LIB_NAME} COMPONENT ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets # for downstream dependencies
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
Expand All @@ -115,6 +118,8 @@ install(TARGETS ${PROJECT_NAME} COMPONENT ${PROJECT_NAME}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} # headers
)

add_whole_library(${PROJECT_NAME} ${LIB_NAME})

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/iss COMPONENT ${PROJECT_NAME}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} # target directory
FILES_MATCHING # install only matched files
Expand Down
28 changes: 28 additions & 0 deletions cmake/add_whole_library.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# according to https://github.com/horance-liu/flink.cmake/tree/master
# SPDX-License-Identifier: Apache-2.0

include(CMakeParseArguments)

macro(add_whole_library target_lib source_lib)
get_target_property(SOURCE_LIBS ${source_lib} INTERFACE_LINK_LIBRARIES)
message("add_whole_library: INTERFACE_LINK_LIBRARIES=${SOURCE_LIBS}")
get_target_property(SOURCE_INCL ${source_lib} INTERFACE_INCLUDE_DIRECTORIES)
message("add_whole_library: INTERFACE_INCLUDE_DIRECTORIES=${SOURCE_INCL}")

add_library(${target_lib} INTERFACE)
if(MSVC)
set_property(TARGET ${target_lib}
PROPERTY INTERFACE_LINK_LIBRARIES "/WHOLEARCHIVE:${source_lib}")
target_link_libraries(${target} ${visibility} "/WHOLEARCHIVE:${lib}")
elseif(APPLE)
set_property(TARGET ${target_lib}
PROPERTY INTERFACE_LINK_LIBRARIES -Wl,-force_load,${source_lib})
else()
set_property(TARGET ${target_lib}
PROPERTY INTERFACE_LINK_LIBRARIES -Wl,--whole-archive,$<TARGET_FILE:${source_lib}>,--no-whole-archive)
endif()

target_include_directories(${target_lib} INTERFACE ${SOURCE_INCL})
target_link_libraries(${target_lib} INTERFACE ${SOURCE_LIBS})

endmacro()
4 changes: 0 additions & 4 deletions src/iss/llvm/vm_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,6 @@ namespace llvm {
using namespace std;
using namespace ::llvm;

cl::opt<uint32_t> LikelyBranchWeight("likely-branch-weight", cl::Hidden, cl::init(64),
cl::desc("Weight of the branch likely to be taken (default = 64)"));
cl::opt<uint32_t> UnlikelyBranchWeight("unlikely-branch-weight", cl::Hidden, cl::init(4),
cl::desc("Weight of the branch unlikely to be taken (default = 4)"));
#define INT_TYPE(L) Type::getIntNTy(mod->getContext(), L)
#define FLOAT_TYPE Type::getFloatTy(mod->getContext())
#define DOUBLE_TYPE Type::getDoubleTy(mod->getContext())
Expand Down
Loading

0 comments on commit 4bef9fc

Please sign in to comment.