simulator: add createdef.py to generate def file for VS
Now we can get rid off Mingw to create def file. To create def file, one should run: scons --def in the bsp/simulator.
This commit is contained in:
parent
ca9b83c68f
commit
5641360b49
|
@ -122,13 +122,12 @@ if GetDepend('RT_USING_MODULE'):
|
||||||
default=False,
|
default=False,
|
||||||
help='create rthread.def of rtthread.dll on windows')
|
help='create rthread.def of rtthread.dll on windows')
|
||||||
if GetOption('def'):
|
if GetOption('def'):
|
||||||
if rtconfig.PLATFORM != 'mingw':
|
if rtconfig.PLATFORM == 'mingw':
|
||||||
print "scons error: `--def' can only work with mingw"
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
env['LINKFLAGS'] = rtconfig.DEFFILE_LFLAGS
|
env['LINKFLAGS'] = rtconfig.DEFFILE_LFLAGS
|
||||||
env.SharedLibrary("rtthread.dll", objs)
|
else:
|
||||||
program = ''
|
rtconfig.POST_ACTION = 'createdef.py $TARGET rtthread.def'
|
||||||
|
|
||||||
|
program = env.Program(TARGET, objs)
|
||||||
else:
|
else:
|
||||||
if rtconfig.PLATFORM == 'cl':
|
if rtconfig.PLATFORM == 'cl':
|
||||||
objs += ['rtthread.def']
|
objs += ['rtthread.def']
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
fsrc = "rtthread.dll"
|
||||||
|
fname ="rtthread.def"
|
||||||
|
prefix = "__vs_rtm_"
|
||||||
|
|
||||||
|
if len(sys.argv) >= 2:
|
||||||
|
fsrc = sys.argv[1]
|
||||||
|
fname = sys.argv[2]
|
||||||
|
|
||||||
|
#restr = r"__vs_rtm_.*?\0"
|
||||||
|
restr = prefix + r".*?\0"
|
||||||
|
s = open(fsrc, 'rb').read()
|
||||||
|
l = re.findall(restr, s, re.S)
|
||||||
|
lines = [i[len(prefix):-1] for i in l]
|
||||||
|
|
||||||
|
s = '\n'.join(lines)
|
||||||
|
|
||||||
|
fout = open(fname, 'w')
|
||||||
|
fout.write('EXPORTS\n')
|
||||||
|
fout.write('main\n')
|
||||||
|
fout.write(s)
|
|
@ -128,7 +128,7 @@ void rt_module_unload_sethook(void (*hook)(rt_module_t module))
|
||||||
*
|
*
|
||||||
* This function will initialize system module
|
* This function will initialize system module
|
||||||
*/
|
*/
|
||||||
void rt_system_module_init(void)
|
int rt_system_module_init(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -31,8 +31,15 @@ struct rt_module_symtab
|
||||||
const char *name;
|
const char *name;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
#if defined(_MSC_VER)
|
||||||
|
#pragma section("RTMSymTab$f",read)
|
||||||
|
#define RTM_EXPORT(symbol) \
|
||||||
|
__declspec(allocate("RTMSymTab$f"))const char __rtmsym_##symbol##_name[] = "__vs_rtm_"#symbol;
|
||||||
|
#pragma comment(linker, "/merge:RTMSymTab=mytext")
|
||||||
|
|
||||||
|
#elif defined(__MINGW32__)
|
||||||
#define RTM_EXPORT(symbol)
|
#define RTM_EXPORT(symbol)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define RTM_EXPORT(symbol) \
|
#define RTM_EXPORT(symbol) \
|
||||||
const char __rtmsym_##symbol##_name[] = #symbol; \
|
const char __rtmsym_##symbol##_name[] = #symbol; \
|
||||||
|
|
Loading…
Reference in New Issue