diff --git a/Tests/ModuleDefinition/CMakeLists.txt b/Tests/ModuleDefinition/CMakeLists.txt index b463a3c00..a30f64363 100644 --- a/Tests/ModuleDefinition/CMakeLists.txt +++ b/Tests/ModuleDefinition/CMakeLists.txt @@ -4,6 +4,14 @@ project(ModuleDefinition C) # Test .def file source recognition for DLLs. add_library(example_dll SHARED example_dll.c example_dll.def) +# Test generated .def file. +add_custom_command(OUTPUT example_dll_gen.def + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/example_dll_gen.def.in + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/example_dll_gen.def.in + ${CMAKE_CURRENT_BINARY_DIR}/example_dll_gen.def + ) +add_library(example_dll_gen SHARED example_dll_gen.c example_dll_gen.def) + # Test /DEF: flag recognition for VS. if(MSVC OR "${CMAKE_C_COMPILER_ID}" MATCHES "^(Intel)$") add_library(example_dll_2 SHARED example_dll_2.c) @@ -16,7 +24,7 @@ endif() # Test .def file source recognition for EXEs. add_executable(example_exe example_exe.c example_exe.def) set_property(TARGET example_exe PROPERTY ENABLE_EXPORTS 1) -target_link_libraries(example_exe example_dll ${example_dll_2}) +target_link_libraries(example_exe example_dll example_dll_gen ${example_dll_2}) # Test linking to the executable. add_library(example_mod_1 MODULE example_mod_1.c) diff --git a/Tests/ModuleDefinition/example_dll_gen.c b/Tests/ModuleDefinition/example_dll_gen.c new file mode 100644 index 000000000..be5d1eed7 --- /dev/null +++ b/Tests/ModuleDefinition/example_dll_gen.c @@ -0,0 +1 @@ +int example_dll_gen_function(void) { return 0; } diff --git a/Tests/ModuleDefinition/example_dll_gen.def.in b/Tests/ModuleDefinition/example_dll_gen.def.in new file mode 100644 index 000000000..c489dbc83 --- /dev/null +++ b/Tests/ModuleDefinition/example_dll_gen.def.in @@ -0,0 +1,2 @@ +EXPORTS +example_dll_gen_function diff --git a/Tests/ModuleDefinition/example_exe.c b/Tests/ModuleDefinition/example_exe.c index c521b3a4c..253ae8b70 100644 --- a/Tests/ModuleDefinition/example_exe.c +++ b/Tests/ModuleDefinition/example_exe.c @@ -1,4 +1,5 @@ extern int __declspec(dllimport) example_dll_function(void); +extern int __declspec(dllimport) example_dll_gen_function(void); #ifdef EXAMPLE_DLL_2 extern int __declspec(dllimport) example_dll_2_function(void); #endif @@ -7,6 +8,7 @@ int main(void) { return example_dll_function() + + example_dll_gen_function() + #ifdef EXAMPLE_DLL_2 example_dll_2_function() + #endif