[package]
name=lcl
version=0.9b

[target]
dirs=interfaces
units=alllclunits
# DO NOT ADD alllclunits to implicitunits. It is just a dummy unit used for compiling.
implicitunits= \
  actnlist \
  arrow \
  buttons \
  calendar \
  checklst \
  clipbrd \
  comctrls \
  controls \
  dbactns \
  dbctrls \
  dbgrids \
  dialogs \
  editbtn \
  extctrls \
  extdlgs \
  extgraphics \
  filectrl \
  forms \
  graphics \
  grids \
  imglist \
  inipropstorage \
  interfacebase \
  lclintf \
  lclmemmanager \
  lclproc \
  lclrescache \
  lclstrconsts \
  lcltype \
  lclunicodedata \
  lmessages \
  lresources \
  maskedit \
  menus \
  pairsplitter \
  popupnotifier \
  postscriptprinter \
  printers \
  propertystorage \
  spin \
  stdactns \
  stdctrls \
  toolwin \
  utrace \
  xmlpropstorage

rsts=lclstrconsts

[require]
packages=

[prerules]
DBG_OPTIONS=
STATEFILE=Makefile.compiled
ifeq ($(findstring $(OS_TARGET),win32 win64 wince),)
NONWIN32=nonwin32
else
STATEFILE=Makefile_win.compiled
endif
# disable checks on WinCE unless LCL_ENABLE_CHECKS
ifeq ($(OS_TARGET),wince)
ifndef LCL_ENABLE_CHECKS
LCL_DISABLE_CHECKS=-dDisableChecks
endif
endif
ifeq ($(OS_TARGET),darwin)
DBG_OPTIONS=-gw
endif

[compiler]
options=-MObjFPC -Scghi -O1 -g -gl -l -vewnhibq $(LCL_DISABLE_CHECKS) $(DBG_OPTIONS)
unittargetdir=units/$(CPU_TARGET)-$(OS_TARGET)
unitdir=../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../components/lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) ../components/freetype/lib/$(CPU_TARGET)-$(OS_TARGET) . $(NONWIN32) forms widgetset
includedir=include

[install]
#buildunit=alllclunits

[clean]
# clear all .ppu/.o/.rst files in all source and output directories
files=$(wildcard $(COMPILER_UNITTARGETDIR)/*$(OEXT)) \
      $(wildcard $(COMPILER_UNITTARGETDIR)/*$(PPUEXT)) \
      $(wildcard $(COMPILER_UNITTARGETDIR)/*$(RSTEXT)) \
      $(wildcard $(COMPILER_UNITTARGETDIR)/*.lfm) \
      $(wildcard $(COMPILER_UNITTARGETDIR)/*.res) \
      $(wildcard $(COMPILER_UNITTARGETDIR)/*.compiled) \
      $(wildcard ./units/*$(OEXT)) $(wildcard ./units/*$(PPUEXT)) $(wildcard ./units/*$(RSTEXT)) \
      $(wildcard widgetset/*$(OEXT)) $(wildcard widgetset/*$(PPUEXT)) $(wildcard widgetset/*$(RSTEXT))\
      $(wildcard *$(OEXT)) $(wildcard *$(PPUEXT)) $(wildcard *$(RSTEXT))

[default]
lcldir=.

[rules]
.PHONY: help cleartarget lclbase compiled all intf cleanintf cleanlaz cleanall

help:
	@$(ECHO)
	@$(ECHO) " Important: the LCL requires packager/registration, components/lazutils, and components/freetype"
	@$(ECHO)
	@$(ECHO) " Targets"
	@$(ECHO) "   all          build lclbase and one interface"
	@$(ECHO) "   clean        deletes files that 'all' creates"
	@$(ECHO) "   lclbase      build lclbase"
	@$(ECHO) "   intf         build one lcl interface, selectable via LCL_PLATFORM"
	@$(ECHO) "   cleanintf    delete files that 'intf' creates"
	@$(ECHO) "   cleanall     as 'clean' plus clean for all common interfaces."
	@$(ECHO) "                Does not clean up cross compiled interfaces."
	@$(ECHO)
	@$(ECHO) " Examples:"
	@$(ECHO)
	@$(ECHO) " Compile the lcl with the default interface:"
	@$(ECHO) "   make clean all"
	@$(ECHO)
	@$(ECHO) " Compile the interface for the qt widgetset:"
	@$(ECHO) "   make cleanintf intf LCL_PLATFORM=qt"
	@$(ECHO)
	@$(ECHO) "Clean up:"
	@$(ECHO) " There is no command to clean up all interfaces."
	@$(ECHO) " In most cases it is enough to delete the 'units' directory."
	@$(ECHO)

cleartarget:
	-$(DEL) $(COMPILER_UNITTARGETDIR)/alllclunits$(PPUEXT)

lclbase: cleartarget $(COMPILER_UNITTARGETDIR) alllclunits$(PPUEXT) compiled

compiled:
	$(CPPROG) -f $(STATEFILE) $(COMPILER_UNITTARGETDIR)/lclbase.compiled

intf: $(TARGET_DIRS)

cleanintf:
	$(MAKE) -C interfaces clean

all: lclbase compiled intf

cleanlaz: cleanall
cleanall: clean
	$(MAKE) -C interfaces clean
	$(MAKE) -C interfaces/carbon clean
	$(MAKE) -C interfaces/cocoa clean
	$(MAKE) -C interfaces/customdrawn clean
	$(MAKE) -C interfaces/fpgui clean
	$(MAKE) -C interfaces/gtk clean
	$(MAKE) -C interfaces/gtk2 clean
	$(MAKE) -C interfaces/gtk3 clean
	$(MAKE) -C interfaces/nogui clean
	$(MAKE) -C interfaces/qt clean
	$(MAKE) -C interfaces/win32 clean
	$(MAKE) -C interfaces/wince clean
	$(MAKE) -C interfaces/mui clean

distclean: clean
        ${DELTREE} units/*