I’m utilizing CMake to build Windows kernel drivers, but currently I have to drop a WindowsKernel.cmake
into the Modules/Platforms dir to make it work. Could the following be added to CMake to support his natively?
Modules/Platforms/WindowsKernel.cmake:
set(WIN32 1)
if(CMAKE_VERBOSE_MAKEFILE)
set(CMAKE_CL_NOLOGO)
else()
set(CMAKE_CL_NOLOGO "/nologo")
endif()
set(WINDOWS_KERNEL 1)
set(CMAKE_STATIC_LIBRARY_PREFIX "")
set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
set(CMAKE_SHARED_LIBRARY_PREFIX "")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
set(CMAKE_IMPORT_LIBRARY_PREFIX "")
set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib")
set(CMAKE_EXECUTABLE_SUFFIX ".sys")
set(CMAKE_LINK_LIBRARY_SUFFIX ".lib")
set(CMAKE_DL_LIBS "")
set(CMAKE_EXTRA_LINK_EXTENSIONS ".targets")
set(CMAKE_FIND_LIBRARY_PREFIXES "")
set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "/LIB")
set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:")
set(CMAKE_LINK_LIBRARY_FLAG)
set(CMAKE_C_STANDARD_LIBRARIES_INIT "BufferOverflowK.lib ntoskrnl.lib hal.lib wmilib.lib")
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
set(CMAKE_C_CREATE_SHARED_MODULE
"<CMAKE_C_COMPILER> ${CMAKE_CL_NOLOGO} <CMAKE_SHARED_LIBRARY_C_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <SONAME_FLAG><TARGET_SONAME> /OUT:<TARGET> <OBJECTS> <LINK_LIBRARIES>")
set(CMAKE_C_CREATE_SHARED_LIBRARY
"<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> /OUT:<TARGET> /IMPLIB:<TARGET_IMPLIB> /PDB:<TARGET_PDB> /VERSION:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <LINK_FLAGS> <LINK_LIBRARIES>")
set(CMAKE_C_CREATE_STATIC_LIBRARY
"<CMAKE_LINKER> /LIB ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /OUT:<TARGET> <OBJECTS>")
set(CMAKE_C_COMPILE_OBJECT
"<CMAKE_C_COMPILER> ${CMAKE_CL_NOLOGO} /Fo<OBJECT> /c <SOURCE> <DEFINES> <INCLUDES> <FLAGS>")
set(CMAKE_C_LINK_EXECUTABLE
"<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> /OUT:<TARGET> <LINK_LIBRARIES>")
include(Platform/WindowsPaths)