Import('*')

env = env.Clone()

env.Replace(CPPDEFINES = [
    'BUILD_GLUT32', 
    'GLUT_BUILDING_LIB', 
    'NDEBUG',
    'GLUT_NO_WARNING_DISABLE',
])

env.AppendUnique(CPPPATH = [
    '#/include',
])

sources = [
    'glut_bitmap.c',
    'glut_bwidth.c',
    'glut_cindex.c',
    'glut_cmap.c',
    'glut_cursor.c',
    'glut_dials.c',
    'glut_dstr.c',
    'glut_event.c',
    'glut_ext.c',
    'glut_fullscrn.c',
    'glut_gamemode.c',
    'glut_get.c',
    'glut_init.c',
    'glut_input.c',
    'glut_joy.c',
    'glut_key.c',
    'glut_keyctrl.c',
    'glut_keyup.c',
    'glut_mesa.c',
    'glut_modifier.c',
    'glut_overlay.c',
    'glut_ppm.c',
    'glut_shapes.c',
    'glut_space.c',
    'glut_stroke.c',
    'glut_swap.c',
    'glut_swidth.c',
    'glut_tablet.c',
    'glut_teapot.c',
    'glut_util.c',
    'glut_vidresize.c',
    'glut_warp.c',
    'glut_win.c',
    'glut_winmisc.c',
    
    'glut_8x13.c',
    'glut_9x15.c',
    'glut_hel10.c',
    'glut_hel12.c',
    'glut_hel18.c',
    'glut_mroman.c',
    'glut_roman.c',
    'glut_tr10.c',
    'glut_tr24.c',
]

if env['platform'] == 'windows':
    env.PrependUnique(LIBS = [
        'winmm', 
        'gdi32', 
        'user32', 
        'opengl32', 
        'glu32',
    ])
    target = 'glut32'
    sources += [
        'win32_glx.c',
        'win32_menu.c',
        'win32_util.c',
        'win32_winproc.c',
        'win32_x11.c',
        'glut.def',
    ]
else:
    env.PrependUnique(LIBS = [
        'GLU',
        'GL',
        'X11',
        'Xext',
        'Xmu',
        'Xi',
    ])
    target = 'glut'
    sources += [
        'glut_fcb.c',
        'glut_menu.c',
        'glut_menu2.c',
        'glut_glxext.c',
        'layerutil.c',
    ]


glut = env.SharedLibrary(
    target = target,
    source = sources,
)

env.InstallSharedLibrary(glut, version=(3, 7, 1))

if env['platform'] == 'windows':
    glut = env.FindIxes(glut, 'LIBPREFIX', 'LIBSUFFIX')
else:
    glut = env.FindIxes(glut, 'SHLIBPREFIX', 'SHLIBSUFFIX')

Export('glut')
