blob: d517466e48d2a4b284fc4397b42e215236c4ca1b [file] [log] [blame]
########################################################################
# $Id$
# Copyright 2009 Aplix Corporation. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
########################################################################
UNAME = $(shell uname)
INCDIRS = $(OBJDIR)
SRCDIR = src
DOCDIR = doc
EXAMPLESDIR = examples
OBJDIR = obj
########################################################################
# Linux configuration
#
ifneq (,$(filter Linux%, $(UNAME)))
CFLAGS = -g -Wall -Werror -O0 $(patsubst %, -I%, $(INCDIRS))
OBJSUFFIX = .o
EXESUFFIX =
#LIBS = -lefence
OBJOPTION = -o
EXEOPTION = -o
else
########################################################################
# Darwin configuration
#
ifneq (,$(filter Darwin%, $(UNAME)))
CFLAGS = -g -Wall -Werror -O2 $(patsubst %, -I%, $(INCDIRS))
OBJSUFFIX = .o
EXESUFFIX =
OBJOPTION = -o
# The -o in the following line has a space after it, which must not be removed.
EXEOPTION = -o
else
########################################################################
# Windows (cygwin but using MS compiler) configuration
#
# this is messy - should probably use vcvars.bat
ifneq (,$(filter CYGWIN%, $(UNAME)))
VISUALSTUDIODIR = $(wildcard /cygdrive/c/Program*Files/Microsoft*Visual*Studio*8)
SDKDIR = $(wildcard /cygdrive/c/Program*Files/Microsoft*SDKs/Windows/*/Lib)
ifeq (,$(VISUALSTUDIODIR))
VISUALSTUDIODIR = $(wildcard /cygdrive/c/Program\ Files\ */Microsoft*Visual*Studio*10*)
endif
ifeq (,$(VISUALSTUDIODIR))
VISUALSTUDIODIR = $(wildcard /cygdrive/c/Program\ Files\ */Microsoft*Visual*Studio*11*)
endif
# this is revelvant for vs2012 and windows 8 - sdk location has changed
ifeq (,$(SDKDIR))
SDKDIR = $(wildcard /cygdrive/c/Program\ Files\ */Windows*Kits)
endif
ifeq (,$(VISUALSTUDIODIR))
$(error Could not find MS Visual Studio)
else
WINVISUALSTUDIODIR = $(shell cygpath -w '$(VISUALSTUDIODIR)')
WINSDKDIR = $(shell cygpath -w '$(SDKDIR)')
#$(error $(VISUALSTUDIODIR))
CC = \
Lib='$(WINVISUALSTUDIODIR)\VC\LIB;$(WINVISUALSTUDIODIR)\VC\PlatformSDK\Lib;$(WINSDKDIR)' \
PATH='$(VISUALSTUDIODIR)/Common7/IDE:$(VISUALSTUDIODIR)/VC/BIN:$(VISUALSTUDIODIR)/Common7/Tools:$(VISUALSTUDIODIR)/SDK/v2.0/bin:$(VISUALSTUDIODIR)/8.0/Lib/win8/um/x86:'$$PATH \
Include='$(WINVISUALSTUDIODIR)\VC\INCLUDE;$(WINVISUALSTUDIODIR)\VC\PlatformSDK\Include' \
cl
endif
CFLAGS = /nologo /WX /W3 /wd4996 /Zi /O2 $(patsubst %, /I%, $(INCDIRS))
OBJSUFFIX = .obj
EXESUFFIX = .exe
OBJOPTION = /Fo
EXEOPTION = /Fe
endif
endif
endif
########################################################################
# Common makefile
#
WIDLPROC = $(OBJDIR)/widlproc$(EXESUFFIX)
DTD = $(OBJDIR)/widlprocxml.dtd
ALL = $(WIDLPROC) $(DTD)
all : $(ALL)
SRCS = \
comment.c \
lex.c \
main.c \
misc.c \
node.c \
parse.c \
process.c
OBJS = $(patsubst %.c, $(OBJDIR)/%$(OBJSUFFIX), $(SRCS))
$(WIDLPROC) : $(OBJS)
$(CC) $(CFLAGS) $(EXEOPTION)$@ $^ $(LIBS)
$(OBJDIR)/%$(OBJSUFFIX) : $(SRCDIR)/%.c
mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(OBJOPTION)$@ -c $<
$(OBJDIR)/%.d : $(SRCDIR)/%.c
mkdir -p $(dir $@)
cc $(patsubst %, -I%, $(INCDIRS)) -MM -MG -MT $(patsubst %.d, %$(OBJSUFFIX), $@) $< | sed '$(patsubst %, s| \(%\)| $(OBJDIR)/\1|;, $(AUTOGENHEADERS))' >$@
include $(patsubst %.c, $(OBJDIR)/%.d, $(SRCS))
$(DTD) : $(DOCDIR)/htmltodtd.xsl $(DOCDIR)/widlproc.html
xsltproc -html $^ >$@
clean :
rm -f $(ALL) $(OBJS)
veryclean :
rm -rf $(OBJDIR)
SVNFILES = $(shell test -d .svn && svn info -R . | sed -n 's/^Path: \(.*\)$$/\1/p')
SVNBRANCH = $(shell test -d .svn && svn info . | sed -n 's|^URL:.*/\([^/]*\)$$|\1|p')
SVNREV = $(shell test -d .svn && svn info -R . | sed -n 's/^Last Changed Rev: \([0-9][0-9]*\)$$/\1/p' | sort -g | tail -1)
SVNLOG = history
$(SVNLOG) : $(SVNFILES)
svn log -vrHEAD:311 >$@
zip : $(OBJDIR)/widlproc-$(SVNBRANCH)$(SVNREV).zip
$(OBJDIR)/widlproc-$(SVNBRANCH)$(SVNREV).zip : $(WIDLPROC) $(DTD) $(DOCDIR)/widlproc.html $(SRCDIR)/widlprocxmltohtml.xsl Makefile $(SVNLOG)
rm -f $@
zip -j $@ $^ -x Makefile
zip $@ examples/*.widl examples/*.css examples/Makefile examples/README examples/*.xsl examples/*.html
srczip : widlproc-src-$(SVNBRANCH)$(SVNREV).zip
widlproc-src-%.zip : $(SVNFILES) $(SVNLOG)
zip $@ $^
examples :
$(MAKE) -C examples SRCDIR=../src OBJDIR=../obj EXAMPLESOBJDIR=../obj/examples
test : $(OBJS)
$(MAKE) -C test SRCDIR=../src OBJDIR=../obj
.DELETE_ON_ERROR: