[Cmake-commits] [cmake-commits] king committed CMakeLists.txt NONE 1.1 example_dll.c NONE 1.1 example_dll.def NONE 1.1 example_dll_2.c NONE 1.1 example_dll_2.def NONE 1.1 example_exe.c NONE 1.1 example_exe.def NONE 1.1 example_mod_1.c NONE 1.1

cmake-commits at cmake.org cmake-commits at cmake.org
Tue Sep 29 16:39:45 EDT 2009


Update of /cvsroot/CMake/CMake/Tests/ModuleDefinition
In directory public:/mounts/ram/cvs-serv25595/Tests/ModuleDefinition

Added Files:
	CMakeLists.txt example_dll.c example_dll.def example_dll_2.c 
	example_dll_2.def example_exe.c example_exe.def 
	example_mod_1.c 
Log Message:
Test use of module .def files for MS tools

This adds a "ModuleDefinition" test enabled when using MSVC tools.  It
checks that .def files can be used to export .dll and .exe symbols and
create corresponding .lib files that can be linked.  See issue #9613.


--- NEW FILE: example_dll_2.c ---
int example_dll_2_function(void) { return 0; }

--- NEW FILE: example_exe.c ---
extern int __declspec(dllimport) example_dll_function(void);
#ifdef _MSC_VER
extern int __declspec(dllimport) example_dll_2_function(void);
#endif
int example_exe_function(void) { return 0; }
int main(void)
{
  return
    example_dll_function() +
#ifdef _MSC_VER
    example_dll_2_function() +
#endif
    example_exe_function();
}

--- NEW FILE: example_dll_2.def ---
EXPORTS
example_dll_2_function

--- NEW FILE: example_dll.c ---
int example_dll_function(void) { return 0; }

--- NEW FILE: example_mod_1.c ---
#ifdef __WATCOMC__
# define MODULE_CCONV __cdecl
#else
# define MODULE_CCONV
#endif

int __declspec(dllimport) example_exe_function(void);
int __declspec(dllimport) example_dll_function(void);
#ifdef _MSC_VER
int __declspec(dllimport) example_dll_2_function(void);
#endif

__declspec(dllexport) int MODULE_CCONV example_mod_1_function(int n)
{
  return
    example_dll_function() +
#ifdef _MSC_VER
    example_dll_2_function() +
#endif
    example_exe_function() + n;
}

--- NEW FILE: example_exe.def ---
EXPORTS
example_exe_function

--- NEW FILE: CMakeLists.txt ---
cmake_minimum_required(VERSION 2.6)
project(ModuleDefinition C)

# Test .def file source recognition for DLLs.
add_library(example_dll SHARED example_dll.c example_dll.def)

# Test /DEF:<file> flag recognition for VS.
if(MSVC)
  add_library(example_dll_2 SHARED example_dll_2.c)
  set_property(TARGET example_dll_2 PROPERTY LINK_FLAGS
    /DEF:"${ModuleDefinition_SOURCE_DIR}/example_dll_2.def")
  set(example_dll_2 example_dll_2)
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})

# Test linking to the executable.
add_library(example_mod_1 MODULE example_mod_1.c)
target_link_libraries(example_mod_1 example_exe example_dll ${example_dll_2})

--- NEW FILE: example_dll.def ---
EXPORTS
example_dll_function



More information about the Cmake-commits mailing list