# Make file for SciTE on Windows
# Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
# The License.txt file describes the conditions under which this software may be distributed.
# This makefile assumes the mingw32 version of GCC 2.95.3 is used and changes will
# be needed to use other compilers.

.SUFFIXES: .cxx
CC = g++
DLLWRAP = dllwrap

PROG	= ../bin/SciTE.exe
PROGSTATIC = ../bin/Sc1.exe

ifndef NOTHUNKS
gversion = $(word 1,$(subst ., ,$(shell g++ --version)))
ifeq ($(gversion),2)
THUNKFLAGS=-fvtable-thunks
endif
endif

vpath %.h ../src ../../scintilla/include ../../scintilla/win32
vpath %.cxx ../src
vpath %.o ../../scintilla/win32
vpath %.a ../../scintilla/win32

LDFLAGS=-mwindows -lcomctl32 -limm32 -lole32 -luuid
#CXXFLAGS = -W -Wall
#CXXFLAGS = -g -pg -pedantic -Os -fno-exceptions -fvtable-thunks -fno-rtti
INCLUDEDIRS=-I ../../scintilla/include -I ../../scintilla/win32 -I ../src
RCINCLUDEDIRS=--include-dir ../../scintilla/win32 --include-dir ../src
CXXBASEFLAGS = -W -Wall -pedantic $(INCLUDEDIRS) -Os -fno-exceptions $(THUNKFLAGS) -fno-rtti

ifdef DEBUG
CXXFLAGS=-DDEBUG $(CXXBASEFLAGS)
else
CXXFLAGS=-DNDEBUG $(CXXBASEFLAGS)
endif

.cxx.o:
	$(CC) $(CXXFLAGS) -c $< -o $@

OBJS	= SciTEBase.o SciTEBuffers.o SciTEIO.o Exporters.o SciTEProps.o \
SciTEWin.o SciTEWinBar.o SciTEWinDlg.o WindowAccessor.o \
PropSet.o PlatWin.o UniConversion.o Utf8_16.o SciTERes.o \
SimpleMacroExt.o XPM.o
#DirectorExtension.o XPM.o

DLLS=../bin/Scintilla.dll ../bin/SciLexer.dll

#++Autogenerated -- run scintilla/src/LexGen.py to regenerate
#**1:LEXPROPS=\\\n\(..\\bin\\\* \)
LEXPROPS=\
../bin/ada.properties ../bin/asm.properties ../bin/ave.properties \
../bin/baan.properties ../bin/bullant.properties ../bin/conf.properties \
../bin/cpp.properties ../bin/css.properties ../bin/eiffel.properties \
../bin/escript.properties ../bin/fortran.properties ../bin/html.properties \
../bin/latex.properties ../bin/lisp.properties ../bin/lout.properties \
../bin/lua.properties ../bin/matlab.properties ../bin/mmixal.properties \
../bin/nncrontab.properties ../bin/nsis.properties ../bin/others.properties \
../bin/pascal.properties ../bin/perl.properties ../bin/pov.properties \
../bin/ps.properties ../bin/python.properties ../bin/ruby.properties \
../bin/scriptol.properties ../bin/sql.properties ../bin/tcl.properties \
../bin/vb.properties ../bin/yaml.properties
#--Autogenerated -- end of automatically generated section

PROPS=../bin/SciTEGlobal.properties ../bin/abbrev.properties $(LEXPROPS)

ALL:	$(PROG) $(PROGSTATIC) $(DLLS) $(PROPS)

clean:
	rm /q *.exe *.o *.obj *.dll *.res *.map

deps:
	$(CC) -MM $(CXXFLAGS) *.cxx ../src/*.cxx >deps.mak

../bin/Scintilla.dll:	../../scintilla/bin/Scintilla.dll
	cp ../../scintilla/bin/Scintilla.dll $@

../bin/SciLexer.dll:	../../scintilla/bin/SciLexer.dll
	cp ../../scintilla/bin/SciLexer.dll $@

../bin/SciTEGlobal.properties:	../src/SciTEGlobal.properties
	cp $^ $@
../bin/abbrev.properties:	../src/abbrev.properties
	cp $^ $@

#++Autogenerated -- run scintilla/src/LexGen.py to regenerate
#**1:\(..\\bin\\\*:\t..\\src\\\*\n\tcopy $^ $@\n\)
../bin/ada.properties:	../src/ada.properties
	cp $^ $@
../bin/asm.properties:	../src/asm.properties
	cp $^ $@
../bin/ave.properties:	../src/ave.properties
	cp $^ $@
../bin/baan.properties:	../src/baan.properties
	cp $^ $@
../bin/bullant.properties:	../src/bullant.properties
	cp $^ $@
../bin/conf.properties:	../src/conf.properties
	cp $^ $@
../bin/cpp.properties:	../src/cpp.properties
	cp $^ $@
../bin/css.properties:	../src/css.properties
	cp $^ $@
../bin/eiffel.properties:	../src/eiffel.properties
	cp $^ $@
../bin/escript.properties:	../src/escript.properties
	cp $^ $@
../bin/fortran.properties:	../src/fortran.properties
	cp $^ $@
../bin/html.properties:	../src/html.properties
	cp $^ $@
../bin/latex.properties:	../src/latex.properties
	cp $^ $@
../bin/lisp.properties:	../src/lisp.properties
	cp $^ $@
../bin/lout.properties:	../src/lout.properties
	cp $^ $@
../bin/lua.properties:	../src/lua.properties
	cp $^ $@
../bin/matlab.properties:	../src/matlab.properties
	cp $^ $@
../bin/mmixal.properties:	../src/mmixal.properties
	cp $^ $@
../bin/nncrontab.properties:	../src/nncrontab.properties
	cp $^ $@
../bin/nsis.properties:	../src/nsis.properties
	cp $^ $@
../bin/others.properties:	../src/others.properties
	cp $^ $@
../bin/pascal.properties:	../src/pascal.properties
	cp $^ $@
../bin/perl.properties:	../src/perl.properties
	cp $^ $@
../bin/pov.properties:	../src/pov.properties
	cp $^ $@
../bin/ps.properties:	../src/ps.properties
	cp $^ $@
../bin/python.properties:	../src/python.properties
	cp $^ $@
../bin/ruby.properties:	../src/ruby.properties
	cp $^ $@
../bin/scriptol.properties:	../src/scriptol.properties
	cp $^ $@
../bin/sql.properties:	../src/sql.properties
	cp $^ $@
../bin/tcl.properties:	../src/tcl.properties
	cp $^ $@
../bin/vb.properties:	../src/vb.properties
	cp $^ $@
../bin/yaml.properties:	../src/yaml.properties
	cp $^ $@

#--Autogenerated -- end of automatically generated section

# Normally distributed rather than built as may not have grep on all machines
# Copy all non-comment lines from all the properties files into one combined file
..\src\Embedded.properties: $(PROPS)
	fgrep -G -v -h "^#" $(PROPS) >..\src\Embedded.properties

$(PROG): $(OBJS)
	$(CC) "-Wl,-s" -Xlinker --subsystem -Xlinker windows -o  $@ $^ $(LDFLAGS)

OBJSSTATIC = Sc1.o SciTEWinBar.o SciTEWinDlg.o SciTEBase.o SciTEBuffers.o \
	SciTEIO.o Exporters.o SciTEProps.o ScintillaWinL.o ScintillaBaseL.o Editor.o \
	WindowAccessor.o DocumentAccessor.o KeyWords.o ExternalLexer.o StyleContext.o\
	Lexers.a PropSet.o \
	ContractionState.o Document.o CellBuffer.o CallTip.o Sc1Res.o PlatWin.o \
	UniConversion.o Utf8_16.o KeyMap.o Indicator.o LineMarker.o RESearch.o Style.o \
	ViewStyle.o AutoComplete.o SimpleMacroExt.o XPM.o
#	ViewStyle.o AutoComplete.o DirectorExtension.o XPM.o

$(PROGSTATIC): $(OBJSSTATIC)
	$(CC) "-Wl,-s" -Xlinker --subsystem -Xlinker windows -o $@ $^ $(LDFLAGS)

# Automatically generate dependencies for most files with "make deps"
include deps.mak

Sc1.o: SciTEWin.cxx SciTEWin.h SciTE.h Accessor.h WindowAccessor.h KeyWords.h PropSet.h \
 SString.h Scintilla.h Extender.h SciTEBase.h
	$(CC) $(CXXFLAGS) -D STATIC_BUILD -c $< -o $@

SciTERes.o:	SciTERes.rc SciTE.h PlatformRes.h
	windres $(RCINCLUDEDIRS) SciTERes.rc $@

# Also depends on ../src/Embedded.properties but may not want to build everywhere
# so must explicitly ask to build it.
Sc1Res.o:	SciTERes.rc SciTE.h PlatformRes.h
	windres $(RCINCLUDEDIRS) SciTERes.rc --define STATIC_BUILD $@

