project = DaoMake::Project( "FFI" ) # TODO: adapt to other platforms. inc = { "include/ffi.h", "include/fficonfig.h", "include/ffi_common.h", "src/x86/ffitarget.h", } src = { "src/closures.c", "src/dlmalloc.c", "src/prep_cif.c", "src/types.c", "src/debug.c", "src/java_raw_api.c", "src/raw_api.c", } project.AddIncludePath( "include" ) is64bit = DaoMake::Is64Bit() if( DaoMake::IsPlatform( "UNIX" ) ){ project.AddCompilingFlag( "-fPIC" ) project.AddIncludePath( "src/x86" ) src.append( is64bit ? "src/x86/ffi64.c" : "src/x86/ffi.c" ) if( DaoMake::IsPlatform( "LINUX" ) ){ src.append( is64bit ? "src/x86/unix64.S" : "src/x86/sysv.S" ) }else if( DaoMake::IsPlatform( "MACOSX" ) ){ src.append( is64bit ? "src/x86/darwin64.S" : "src/x86/darwin.S" ) }else{ return } }else if( DaoMake::IsPlatform( "WIN32" ) ){ project.AddDefinition( is64bit ? "X86_WIN64" : "X86_WIN32" ) project.AddIncludePath( "src/x86" ) src.append( is64bit ? "src/x86/ffi64.c" : "src/x86/ffi.c" ) src.append( is64bit ? "src/x86/win64.S" : "src/x86/win32.S" ) }else{ return } ffi_objs = project.AddObjects( src, inc ) ffi_dll = project.AddSharedLibrary( "ffi", ffi_objs ) ffi_lib = project.AddStaticLibrary( "ffi", ffi_objs ) #project.GenerateFinder( $TRUE ); #project.Install( daovm.GetPath( "MOD-PATH" ), ffi_dll ); #project.Install( daovm.GetPath( "MOD-PATH" ), ffiite_dll ); #project.Install( daovm.GetPath( "MOD-PATH" ), myffi_dll );