######################################################################## # $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: