
#==============================================================================#
# $Id: Makefile,v 1.11 2003/02/12 07:05:51 yuya Exp $
#==============================================================================#

CXX      = gcc
CXXFLAGS = -Os -Isrc/ruby-1.6.8 -Isrc/zlib-1.1.4 -Ires/ -DUSE_ZLIB
#CXXFLAGS = -g -D_DEBUG -Isrc/ruby-1.6.8 -Isrc/zlib-1.1.4 -Ires/ -DUSE_ZLIB
LDFLAGS  = -s
#LDFLAGS  = 

CYGWIN_CXXFLAGS = $(CXXFLAGS)
CYGWIN_LDFLAGS  = $(LDFLAGS)
CYGWIN_LIBS     = -L. -lrubys168-cygwin32 -lstdc++ -lcrypt -lgdi32
CYGWIN_OBJS     = src/exerb/exerb.oc src/exerb/exerbmod.oc src/exerb/pe.oc $(ZLIB_OBJS)
CYGWIN_OBJS_CUI = $(CYGWIN_OBJS) src/exerb/cui.oc
CYGWIN_OBJS_GUI = $(CYGWIN_OBJS) src/exerb/gui.oc

MINGW_CXXFLAGS = $(CXXFLAGS) -mno-cygwin -DNT -D__NO_ISOCEXT
MINGW_LDFLAGS  = $(LDFLAGS) -mno-cygwin
MINGW_LIBS     = -L. -lrubys168-mingw32 -lstdc++ -lcrypt -lgdi32 -lwsock32 -lmsvcrt
MINGW_OBJS     = src/exerb/exerb.om src/exerb/exerbmod.om src/exerb/pe.om $(ZLIB_OBJS)
MINGW_OBJS_CUI = $(MINGW_OBJS) src/exerb/cui.om
MINGW_OBJS_GUI = $(MINGW_OBJS) src/exerb/gui.om

ZLIB_OBJS = \
  src/zlib-1.1.4/adler32.o \
  src/zlib-1.1.4/crc32.o \
  src/zlib-1.1.4/infblock.o \
  src/zlib-1.1.4/infcodes.o \
  src/zlib-1.1.4/inffast.o \
  src/zlib-1.1.4/inflate.o \
  src/zlib-1.1.4/inftrees.o \
  src/zlib-1.1.4/infutil.o \
  src/zlib-1.1.4/trees.o \
  src/zlib-1.1.4/uncompr.o \
  src/zlib-1.1.4/zutil.o

BRUBY_OBJS = \
  src/bruby-0.0.5/BRb.o \
  src/bruby-0.0.5/BRbDebug.o \
  src/bruby-0.0.5/BRbException.o \
  src/bruby-0.0.5/BRbInputBuffer.o \
  src/bruby-0.0.5/BRbLevelCounter.o \
  src/bruby-0.0.5/BRbNode.o \
  src/bruby-0.0.5/BRbOutputBuffer.o \
  src/bruby-0.0.5/BRbReadNode.o \
  src/bruby-0.0.5/BRbStringTable.o \
  src/bruby-0.0.5/BRbWriteNode.o

#==============================================================================#

.SUFFIXES: .o .oc .om .c .cpp .h .rbx

all: cygwin mingw

cygwin: ruby168c-cygwin32.rbx ruby168g-cygwin32.rbx

mingw: ruby168c-mingw32.rbx ruby168g-mingw32.rbx

ruby168c-cygwin32.rbx: Makefile $(CYGWIN_OBJS_CUI) resource.res
	dllwrap --output-exp=ruby.exp --def=src/exerb/exerb168.cygwin.def $(CYGWIN_LIBS) -o $@
	gcc $(CYGWIN_LDFLAGS) ruby.exp $(CYGWIN_OBJS_CUI) $(CYGWIN_LIBS) resource.res -o $@

ruby168g-cygwin32.rbx: Makefile $(CYGWIN_OBJS_GUI) resource.res
	dllwrap --output-exp=ruby.exp --def=src/exerb/exerb168.cygwin.def $(CYGWIN_LIBS) -o $@
	gcc $(CYGWIN_LDFLAGS) -mwindows ruby.exp $(CYGWIN_OBJS_GUI) $(CYGWIN_LIBS) resource.res -o $@

ruby168c-mingw32.rbx: Makefile $(MINGW_OBJS_CUI) resource.res
	dllwrap --target=mingw32 -mno-cygwin --output-exp=ruby.exp --def=src/exerb/exerb168.mingw.def $(MINGW_LIBS) -o $@
	gcc $(MINGW_LDFLAGS) ruby.exp $(MINGW_OBJS_CUI) $(MINGW_LIBS) resource.res -o $@

ruby168g-mingw32.rbx: Makefile $(MINGW_OBJS_GUI) resource.res
	dllwrap --target=mingw32 -mno-cygwin --output-exp=ruby.exp --def=src/exerb/exerb168.mingw.def $(MINGW_LIBS) -o $@
	gcc $(MINGW_LDFLAGS) -mwindows ruby.exp $(MINGW_OBJS_GUI) $(MINGW_LIBS) resource.res -o $@

resource.res: res/resource.cygwin.rc res/resource.h
	windres $< -O coff -o $@ --include-dir=res --include-dir=/usr/include/w32api

clean: clean-cygwin clean-mingw
	-rm resource.res ruby.exp

clean-cygwin:
	-rm $(CYGWIN_OBJS) ruby168c-cygwin32.rbx ruby168g-cygwin32.rbx

clean-mingw:
	-rm $(MINGW_OBJS) ruby168c-mingw32.rbx ruby168g-mingw32.rbx

.c.o:
	$(CXX) $(CXXFLAGS) -c -o $@ $<

.cpp.o:
	$(CXX) $(CXXFLAGS) -c -o $@ $<

.cpp.oc:
	$(CXX) $(CYGWIN_CXXFLAGS) -c -o $@ $<

.cpp.om:
	$(CXX) $(MINGW_CXXFLAGS) -c -o $@ $<

#==============================================================================#
#==============================================================================#
