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
85 lines
3.4 KiB
2 years ago
|
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 #
|