diff --git a/CMakeLists.txt b/CMakeLists.txt index 04cd498..0bb3c14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,7 +55,6 @@ add_dependencies(bdshemu bddisasm) include_directories( inc - inc/bdshemu bddisasm/include ) @@ -65,7 +64,7 @@ else () set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -D_DEBUG -DDEBUG") endif () -add_compile_options( +set(BDDISASM_COMPILE_OPTIONS "$<$:-U_FORTIFY_SOURCE>" "$<$:-D_FORTIFY_SOURCE=2>" -Wall @@ -78,14 +77,10 @@ add_compile_options( -Wwrite-strings -Wshadow -Winit-self - -Wswitch-default - -Wmissing-variable-declarations - -Wused-but-marked-unused - -Wswitch-enum -Wno-unused-function -Wno-multichar -Wno-incompatible-pointer-types - -Wcast-qual + -Wno-discarded-qualifiers -Wnull-dereference -Wduplicated-cond -Werror=format-security @@ -103,6 +98,9 @@ add_compile_options( -march=nehalem ) +target_compile_options(bddisasm PRIVATE ${BDDISASM_COMPILE_OPTIONS}) +target_compile_options(bdshemu PRIVATE ${BDDISASM_COMPILE_OPTIONS}) + include(GNUInstallDirs) set(CMAKE_SKIP_BUILD_RPATH TRUE) @@ -156,3 +154,19 @@ install(FILES ${PROJECT_BINARY_DIR}/bddisasmConfig.cmake ${PROJECT_BINARY_DIR}/b INSTALL(FILES "${PROJECT_SOURCE_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}bddisasm.pc" DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig" ) + +if (NOT CPACK_GENERATOR) + set(CPACK_GENERATOR "DEB") +endif() + +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Bitdefender HVI Team ") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "") +set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") +set(CPACK_DEBIAN_PACKAGE_SECTION "devel") + +if (INCLUDE_TOOL) + add_subdirectory("disasmtool_lix") + add_dependencies(disasmtool bdshemu) +endif() + +include(CPack) diff --git a/disasmtool_lix/CMakeLists.txt b/disasmtool_lix/CMakeLists.txt index 50fab6d..ffb722d 100644 --- a/disasmtool_lix/CMakeLists.txt +++ b/disasmtool_lix/CMakeLists.txt @@ -27,12 +27,6 @@ set(disasmtool_src_files dumpers.cpp ) -find_library(DISASM_LIB bddisasm PATHS "${DISASM_DIRECTORY}/${DISASM_BUILD_PREFIX}/${CMAKE_BUILD_TYPE}" NO_DEFAULT_PATH) -message(STATUS "Disasm lib used: ${DISASM_LIB}") - -find_library(SHEMU_LIB bdshemu PATHS "${DISASM_DIRECTORY}/${DISASM_BUILD_PREFIX}/${CMAKE_BUILD_TYPE}" NO_DEFAULT_PATH) -message(STATUS "Shemu lib used: ${SHEMU_LIB}") - find_package(RapidJSON) if (RapidJSON_FOUND) @@ -44,7 +38,11 @@ else() message(FATAL_ERROR "Dependency: rapidjson not found") endif() -add_compile_options( + +add_executable(${PROJECT_NAME} ${disasmtool_src_files}) + + +target_compile_options(${PROJECT_NAME} PRIVATE "$<$:-U_FORTIFY_SOURCE>" "$<$:-D_FORTIFY_SOURCE=2>" -Wall @@ -84,7 +82,7 @@ set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl, if (CMAKE_COMPILER_IS_GNUCXX) if (NOT (CMAKE_CXX_COMPILER_VERSION LESS 6.0)) - add_compile_options( + target_compile_options(${PROJECT_NAME} PRIVATE -Wshift-overflow=2 -Wnull-dereference -Wduplicated-cond @@ -94,7 +92,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif() if (NOT (CMAKE_CXX_COMPILER_VERSION LESS 7.0)) - add_compile_options( + target_compile_options(${PROJECT_NAME} PRIVATE -Wdangling-else -Wshadow=global -Walloc-zero @@ -102,7 +100,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif() if (NOT (CMAKE_CXX_COMPILER_VERSION LESS 8.0)) - add_compile_options( + target_compile_options(${PROJECT_NAME} PRIVATE -Wmultistatement-macros -Warray-bounds=2 -Wformat-overflow=2 @@ -130,7 +128,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif() if (NOT (CMAKE_CXX_COMPILER_VERSION LESS 9.0)) - add_compile_options( + target_compile_options(${PROJECT_NAME} PRIVATE -Wcatch-value=2 -Wduplicated-branches -Wextra-semi @@ -143,12 +141,12 @@ if (CMAKE_COMPILER_IS_GNUCXX) ) endif() elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - add_compile_options( + target_compile_options(${PROJECT_NAME} PRIVATE -Wno-missing-braces ) if (NOT (CMAKE_CXX_COMPILER_VERSION LESS 6.0)) - add_compile_options( + target_compile_options(${PROJECT_NAME} PRIVATE -Wshift-overflow -Wnull-dereference -Wvla @@ -160,7 +158,7 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") endif() if (NOT (CMAKE_CXX_COMPILER_VERSION LESS 10.0)) - add_compile_options( + target_compile_options(${PROJECT_NAME} PRIVATE -Warray-bounds-pointer-arithmetic -Wassign-enum -Watomic-implicit-seq-cst @@ -254,21 +252,19 @@ else() message(FATAL_ERROR "Unsupported compiler!") endif() -include_directories( +target_include_directories(${PROJECT_NAME} PRIVATE ${DISASM_DIRECTORY}/inc ${DISASM_DIRECTORY}/inc/bdshemu ${DISASM_DIRECTORY}/bddisasm/include ) -add_executable(${CMAKE_PROJECT_NAME} ${disasmtool_src_files}) - if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") include(CheckIPOSupported) check_ipo_supported(RESULT USE_IPO) - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION True) + set_target_properties(${PROJECT_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION True) endif() -set_target_properties(${CMAKE_PROJECT_NAME} +set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON CXX_STANDARD 17 @@ -276,7 +272,12 @@ set_target_properties(${CMAKE_PROJECT_NAME} CXX_EXTENSIONS ON ) -target_link_libraries(${CMAKE_PROJECT_NAME} ${SHEMU_LIB} ${DISASM_LIB}) +target_link_directories(${PROJECT_NAME} PRIVATE "${DISASM_DIRECTORY}/bin/x64/${CMAKE_BUILD_TYPE}") +target_link_libraries(${PROJECT_NAME} PRIVATE bddisasm bdshemu) + +INSTALL(TARGETS disasmtool + RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}" + ) unset(DISASM_LIB CACHE) unset(SHEMU_LIB CACHE)