diff --git a/CMakeLists.txt b/CMakeLists.txt index a8bf4af..7c32ac0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,12 +35,21 @@ endif() add_subdirectory(deps) set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER}) +# tools +set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER}) +if(CMAKE_FOLDER) + set(CMAKE_FOLDER "${CMAKE_FOLDER}/tools") +else() + set(CMAKE_FOLDER tools) +endif() +add_subdirectory(tools) +set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER}) + # Target vmemu set(CMKR_TARGET vmemu) set(vmemu_SOURCES "") list(APPEND vmemu_SOURCES - "src/main.cpp" "src/vmemu_t.cpp" "include/vmemu_t.hpp" ) @@ -50,28 +59,23 @@ list(APPEND vmemu_SOURCES ) set(CMKR_SOURCES ${vmemu_SOURCES}) -add_executable(vmemu) +add_library(vmemu STATIC) if(vmemu_SOURCES) target_sources(vmemu PRIVATE ${vmemu_SOURCES}) endif() -get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) -if(NOT CMKR_VS_STARTUP_PROJECT) - set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT vmemu) -endif() - source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${vmemu_SOURCES}) -target_compile_definitions(vmemu PRIVATE +target_compile_definitions(vmemu PUBLIC NOMINMAX ) -target_include_directories(vmemu PRIVATE +target_include_directories(vmemu PUBLIC include ) -target_link_libraries(vmemu PRIVATE +target_link_libraries(vmemu PUBLIC vmprofiler unicorn cli-parser diff --git a/cmake.toml b/cmake.toml index 194ae1e..3b73360 100644 --- a/cmake.toml +++ b/cmake.toml @@ -1,10 +1,11 @@ - [project] +[project] name = "vmemu" [subdir.deps] +[subdir.tools] [target.vmemu] -type = "executable" +type = "static" sources = [ "src/**.cpp", diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt new file mode 100644 index 0000000..4445375 --- /dev/null +++ b/tools/CMakeLists.txt @@ -0,0 +1,18 @@ +# This file is automatically generated from cmake.toml - DO NOT EDIT +# See https://github.com/build-cpp/cmkr for more information + +# Create a configure-time dependency on cmake.toml to improve IDE support +if(CMKR_ROOT_PROJECT) + configure_file(cmake.toml cmake.toml COPYONLY) +endif() + +# vmemu-cli +set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER}) +if(CMAKE_FOLDER) + set(CMAKE_FOLDER "${CMAKE_FOLDER}/vmemu-cli") +else() + set(CMAKE_FOLDER vmemu-cli) +endif() +add_subdirectory(vmemu-cli) +set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER}) + diff --git a/tools/cmake.toml b/tools/cmake.toml new file mode 100644 index 0000000..74f0f26 --- /dev/null +++ b/tools/cmake.toml @@ -0,0 +1 @@ +[subdir.vmemu-cli] \ No newline at end of file diff --git a/tools/vmemu-cli/CMakeLists.txt b/tools/vmemu-cli/CMakeLists.txt new file mode 100644 index 0000000..dfe1263 --- /dev/null +++ b/tools/vmemu-cli/CMakeLists.txt @@ -0,0 +1,60 @@ +# This file is automatically generated from cmake.toml - DO NOT EDIT +# See https://github.com/build-cpp/cmkr for more information + +cmake_minimum_required(VERSION 3.15) + +# Regenerate CMakeLists.txt automatically in the root project +set(CMKR_ROOT_PROJECT OFF) +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(CMKR_ROOT_PROJECT ON) + + # Bootstrap cmkr + include(cmkr.cmake OPTIONAL RESULT_VARIABLE CMKR_INCLUDE_RESULT) + if(CMKR_INCLUDE_RESULT) + cmkr() + endif() + + # Enable folder support + set_property(GLOBAL PROPERTY USE_FOLDERS ON) +endif() + +# Create a configure-time dependency on cmake.toml to improve IDE support +if(CMKR_ROOT_PROJECT) + configure_file(cmake.toml cmake.toml COPYONLY) +endif() + +project(vmemu-cli) + +# Target vmemu-cli +set(CMKR_TARGET vmemu-cli) +set(vmemu-cli_SOURCES "") + +list(APPEND vmemu-cli_SOURCES + "src/main.cpp" +) + +list(APPEND vmemu-cli_SOURCES + cmake.toml +) + +set(CMKR_SOURCES ${vmemu-cli_SOURCES}) +add_executable(vmemu-cli) + +if(vmemu-cli_SOURCES) + target_sources(vmemu-cli PRIVATE ${vmemu-cli_SOURCES}) +endif() + +get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) +if(NOT CMKR_VS_STARTUP_PROJECT) + set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT vmemu-cli) +endif() + +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${vmemu-cli_SOURCES}) + +target_link_libraries(vmemu-cli PRIVATE + vmemu +) + +unset(CMKR_TARGET) +unset(CMKR_SOURCES) + diff --git a/tools/vmemu-cli/README.md b/tools/vmemu-cli/README.md new file mode 100644 index 0000000..e69de29 diff --git a/tools/vmemu-cli/cmake.toml b/tools/vmemu-cli/cmake.toml new file mode 100644 index 0000000..9c34275 --- /dev/null +++ b/tools/vmemu-cli/cmake.toml @@ -0,0 +1,8 @@ +[project] +name = "vmemu-cli" + +[target.vmemu-cli] +type = "executable" + +sources = ["src/**.cpp"] +link-libraries = ["vmemu"] \ No newline at end of file diff --git a/src/main.cpp b/tools/vmemu-cli/src/main.cpp similarity index 99% rename from src/main.cpp rename to tools/vmemu-cli/src/main.cpp index 439dd83..cfef154 100644 --- a/src/main.cpp +++ b/tools/vmemu-cli/src/main.cpp @@ -2,8 +2,8 @@ #include #include #include +#include #include -#include "vmemu_t.hpp" int __cdecl main(int argc, const char* argv[]) { argparse::argument_parser_t parser("VMEmu",