package An official xmake package repository https://xrepo.xmake.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.4 KiB

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9898f42..788d371 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,41 +43,52 @@ option(ZYDIS_FUZZ_AFL_FAST
option(ZYDIS_LIBFUZZER
"Enables LLVM libfuzzer mode and reduces prints in ZydisFuzzIn"
OFF)
-set(ZYDIS_ZYCORE_PATH
- "${CMAKE_CURRENT_LIST_DIR}/dependencies/zycore"
- CACHE
- PATH
- "The path to look for Zycore")
# =============================================================================================== #
-# Dependencies #
+# Exported functions #
# =============================================================================================== #
-# Try to initialize the Zycore submodule using Git
-if (NOT EXISTS "${ZYDIS_ZYCORE_PATH}/CMakeLists.txt" AND
- "${ZYDIS_ZYCORE_PATH}" STREQUAL "${CMAKE_CURRENT_LIST_DIR}/dependencies/zycore")
- find_package(Git QUIET)
- if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
- execute_process(
- COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- )
- endif()
+function (zyan_set_common_flags target)
+if (NOT MSVC)
+ target_compile_options("${target}" PRIVATE "-std=c99")
endif ()
-if (NOT EXISTS "${ZYDIS_ZYCORE_PATH}/CMakeLists.txt")
- message(
- FATAL_ERROR
- "Can't find zycore submodule. Please make sure to clone the repo recursively.\n"
- "You can fix this by running\n"
- " git submodule update --init\n"
- "or by cloning using\n"
- " git clone --recursive <url>\n"
- "Alternatively, you can manually clone zycore to some path and set ZYDIS_ZYCORE_PATH."
- )
+if (ZYAN_DEV_MODE)
+ # If in developer mode, be pedantic.
+ if (MSVC)
+ target_compile_options("${target}" PUBLIC "/WX" "/W4")
+ else ()
+ target_compile_options("${target}" PUBLIC "-Wall" "-pedantic" "-Wextra" "-Werror")
+ endif ()
+endif ()
+endfunction ()
+
+function (zyan_set_source_group target)
+if (ZYAN_DEV_MODE)
+ if (((CMAKE_MAJOR_VERSION GREATER 3) OR (CMAKE_MAJOR_VERSION EQUAL 3)) AND
+ ((CMAKE_MINOR_VERSION GREATER 8) OR (CMAKE_MINOR_VERSION EQUAL 8)))
+ # Mirror directory structure in project files
+ get_property("TARGET_SOURCE_FILES" TARGET "${target}" PROPERTY SOURCES)
+ source_group(TREE "${CMAKE_CURRENT_LIST_DIR}" FILES ${TARGET_SOURCE_FILES})
+ endif ()
endif ()
+endfunction ()
+
+function (zyan_maybe_enable_wpo target)
+if (ZYAN_WHOLE_PROGRAM_OPTIMIZATION AND MSVC)
+ set_target_properties("${target}" PROPERTIES COMPILE_FLAGS "/GL")
+ set_target_properties("${target}" PROPERTIES LINK_FLAGS_RELEASE "/LTCG")
+endif ()
+endfunction ()
+
+function (zyan_maybe_enable_wpo_for_lib target)
+if (ZYAN_WHOLE_PROGRAM_OPTIMIZATION AND MSVC)
+ set_target_properties("${target}" PROPERTIES COMPILE_FLAGS "/GL")
+ set_target_properties("${target}" PROPERTIES LINK_FLAGS_RELEASE "/LTCG")
+ set_target_properties("${target}" PROPERTIES STATIC_LIBRARY_FLAGS_RELEASE "/LTCG")
+endif ()
+endfunction ()
-add_subdirectory(${ZYDIS_ZYCORE_PATH} "zycore" EXCLUDE_FROM_ALL)
# =============================================================================================== #
# Library configuration #