Finally merge my branch "colins-printing-for-freedom", giving us an initial implementation of a Win32-compatible Printing Stack (localmon, localspl, spoolss, spoolsv, winspool)
You can now send raw data to parallel port printers using documented Win32 API. An example application is in my "winspool_print" commandline tool merged to rosapps.
ReactOS folks, thanks for your support during the development of this, making my bachelor's thesis a reality! :)
Documentation/Thesis: https://svn.reactos.org/reactos/trunk/documentation/articles/Printing%20Stack%20Thesis/thesis.pdf
Video: https://www.youtube.com/watch?v=cNzePucTOLY
CORE-10489
svn path=/trunk/; revision=73039
--- /dev/null
+
+add_subdirectory(cmlib)
+add_subdirectory(inflib)
+
+if(CMAKE_CROSSCOMPILING)
+
+add_subdirectory(3rdparty)
+add_subdirectory(atl)
+add_subdirectory(comsupp)
+add_subdirectory(conutils)
+add_subdirectory(cportlib)
+add_subdirectory(crt)
+add_subdirectory(cryptlib)
+
+if(MSVC)
+ add_subdirectory(cpprt)
+ add_subdirectory(RunTmChk)
+endif()
+
+add_subdirectory(delayimp)
+#add_subdirectory(dnslib) Nothing links to this lib.
+add_subdirectory(drivers)
+add_subdirectory(dxguid)
+add_subdirectory(epsapi)
+add_subdirectory(evtlib)
+add_subdirectory(fast486)
+add_subdirectory(fslib)
+
+if(STACK_PROTECTOR)
+ add_subdirectory(gcc_ssp)
+endif()
+
+add_subdirectory(ioevent)
+add_subdirectory(lsalib)
+add_subdirectory(nt)
+add_subdirectory(ppcmmu)
+add_subdirectory(pseh)
+
+if(KDBG)
+ add_subdirectory(rossym)
+endif()
+
+add_subdirectory(rtl)
+add_subdirectory(scrnsave)
++add_subdirectory(skiplist)
+add_subdirectory(strmiids)
+add_subdirectory(smlib)
+add_subdirectory(tdilib)
+add_subdirectory(uuid)
+add_subdirectory(wdmguid)
+
+else()
+
+add_subdirectory(3rdparty/zlib)
+
+endif()
--- /dev/null
-include_directories(${REACTOS_SOURCE_DIR}/include/reactos/idl)
-add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/winspool.idl)
+
++include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl)
++add_rpc_files(server ${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/winspool.idl)
+
+ list(APPEND SOURCE
+ forms.c
+ init.c
+ jobs.c
+ main.c
+ monitors.c
+ notifications.c
+ ports.c
+ precomp.h
+ printerdata.c
+ printerdrivers.c
+ printers.c
+ printprocessors.c
+ printproviders.c
+ rpcserver.c
+ rpcstubs.c
+ xcv.c
+ ${CMAKE_CURRENT_BINARY_DIR}/winspool_s.c)
+
+ add_executable(spoolsv ${SOURCE} spoolsv.rc)
+ set_module_type(spoolsv win32cui UNICODE)
+ target_link_libraries(spoolsv wine)
+ add_delay_importlibs(spoolsv spoolss)
+ add_importlibs(spoolsv advapi32 rpcrt4 msvcrt kernel32 ntdll)
+ add_pch(spoolsv precomp.h SOURCE)
+ add_cd_file(TARGET spoolsv DESTINATION reactos/system32 FOR all)
--- /dev/null
-include_directories(${REACTOS_SOURCE_DIR}/include/reactos/idl)
-add_rpc_files(client ${REACTOS_SOURCE_DIR}/include/reactos/idl/winspool.idl)
+
++include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl)
++add_rpc_files(client ${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/winspool.idl)
+ spec2def(winspool.drv winspool.spec ADD_IMPORTLIB)
+
+ list(APPEND SOURCE
+ devmode.c
+ jobs.c
+ main.c
+ monitors.c
+ ports.c
+ precomp.h
+ printerdata.c
+ printerdrivers.c
+ printers.c
+ printprocessors.c
+ printproviders.c
+ ${CMAKE_CURRENT_BINARY_DIR}/winspool_c.c)
+
+ add_library(winspool SHARED
+ ${SOURCE}
+ winspool.rc
+ ${CMAKE_CURRENT_BINARY_DIR}/winspool_stubs.c
+ ${CMAKE_CURRENT_BINARY_DIR}/winspool.def)
+
+ set_target_properties(winspool PROPERTIES SUFFIX ".drv")
+ set_module_type(winspool win32dll UNICODE)
+ target_link_libraries(winspool wine ${PSEH_LIB})
+ add_importlibs(winspool gdi32 rpcrt4 msvcrt kernel32 ntdll)
+ add_pch(winspool precomp.h SOURCE)
+ add_cd_file(TARGET winspool DESTINATION reactos/system32 FOR all)
--- /dev/null
-include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
+
+ add_definitions(-D__WINESRC__)
++include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine)
+ spec2def(localui.dll localui.spec)
+
+ list(APPEND SOURCE
+ localui.c
+ ${CMAKE_CURRENT_BINARY_DIR}/localui.def)
+
+ add_library(localui SHARED ${SOURCE} localui.rc)
+ set_module_type(localui win32dll)
+ target_link_libraries(localui wine)
+ add_importlibs(localui winspool user32 msvcrt kernel32 ntdll)
+ add_cd_file(TARGET localui DESTINATION reactos/system32 FOR all)
--- /dev/null
-include_directories(${REACTOS_SOURCE_DIR}/lib/skiplist)
+
+ spec2def(localspl.dll localspl.spec ADD_IMPORTLIB)
+
++include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/skiplist)
+
+ list(APPEND SOURCE
+ jobs.c
+ main.c
+ monitors.c
+ ports.c
+ precomp.h
+ printers.c
+ printingthread.c
+ printprocessors.c
+ tools.c)
+
+ add_library(localspl SHARED
+ ${SOURCE}
+ localspl.rc
+ ${CMAKE_CURRENT_BINARY_DIR}/localspl_stubs.c
+ ${CMAKE_CURRENT_BINARY_DIR}/localspl.def)
+
+ set_module_type(localspl win32dll UNICODE)
+ target_link_libraries(localspl skiplist16 wine)
+ add_importlibs(localspl advapi32 rpcrt4 spoolss msvcrt kernel32 ntdll)
+ add_pch(localspl precomp.h SOURCE)
+ add_cd_file(TARGET localspl DESTINATION reactos/system32 FOR all)
add_subdirectory(tee)
add_subdirectory(touch)
add_subdirectory(uptime)
++add_subdirectory(winspool_print)
add_subdirectory(y)
if(NOT ARCH STREQUAL "amd64")
add_subdirectory(kernel32)
endif()
+ add_subdirectory(localspl)
+add_subdirectory(msgina)
add_subdirectory(msvcrt)
add_subdirectory(ntdll)
+add_subdirectory(ole32)
+add_subdirectory(pefile)
add_subdirectory(powrprof)
+add_subdirectory(sdk)
add_subdirectory(setupapi)
add_subdirectory(shell32)
-add_subdirectory(psapi)
+ add_subdirectory(spoolss)
+add_subdirectory(psapi)
add_subdirectory(user32)
-if(NOT ARCH STREQUAL "amd64")
- add_subdirectory(w32kdll)
- add_subdirectory(w32knapi)
+add_subdirectory(user32_dynamic)
+if(NOT ARCH STREQUAL "amd64" AND NOT CMAKE_BUILD_TYPE STREQUAL "Release")
+ add_subdirectory(win32kdll)
+ add_subdirectory(win32nt)
endif()
add_subdirectory(winhttp)
add_subdirectory(wininet)
add_subdirectory(winhttp)
add_subdirectory(wininet)
add_subdirectory(winmm)
- add_subdirectory(winspool)
++#add_subdirectory(winspool)
add_subdirectory(wintrust)
add_subdirectory(wlanapi)
add_subdirectory(wldap32)