# 
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

#! gmake

MOD_DEPTH	= ../../../..
topsrcdir	= @top_srcdir@
srcdir		= @srcdir@
VPATH		= @srcdir@

include $(MOD_DEPTH)/config/autoconf.mk

include $(topsrcdir)/config/config.mk

ifeq ($(OS_TARGET), OS2)
CSRCS = \
    os2misc.c \
    os2sem.c   \
    os2inrval.c \
    os2gc.c \
    os2thred.c \
    os2io.c \
    os2cv.c \
    os2sock.c \
    os2_errors.c \
    os2poll.c \
    os2rng.c \
    $(NULL)
endif

ASFILES = os2emx.s os2vaclegacy.s

TARGETS	= $(OBJS)

INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private

DEFINES	+= -D_NSPR_BUILD_

include $(topsrcdir)/config/rules.mk

export:: $(TARGETS)




