cmake_modules/utils.cmake
branchhedgeroid
changeset 15515 7030706266df
parent 9339 14f5f3a1e2f7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmake_modules/utils.cmake	Fri Dec 06 22:20:53 2019 +0100
@@ -0,0 +1,53 @@
+
+#find package helpers
+macro(find_package_or_fail _PKG_NAME)
+    find_package(${_PKG_NAME})
+    string(TOUPPER ${_PKG_NAME} _PKG_NAME_UP)
+    if(NOT ${_PKG_NAME_UP}_FOUND)
+        message(SEND_ERROR "Missing ${_PKG_NAME}! Please install it and rerun cmake.")
+    endif(NOT ${_PKG_NAME_UP}_FOUND)
+endmacro(find_package_or_fail _PKG_NAME)
+
+macro(find_package_or_disable _PKG_NAME _VAR_NAME)
+    find_package(${_PKG_NAME})
+    string(TOUPPER ${_PKG_NAME} _PKG_NAME_UP)
+    if(NOT ${_PKG_NAME_UP}_FOUND)
+        message(SEND_ERROR "Missing ${_PKG_NAME}! Rerun cmake with -D${_VAR_NAME}=1 to skip this error.")
+    endif(NOT ${_PKG_NAME_UP}_FOUND)
+endmacro(find_package_or_disable _PKG_NAME _VAR_NAME)
+
+macro(find_package_or_disable_msg _PKG_NAME _VAR_NAME _MSG)
+    if(NOT ${_VAR_NAME})
+        find_package_or_disable(${_PKG_NAME} ${_VAR_NAME})
+    else(NOT ${_VAR_NAME})
+        message(STATUS "${_PKG_NAME} disabled. ${_MSG}")
+        string(TOUPPER ${_PKG_NAME} _PKG_NAME_UP)
+        set(${_PKG_NAME_UP}_FOUND false)
+    endif(NOT ${_VAR_NAME})
+endmacro(find_package_or_disable_msg _PKG_NAME _VAR_NAME _MSG)
+
+#variable manipulation macros
+macro(add_flag_append _VAR_NAME _FLAG)
+    set(${_VAR_NAME} "${${_VAR_NAME}} ${_FLAG}")
+endmacro(add_flag_append _VAR_NAME _FLAG)
+
+macro(add_flag_prepend _VAR_NAME _FLAG)
+    set(${_VAR_NAME} "${_FLAG} ${${_VAR_NAME}}")
+endmacro(add_flag_prepend _VAR_NAME _FLAG)
+
+macro(add_linker_flag _FLAG)
+    list(APPEND haskell_flags "-optl" "-Wl,${_FLAG}")
+    #executables
+    add_flag_append(CMAKE_C_LINK_FLAGS "-Wl,${_FLAG}")
+    add_flag_append(CMAKE_CXX_LINK_FLAGS "-Wl,${_FLAG}")
+    add_flag_append(CMAKE_Pascal_LINK_FLAGS "-k${_FLAG}")
+    #libraries
+    add_flag_append(CMAKE_SHARED_LIBRARY_C_FLAGS "-Wl,${_FLAG}")
+    add_flag_append(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-Wl,${_FLAG}")
+    #CMAKE_SHARED_LIBRARY_Pascal_FLAGS is already set by CMAKE_Pascal_LINK_FLAGS
+endmacro(add_linker_flag _FLAG)
+
+#TODO: find_package_or_bundle
+
+
+