Blame Makefile.in

Packit 851387
##########################################################################
Packit 851387
#                                                                        #
Packit 851387
#  This file is part of Calendar.                                        #
Packit 851387
#                                                                        #
Packit 851387
#  Copyright (C) 2003-2011 Julien Signoles                               #
Packit 851387
#                                                                        #
Packit 851387
#  you can redistribute it and/or modify it under the terms of the GNU   #
Packit 851387
#  Lesser General Public License version 2.1 as published by the         #
Packit 851387
#  Free Software Foundation, with a special linking exception (usual     #
Packit 851387
#  for Objective Caml libraries).                                        #
Packit 851387
#                                                                        #
Packit 851387
#  It is distributed in the hope that it will be useful,                 #
Packit 851387
#  but WITHOUT ANY WARRANTY; without even the implied warranty of        #
Packit 851387
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR                           #
Packit 851387
#                                                                        #
Packit 851387
#  See the GNU Lesser General Public Licence version 2.1 for more        #
Packit 851387
#  details (enclosed in the file LGPL).                                  #
Packit 851387
#                                                                        #
Packit 851387
#  The special linking exception is detailled in the enclosed file       #
Packit 851387
#  LICENSE.                                                              #
Packit 851387
##########################################################################
Packit 851387
Packit 851387
# Used programs
Packit 851387
###############
Packit 851387
Packit 851387
CAMLC	= @OCAMLC@
Packit 851387
CAMLOPT	= @OCAMLOPT@
Packit 851387
CAMLDEP	= @OCAMLDEP@
Packit 851387
CAMLDOC	= @OCAMLDOC@
Packit 851387
CAMLWEB	= @OCAMLWEB@
Packit 851387
CAMLWC	= @OCAMLWC@
Packit 851387
CAMLDOT	= @OCAMLDOT@
Packit 851387
CAMLLIB	= @OCAMLLIB@
Packit 851387
CAMLFIND= @OCAMLFIND@
Packit 851387
CAMLMAJORVERSION= @OCAMLMAJOR@
Packit 851387
Packit 851387
# Object/Library File Extensions
Packit 851387
OBJ_EXT = @OBJEXT@
Packit 851387
LIB_EXT = @LIBEXT@
Packit 851387
Packit 851387
HAS_NATDYNLINK=@HAS_NATDYNLINK@
Packit 851387
Packit 851387
# Project
Packit 851387
#########
Packit 851387
Packit 851387
NAME	= calendar
Packit 851387
NAMELIB = calendarLib
Packit 851387
VERSION	= 2.04
Packit 851387
Packit 851387
LIBDIR	= target
Packit 851387
Packit 851387
LIBS	= $(LIBDIR)/$(NAMELIB).cmo $(LIBDIR)/$(NAMELIB).cma
Packit 851387
CLIBS   =
Packit 851387
ifneq ($(CAMLOPT),no)
Packit 851387
LIBS   := $(LIBS) $(LIBDIR)/$(NAMELIB).cmx $(LIBDIR)/$(NAMELIB).cmxa
Packit 851387
ifeq ($(HAS_NATDYNLINK),yes)
Packit 851387
LIBS	:= $(LIBS) $(LIBDIR)/$(NAMELIB).cmxs
Packit 851387
endif
Packit 851387
CLIBS   := $(CLIBS) $(LIBDIR)/$(NAMELIB)$(OBJ_EXT) \
Packit 851387
	$(LIBDIR)/$(NAMELIB)$(LIB_EXT)
Packit 851387
endif
Packit 851387
Packit 851387
DIRS	= src target tests
Packit 851387
Packit 851387
SRC	= utils.mli utils.ml time_Zone.mli time_Zone.ml period.mli \
Packit 851387
	time_sig.mli time.mli time.ml ftime.mli ftime.ml \
Packit 851387
	date_sig.mli date.mli date.ml \
Packit 851387
	calendar_sig.mli calendar_builder.mli calendar_builder.ml \
Packit 851387
	calendar.mli calendar.ml fcalendar.mli fcalendar.ml \
Packit 851387
	printer.mli printer.ml \
Packit 851387
	version.mli version.ml
Packit 851387
SRC	:= $(addprefix src/, $(SRC))
Packit 851387
Packit 851387
ML	= $(filter %.ml, $(SRC))
Packit 851387
MLI	= $(filter %.mli, $(SRC))
Packit 851387
Packit 851387
CMO	= $(ML:.ml=.cmo)
Packit 851387
CMX	= $(CMO:.cmo=.cmx)
Packit 851387
CMI	= $(MLI:.mli=.cmi)
Packit 851387
CMI_ONLY= src/period.cmi src/date_sig.cmi src/time_sig.cmi src/calendar_sig.cmi
Packit 851387
Packit 851387
GENERATED= src/version.ml
Packit 851387
Packit 851387
# Libs and flags
Packit 851387
################
Packit 851387
Packit 851387
CAMLIBS	= $(addprefix -I , $(DIRS))
Packit 851387
Packit Service d580d2
CAMLFLAGS= -g $(CAMLIBS)
Packit 851387
BYTEFLAGS= $(CAMLFLAGS)
Packit 851387
LINK_OPTFLAGS = $(CAMLFLAGS) -noassert
Packit 851387
OPTFLAGS = $(LINK_OPTFLAGS) -for-pack CalendarLib
Packit 851387
Packit 851387
# Main rules
Packit 851387
############
Packit 851387
Packit 851387
all: $(LIBS) META
Packit 851387
Packit 851387
$(LIBDIR)/$(NAMELIB).cmo: $(CMI_ONLY) $(CMO)
Packit 851387
	mkdir -p $(LIBDIR)
Packit 851387
	$(CAMLFIND) ocamlc $(BYTEFLAGS) -pack -o $@ \
Packit 851387
		$(filter-out $(LIBDIR), $^)
Packit 851387
Packit 851387
$(LIBDIR)/$(NAMELIB).cma: $(LIBDIR)/$(NAMELIB).cmo
Packit 851387
	$(CAMLFIND) ocamlc $(BYTEFLAGS) -a -o $@ $<
Packit 851387
Packit 851387
$(LIBDIR)/$(NAMELIB).cmx: $(CMI_ONLY) $(CMX)
Packit 851387
	mkdir -p $(LIBDIR)
Packit 851387
	$(CAMLFIND) ocamlopt $(LINK_OPTFLAGS) -pack -o $@ \
Packit 851387
		$(filter-out $(LIBDIR), $^)
Packit 851387
Packit 851387
$(LIBDIR)/$(NAMELIB).a $(LIBDIR)/$(NAMELIB).cmxa: $(LIBDIR)/$(NAMELIB).cmx
Packit 851387
	$(CAMLFIND) ocamlopt $(LINK_OPTFLAGS) -a -o $@ $<
Packit 851387
Packit 851387
$(LIBDIR)/$(NAMELIB).cmxs: $(LIBDIR)/$(NAMELIB).cmxa
Packit 851387
	$(CAMLFIND) ocamlopt -I $(LIBDIR) -shared -linkall -o $@ $<
Packit 851387
Packit 851387
src/version.ml: Makefile
Packit 851387
	echo "let version = \"$(VERSION)\"" > $@
Packit 851387
	echo "let date = \"`date`\"" >> $@
Packit 851387
Packit 851387
META: Makefile
Packit 851387
	echo "name = \"$(NAME)\"" > $@
Packit 851387
	echo "description = \"$(NAME) library\"" >> $@
Packit 851387
	echo "version = \"$(VERSION)\"" >> $@
Packit 851387
	echo "archive(byte) = \"$(NAMELIB).cma\"" >> $@
Packit 851387
	echo "archive(native) = \"$(NAMELIB).cmxa\"" >> $@
Packit 851387
	echo "requires = \"unix str\"" >> $@
Packit 851387
Packit 851387
# Generic rules
Packit 851387
###############
Packit 851387
Packit 851387
%.gz: %
Packit 851387
	gzip -f --best $<
Packit 851387
Packit 851387
.SUFFIXES: .ml .mli .cmo .cmi .cmx $(OBJ_EXT)
Packit 851387
Packit 851387
.mli.cmi:
Packit 851387
	$(CAMLC) $(BYTEFLAGS) -c $<
Packit 851387
Packit 851387
.ml.cmo:
Packit 851387
	$(CAMLC) $(BYTEFLAGS) -c $<
Packit 851387
Packit 851387
.ml$(OBJ_EXT):
Packit 851387
	$(CAMLOPT) $(OPTFLAGS) -c $<
Packit 851387
Packit 851387
.ml.cmx:
Packit 851387
	$(CAMLOPT) $(OPTFLAGS) -c $<
Packit 851387
Packit 851387
# Tests
Packit 851387
#######
Packit 851387
Packit 851387
TESTS_SRC= gen_test.mli gen_test.ml test_timezone.ml test_time.ml \
Packit 851387
	test_ftime.ml test_date.ml test_calendar.ml test_fcalendar.ml \
Packit 851387
	test_pcalendar.ml test_fpcalendar.ml test_printer.ml test.ml
Packit 851387
TESTS_SRC:= $(addprefix tests/, $(TESTS_SRC))
Packit 851387
Packit 851387
TESTS_ML= $(filter %.ml, $(TESTS_SRC))
Packit 851387
TESTS_CMO= $(TESTS_ML:.ml=.cmo)
Packit 851387
Packit 851387
$(TESTS_CMO) $(TESTS_CMI): $(LIBDIR)/$(NAMELIB).cmo $(LIBDIR)/$(NAMELIB).cmi
Packit 851387
Packit 851387
tests/test: $(LIBDIR)/$(NAMELIB).cmo $(TESTS_CMO)
Packit 851387
	$(CAMLC) -o $@ $(BYTEFLAGS) unix.cma str.cma $(LIBDIR)/$(NAMELIB).cmo \
Packit 851387
		$(TESTS_CMO)
Packit 851387
Packit 851387
.PHONY: tests
Packit 851387
tests: tests/test
Packit 851387
	./$<
Packit 851387
Packit 851387
# Documentation
Packit 851387
###############
Packit 851387
Packit 851387
wc: $(SRC)
Packit 851387
	$(CAMLWC) -p $^
Packit 851387
Packit 851387
$(NAMELIB).ps: $(SRC)
Packit 851387
	$(CAMLWEB) --ps -o $@ $^
Packit 851387
Packit 851387
ifeq ($(CAMLMAJORVERSION),3)
Packit 851387
utils/example.ml: utils/example.ml.3 Makefile
Packit 851387
	cp $< $@
Packit 851387
else
Packit 851387
utils/example.ml: utils/example.ml.4 Makefile
Packit 851387
	cp $< $@
Packit 851387
endif
Packit 851387
Packit 851387
utils/example.cmo: utils/example.ml
Packit 851387
	$(CAMLC) -I +ocamldoc -I utils -c $<
Packit 851387
Packit 851387
.PHONY: doc
Packit 851387
doc: $(CMO) utils/example.cmo
Packit 851387
	mkdir -p doc
Packit 851387
	rm -f doc/*
Packit 851387
	$(CAMLDOC) -g utils/example.cmo -colorize-code -I src -d doc \
Packit 851387
		$(MLI) $(ML)
Packit 851387
Packit 851387
# Headers
Packit 851387
#########
Packit 851387
Packit 851387
.PHONY: headers
Packit 851387
headers:
Packit 851387
	headache -c headache_config.txt -h HEADER $(SRC) $(TESTS_SRC) \
Packit 851387
	  Makefile.in utils/example.ml
Packit 851387
	headache -c headache_config.txt -h CONFIGURE_HEADER configure.in
Packit 851387
Packit 851387
# Install
Packit 851387
#########
Packit 851387
Packit 851387
install: $(LIBS) $(CLIBS) META
Packit 851387
	@if [ "`sed -n -e 's/version = "\([0-9.+dev]*\)"/\1/p' META`" = "$(VERSION)" ]; then \
Packit 851387
	  (if test -d `ocamlfind install -help | grep destdir | sed -e "s/.*default: \(.*\))/\1/"`/$(NAME); then $(MAKE) uninstall; fi;\
Packit 851387
	  $(CAMLFIND) install $(NAME) target/*.cm* $(MLI) $(CLIBS) META); \
Packit 851387
	else \
Packit 851387
	  (echo; echo "Not the good version. Please, do :"; \
Packit 851387
	   echo "  make clean && make"; \
Packit 851387
	   echo "next reinstall"; echo) \
Packit 851387
	fi
Packit 851387
Packit 851387
uninstall:
Packit 851387
	$(CAMLFIND) remove $(NAME)
Packit 851387
Packit 851387
# Exporting
Packit 851387
###########
Packit 851387
Packit 851387
EXPORT_DIR= $$HOME/EXPORT/$(NAME)
Packit 851387
TMP_DIR	= $$HOME/tmp
Packit 851387
Packit 851387
ROOT= $$HOME/DEV/calendar
Packit 851387
Packit 851387
export: doc
Packit 851387
	(cd $(TMP_DIR); \
Packit 851387
	  svn co svn+ssh://signoles@svn.forge.ocamlcore.org/svnroot/calendar/trunk)
Packit 851387
	svn copy $(TMP_DIR)/trunk $(ROOT)/tags/v$(VERSION)
Packit 851387
	rm -rf $(TMP_DIR)/trunk
Packit 851387
	(cd $(ROOT)/tags; svn commit -m "v $(VERSION)")
Packit 851387
	rm -rf $(EXPORT_DIR)/doc
Packit 851387
	mkdir -p $(EXPORT_DIR)
Packit 851387
	cp -rf CHANGES doc $(EXPORT_DIR)
Packit 851387
	cp -rf $(ROOT)/tags/v$(VERSION) $(TMP_DIR)/$(NAME)-$(VERSION)
Packit 851387
	cp -rf .depend configure config.status doc $(TMP_DIR)/$(NAME)-$(VERSION)
Packit 851387
	cd $(TMP_DIR); \
Packit 851387
	  (rm -rf $(NAME)-$(VERSION)/.svn $(NAME)-$(VERSION)/*/.svn; \
Packit 851387
	   tar cvf $(NAME)-$(VERSION).tar $(NAME)-$(VERSION); \
Packit 851387
	   gzip -f --best $(NAME)-$(VERSION).tar; \
Packit 851387
	   rm -rf $(NAME)-$(VERSION); \
Packit 851387
	   mv $(NAME)-$(VERSION).tar.gz $(EXPORT_DIR))
Packit 851387
	rm -rf $(TMP_DIR)/$(NAME)-$(VERSION)
Packit 851387
Packit 851387
# Rebuilding Makefile
Packit 851387
#####################
Packit 851387
Packit 851387
Makefile: Makefile.in
Packit 851387
	./config.status
Packit 851387
Packit 851387
config.status: configure
Packit 851387
	./config.status --recheck
Packit 851387
Packit 851387
configure: configure.in
Packit 851387
	autoconf
Packit 851387
Packit 851387
# Emacs tags
Packit 851387
############
Packit 851387
Packit 851387
TAGS: $(SRC)
Packit 851387
	otags -o $@ $^
Packit 851387
Packit 851387
# Cleaning
Packit 851387
##########
Packit 851387
Packit 851387
clean:
Packit 851387
	rm -f TAGS META $(TESTS) tests/test $(GENERATED)
Packit 851387
	for i in . src tests utils; do \
Packit 851387
	  rm -f $$i/*~ $$i/\#* $$i/*.cm[iox] $$i/*.*a $$i/*$(OBJ_EXT) $$i/a.out; \
Packit 851387
	done
Packit 851387
	rm -f utils/example.ml
Packit 851387
Packit 851387
dist-clean distclean: clean
Packit 851387
	rm -rf $(NAME).ps.gz doc $(LIBDIR)
Packit 851387
Packit 851387
clean-configure cleanconfig: dist-clean
Packit 851387
	rm -f Makefile configure config.*
Packit 851387
Packit 851387
# Depend
Packit 851387
########
Packit 851387
Packit 851387
.depend depend: $(GENERATED)
Packit 851387
	rm -f .depend
Packit 851387
	$(CAMLDEP) -I src -I tests src/*.ml src/*.mli tests/*.ml tests/*.mli \
Packit 851387
	  > .depend
Packit 851387
Packit 851387
view-depend:
Packit 851387
	$(CAMLDOT) .depend | dot -Tps | gv -
Packit 851387
Packit 851387
include .depend