From 446231949b8cbf0916381c054796e762ca866b4f Mon Sep 17 00:00:00 2001 From: Gautier Hattenberger Date: Fri, 22 Feb 2013 10:24:41 +0100 Subject: [PATCH] [makefile] more makefile cleaning and dynamic loading --- Makefile | 6 +- sw/ground_segment/cockpit/Makefile | 5 +- sw/ground_segment/joystick/Makefile | 15 +++-- sw/ground_segment/multimon/Makefile | 93 ++++++++++++++--------------- sw/lib/ocaml/Makefile | 4 +- sw/simulator/Makefile | 26 +++----- 6 files changed, 73 insertions(+), 76 deletions(-) diff --git a/Makefile b/Makefile index 10913d67b6..18183b9dac 100644 --- a/Makefile +++ b/Makefile @@ -57,6 +57,7 @@ MULTIMON=sw/ground_segment/multimon COCKPIT=sw/ground_segment/cockpit TMTC=sw/ground_segment/tmtc TOOLS=$(PAPARAZZI_SRC)/sw/tools +JOYSTICK=sw/ground_segment/joystick EXT=sw/ext # @@ -113,7 +114,7 @@ conf/%.xml :conf/%.xml.example ground_segment: print_build_version update_google_version conf lib subdirs commands static -static: cockpit tmtc tools sim_static static_h +static: cockpit tmtc tools sim_static joystick static_h lib: $(MAKE) -C $(LIB)/ocaml @@ -130,6 +131,9 @@ tmtc: lib cockpit multimon tools: lib $(MAKE) -C $(TOOLS) +joystick: lib + $(MAKE) -C $(JOYSTICK) + sim_static: lib $(MAKE) -C $(SIMULATOR) diff --git a/sw/ground_segment/cockpit/Makefile b/sw/ground_segment/cockpit/Makefile index 477980b2a7..bcf5b72688 100644 --- a/sw/ground_segment/cockpit/Makefile +++ b/sw/ground_segment/cockpit/Makefile @@ -36,7 +36,7 @@ FPIC=-fPIC include ../../Makefile.ocaml INCLUDES= -LIBS= lablglade.cma lib-pprz.cma lablgnomecanvas.cma xlib-pprz.cma +LIBS= lablglade.cma lablgnomecanvas.cma $(OCAMLDLL) $(LIBPPRZCMA) $(OCAMLXDLL) $(XLIBPPRZCMA) CMXA=$(LIBS:.cma=.cmxa) INCLUDES= -I $(LIBPPRZDIR) -I ../multimon @@ -85,7 +85,8 @@ gtk_save_settings.ml : gcs.glade strip.cmo : gtk_strip.cmo gtk_setting_time.cmo compass : compass.ml - $(OCAMLC) -custom $(OCAMLCFLAGS) $(INCLUDES) unix.cma str.cma xml-light.cma $(LIBS) gtkInit.cmo $^ -o $@ + @echo OL $@ + $(Q)$(OCAMLFIND) $(OCAMLC) $(OCAMLCFLAGS) $(INCLUDES) -package $(PKGCOMMON) -linkpkg $(LIBS) gtkInit.cmo $^ -o $@ clean: diff --git a/sw/ground_segment/joystick/Makefile b/sw/ground_segment/joystick/Makefile index 49eea08b76..8c99c3b6b8 100644 --- a/sw/ground_segment/joystick/Makefile +++ b/sw/ground_segment/joystick/Makefile @@ -27,13 +27,14 @@ Q=@ include ../../Makefile.ocaml TOOLSDIR = ../../tools -OCAMLINCLUDES= -I $(LIBPPRZDIR) $(shell ocamlfind query -r -i-format lablgtk2) $(shell ocamlfind query -r -i-format xml-light) -I $(TOOLSDIR) +OCAMLINCLUDES= -I $(LIBPPRZDIR) -I $(TOOLSDIR) +#OCAMLINCLUDES= -I $(LIBPPRZDIR) $(shell ocamlfind query -r -i-format lablgtk2) $(shell ocamlfind query -r -i-format xml-light) $(shell ocamlfind query -r -i-format ivy) -I $(TOOLSDIR) PKGCOMMON=unix,str,lablgtk2,ivy,xml-light LIBPPRZCMA=$(LIBPPRZDIR)/lib-pprz.cma # apparently on OSX `sdl-config --libs` also has -lSDLmain which we don't want #ML_SDL_LFLAGS = $(foreach u,$(shell sdl-config --libs),-cclib $(u)) -ML_SDL_LFLAGS = $(foreach u,$(shell pkg-config sdl --libs-only-L) -lSDL,-cclib $(u)) +ML_SDL_LFLAGS = $(foreach u,$(shell pkg-config sdl --libs-only-L) -lSDL,-cclib $(u)) libSDL.so INCLUDES += -I `ocamlc -where` all: test_stick input2ivy @@ -41,20 +42,22 @@ all: test_stick input2ivy test_stick: test_sdl_stick.o gcc -g -O2 -Wall -DSTICK_DBG `pkg-config glib-2.0 --cflags` -o $@ $^ sdl_stick.c `pkg-config glib-2.0 --libs` -lglibivy `sdl-config --libs` -input2ivy: sdl_stick.o ml_sdl_stick.o input2ivy.cmo +input2ivy: sdl_stick.so input2ivy.cmo @echo OL $@ - $(Q)$(OCAMLC) -make-runtime -o i2i_run sdl_stick.o ml_sdl_stick.o $(ML_SDL_LFLAGS) - $(Q)$(OCAMLFIND) $(OCAMLC) $(OCAMLINCLUDES) -use-runtime i2i_run -o $@ -package $(PKGCOMMON) -linkpkg $(OCAMLDLL) $(LIBPPRZCMA) $(TOOLSDIR)/fp_proc.cmo + $(Q)$(OCAMLFIND) $(OCAMLC) $(OCAMLINCLUDES) -o $@ -package $(PKGCOMMON) -linkpkg $(LIBPPRZCMA) $(TOOLSDIR)/fp_proc.cmo $^ $(ML_SDL_LFLAGS) # dependency of input2ivy input2ivy: $(LIBPPRZCMA) $(TOOLSDIR)/fp_proc.cmo +sdl_stick.so : sdl_stick.o ml_sdl_stick.o + gcc -shared -o $@ $^ + %.o : %.c gcc -c -O2 -Wall `pkg-config glib-2.0 --cflags` $(INCLUDES) $< %.cmo : %.ml @echo OC $< - $(Q)$(OCAMLC) $(OCAMLINCLUDES) -c $< + $(Q)$(OCAMLFIND) $(OCAMLC) $(OCAMLINCLUDES) -c -package $(PKGCOMMON) $< clean: rm -f *~ core *.o *.bak .depend test*stick *.cmo *.cmi input2ivy diff --git a/sw/ground_segment/multimon/Makefile b/sw/ground_segment/multimon/Makefile index 0ac487b1b7..e1dfa6436d 100644 --- a/sw/ground_segment/multimon/Makefile +++ b/sw/ground_segment/multimon/Makefile @@ -23,46 +23,43 @@ # Launch with "make Q=''" to get full command display Q=@ -DEBUG =n -MACHINE := $(shell uname -m) -AS86 =as86 -0 -a -LD86 =ld86 -0 -AS =as -LD =ld -LDFLAGS =-lm -HOSTCC =gcc -CC =gcc -MAKE =make -CPP =$(CC) -E -AR =ar -STRIP =strip -MKDIR =mkdir -OCAMLC =ocamlc +DEBUG=n +MACHINE:=$(shell uname -m) +AS86=as86 -0 -a +LD86=ld86 -0 +AS=as +LD=ld +LDFLAGS=-lm +HOSTCC=gcc +CC=gcc +MAKE=make +CPP=$(CC) -E +AR=ar +STRIP=strip +MKDIR=mkdir -CFLAGS =-Wall -Wstrict-prototypes -I/usr/X11R6/include -I`$(OCAMLC) -where` +include ../../Makefile.ocaml + +CFLAGS=-Wall -Wstrict-prototypes -I/usr/X11R6/include -I`$(OCAMLC) -where` ifeq ($(DEBUG),y) - CFLAGS +=-g -O + CFLAGS += -g -O else - CFLAGS +=-O3 + CFLAGS += -O3 endif LBITS := $(shell getconf LONG_BIT) ifeq ($(LBITS),64) - CFLAGS += -fPIC + CFLAGS += -fPIC else ifeq ($(MACHINE),'i686') - CFLAGS += -march=i486 -falign-loops=2 -falign-jumps=2 -falign-functions=2 -DARCH_I386 + CFLAGS += -march=i486 -falign-loops=2 -falign-jumps=2 -falign-functions=2 -DARCH_I386 endif -LDFLAGSX =-lX11 -L/usr/X11R6/lib +LDFLAGSX = -lX11 -L/usr/X11R6/lib -#BINDIR =bin-$(shell uname -m) -BINDIR =. +#BINDIR = bin-$(shell uname -m) +BINDIR =. UNAME = $(shell uname -s) -ifeq ("$(UNAME)","Linux") - OBJFILES=pprzlib.o hdlc.o demod_afsk12.o demodml.o costabi.o gen_hdlc.o ml_hdlc.o demod.cmo hdlc.cmo - ALLTARGETS=$(BINDIR)/multimon multimon.cma -endif ifeq ("$(UNAME)","linux") OBJFILES=pprzlib.o hdlc.o demod_afsk12.o demodml.o costabi.o gen_hdlc.o ml_hdlc.o demod.cmo hdlc.cmo ALLTARGETS=$(BINDIR)/multimon multimon.cma @@ -72,34 +69,34 @@ ifeq ("$(UNAME)","Darwin") ALLTARGETS=multimon.cma endif -all: $(ALLTARGETS) +all: $(ALLTARGETS) -multimon.cma: $(OBJFILES) +multimon.cma: $(OBJFILES) @echo OLD $@ $(Q)ocamlmklib -o multimon $^ $(BINDIR)/%.s: %.c - $(CC) $(CFLAGS) -S -o $@ $< + $(CC) $(CFLAGS) -S -o $@ $< $(BINDIR)/%.o: $(BINDIR)/%.s - $(AS) -c -o $@ $< + $(AS) -c -o $@ $< $(BINDIR)/%.o: %.c @echo CC $< $(Q)$(CC) $(CFLAGS) -c -o $@ $< -SRC_L2 = hdlc.c pprz.c -SRC_L1 = demod_afsk48p.c demod_display.c -SRC_MISC = unixinput.c xdisplay.c +SRC_L2 = hdlc.c pprz.c +SRC_L1 = demod_afsk48p.c demod_display.c +SRC_MISC = unixinput.c xdisplay.c -SRC_GEN =gen.c gen_dtmf.c gen_sin.c gen_zvei.c gen_hdlc.c costabi.c +SRC_GEN = gen.c gen_dtmf.c gen_sin.c gen_zvei.c gen_hdlc.c costabi.c -OBJ_L2 =$(SRC_L2:%.c=$(BINDIR)/%.o) -OBJ_L1 =$(SRC_L1:%.c=$(BINDIR)/%.o) -OBJ_MISC =$(SRC_MISC:%.c=$(BINDIR)/%.o) +OBJ_L2 = $(SRC_L2:%.c=$(BINDIR)/%.o) +OBJ_L1 = $(SRC_L1:%.c=$(BINDIR)/%.o) +OBJ_MISC = $(SRC_MISC:%.c=$(BINDIR)/%.o) -OBJ_GEN =$(SRC_GEN:%.c=$(BINDIR)/%.o) +OBJ_GEN = $(SRC_GEN:%.c=$(BINDIR)/%.o) $(BINDIR): $(MKDIR) $(BINDIR) @@ -108,14 +105,14 @@ $(BINDIR)/multimon: $(OBJ_L2) $(OBJ_L1) $(OBJ_MISC) @echo LD $@ $(Q)$(CC) $^ $(LDFLAGS) $(LDFLAGSX) -o $@ -$(BINDIR)/gen: $(OBJ_GEN) - $(CC) $^ $(LDFLAGS) -o $@ +$(BINDIR)/gen: $(OBJ_GEN) + $(CC) $^ $(LDFLAGS) -o $@ $(BINDIR)/mkcostab: $(BINDIR)/mkcostab.o - $(CC) $^ $(LDFLAGS) -o $@ + $(CC) $^ $(LDFLAGS) -o $@ costabi.c costabf.c: $(BINDIR)/mkcostab - $(BINDIR)/mkcostab + $(BINDIR)/mkcostab libtest: pprzlib.o demodml.c demod.ml test.ml @@ -133,11 +130,11 @@ hdlc.cmo : hdlc.cmi $(OCAMLC) $< clean: - rm -fr *.cm* mkcostab .depend - $(RM) -f core `find . -name '*.[oas]' -print` - $(RM) -f core `find . -name 'core' -print` - $(RM) -f core costabi.c costabf.c *~ - $(RM) $(BINDIR)/multimon + $(Q)rm -fr *.cm* mkcostab .depend + $(Q)$(RM) -f core `find . -name '*.[oas]' -print` + $(Q)$(RM) -f core `find . -name 'core' -print` + $(Q)$(RM) -f core costabi.c costabf.c *~ + $(Q)$(RM) $(BINDIR)/multimon .PHONY: all clean depend dep diff --git a/sw/lib/ocaml/Makefile b/sw/lib/ocaml/Makefile index 723e29e99b..4b4b5617a5 100644 --- a/sw/lib/ocaml/Makefile +++ b/sw/lib/ocaml/Makefile @@ -100,7 +100,7 @@ tests : lib-pprz.cma $(TESTS_CMO) GTKCFLAGS := `pkg-config --cflags gtk+-2.0` -%.o : %.c +%.o : %.c @echo OC $< $(Q)$(OCAMLFIND) $(OCAMLC) $(FPIC) $(INCLUDES) -package $(PKGCOMMON) -c $< @@ -110,7 +110,7 @@ ml_gtk_drag.o : ml_gtk_drag.c @echo OC $< $(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -package $(PKGCOMMON) -c -ccopt "$(GTKCFLAGS)" $< -ml_gtkgl_hack.o : ml_gtkgl_hack.c +ml_gtkgl_hack.o : ml_gtkgl_hack.c @echo OC $< $(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -package $(PKGCOMMON) -c -ccopt "$(GTKCFLAGS)" $< diff --git a/sw/simulator/Makefile b/sw/simulator/Makefile index b797093276..3e3ce7929f 100644 --- a/sw/simulator/Makefile +++ b/sw/simulator/Makefile @@ -30,6 +30,10 @@ else endif include ../../conf/Makefile.local +include ../Makefile.ocaml + +OCAMLC += -g +PKGCOMMON=unix,str,lablgtk2,ivy,xml-light SIMML = stdlib.ml data.ml flightModel.ml gps.ml SIMHML = $(SIMML) hitl.ml sim.ml @@ -38,31 +42,19 @@ SIMSML = $(SIMML) sitl.ml sim.ml SIMSCMO=$(SIMSML:%.ml=%.cmo) SIMSCMX=$(SIMSML:%.ml=%.cmx) - -OCAMLC = ocamlc -g -OCAMLOPT = ocamlopt -OCAMLDEP = ocamldep -OCAMLFIND = ocamlfind -OCAML=$(shell which ocaml) -OCAMLRUN=$(shell which ocamlrun) -LIBPPRZDIR=../lib/ocaml -INCLUDES= -I $(LIBPPRZDIR) -LIBPPRZCMA=$(LIBPPRZDIR)/lib-pprz.cma -PKGCOMMON=unix,str,lablgtk2,ivy,xml-light - AIRBORNE = ../airborne VARINCLUDE=$(PAPARAZZI_HOME)/var/include ACINCLUDE = $(PAPARAZZI_HOME)/var/$(AIRCRAFT) -all : gaia sitl.cma +all : gaia sitl.cma simhitl -#simhitl +fg.so : fg.o + gcc -shared -o $@ $^ -simhitl : fg.o $(SIMHCMO) simhitl.cmo +simhitl : fg.so $(SIMHCMO) simhitl.cmo @echo OL $@ - $(Q)$(OCAMLFIND) $(OCAMLC) -make-runtime -o simhitl_run fg.o - $(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -use-runtime simhitl_run -o $@ -package $(PKGCOMMON) -linkpkg lib-pprz.cma gtkInit.cmo $^ + $(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -o $@ -package $(PKGCOMMON) -linkpkg lib-pprz.cma gtkInit.cmo $< sitl.cma : fg.o $(SIMSCMO) @echo OL $@