Can define entry symbol type.

pull/15/head
Jussi Pakkanen 11 years ago
parent 5e50403d3f
commit d30c7b5968
  1. 8
      backends.py
  2. 6
      build.py
  3. 2
      test cases/windows/2 winmain/meson.build
  4. 2
      test cases/windows/4 winmaincpp/meson.build

@ -1366,6 +1366,7 @@ class Vs2010Backend(Backend):
proj_to_src_root = os.path.join(down, self.build_to_src)
proj_to_src_dir = os.path.join(proj_to_src_root, target.subdir)
(sources, headers) = self.split_sources(target.sources)
entrypoint = 'WinMainCRTStartup'
buildtype = 'Debug'
platform = "Win32"
project_name = target.name
@ -1373,11 +1374,14 @@ class Vs2010Backend(Backend):
subsystem = 'Windows'
if isinstance(target, build.Executable):
conftype = 'Application'
subsystem = 'Console'
if not target.gui_app:
subsystem = 'Console'
entrypoint = 'mainCRTStartup'
elif isinstance(target, build.StaticLibrary):
conftype = 'StaticLibrary'
elif isinstance(target, build.SharedLibrary):
conftype = 'DynamicLibrary'
entrypoint = '_DllMainCrtStartup'
else:
raise MesonException('Unknown target type for %s' % target_name)
root = ET.Element('Project', {'DefaultTargets' : "Build",
@ -1485,7 +1489,7 @@ class Vs2010Backend(Backend):
pdb = ET.SubElement(link, 'ProgramDataBaseFileName')
pdb.text = '$(OutDir}%s.pdb' % target_name
if isinstance(target, build.Executable):
ET.SubElement(link, 'EntryPointSymbol').text = 'mainCRTStartup'
ET.SubElement(link, 'EntryPointSymbol').text = entrypoint
targetmachine = ET.SubElement(link, 'TargetMachine')
targetmachine.text = 'MachineX86'

@ -266,6 +266,12 @@ class BuildTarget():
if not isinstance(main_class, str):
raise InvalidArguments('Main class must be a string')
self.main_class = main_class
if isinstance(self, Executable):
self.gui_app = kwargs.get('gui_app', False)
if not isinstance(self.gui_app, bool):
raise InvalidArguments('Argument gui_app must be boolean.')
elif 'gui_app' in kwargs:
raise InvalidArguments('Argument gui_app can only be used on executables.')
def get_subdir(self):
return self.subdir

@ -1,4 +1,4 @@
project('winmain', 'c')
exe = executable('prog', 'prog.c')
exe = executable('prog', 'prog.c', gui_app : true)
test('winmain', exe)

@ -1,4 +1,4 @@
project('winmaincpp', 'cpp')
exe = executable('prog', 'prog.cpp')
exe = executable('prog', 'prog.cpp', gui_app : true)
test('winmaincpp', exe)

Loading…
Cancel
Save