diff --git a/CMakeLists.txt b/CMakeLists.txt index 409a2ba2a..7156670a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,12 +39,11 @@ find_package(OpenGL REQUIRED) find_package(Python COMPONENTS Development) add_subdirectory(external/llvm) +add_subdirectory(plugins/libimhex) # Plugins -add_subdirectory(plugins/libimhex) -add_subdirectory(plugins/builtin) -add_subdirectory(plugins/example) +set(PLUGINS example ; builtin) if(Python_VERSION LESS 3) @@ -69,7 +68,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS} -DPYTHON_VERSION_MAJOR_ # Detect current OS / System if (WIN32) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOS_WINDOWS -static-libstdc++ -static-libgcc -Wl,--allow-multiple-definition -static") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOS_WINDOWS -static-libstdc++ -static-libgcc -Wl,--allow-multiple-definition -static -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wl,-subsystem,windows") elseif(APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOS_MACOS") @@ -182,21 +181,24 @@ set_target_properties(imhex PROPERTIES CXX_VISIBILITY_PRESET hidden) target_link_directories(imhex PRIVATE ${CRYPTO_LIBRARY_DIRS} ${CAPSTONE_LIBRARY_DIRS} ${MAGIC_LIBRARY_DIRS}) if (WIN32) - target_link_libraries(imhex libdl.a libmagic.a libgnurx.a libtre.a libintl.a libiconv.a libshlwapi.a libcrypto.a libwinpthread.a libcapstone.a LLVMDemangle libimhex ${Python_LIBRARIES} wsock32 ws2_32) + target_link_libraries(imhex libdl.a libmagic.a libgnurx.a libtre.a libintl.a libiconv.a libshlwapi.a libcrypto.a libcapstone.a LLVMDemangle libimhex ${Python_LIBRARIES} wsock32 ws2_32) elseif (UNIX) target_link_libraries(imhex magic crypto ${CMAKE_DL_LIBS} capstone LLVMDemangle libimhex ${Python_LIBRARIES} dl) endif() +file(MAKE_DIRECTORY "plugins") +foreach (plugin IN LISTS PLUGINS) + add_subdirectory("plugins/${plugin}") + add_custom_command(TARGET imhex POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + $ + $/plugins) +endforeach() add_custom_command(TARGET imhex POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $) -file(MAKE_DIRECTORY "plugins") -add_custom_command(TARGET imhex POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - $ - $/plugins) if (WIN32) # Install binaries directly in the prefix, usually C:\Program Files\ImHex. diff --git a/plugins/builtin/CMakeLists.txt b/plugins/builtin/CMakeLists.txt index 17597e9f1..aaf9957e0 100644 --- a/plugins/builtin/CMakeLists.txt +++ b/plugins/builtin/CMakeLists.txt @@ -1,15 +1,9 @@ cmake_minimum_required(VERSION 3.16) +# Change this to the name of your plugin # project(builtin) -set(CMAKE_CXX_STANDARD 20) - -if (NOT TARGET libimhex) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libimhex ${CMAKE_CURRENT_BINARY_DIR}/plugins/libimhex) -endif() - -set(CMAKE_SHARED_LIBRARY_PREFIX "plugin") - -add_library(builtin SHARED +# Add your source files here # +add_library(${PROJECT_NAME} SHARED source/plugin_builtin.cpp source/content/command_palette_commands.cpp @@ -21,5 +15,22 @@ add_library(builtin SHARED source/math_evaluator.cpp ) -target_include_directories(builtin PRIVATE include) -target_link_libraries(builtin PRIVATE libimhex LLVMDemangle) +# Add additional include directories here # +target_include_directories(${PROJECT_NAME} PRIVATE include) +# Add additional libraries here # +target_link_libraries(${PROJECT_NAME} PRIVATE libimhex LLVMDemangle) + + + +# ---- No need to change anything from here downwards unless you know what you're doing ---- # + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_SHARED_LIBRARY_PREFIX "plugin") + +if (WIN32) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc -Wl,--allow-multiple-definition -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive") +endif() + +if (NOT TARGET libimhex) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libimhex ${CMAKE_CURRENT_BINARY_DIR}/plugins/libimhex) +endif() \ No newline at end of file diff --git a/plugins/example/CMakeLists.txt b/plugins/example/CMakeLists.txt index 9124ad6ba..b67605242 100644 --- a/plugins/example/CMakeLists.txt +++ b/plugins/example/CMakeLists.txt @@ -1,17 +1,29 @@ cmake_minimum_required(VERSION 3.16) + +# Change this to the name of your plugin # project(example) -set(CMAKE_CXX_STANDARD 20) - -if (NOT TARGET libimhex) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libimhex ${CMAKE_CURRENT_BINARY_DIR}/plugins/libimhex) -endif() - -set(CMAKE_SHARED_LIBRARY_PREFIX "plugin") - -add_library(example SHARED +# Add your source files here # +add_library(${PROJECT_NAME} SHARED source/plugin_example.cpp ) -target_include_directories(example PRIVATE include) -target_link_libraries(example PRIVATE libimhex) +# Add additional include directories here # +target_include_directories(${PROJECT_NAME} PRIVATE include) +# Add additional libraries here # +target_link_libraries(${PROJECT_NAME} PRIVATE libimhex) + + + +# ---- No need to change anything from here downwards unless you know what you're doing ---- # + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_SHARED_LIBRARY_PREFIX "plugin") + +if (WIN32) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc -Wl,--allow-multiple-definition -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive") +endif() + +if (NOT TARGET libimhex) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libimhex ${CMAKE_CURRENT_BINARY_DIR}/plugins/libimhex) +endif() \ No newline at end of file diff --git a/plugins/libimhex/CMakeLists.txt b/plugins/libimhex/CMakeLists.txt index 100906158..f59fcf898 100644 --- a/plugins/libimhex/CMakeLists.txt +++ b/plugins/libimhex/CMakeLists.txt @@ -8,7 +8,7 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../external/nlohmann_json ${CMAK if (WIN32) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc -Wl,--allow-multiple-definition -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")