1
2add_subdirectory(load_notifications)
3
4include_directories($<TARGET_FILE_DIR:load_notifications>)
5include_directories(${REACTOS_SOURCE_DIR}/ntoskrnl/include)
6spec2def(ntdll_apitest.exe ntdll_apitest.spec)
7
8list(APPEND SOURCE
9    LdrEnumResources.c
10    load_notifications.c
11    locale.c
12    NtAcceptConnectPort.c
13    NtAdjustGroupsToken.c
14    NtAdjustPrivilegesToken.c
15    NtAllocateVirtualMemory.c
16    NtApphelpCacheControl.c
17    NtCompareTokens.c
18    NtContinue.c
19    NtCreateFile.c
20    NtCreateKey.c
21    NtCreateThread.c
22    NtDeleteKey.c
23    NtDuplicateObject.c
24    NtDuplicateToken.c
25    NtFilterToken.c
26    NtFreeVirtualMemory.c
27    NtImpersonateAnonymousToken.c
28    NtLoadUnloadKey.c
29    NtMapViewOfSection.c
30    NtMutant.c
31    NtOpenKey.c
32    NtOpenProcessToken.c
33    NtOpenThreadToken.c
34    NtProtectVirtualMemory.c
35    NtQueryInformationFile.c
36    NtQueryInformationProcess.c
37    NtQueryInformationThread.c
38    NtQueryKey.c
39    NtQuerySystemEnvironmentValue.c
40    NtQuerySystemInformation.c
41    NtQueryValueKey.c
42    NtQueryVolumeInformationFile.c
43    NtReadFile.c
44    NtSaveKey.c
45    NtSetInformationFile.c
46    NtSetInformationProcess.c
47    NtSetInformationThread.c
48    NtSetValueKey.c
49    NtSetVolumeInformationFile.c
50    NtUnloadDriver.c
51    NtWriteFile.c
52    probelib.c
53    RtlAllocateHeap.c
54    RtlBitmap.c
55    RtlComputePrivatizedDllName_U.c
56    RtlCopyMappedMemory.c
57    RtlDebugInformation.c
58    RtlDeleteAce.c
59    RtlDetermineDosPathNameType.c
60    RtlDoesFileExists.c
61    RtlDosApplyFileIsolationRedirection_Ustr.c
62    RtlDosPathNameToNtPathName_U.c
63    RtlDosSearchPath_U.c
64    RtlDosSearchPath_Ustr.c
65    RtlFirstFreeAce.c
66    RtlGenerate8dot3Name.c
67    RtlGetFullPathName_U.c
68    RtlGetFullPathName_Ustr.c
69    RtlGetFullPathName_UstrEx.c
70    RtlGetLengthWithoutLastFullDosOrNtPathElement.c
71    RtlGetLengthWithoutTrailingPathSeperators.c
72    RtlGetLongestNtPathLength.c
73    RtlGetNtProductType.c
74    RtlGetUnloadEventTrace.c
75    RtlHandle.c
76    RtlImageDirectoryEntryToData.c
77    RtlImageRvaToVa.c
78    RtlIsNameLegalDOS8Dot3.c
79    RtlMemoryStream.c
80    RtlMultipleAllocateHeap.c
81    RtlNtPathNameToDosPathName.c
82    RtlpApplyLengthFunction.c
83    RtlpEnsureBufferSize.c
84    RtlQueryTimeZoneInfo.c
85    RtlReAllocateHeap.c
86    RtlUnicodeStringToAnsiString.c
87    RtlUnicodeStringToCountedOemString.c
88    RtlUnicodeToOemN.c
89    RtlUpcaseUnicodeStringToCountedOemString.c
90    RtlValidateUnicodeString.c
91    RtlxUnicodeStringToAnsiSize.c
92    RtlxUnicodeStringToOemSize.c
93    StackOverflow.c
94    SystemInfo.c
95    Timer.c)
96
97if(ARCH STREQUAL "i386")
98    add_asm_files(ntdll_apitest_asm i386/NtContinue.S)
99endif()
100
101list(APPEND PCH_SKIP_SOURCE
102    testlist.c)
103
104add_rc_deps(testdata.rc ${CMAKE_CURRENT_BINARY_DIR}/load_notifications/load_notifications.dll)
105
106add_executable(ntdll_apitest
107    ${SOURCE}
108    ${ntdll_apitest_asm}
109    ${PCH_SKIP_SOURCE}
110    testdata.rc
111    ${CMAKE_CURRENT_BINARY_DIR}/ntdll_apitest.def)
112
113target_link_libraries(ntdll_apitest wine uuid ${PSEH_LIB})
114set_module_type(ntdll_apitest win32cui)
115add_importlibs(ntdll_apitest msvcrt advapi32 kernel32 ntdll)
116add_pch(ntdll_apitest precomp.h "${PCH_SKIP_SOURCE}")
117add_dependencies(ntdll_apitest load_notifications)
118
119if(NOT MSVC)
120    set_source_files_properties(RtlGetFullPathName_UstrEx.c PROPERTIES COMPILE_FLAGS "-Wno-format")
121
122    # Avoid "universal character names are only valid in C++ and C99" error.
123    set_property(TARGET ntdll_apitest PROPERTY C_STANDARD 99)
124endif()
125
126add_rostests_file(TARGET ntdll_apitest)
127add_rostests_file(TARGET ntdll_apitest SUBDIR testdata)
128# These are empty files
129add_rostests_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/ntdll_apitest.exe.local" SUBDIR testdata)
130add_rostests_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/shell32.dll" SUBDIR testdata)
131add_rostests_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/test.dll" SUBDIR testdata)
132add_rostests_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/ntdlltest.manifest" SUBDIR testdata)
133add_rostests_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/fil1.txt" SUBDIR testdata)
134
135# Convenience target for running from IDE
136if(MSVC_IDE)
137    set(NTDLL_APITEST_DATADIR $<TARGET_FILE_DIR:ntdll_apitest>/testdata/)
138    add_custom_command(TARGET ntdll_apitest
139                       POST_BUILD
140                       COMMAND "${CMAKE_COMMAND}" -E make_directory ${NTDLL_APITEST_DATADIR}
141                       COMMAND "${CMAKE_COMMAND}" -E copy $<TARGET_FILE:ntdll_apitest> ${NTDLL_APITEST_DATADIR}
142                       COMMAND "${CMAKE_COMMAND}" -E copy ntdll_apitest.exe.local ${NTDLL_APITEST_DATADIR}
143                       COMMAND "${CMAKE_COMMAND}" -E copy shell32.dll ${NTDLL_APITEST_DATADIR}
144                       COMMAND "${CMAKE_COMMAND}" -E copy test.dll ${NTDLL_APITEST_DATADIR}
145                       COMMAND "${CMAKE_COMMAND}" -E copy ntdlltest.manifest ${NTDLL_APITEST_DATADIR}
146                       COMMAND "${CMAKE_COMMAND}" -E copy fil1.txt ${NTDLL_APITEST_DATADIR}
147                       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
148endif()
149