From b082a28cc45b00fbcce6b43dfb711c36d0906d61 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Fri, 17 Dec 2021 09:52:11 +0100 Subject: [PATCH] build: Mark libraries as PIC properly --- CMakeLists.txt | 7 +++---- external/ImGui/CMakeLists.txt | 2 -- external/llvm/CMakeLists.txt | 2 -- external/microtar/CMakeLists.txt | 2 -- plugins/builtin/CMakeLists.txt | 1 + plugins/example_cpp/CMakeLists.txt | 1 + plugins/example_rust/CMakeLists.txt | 1 + plugins/libimhex/CMakeLists.txt | 10 +++++++++- plugins/windows/CMakeLists.txt | 1 + 9 files changed, 16 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ced0d8dd4..2d2688ab3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,9 +7,6 @@ project(imhex VERSION ${IMHEX_VERSION}) set(CMAKE_CXX_STANDARD 20) set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules") include("${CMAKE_SOURCE_DIR}/cmake/build_helpers.cmake") -setDefaultBuiltTypeIfUnset() -detectBadClone() -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") # List plugin names here. Project name must match folder name set(PLUGINS @@ -21,6 +18,8 @@ set(PLUGINS detectOS() detectArch() +setDefaultBuiltTypeIfUnset() +detectBadClone() # Add bundled dependencies add_subdirectory(plugins/libimhex) @@ -51,7 +50,7 @@ add_executable(imhex ${application_type} ) set_target_properties(imhex PROPERTIES CXX_VISIBILITY_PRESET hidden) - +set_target_properties(imhex PROPERTIES POSITION_INDEPENDENT_CODE ON) if (WIN32) target_link_libraries(imhex PUBLIC dl libimhex wsock32 ws2_32 Dwmapi.lib) else () diff --git a/external/ImGui/CMakeLists.txt b/external/ImGui/CMakeLists.txt index 14725bc62..d3af1abdc 100644 --- a/external/ImGui/CMakeLists.txt +++ b/external/ImGui/CMakeLists.txt @@ -12,8 +12,6 @@ if (UNIX) find_package(OpenGL REQUIRED) endif () -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") - add_library(imgui OBJECT source/imgui.cpp source/imgui_demo.cpp diff --git a/external/llvm/CMakeLists.txt b/external/llvm/CMakeLists.txt index 3fd5907bb..6a38926c3 100644 --- a/external/llvm/CMakeLists.txt +++ b/external/llvm/CMakeLists.txt @@ -3,8 +3,6 @@ project(LLVMDemangle) set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") - add_library(LLVMDemangle STATIC Demangle/Demangle.cpp Demangle/ItaniumDemangle.cpp diff --git a/external/microtar/CMakeLists.txt b/external/microtar/CMakeLists.txt index d15b7b382..0b7e1b2f3 100644 --- a/external/microtar/CMakeLists.txt +++ b/external/microtar/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 3.16) project(microtar) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - add_library(microtar STATIC source/microtar.c ) diff --git a/plugins/builtin/CMakeLists.txt b/plugins/builtin/CMakeLists.txt index 546e091bd..76513d7c8 100644 --- a/plugins/builtin/CMakeLists.txt +++ b/plugins/builtin/CMakeLists.txt @@ -67,6 +67,7 @@ if (WIN32) endif() add_compile_definitions(IMHEX_PLUGIN_NAME=${PROJECT_NAME}) +set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) if (NOT TARGET libimhex) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libimhex ${CMAKE_CURRENT_BINARY_DIR}/plugins/libimhex) diff --git a/plugins/example_cpp/CMakeLists.txt b/plugins/example_cpp/CMakeLists.txt index d57340d7e..003d43b77 100644 --- a/plugins/example_cpp/CMakeLists.txt +++ b/plugins/example_cpp/CMakeLists.txt @@ -26,6 +26,7 @@ if (WIN32) endif() add_compile_definitions(IMHEX_PLUGIN_NAME=${PROJECT_NAME}) +set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) if (NOT TARGET libimhex) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libimhex ${CMAKE_CURRENT_BINARY_DIR}/plugins/libimhex) diff --git a/plugins/example_rust/CMakeLists.txt b/plugins/example_rust/CMakeLists.txt index 388b4287e..8fcf20da8 100644 --- a/plugins/example_rust/CMakeLists.txt +++ b/plugins/example_rust/CMakeLists.txt @@ -36,6 +36,7 @@ add_custom_target(${PROJECT_NAME} ALL set_target_properties(${PROJECT_NAME} PROPERTIES LOCATION ${CMAKE_CURRENT_BINARY_DIR}) set_target_properties(${PROJECT_NAME} PROPERTIES RUST_PROJECT 1) set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE Rust) +set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) add_compile_definitions(IMHEX_PLUGIN_NAME=${PROJECT_NAME}) diff --git a/plugins/libimhex/CMakeLists.txt b/plugins/libimhex/CMakeLists.txt index 816b71d90..603da8661 100644 --- a/plugins/libimhex/CMakeLists.txt +++ b/plugins/libimhex/CMakeLists.txt @@ -5,8 +5,13 @@ set(CMAKE_CXX_STANDARD 20) set(BUILD_SHARED_LIBS OFF) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../external/ImGui ${CMAKE_CURRENT_BINARY_DIR}/external/ImGui) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../external/nativefiledialog ${CMAKE_CURRENT_BINARY_DIR}/external/nativefiledialog EXCLUDE_FROM_ALL) +set_target_properties(imgui PROPERTIES POSITION_INDEPENDENT_CODE ON) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../external/microtar ${CMAKE_CURRENT_BINARY_DIR}/external/microtar EXCLUDE_FROM_ALL) +set_target_properties(microtar PROPERTIES POSITION_INDEPENDENT_CODE ON) + +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../external/nativefiledialog ${CMAKE_CURRENT_BINARY_DIR}/external/nativefiledialog EXCLUDE_FROM_ALL) +set_target_properties(nfd PROPERTIES POSITION_INDEPENDENT_CODE ON) set(XDGPP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/../../external/xdgpp") set(CMAKE_USE_MBEDTLS ON) @@ -43,12 +48,14 @@ endif() if (NOT USE_SYSTEM_LLVM) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../external/llvm ${CMAKE_CURRENT_BINARY_DIR}/external/llvm EXCLUDE_FROM_ALL) + set_target_properties(LLVMDemangle PROPERTIES POSITION_INDEPENDENT_CODE ON) else() find_package(LLVM REQUIRED Demangle) endif() if (NOT USE_SYSTEM_YARA) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../external/yara ${CMAKE_CURRENT_BINARY_DIR}/external/yara EXCLUDE_FROM_ALL) + set_target_properties(libyara PROPERTIES POSITION_INDEPENDENT_CODE ON) set(YARA_LIBRARIES libyara) else() find_package(PkgConfig REQUIRED) @@ -141,6 +148,7 @@ if (APPLE) endif () add_library(libimhex SHARED ${LIBIMHEX_SOURCES}) +set_target_properties(libimhex PROPERTIES POSITION_INDEPENDENT_CODE ON) target_include_directories(libimhex PUBLIC include ${XDGPP_INCLUDE_DIRS} ${MBEDTLS_INCLUDE_DIRS} ${CAPSTONE_INCLUDE_DIRS} ${MAGIC_INCLUDE_DIRS} ${Python_INCLUDE_DIRS} ${LLVM_INCLUDE_DIRS} ${FMT_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS} ${YARA_INCLUDE_DIRS}) target_link_directories(libimhex PUBLIC ${MBEDTLS_LIBRARY_DIR} ${CAPSTONE_LIBRARY_DIRS} ${MAGIC_LIBRARY_DIRS}) diff --git a/plugins/windows/CMakeLists.txt b/plugins/windows/CMakeLists.txt index 406e473a6..1d6986948 100644 --- a/plugins/windows/CMakeLists.txt +++ b/plugins/windows/CMakeLists.txt @@ -36,6 +36,7 @@ if (WIN32) endif() add_compile_definitions(IMHEX_PLUGIN_NAME=${PROJECT_NAME}) +set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) if (NOT TARGET libimhex) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libimhex ${CMAKE_CURRENT_BINARY_DIR}/plugins/libimhex)