--- /dev/null
+
+# set_cpp
+# Marks the current folder as containing C++ modules, additionally enabling
+# specific C++ language features as specified (all of these default to off):
+#
+# WITH_RUNTIME
+# Links with the C++ runtime. Enable this for modules which use new/delete or
+# RTTI, but do not require STL. This is the right choice if you see undefined
+# references to operator new/delete, vector constructor/destructor iterator,
+# type_info::vtable, ...
+# Note: this only affects linking, so cannot be used for static libraries.
+# WITH_RTTI
+# Enables run-time type information. Enable this if the module uses typeid or
+# dynamic_cast. You will probably need to enable WITH_RUNTIME as well, if
+# you're not already using STL.
+# WITH_EXCEPTIONS
+# Enables C++ exception handling. Enable this if the module uses try/catch or
+# throw. You might also need this if you use a standard operator new (the one
+# without nothrow).
+# WITH_STL
+# Enables standard C++ headers and links to the Standard Template Library.
+# Use this for modules using anything from the std:: namespace, e.g. maps,
+# strings, vectors, etc.
+# Note: this affects both compiling (via include directories) and
+# linking (by adding STL). Implies WITH_RUNTIME.
+# FIXME: WITH_STL is currently also required for runtime headers such as
+# <new> and <exception>. This is not a big issue because in stl-less
+# environments you usually don't want those anyway; but we might want
+# to have modules like this in the future.
+#
+# Examples:
+# set_cpp()
+# Enables the C++ language, but will cause errors if any runtime or standard
+# library features are used. This should be the default for C++ in kernel
+# mode or otherwise restricted environments.
+# Note: this is required to get libgcc (for multiplication/division) linked
+# in for C++ modules, and to set the correct language for precompiled
+# header files, so it IS required even with no features specified.
+# set_cpp(WITH_RUNTIME)
+# Links with the C++ runtime, so that e.g. custom operator new implementations
+# can be used in a restricted environment. This is also required for linking
+# with libraries (such as ATL) which have RTTI enabled, even if the module in
+# question does not use WITH_RTTI.
+# set_cpp(WITH_RTTI WITH_EXCEPTIONS WITH_STL)
+# The full package. This will adjust compiler and linker so that all C++
+# features can be used.
+macro(set_cpp)
+ cmake_parse_arguments(__cppopts "WITH_RUNTIME;WITH_RTTI;WITH_EXCEPTIONS;WITH_STL" "" "" ${ARGN})
+ if(__cppopts_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "set_cpp: unparsed arguments ${__cppopts_UNPARSED_ARGUMENTS}")
+ endif()
+
+ if(__cppopts_WITH_RUNTIME)
+ set(CPP_USE_RT 1)
+ endif()
+ if(__cppopts_WITH_RTTI)
+ if(MSVC)
+ replace_compile_flags("/GR-" "/GR")
+ else()
+ replace_compile_flags_language("-fno-rtti" "-frtti" "CXX")
+ endif()
+ endif()
+ if(__cppopts_WITH_EXCEPTIONS)
+ if(MSVC)
+ replace_compile_flags("/EHs-c-" "/EHsc")
+ else()
+ replace_compile_flags_language("-fno-exceptions" "-fexceptions" "CXX")
+ endif()
+ endif()
+ if(__cppopts_WITH_STL)
+ set(CPP_USE_STL 1)
+ if(MSVC)
+ add_definitions(-DNATIVE_CPP_INCLUDE=${REACTOS_SOURCE_DIR}/include/c++)
+ include_directories(${REACTOS_SOURCE_DIR}/include/c++/stlport)
+ endif()
+ endif()
+
+ set(IS_CPP 1)
+endmacro()
+
+function(add_dependency_node _node)
+ if(GENERATE_DEPENDENCY_GRAPH)
+ get_target_property(_type ${_node} TYPE)
+ if(_type MATCHES SHARED_LIBRARY OR ${_node} MATCHES ntoskrnl)
+ file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml " <node id=\"${_node}\"/>\n")
+ endif()
+ endif()
+endfunction()
+
+function(add_dependency_edge _source _target)
+ if(GENERATE_DEPENDENCY_GRAPH)
+ get_target_property(_type ${_source} TYPE)
+ if(_type MATCHES SHARED_LIBRARY)
+ file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml " <edge source=\"${_source}\" target=\"${_target}\"/>\n")
+ endif()
+ endif()
+endfunction()
+
+function(add_dependency_header)
+ file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<graphml>\n <graph id=\"ReactOS dependencies\" edgedefault=\"directed\">\n")
+endfunction()
+
+function(add_dependency_footer)
+ add_dependency_node(ntdll)
+ file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml " </graph>\n</graphml>\n")
+endfunction()
+
+function(add_message_headers _type)
+ if(${_type} STREQUAL UNICODE)
+ set(_flag "-U")
+ else()
+ set(_flag "-A")
+ endif()
+ foreach(_in_FILE ${ARGN})
+ get_filename_component(FILE ${_in_FILE} NAME_WE)
+ macro_mc(${_flag} ${FILE})
+ add_custom_command(
+ OUTPUT ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h
+ COMMAND ${COMMAND_MC} ${MC_FLAGS}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.mc)
+ set_source_files_properties(
+ ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc
+ PROPERTIES GENERATED TRUE)
+ add_custom_target(${FILE} ALL DEPENDS ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc)
+ endforeach()
+endfunction()
+
+function(add_link)
+ cmake_parse_arguments(_LINK "MINIMIZE" "NAME;PATH;CMD_LINE_ARGS;ICON;GUID" "" ${ARGN})
+ if(NOT _LINK_NAME OR NOT _LINK_PATH)
+ message(FATAL_ERROR "You must provide name and path")
+ endif()
+
+ if(_LINK_CMD_LINE_ARGS)
+ set(_LINK_CMD_LINE_ARGS -c ${_LINK_CMD_LINE_ARGS})
+ endif()
+
+ if(_LINK_ICON)
+ set(_LINK_ICON -i ${_LINK_ICON})
+ endif()
+
+ if(_LINK_GUID)
+ set(_LINK_GUID -g ${_LINK_GUID})
+ endif()
+
+ if(_LINK_MINIMIZE)
+ set(_LINK_MINIMIZE "-m")
+ endif()
+
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_LINK_NAME}.lnk
+ COMMAND native-mkshelllink -o ${CMAKE_CURRENT_BINARY_DIR}/${_LINK_NAME}.lnk ${_LINK_CMD_LINE_ARGS} ${_LINK_ICON} ${_LINK_GUID} ${_LINK_MINIMIZE} ${_LINK_PATH}
+ DEPENDS native-mkshelllink)
+ set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${_LINK_NAME}.lnk PROPERTIES GENERATED TRUE)
+endfunction()
+
+macro(dir_to_num dir var)
+ if(${dir} STREQUAL reactos/system32)
+ set(${var} 1)
+ elseif(${dir} STREQUAL reactos/system32/drivers)
+ set(${var} 2)
+ elseif(${dir} STREQUAL reactos/Fonts)
+ set(${var} 3)
+ elseif(${dir} STREQUAL reactos)
+ set(${var} 4)
+ elseif(${dir} STREQUAL reactos/system32/drivers/etc)
+ set(${var} 5)
+ elseif(${dir} STREQUAL reactos/inf)
+ set(${var} 6)
+ elseif(${dir} STREQUAL reactos/bin)
+ set(${var} 7)
+ elseif(${dir} STREQUAL reactos/bin/data)
+ set(${var} 8)
+ elseif(${dir} STREQUAL reactos/media)
+ set(${var} 9)
+ elseif(${dir} STREQUAL reactos/Microsoft.NET)
+ set(${var} 10)
+ elseif(${dir} STREQUAL reactos/Microsoft.NET/Framework)
+ set(${var} 11)
+ elseif(${dir} STREQUAL reactos/Microsoft.NET/Framework/v1.0.3705)
+ set(${var} 12)
+ elseif(${dir} STREQUAL reactos/Microsoft.NET/Framework/v1.1.4322)
+ set(${var} 13)
+ elseif(${dir} STREQUAL reactos/Microsoft.NET/Framework/v2.0.50727)
+ set(${var} 14)
+ elseif(${dir} STREQUAL reactos/Resources)
+ set(${var} 15)
+ elseif(${dir} STREQUAL reactos/Resources/Themes)
+ set(${var} 16)
+ elseif(${dir} STREQUAL reactos/system32/wbem)
+ set(${var} 17)
++ elseif(${dir} STREQUAL reactos/Resources/Themes/Lautus)
++ set(${var} 18)
+ else()
+ message(FATAL_ERROR "Wrong destination: ${dir}")
+ endif()
+endmacro()
+
+function(add_cd_file)
+ cmake_parse_arguments(_CD "NO_CAB" "DESTINATION;NAME_ON_CD;TARGET" "FILE;FOR" ${ARGN})
+ if(NOT (_CD_TARGET OR _CD_FILE))
+ message(FATAL_ERROR "You must provide a target or a file to install!")
+ endif()
+
+ if(NOT _CD_DESTINATION)
+ message(FATAL_ERROR "You must provide a destination")
+ elseif(${_CD_DESTINATION} STREQUAL root)
+ set(_CD_DESTINATION "")
+ endif()
+
+ if(NOT _CD_FOR)
+ message(FATAL_ERROR "You must provide a cd name (or \"all\" for all of them) to install the file on!")
+ endif()
+
+ #get file if we need to
+ if(NOT _CD_FILE)
+ get_target_property(_CD_FILE ${_CD_TARGET} LOCATION_${CMAKE_BUILD_TYPE})
+ endif()
+
+ #do we add it to all CDs?
+ if(_CD_FOR STREQUAL all)
+ set(_CD_FOR "bootcd;livecd;regtest")
+ endif()
+
+ #do we add it to bootcd?
+ list(FIND _CD_FOR bootcd __cd)
+ if(NOT __cd EQUAL -1)
+ #whether or not we should put it in reactos.cab or directly on cd
+ if(_CD_NO_CAB)
+ #directly on cd
+ foreach(item ${_CD_FILE})
+ if(_CD_NAME_ON_CD)
+ #rename it in the cd tree
+ set(__file ${_CD_NAME_ON_CD})
+ else()
+ get_filename_component(__file ${item} NAME)
+ endif()
+ set_property(GLOBAL APPEND PROPERTY BOOTCD_FILE_LIST "${_CD_DESTINATION}/${__file}=${item}")
+ endforeach()
+ if(_CD_TARGET)
+ #manage dependency
+ add_dependencies(bootcd ${_CD_TARGET})
+ endif()
+ else()
+ #add it in reactos.cab
+ dir_to_num(${_CD_DESTINATION} _num)
+ file(RELATIVE_PATH __relative_file ${REACTOS_SOURCE_DIR} ${_CD_FILE})
+ file(APPEND ${REACTOS_BINARY_DIR}/boot/bootdata/packages/reactos.dff.dyn "\"${__relative_file}\" ${_num}\n")
+ unset(__relative_file)
+ if(_CD_TARGET)
+ #manage dependency
+ add_dependencies(reactos_cab ${_CD_TARGET})
+ endif()
+ endif()
+ endif() #end bootcd
+
+ #do we add it to livecd?
+ list(FIND _CD_FOR livecd __cd)
+ if(NOT __cd EQUAL -1)
+ #manage dependency
+ if(_CD_TARGET)
+ add_dependencies(livecd ${_CD_TARGET})
+ endif()
+ foreach(item ${_CD_FILE})
+ if(_CD_NAME_ON_CD)
+ #rename it in the cd tree
+ set(__file ${_CD_NAME_ON_CD})
+ else()
+ get_filename_component(__file ${item} NAME)
+ endif()
+ set_property(GLOBAL APPEND PROPERTY LIVECD_FILE_LIST "${_CD_DESTINATION}/${__file}=${item}")
+ endforeach()
+ endif() #end livecd
+
+ #do we add it to regtest?
+ list(FIND _CD_FOR regtest __cd)
+ if(NOT __cd EQUAL -1)
+ #whether or not we should put it in reactos.cab or directly on cd
+ if(_CD_NO_CAB)
+ #directly on cd
+ foreach(item ${_CD_FILE})
+ if(_CD_NAME_ON_CD)
+ #rename it in the cd tree
+ set(__file ${_CD_NAME_ON_CD})
+ else()
+ get_filename_component(__file ${item} NAME)
+ endif()
+ set_property(GLOBAL APPEND PROPERTY BOOTCDREGTEST_FILE_LIST "${_CD_DESTINATION}/${__file}=${item}")
+ endforeach()
+ if(_CD_TARGET)
+ #manage dependency
+ add_dependencies(bootcdregtest ${_CD_TARGET})
+ endif()
+ else()
+ #add it in reactos.cab
+ #dir_to_num(${_CD_DESTINATION} _num)
+ #file(APPEND ${REACTOS_BINARY_DIR}/boot/bootdata/packages/reactos.dff.dyn "${_CD_FILE} ${_num}\n")
+ #if(_CD_TARGET)
+ # #manage dependency
+ # add_dependencies(reactos_cab ${_CD_TARGET})
+ #endif()
+ endif()
+ endif() #end bootcd
+endfunction()
+
+function(create_iso_lists)
+ get_property(_filelist GLOBAL PROPERTY BOOTCD_FILE_LIST)
+ string(REPLACE ";" "\n" _filelist "${_filelist}")
+ file(APPEND ${REACTOS_BINARY_DIR}/boot/bootcd.lst "${_filelist}")
+ unset(_filelist)
+
+ get_property(_filelist GLOBAL PROPERTY LIVECD_FILE_LIST)
+ string(REPLACE ";" "\n" _filelist "${_filelist}")
+ file(APPEND ${REACTOS_BINARY_DIR}/boot/livecd.lst "${_filelist}")
+ unset(_filelist)
+
+ get_property(_filelist GLOBAL PROPERTY BOOTCDREGTEST_FILE_LIST)
+ string(REPLACE ";" "\n" _filelist "${_filelist}")
+ file(APPEND ${REACTOS_BINARY_DIR}/boot/bootcdregtest.lst "${_filelist}")
+ unset(_filelist)
+endfunction()
+
+# Create module_clean targets
+function(add_clean_target _target)
+ set(_clean_working_directory ${CMAKE_CURRENT_BINARY_DIR})
+ if(CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "MinGW Makefiles")
+ set(_clean_command make clean)
+ elseif(CMAKE_GENERATOR STREQUAL "NMake Makefiles")
+ set(_clean_command nmake /nologo clean)
+ elseif(CMAKE_GENERATOR STREQUAL "Ninja")
+ set(_clean_command ninja -t clean ${_target})
+ set(_clean_working_directory ${REACTOS_BINARY_DIR})
+ endif()
+ add_custom_target(${_target}_clean
+ COMMAND ${_clean_command}
+ WORKING_DIRECTORY ${_clean_working_directory}
+ COMMENT "Cleaning ${_target}")
+endfunction()
+
+if(NOT MSVC_IDE)
+ function(add_library name)
+ _add_library(${name} ${ARGN})
+ add_clean_target(${name})
+ endfunction()
+
+ function(add_executable name)
+ _add_executable(${name} ${ARGN})
+ add_clean_target(${name})
+ endfunction()
+elseif(USE_FOLDER_STRUCTURE)
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+ string(LENGTH ${CMAKE_SOURCE_DIR} CMAKE_SOURCE_DIR_LENGTH)
+
+ function(add_custom_target name)
+ _add_custom_target(${name} ${ARGN})
+ string(SUBSTRING ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR_LENGTH} -1 CMAKE_CURRENT_SOURCE_DIR_RELATIVE)
+ set_property(TARGET "${name}" PROPERTY FOLDER "${CMAKE_CURRENT_SOURCE_DIR_RELATIVE}")
+ endfunction()
+
+ function(add_library name)
+ _add_library(${name} ${ARGN})
+ get_target_property(_target_excluded ${name} EXCLUDE_FROM_ALL)
+ if(_target_excluded AND ${name} MATCHES "^lib.*")
+ set_property(TARGET "${name}" PROPERTY FOLDER "Importlibs")
+ else()
+ string(SUBSTRING ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR_LENGTH} -1 CMAKE_CURRENT_SOURCE_DIR_RELATIVE)
+ set_property(TARGET "${name}" PROPERTY FOLDER "${CMAKE_CURRENT_SOURCE_DIR_RELATIVE}")
+ endif()
+ endfunction()
+
+ function(add_executable name)
+ _add_executable(${name} ${ARGN})
+ string(SUBSTRING ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR_LENGTH} -1 CMAKE_CURRENT_SOURCE_DIR_RELATIVE)
+ set_property(TARGET "${name}" PROPERTY FOLDER "${CMAKE_CURRENT_SOURCE_DIR_RELATIVE}")
+ endfunction()
+endif()
+
+if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ macro(to_win_path _cmake_path _native_path)
+ string(REPLACE "/" "\\" ${_native_path} "${_cmake_path}")
+ endmacro()
+
+ # yeah the parameter mess sucks, but thats what works...
+ function(concatenate_files _file1 _target2 _output)
+ get_target_property(_file2 ${_target2} LOCATION)
+ to_win_path("${_file1}" _real_file1)
+ to_win_path("${_file2}" _real_file2)
+ to_win_path("${_output}" _real_output)
+ add_custom_command(
+ OUTPUT ${_output}
+ COMMAND cmd.exe /C "copy /Y /B ${_real_file1} + ${_real_file2} ${_real_output} > nul"
+ DEPENDS ${_file1}
+ DEPENDS ${_target2})
+ endfunction()
+else()
+ macro(concatenate_files _file1 _target2 _output)
+ get_target_property(_file2 ${_target2} LOCATION)
+ add_custom_command(
+ OUTPUT ${_output}
+ COMMAND cat ${_file1} ${_file2} > ${_output}
+ DEPENDS ${_file1}
+ DEPENDS ${_target2})
+ endmacro()
+endif()
+
+function(add_importlibs _module)
+ add_dependency_node(${_module})
+ foreach(LIB ${ARGN})
+ if("${LIB}" MATCHES "msvcrt")
+ add_target_compile_definitions(${_module} _DLL __USE_CRTIMP)
+ target_link_libraries(${_module} msvcrtex)
+ endif()
+ target_link_libraries(${_module} lib${LIB})
+ add_dependencies(${_module} lib${LIB})
+ add_dependency_edge(${_module} ${LIB})
+ endforeach()
+endfunction()
+
+function(set_module_type MODULE TYPE)
+ cmake_parse_arguments(__module "UNICODE" "IMAGEBASE" "ENTRYPOINT" ${ARGN})
+
+ if(__module_UNPARSED_ARGUMENTS)
+ message(STATUS "set_module_type : unparsed arguments ${__module_UNPARSED_ARGUMENTS}, module : ${MODULE}")
+ endif()
+
+ # Set subsystem. Also take this as an occasion
+ # to error out if someone gave a non existing type
+ if((${TYPE} STREQUAL nativecui) OR (${TYPE} STREQUAL nativedll) OR (${TYPE} STREQUAL kernelmodedriver) OR (${TYPE} STREQUAL wdmdriver))
+ set(__subsystem native)
+ elseif(${TYPE} STREQUAL win32cui)
+ set(__subsystem console)
+ elseif(${TYPE} STREQUAL win32gui)
+ set(__subsystem windows)
+ elseif(${TYPE} STREQUAL kbdlayout)
+ set_entrypoint(${MODULE} 0)
+ set_image_base(${MODULE} 0x5FFF0000)
+ set_subsystem(${MODULE} native)
+ if (MSVC)
+ # Merge the .text and .rdata section into the .data section
+ add_target_link_flags(${MODULE} "/ignore:4254 /SECTION:.data,ER /MERGE:.text=.data /MERGE:.rdata=.data /MERGE:.bss=.data /MERGE:.edata=.data")
+ else()
+ # Use a custom linker script
+ add_target_link_flags(${MODULE} "-Wl,-T,${CMAKE_SOURCE_DIR}/kbdlayout.lds")
+ add_dependencies(${MODULE} "${CMAKE_SOURCE_DIR}/kbdlayout.lds")
+ endif()
+ elseif(NOT ((${TYPE} STREQUAL win32dll) OR (${TYPE} STREQUAL win32ocx)
+ OR (${TYPE} STREQUAL cpl) OR (${TYPE} STREQUAL module)))
+ message(FATAL_ERROR "Unknown type ${TYPE} for module ${MODULE}")
+ endif()
+
+ if(DEFINED __subsystem)
+ set_subsystem(${MODULE} ${__subsystem})
+ endif()
+
+ #set unicode definitions
+ if(__module_UNICODE)
+ add_target_compile_definitions(${MODULE} UNICODE _UNICODE)
+ endif()
+
+ # set entry point
+ if(__module_ENTRYPOINT OR (__module_ENTRYPOINT STREQUAL "0"))
+ list(GET __module_ENTRYPOINT 0 __entrypoint)
+ list(LENGTH __module_ENTRYPOINT __length)
+ if(${__length} EQUAL 2)
+ list(GET __module_ENTRYPOINT 1 __entrystack)
+ elseif(NOT ${__length} EQUAL 1)
+ message(FATAL_ERROR "Wrong arguments for ENTRYPOINT parameter of set_module_type : ${__module_ENTRYPOINT}")
+ endif()
+ unset(__length)
+ elseif(${TYPE} STREQUAL nativecui)
+ set(__entrypoint NtProcessStartup)
+ set(__entrystack 4)
+ elseif(${TYPE} STREQUAL win32cui)
+ if(__module_UNICODE)
+ set(__entrypoint wmainCRTStartup)
+ else()
+ set(__entrypoint mainCRTStartup)
+ endif()
+ elseif(${TYPE} STREQUAL win32gui)
+ if(__module_UNICODE)
+ set(__entrypoint wWinMainCRTStartup)
+ else()
+ set(__entrypoint WinMainCRTStartup)
+ endif()
+ elseif((${TYPE} STREQUAL win32dll) OR (${TYPE} STREQUAL win32ocx)
+ OR (${TYPE} STREQUAL cpl))
+ set(__entrypoint DllMainCRTStartup)
+ set(__entrystack 12)
+ elseif((${TYPE} STREQUAL kernelmodedriver) OR (${TYPE} STREQUAL wdmdriver))
+ set(__entrypoint DriverEntry)
+ set(__entrystack 8)
+ elseif(${TYPE} STREQUAL nativedll)
+ set(__entrypoint DllMain)
+ set(__entrystack 12)
+ elseif(${TYPE} STREQUAL module)
+ set(__entrypoint 0)
+ endif()
+
+ if(DEFINED __entrypoint)
+ if(DEFINED __entrystack)
+ set_entrypoint(${MODULE} ${__entrypoint} ${__entrystack})
+ else()
+ set_entrypoint(${MODULE} ${__entrypoint})
+ endif()
+ endif()
+
+ #set base address
+ if(__module_IMAGEBASE)
+ set_image_base(${MODULE} __module_IMAGEBASE)
+ elseif(${TYPE} STREQUAL win32dll)
+ if(DEFINED baseaddress_${MODULE})
+ set_image_base(${MODULE} ${baseaddress_${MODULE}})
+ else()
+ message(STATUS "${MODULE} has no base address")
+ endif()
+ elseif((${TYPE} STREQUAL kernelmodedriver) OR (${TYPE} STREQUAL wdmdriver))
+ set_image_base(${MODULE} 0x00010000)
+ endif()
+
+ # Now do some stuff which is specific to each type
+ if((${TYPE} STREQUAL kernelmodedriver) OR (${TYPE} STREQUAL wdmdriver))
+ add_dependencies(${MODULE} bugcodes)
+ set_target_properties(${MODULE} PROPERTIES SUFFIX ".sys")
+ endif()
+
+ if(${TYPE} STREQUAL win32ocx)
+ set_target_properties(${MODULE} PROPERTIES SUFFIX ".ocx")
+ endif()
+
+ if(${TYPE} STREQUAL cpl)
+ set_target_properties(${MODULE} PROPERTIES SUFFIX ".cpl")
+ endif()
+
+ # do compiler specific stuff
+ set_module_type_toolchain(${MODULE} ${TYPE})
+endfunction()
+
+function(preprocess_file __in __out)
+ set(__arg ${__in})
+ foreach(__def in ${ARGN})
+ list(APPEND __arg -D${__def})
+ endforeach()
+ if(MSVC)
+ add_custom_command(OUTPUT ${_out}
+ COMMAND ${CMAKE_C_COMPILER} /EP ${__arg}
+ DEPENDS ${__in})
+ else()
+ add_custom_command(OUTPUT ${_out}
+ COMMAND ${CMAKE_C_COMPILER} -E ${__arg}
+ DEPENDS ${__in})
+ endif()
+endfunction()
+
+function(get_includes OUTPUT_VAR)
+ get_directory_property(_includes INCLUDE_DIRECTORIES)
+ foreach(arg ${_includes})
+ list(APPEND __tmp_var -I${arg})
+ endforeach()
+ set(${OUTPUT_VAR} ${__tmp_var} PARENT_SCOPE)
+endfunction()
+
+function(get_defines OUTPUT_VAR)
+ get_directory_property(_defines COMPILE_DEFINITIONS)
+ foreach(arg ${_defines})
+ list(APPEND __tmp_var -D${arg})
+ endforeach()
+ set(${OUTPUT_VAR} ${__tmp_var} PARENT_SCOPE)
+endfunction()
+
+if(NOT MSVC)
+ function(add_object_library _target)
+ add_library(${_target} OBJECT ${ARGN})
+ endfunction()
+else()
+ function(add_object_library _target)
+ add_library(${_target} ${ARGN})
+ endfunction()
+endif()
+
+if(KDBG)
+ set(ROSSYM_LIB "rossym")
+else()
+ set(ROSSYM_LIB "")
+endif()
--- /dev/null
--- /dev/null
++#include <windows.h>
++
++#pragma code_page(65001)
++LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
++
++1 COLORNAMES {L"Normal Color\0\0"}
++COMBO COMBODATA {0x0003,0x0003, 0x0000, 0x0003, 0x0006, 0x0001,0x0004,0x0007,0x0002,0x0005,0x08,}
++1 PACKTHEM_VERSION {0x03,}
++1 FILERESNAMES {L"NORMALNORMAL_INI\0LARGEFONTSNORMAL_INI\0EXTRALARGENORMAL_INI\0\0"}
++1 SIZENAMES {L"Normal Size\0Large Fonts\0Extra Large Fonts\0\0"}
++1 MINDEPTH {0x000F,0x000F,0x000F,0x000F,0x000F,0x000F,0x000F,0x000F,0x000F,0x0000,}
++
++EXTRALARGENORMAL_INI TEXTFILE "textfiles/ExtraLargeNormal.INI"
++LARGEFONTSNORMAL_INI TEXTFILE "textfiles/LargeFontsNormal.INI"
++NORMALNORMAL_INI TEXTFILE "textfiles/NormalNormal.INI"
++THEMES_INI TEXTFILE {L"\r\n"}
++
++NORMAL_BALLOONCLOSE_BMP BITMAP "bitmaps/NORMAL_BALLOONCLOSE.bmp"
++NORMAL_BUTTON_BMP BITMAP "bitmaps/NORMAL_BUTTON.bmp"
++NORMAL_CHECKBOX13_BMP BITMAP "bitmaps/NORMAL_CHECKBOX13.bmp"
++NORMAL_CHEVRON_BMP BITMAP "bitmaps/NORMAL_CHEVRON.bmp"
++NORMAL_CLOSEBUTTON_BMP BITMAP "bitmaps/NORMAL_CLOSEBUTTON.bmp"
++NORMAL_CLOSEGLYPH9_BMP BITMAP "bitmaps/NORMAL_CLOSEGLYPH9.bmp"
++NORMAL_COMBOBUTTONGLYPH_BMP BITMAP "bitmaps/NORMAL_COMBOBUTTONGLYPH.bmp"
++NORMAL_COMBOBUTTON_BMP BITMAP "bitmaps/NORMAL_COMBOBUTTON.bmp"
++NORMAL_EXPLORERBARHEADERBACKGROUND_BMP BITMAP "bitmaps/NORMAL_EXPLORERBARHEADERBACKGROUND.bmp"
++NORMAL_EXPLORERBARHEADERCLOSE_BMP BITMAP "bitmaps/NORMAL_EXPLORERBARHEADERCLOSE.bmp"
++NORMAL_EXPLORERBARTOOLBARBACKGROUND_BMP BITMAP "bitmaps/NORMAL_EXPLORERBARTOOLBARBACKGROUND.bmp"
++NORMAL_EXPLORERBARTOOLBARBUTTONSSPLITDROPDOWN_BMP BITMAP "bitmaps/NORMAL_EXPLORERBARTOOLBARBUTTONSSPLITDROPDOWN.bmp"
++NORMAL_EXPLORERBARTOOLBARBUTTONSSPLIT_BMP BITMAP "bitmaps/NORMAL_EXPLORERBARTOOLBARBUTTONSSPLIT.bmp"
++NORMAL_FIELDOUTLINEBLUE_BMP BITMAP "bitmaps/NORMAL_FIELDOUTLINEBLUE.bmp"
++NORMAL_FRAMEBOTTOM_BMP BITMAP "bitmaps/NORMAL_FRAMEBOTTOM.bmp"
++NORMAL_FRAMECAPTIONMIN_BMP BITMAP "bitmaps/NORMAL_FRAMECAPTIONMIN.bmp"
++NORMAL_FRAMECAPTIONSIZING_BMP BITMAP "bitmaps/NORMAL_FRAMECAPTIONSIZING.bmp"
++NORMAL_FRAMECAPTION_BMP BITMAP "bitmaps/NORMAL_FRAMECAPTION.bmp"
++NORMAL_FRAMELEFT_BMP BITMAP "bitmaps/NORMAL_FRAMELEFT.bmp"
++NORMAL_FRAMEMAXIMIZED_BMP BITMAP "bitmaps/NORMAL_FRAMEMAXIMIZED.bmp"
++NORMAL_FRAMERIGHT_BMP BITMAP "bitmaps/NORMAL_FRAMERIGHT.bmp"
++NORMAL_GRIPPERVERT_BMP BITMAP "bitmaps/NORMAL_GRIPPERVERT.bmp"
++NORMAL_GRIPPER_BMP BITMAP "bitmaps/NORMAL_GRIPPER.bmp"
++NORMAL_GROUPBOX_BMP BITMAP "bitmaps/NORMAL_GROUPBOX.bmp"
++NORMAL_HELPBUTTON_BMP BITMAP "bitmaps/NORMAL_HELPBUTTON.bmp"
++NORMAL_LISTVIEWHEADERBACKGROUND_BMP BITMAP "bitmaps/NORMAL_LISTVIEWHEADERBACKGROUND.bmp"
++NORMAL_LISTVIEWHEADER_BMP BITMAP "bitmaps/NORMAL_LISTVIEWHEADER.bmp"
++NORMAL_MAXBUTTON_BMP BITMAP "bitmaps/NORMAL_MAXBUTTON.bmp"
++NORMAL_MDICAPTIONBUTTON_BMP BITMAP "bitmaps/NORMAL_MDICAPTIONBUTTON.bmp"
++NORMAL_MDIGLYPHCLOSE_BMP BITMAP "bitmaps/NORMAL_MDIGLYPHCLOSE.bmp"
++NORMAL_MDIGLYPHMINIMIZE_BMP BITMAP "bitmaps/NORMAL_MDIGLYPHMINIMIZE.bmp"
++NORMAL_MDIGLYPHRESTORE_BMP BITMAP "bitmaps/NORMAL_MDIGLYPHRESTORE.bmp"
++NORMAL_MINBUTTON_BMP BITMAP "bitmaps/NORMAL_MINBUTTON.bmp"
++NORMAL_NORMALGROUPBACKGROUND_BMP BITMAP "bitmaps/NORMAL_NORMALGROUPBACKGROUND.bmp"
++NORMAL_NORMALGROUPHEAD_BMP BITMAP "bitmaps/NORMAL_NORMALGROUPHEAD.bmp"
++NORMAL_PLACEBARBACKGROUND_BMP BITMAP "bitmaps/NORMAL_PLACEBARBACKGROUND.bmp"
++NORMAL_PLACEBARBUTTONS_BMP BITMAP "bitmaps/NORMAL_PLACEBARBUTTONS.bmp"
++NORMAL_PROGRESSCHUNKVERT_BMP BITMAP "bitmaps/NORMAL_PROGRESSCHUNKVERT.bmp"
++NORMAL_PROGRESSCHUNK_BMP BITMAP "bitmaps/NORMAL_PROGRESSCHUNK.bmp"
++NORMAL_PROGRESSTRACKVERT_BMP BITMAP "bitmaps/NORMAL_PROGRESSTRACKVERT.bmp"
++NORMAL_PROGRESSTRACK_BMP BITMAP "bitmaps/NORMAL_PROGRESSTRACK.bmp"
++NORMAL_RADIOBUTTON13_BMP BITMAP "bitmaps/NORMAL_RADIOBUTTON13.bmp"
++NORMAL_RESIZEGRIP2_BMP BITMAP "bitmaps/NORMAL_RESIZEGRIP2.bmp"
++NORMAL_RESTOREBUTTON_BMP BITMAP "bitmaps/NORMAL_RESTOREBUTTON.bmp"
++NORMAL_SCROLLARROWGLYPHSSMALL_BMP BITMAP "bitmaps/NORMAL_SCROLLARROWGLYPHSSMALL.bmp"
++NORMAL_SCROLLARROWGLYPHS_BMP BITMAP "bitmaps/NORMAL_SCROLLARROWGLYPHS.bmp"
++NORMAL_SCROLLARROWS_BMP BITMAP "bitmaps/NORMAL_SCROLLARROWS.bmp"
++NORMAL_SCROLLSHAFTHORIZONTAL_BMP BITMAP "bitmaps/NORMAL_SCROLLSHAFTHORIZONTAL.bmp"
++NORMAL_SCROLLSHAFTVERTICAL_BMP BITMAP "bitmaps/NORMAL_SCROLLSHAFTVERTICAL.bmp"
++NORMAL_SCROLLTHUMBGRIPPERHORIZONTAL_BMP BITMAP "bitmaps/NORMAL_SCROLLTHUMBGRIPPERHORIZONTAL.bmp"
++NORMAL_SCROLLTHUMBGRIPPERVERTICAL_BMP BITMAP "bitmaps/NORMAL_SCROLLTHUMBGRIPPERVERTICAL.bmp"
++NORMAL_SCROLLTHUMBHORIZONTAL_BMP BITMAP "bitmaps/NORMAL_SCROLLTHUMBHORIZONTAL.bmp"
++NORMAL_SCROLLTHUMBVERTICAL_BMP BITMAP "bitmaps/NORMAL_SCROLLTHUMBVERTICAL.bmp"
++NORMAL_SEPARATORVERT_BMP BITMAP "bitmaps/NORMAL_SEPARATORVERT.bmp"
++NORMAL_SEPARATOR_BMP BITMAP "bitmaps/NORMAL_SEPARATOR.bmp"
++NORMAL_SLIDERTRACK_BMP BITMAP "bitmaps/NORMAL_SLIDERTRACK.bmp"
++NORMAL_SMALLCLOSEBUTTON_BMP BITMAP "bitmaps/NORMAL_SMALLCLOSEBUTTON.bmp"
++NORMAL_SMALLFRAMECAPTIONSIZING_BMP BITMAP "bitmaps/NORMAL_SMALLFRAMECAPTIONSIZING.bmp"
++NORMAL_SMALLFRAMECAPTION_BMP BITMAP "bitmaps/NORMAL_SMALLFRAMECAPTION.bmp"
++NORMAL_SPECIALGROUPBACKGROUND_BMP BITMAP "bitmaps/NORMAL_SPECIALGROUPBACKGROUND.bmp"
++NORMAL_SPECIALGROUPHEAD_BMP BITMAP "bitmaps/NORMAL_SPECIALGROUPHEAD.bmp"
++NORMAL_SPINBUTTONBACKGROUNDDOWN_BMP BITMAP "bitmaps/NORMAL_SPINBUTTONBACKGROUNDDOWN.bmp"
++NORMAL_SPINBUTTONBACKGROUNDLEFT_BMP BITMAP "bitmaps/NORMAL_SPINBUTTONBACKGROUNDLEFT.bmp"
++NORMAL_SPINBUTTONBACKGROUNDRIGHT_BMP BITMAP "bitmaps/NORMAL_SPINBUTTONBACKGROUNDRIGHT.bmp"
++NORMAL_SPINBUTTONBACKGROUNDUP_BMP BITMAP "bitmaps/NORMAL_SPINBUTTONBACKGROUNDUP.bmp"
++NORMAL_SPINDOWNGLYPH_BMP BITMAP "bitmaps/NORMAL_SPINDOWNGLYPH.bmp"
++NORMAL_SPINLEFTGLYPH_BMP BITMAP "bitmaps/NORMAL_SPINLEFTGLYPH.bmp"
++NORMAL_SPINRIGHTGLYPH_BMP BITMAP "bitmaps/NORMAL_SPINRIGHTGLYPH.bmp"
++NORMAL_SPINUPGLYPH_BMP BITMAP "bitmaps/NORMAL_SPINUPGLYPH.bmp"
++NORMAL_STARTBUTTON_BMP BITMAP "bitmaps/NORMAL_STARTBUTTON.bmp"
++NORMAL_STARTGROUPBACKGROUND_BMP BITMAP "bitmaps/NORMAL_STARTGROUPBACKGROUND.bmp"
++NORMAL_STARTGROUPNEWAPPBUTTON_BMP BITMAP "bitmaps/NORMAL_STARTGROUPNEWAPPBUTTON.bmp"
++NORMAL_STARTGROUPSEPERATOR_BMP BITMAP "bitmaps/NORMAL_STARTGROUPSEPERATOR.bmp"
++NORMAL_STARTGROUPTOOLBARBUTTON_BMP BITMAP "bitmaps/NORMAL_STARTGROUPTOOLBARBUTTON.bmp"
++NORMAL_STARTPANELLOGOFFBACKGROUND_BMP BITMAP "bitmaps/NORMAL_STARTPANELLOGOFFBACKGROUND.bmp"
++NORMAL_STARTPANELLOGOFFBUTTONSHOT_BMP BITMAP "bitmaps/NORMAL_STARTPANELLOGOFFBUTTONSHOT.bmp"
++NORMAL_STARTPANELLOGOFFBUTTONS_BMP BITMAP "bitmaps/NORMAL_STARTPANELLOGOFFBUTTONS.bmp"
++NORMAL_STARTPANELMFUBACKGROUND_BMP BITMAP "bitmaps/NORMAL_STARTPANELMFUBACKGROUND.bmp"
++NORMAL_STARTPANELMOREPROGARROWHOT_BMP BITMAP "bitmaps/NORMAL_STARTPANELMOREPROGARROWHOT.bmp"
++NORMAL_STARTPANELMOREPROGARROW_BMP BITMAP "bitmaps/NORMAL_STARTPANELMOREPROGARROW.bmp"
++NORMAL_STARTPANELMOREPROGBACKGROUND_BMP BITMAP "bitmaps/NORMAL_STARTPANELMOREPROGBACKGROUND.bmp"
++NORMAL_STARTPANELPLACESBACKGROUND_BMP BITMAP "bitmaps/NORMAL_STARTPANELPLACESBACKGROUND.bmp"
++NORMAL_STARTPLACESSEPARATOR_BMP BITMAP "bitmaps/NORMAL_STARTPLACESSEPARATOR.bmp"
++NORMAL_STARTPROGRAMSSEPARATOR_BMP BITMAP "bitmaps/NORMAL_STARTPROGRAMSSEPARATOR.bmp"
++NORMAL_STARTUSERPANEL_BMP BITMAP "bitmaps/NORMAL_STARTUSERPANEL.bmp"
++NORMAL_STATUSBACKGROUND_BMP BITMAP "bitmaps/NORMAL_STATUSBACKGROUND.bmp"
++NORMAL_STATUSPANE_BMP BITMAP "bitmaps/NORMAL_STATUSPANE.bmp"
++NORMAL_TABBACKGROUND_BMP BITMAP "bitmaps/NORMAL_TABBACKGROUND.bmp"
++NORMAL_TABITEMBOTH_BMP BITMAP "bitmaps/NORMAL_TABITEMBOTH.bmp"
++NORMAL_TABITEMLEFT_BMP BITMAP "bitmaps/NORMAL_TABITEMLEFT.bmp"
++NORMAL_TABITEMRIGHT_BMP BITMAP "bitmaps/NORMAL_TABITEMRIGHT.bmp"
++NORMAL_TABITEMTOPBOTH_BMP BITMAP "bitmaps/NORMAL_TABITEMTOPBOTH.bmp"
++NORMAL_TABITEMTOPLEFT_BMP BITMAP "bitmaps/NORMAL_TABITEMTOPLEFT.bmp"
++NORMAL_TABITEMTOPRIGHT_BMP BITMAP "bitmaps/NORMAL_TABITEMTOPRIGHT.bmp"
++NORMAL_TABITEMTOP_BMP BITMAP "bitmaps/NORMAL_TABITEMTOP.bmp"
++NORMAL_TABITEM_BMP BITMAP "bitmaps/NORMAL_TABITEM.bmp"
++NORMAL_TABPANEEDGE_BMP BITMAP "bitmaps/NORMAL_TABPANEEDGE.bmp"
++NORMAL_TASKBANDBACKGROUND_BMP BITMAP "bitmaps/NORMAL_TASKBANDBACKGROUND.bmp"
++NORMAL_TASKBANDBUTTONNOEDGEVERTICAL_BMP BITMAP "bitmaps/NORMAL_TASKBANDBUTTONNOEDGEVERTICAL.bmp"
++NORMAL_TASKBANDBUTTONNOEDGE_BMP BITMAP "bitmaps/NORMAL_TASKBANDBUTTONNOEDGE.bmp"
++NORMAL_TASKBANDBUTTONVERTICAL_BMP BITMAP "bitmaps/NORMAL_TASKBANDBUTTONVERTICAL.bmp"
++NORMAL_TASKBANDBUTTON_BMP BITMAP "bitmaps/NORMAL_TASKBANDBUTTON.bmp"
++NORMAL_TASKBANDFLASHBUTTONGROUPMENU_BMP BITMAP "bitmaps/NORMAL_TASKBANDFLASHBUTTONGROUPMENU.bmp"
++NORMAL_TASKBANDFLASHBUTTON_BMP BITMAP "bitmaps/NORMAL_TASKBANDFLASHBUTTON.bmp"
++NORMAL_TASKBANDHOVER_BMP BITMAP "bitmaps/NORMAL_TASKBANDHOVER.bmp"
++NORMAL_TASKBANDSCROLLARROWGLYPHS_BMP BITMAP "bitmaps/NORMAL_TASKBANDSCROLLARROWGLYPHS.bmp"
++NORMAL_TASKBANDSCROLLARROWS_BMP BITMAP "bitmaps/NORMAL_TASKBANDSCROLLARROWS.bmp"
++NORMAL_TASKBANDSCROLLSHAFTHORIZONTAL_BMP BITMAP "bitmaps/NORMAL_TASKBANDSCROLLSHAFTHORIZONTAL.bmp"
++NORMAL_TASKBANDSCROLLSHAFTVERTICAL_BMP BITMAP "bitmaps/NORMAL_TASKBANDSCROLLSHAFTVERTICAL.bmp"
++NORMAL_TASKBANDSCROLLTHUMBGRIPPERHORIZONTAL_BMP BITMAP "bitmaps/NORMAL_TASKBANDSCROLLTHUMBGRIPPERHORIZONTAL.bmp"
++NORMAL_TASKBANDSCROLLTHUMBGRIPPERVERTICAL_BMP BITMAP "bitmaps/NORMAL_TASKBANDSCROLLTHUMBGRIPPERVERTICAL.bmp"
++NORMAL_TASKBANDSCROLLTHUMBHORIZONTAL_BMP BITMAP "bitmaps/NORMAL_TASKBANDSCROLLTHUMBHORIZONTAL.bmp"
++NORMAL_TASKBANDSCROLLTHUMBVERTICAL_BMP BITMAP "bitmaps/NORMAL_TASKBANDSCROLLTHUMBVERTICAL.bmp"
++NORMAL_TASKBARBACKGROUNDVERTICAL_BMP BITMAP "bitmaps/NORMAL_TASKBARBACKGROUNDVERTICAL.bmp"
++NORMAL_TASKBARBACKGROUND_BMP BITMAP "bitmaps/NORMAL_TASKBARBACKGROUND.bmp"
++NORMAL_TASKBARCHEVRONVERT_BMP BITMAP "bitmaps/NORMAL_TASKBARCHEVRONVERT.bmp"
++NORMAL_TASKBARCHEVRON_BMP BITMAP "bitmaps/NORMAL_TASKBARCHEVRON.bmp"
++NORMAL_TASKBARGRIPPERVERTICAL_BMP BITMAP "bitmaps/NORMAL_TASKBARGRIPPERVERTICAL.bmp"
++NORMAL_TASKBARGRIPPER_BMP BITMAP "bitmaps/NORMAL_TASKBARGRIPPER.bmp"
++NORMAL_TASKBARSIZINGBARBOTTOM_BMP BITMAP "bitmaps/NORMAL_TASKBARSIZINGBARBOTTOM.bmp"
++NORMAL_TASKBARSIZINGBARLEFT_BMP BITMAP "bitmaps/NORMAL_TASKBARSIZINGBARLEFT.bmp"
++NORMAL_TASKBARSIZINGBARRIGHT_BMP BITMAP "bitmaps/NORMAL_TASKBARSIZINGBARRIGHT.bmp"
++NORMAL_TASKBARSIZINGBARTOP_BMP BITMAP "bitmaps/NORMAL_TASKBARSIZINGBARTOP.bmp"
++NORMAL_TASKBARTRAYVERTICAL_BMP BITMAP "bitmaps/NORMAL_TASKBARTRAYVERTICAL.bmp"
++NORMAL_TASKBARTRAY_BMP BITMAP "bitmaps/NORMAL_TASKBARTRAY.bmp"
++NORMAL_TOOLBARBACKGROUND_BMP BITMAP "bitmaps/NORMAL_TOOLBARBACKGROUND.bmp"
++NORMAL_TOOLBARBUTTONSSPLITDROPDOWNGLYPH_BMP BITMAP "bitmaps/NORMAL_TOOLBARBUTTONSSPLITDROPDOWNGLYPH.bmp"
++NORMAL_TOOLBARBUTTONSSPLITDROPDOWN_BMP BITMAP "bitmaps/NORMAL_TOOLBARBUTTONSSPLITDROPDOWN.bmp"
++NORMAL_TOOLBARBUTTONSSPLIT_BMP BITMAP "bitmaps/NORMAL_TOOLBARBUTTONSSPLIT.bmp"
++NORMAL_TOOLBARBUTTONS_BMP BITMAP "bitmaps/NORMAL_TOOLBARBUTTONS.bmp"
++NORMAL_TOOLBARGRIPPERVERT_BMP BITMAP "bitmaps/NORMAL_TOOLBARGRIPPERVERT.bmp"
++NORMAL_TOOLBARGRIPPER_BMP BITMAP "bitmaps/NORMAL_TOOLBARGRIPPER.bmp"
++NORMAL_TRACKBARDOWN13_BMP BITMAP "bitmaps/NORMAL_TRACKBARDOWN13.bmp"
++NORMAL_TRACKBARDOWN16_BMP BITMAP "bitmaps/NORMAL_TRACKBARDOWN16.bmp"
++NORMAL_TRACKBARDOWN25_BMP BITMAP "bitmaps/NORMAL_TRACKBARDOWN25.bmp"
++NORMAL_TRACKBARHORIZONTAL_BMP BITMAP "bitmaps/NORMAL_TRACKBARHORIZONTAL.bmp"
++NORMAL_TRACKBARLEFT13_BMP BITMAP "bitmaps/NORMAL_TRACKBARLEFT13.bmp"
++NORMAL_TRACKBARLEFT16_BMP BITMAP "bitmaps/NORMAL_TRACKBARLEFT16.bmp"
++NORMAL_TRACKBARLEFT25_BMP BITMAP "bitmaps/NORMAL_TRACKBARLEFT25.bmp"
++NORMAL_TRACKBARRIGHT13_BMP BITMAP "bitmaps/NORMAL_TRACKBARRIGHT13.bmp"
++NORMAL_TRACKBARRIGHT16_BMP BITMAP "bitmaps/NORMAL_TRACKBARRIGHT16.bmp"
++NORMAL_TRACKBARRIGHT25_BMP BITMAP "bitmaps/NORMAL_TRACKBARRIGHT25.bmp"
++NORMAL_TRACKBARUP13_BMP BITMAP "bitmaps/NORMAL_TRACKBARUP13.bmp"
++NORMAL_TRACKBARUP16_BMP BITMAP "bitmaps/NORMAL_TRACKBARUP16.bmp"
++NORMAL_TRACKBARUP25_BMP BITMAP "bitmaps/NORMAL_TRACKBARUP25.bmp"
++NORMAL_TRACKBARVERTICAL_BMP BITMAP "bitmaps/NORMAL_TRACKBARVERTICAL.bmp"
++NORMAL_TRAYCHEVRONHORIZONTALOPEN_BMP BITMAP "bitmaps/NORMAL_TRAYCHEVRONHORIZONTALOPEN.bmp"
++NORMAL_TRAYCHEVRONHORIZONTAL_BMP BITMAP "bitmaps/NORMAL_TRAYCHEVRONHORIZONTAL.bmp"
++NORMAL_TREEEXPANDCOLLAPSE_BMP BITMAP "bitmaps/NORMAL_TREEEXPANDCOLLAPSE.bmp"
++NORMAL_USERTILEBACKGROUND_BMP BITMAP "bitmaps/NORMAL_USERTILEBACKGROUND.bmp"
++
++/* These three are needed before Windows will accept the theme */
++NORMAL_EXPLORERBARHEADERPIN_BMP BITMAP "bitmaps/dummy.bmp"
++NORMAL_EXPLORERBARTOOLBARBUTTONS_BMP BITMAP "bitmaps/dummy.bmp"
++NORMAL_IE_PERSONALBARMENU_BMP BITMAP "bitmaps/dummy.bmp"
++NORMAL_NORMALGROUPCOLLAPSE_BMP BITMAP "bitmaps/dummy.bmp"
++NORMAL_NORMALGROUPEXPAND_BMP BITMAP "bitmaps/dummy.bmp"
++
++STRINGTABLE
++{
++1000, "Ater"
++}
++
++STRINGTABLE
++{
++2000, "Lautus Ater"
++}
++
++STRINGTABLE
++{
++3000, "Normal"
++3001, "Large Fonts"
++3002, "Extra Large Fonts"
++}
++
++STRINGTABLE
++{
++4000, "Normal"
++4001, "Large Fonts"
++4002, "Extra Large Fonts"
++}
++
++STRINGTABLE
++{
++5000, "Lautus"
++5001, "Visual Style"
++5002, "ReactOS Foundation"
++5003, "Pisarz, based on Luna Inspirat"
++5004, "Released under GNU/GPL 2.0, 2011"
++5005, "http://www.reactos.org"
++5006, "1.0"
++5007, "Visual Style for ReactOS"
++}
++
++#define REACTOS_VERSION_DLL
++#define REACTOS_STR_FILE_DESCRIPTION "Lautus Theme\0"
++#define REACTOS_STR_INTERNAL_NAME "Lautus\0"
++#define REACTOS_STR_ORIGINAL_FILENAME "lautus.msstyles\0"
++#include <reactos/version.rc>