[makefile] more makefile cleaning and dynamic loading

This commit is contained in:
Gautier Hattenberger
2013-02-22 10:24:41 +01:00
committed by Felix Ruess
parent b81ae24917
commit 446231949b
6 changed files with 73 additions and 76 deletions
+5 -1
View File
@@ -57,6 +57,7 @@ MULTIMON=sw/ground_segment/multimon
COCKPIT=sw/ground_segment/cockpit COCKPIT=sw/ground_segment/cockpit
TMTC=sw/ground_segment/tmtc TMTC=sw/ground_segment/tmtc
TOOLS=$(PAPARAZZI_SRC)/sw/tools TOOLS=$(PAPARAZZI_SRC)/sw/tools
JOYSTICK=sw/ground_segment/joystick
EXT=sw/ext 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 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: lib:
$(MAKE) -C $(LIB)/ocaml $(MAKE) -C $(LIB)/ocaml
@@ -130,6 +131,9 @@ tmtc: lib cockpit multimon
tools: lib tools: lib
$(MAKE) -C $(TOOLS) $(MAKE) -C $(TOOLS)
joystick: lib
$(MAKE) -C $(JOYSTICK)
sim_static: lib sim_static: lib
$(MAKE) -C $(SIMULATOR) $(MAKE) -C $(SIMULATOR)
+3 -2
View File
@@ -36,7 +36,7 @@ FPIC=-fPIC
include ../../Makefile.ocaml include ../../Makefile.ocaml
INCLUDES= 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) CMXA=$(LIBS:.cma=.cmxa)
INCLUDES= -I $(LIBPPRZDIR) -I ../multimon INCLUDES= -I $(LIBPPRZDIR) -I ../multimon
@@ -85,7 +85,8 @@ gtk_save_settings.ml : gcs.glade
strip.cmo : gtk_strip.cmo gtk_setting_time.cmo strip.cmo : gtk_strip.cmo gtk_setting_time.cmo
compass : compass.ml 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: clean:
+9 -6
View File
@@ -27,13 +27,14 @@ Q=@
include ../../Makefile.ocaml include ../../Makefile.ocaml
TOOLSDIR = ../../tools 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 PKGCOMMON=unix,str,lablgtk2,ivy,xml-light
LIBPPRZCMA=$(LIBPPRZDIR)/lib-pprz.cma LIBPPRZCMA=$(LIBPPRZDIR)/lib-pprz.cma
# apparently on OSX `sdl-config --libs` also has -lSDLmain which we don't want # 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 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` INCLUDES += -I `ocamlc -where`
all: test_stick input2ivy all: test_stick input2ivy
@@ -41,20 +42,22 @@ all: test_stick input2ivy
test_stick: test_sdl_stick.o 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` 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 $@ @echo OL $@
$(Q)$(OCAMLC) -make-runtime -o i2i_run sdl_stick.o ml_sdl_stick.o $(ML_SDL_LFLAGS) $(Q)$(OCAMLFIND) $(OCAMLC) $(OCAMLINCLUDES) -o $@ -package $(PKGCOMMON) -linkpkg $(LIBPPRZCMA) $(TOOLSDIR)/fp_proc.cmo $^ $(ML_SDL_LFLAGS)
$(Q)$(OCAMLFIND) $(OCAMLC) $(OCAMLINCLUDES) -use-runtime i2i_run -o $@ -package $(PKGCOMMON) -linkpkg $(OCAMLDLL) $(LIBPPRZCMA) $(TOOLSDIR)/fp_proc.cmo
# dependency of input2ivy # dependency of input2ivy
input2ivy: $(LIBPPRZCMA) $(TOOLSDIR)/fp_proc.cmo input2ivy: $(LIBPPRZCMA) $(TOOLSDIR)/fp_proc.cmo
sdl_stick.so : sdl_stick.o ml_sdl_stick.o
gcc -shared -o $@ $^
%.o : %.c %.o : %.c
gcc -c -O2 -Wall `pkg-config glib-2.0 --cflags` $(INCLUDES) $< gcc -c -O2 -Wall `pkg-config glib-2.0 --cflags` $(INCLUDES) $<
%.cmo : %.ml %.cmo : %.ml
@echo OC $< @echo OC $<
$(Q)$(OCAMLC) $(OCAMLINCLUDES) -c $< $(Q)$(OCAMLFIND) $(OCAMLC) $(OCAMLINCLUDES) -c -package $(PKGCOMMON) $<
clean: clean:
rm -f *~ core *.o *.bak .depend test*stick *.cmo *.cmi input2ivy rm -f *~ core *.o *.bak .depend test*stick *.cmo *.cmi input2ivy
+45 -48
View File
@@ -23,46 +23,43 @@
# Launch with "make Q=''" to get full command display # Launch with "make Q=''" to get full command display
Q=@ Q=@
DEBUG =n DEBUG=n
MACHINE := $(shell uname -m) MACHINE:=$(shell uname -m)
AS86 =as86 -0 -a AS86=as86 -0 -a
LD86 =ld86 -0 LD86=ld86 -0
AS =as AS=as
LD =ld LD=ld
LDFLAGS =-lm LDFLAGS=-lm
HOSTCC =gcc HOSTCC=gcc
CC =gcc CC=gcc
MAKE =make MAKE=make
CPP =$(CC) -E CPP=$(CC) -E
AR =ar AR=ar
STRIP =strip STRIP=strip
MKDIR =mkdir MKDIR=mkdir
OCAMLC =ocamlc
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) ifeq ($(DEBUG),y)
CFLAGS +=-g -O CFLAGS += -g -O
else else
CFLAGS +=-O3 CFLAGS += -O3
endif endif
LBITS := $(shell getconf LONG_BIT) LBITS := $(shell getconf LONG_BIT)
ifeq ($(LBITS),64) ifeq ($(LBITS),64)
CFLAGS += -fPIC CFLAGS += -fPIC
else ifeq ($(MACHINE),'i686') 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 endif
LDFLAGSX =-lX11 -L/usr/X11R6/lib LDFLAGSX = -lX11 -L/usr/X11R6/lib
#BINDIR =bin-$(shell uname -m) #BINDIR = bin-$(shell uname -m)
BINDIR =. BINDIR =.
UNAME = $(shell uname -s) 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") 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 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 ALLTARGETS=$(BINDIR)/multimon multimon.cma
@@ -72,34 +69,34 @@ ifeq ("$(UNAME)","Darwin")
ALLTARGETS=multimon.cma ALLTARGETS=multimon.cma
endif endif
all: $(ALLTARGETS) all: $(ALLTARGETS)
multimon.cma: $(OBJFILES) multimon.cma: $(OBJFILES)
@echo OLD $@ @echo OLD $@
$(Q)ocamlmklib -o multimon $^ $(Q)ocamlmklib -o multimon $^
$(BINDIR)/%.s: %.c $(BINDIR)/%.s: %.c
$(CC) $(CFLAGS) -S -o $@ $< $(CC) $(CFLAGS) -S -o $@ $<
$(BINDIR)/%.o: $(BINDIR)/%.s $(BINDIR)/%.o: $(BINDIR)/%.s
$(AS) -c -o $@ $< $(AS) -c -o $@ $<
$(BINDIR)/%.o: %.c $(BINDIR)/%.o: %.c
@echo CC $< @echo CC $<
$(Q)$(CC) $(CFLAGS) -c -o $@ $< $(Q)$(CC) $(CFLAGS) -c -o $@ $<
SRC_L2 = hdlc.c pprz.c SRC_L2 = hdlc.c pprz.c
SRC_L1 = demod_afsk48p.c demod_display.c SRC_L1 = demod_afsk48p.c demod_display.c
SRC_MISC = unixinput.c xdisplay.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_L2 = $(SRC_L2:%.c=$(BINDIR)/%.o)
OBJ_L1 =$(SRC_L1:%.c=$(BINDIR)/%.o) OBJ_L1 = $(SRC_L1:%.c=$(BINDIR)/%.o)
OBJ_MISC =$(SRC_MISC:%.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): $(BINDIR):
$(MKDIR) $(BINDIR) $(MKDIR) $(BINDIR)
@@ -108,14 +105,14 @@ $(BINDIR)/multimon: $(OBJ_L2) $(OBJ_L1) $(OBJ_MISC)
@echo LD $@ @echo LD $@
$(Q)$(CC) $^ $(LDFLAGS) $(LDFLAGSX) -o $@ $(Q)$(CC) $^ $(LDFLAGS) $(LDFLAGSX) -o $@
$(BINDIR)/gen: $(OBJ_GEN) $(BINDIR)/gen: $(OBJ_GEN)
$(CC) $^ $(LDFLAGS) -o $@ $(CC) $^ $(LDFLAGS) -o $@
$(BINDIR)/mkcostab: $(BINDIR)/mkcostab.o $(BINDIR)/mkcostab: $(BINDIR)/mkcostab.o
$(CC) $^ $(LDFLAGS) -o $@ $(CC) $^ $(LDFLAGS) -o $@
costabi.c costabf.c: $(BINDIR)/mkcostab costabi.c costabf.c: $(BINDIR)/mkcostab
$(BINDIR)/mkcostab $(BINDIR)/mkcostab
libtest: pprzlib.o demodml.c demod.ml test.ml libtest: pprzlib.o demodml.c demod.ml test.ml
@@ -133,11 +130,11 @@ hdlc.cmo : hdlc.cmi
$(OCAMLC) $< $(OCAMLC) $<
clean: clean:
rm -fr *.cm* mkcostab .depend $(Q)rm -fr *.cm* mkcostab .depend
$(RM) -f core `find . -name '*.[oas]' -print` $(Q)$(RM) -f core `find . -name '*.[oas]' -print`
$(RM) -f core `find . -name 'core' -print` $(Q)$(RM) -f core `find . -name 'core' -print`
$(RM) -f core costabi.c costabf.c *~ $(Q)$(RM) -f core costabi.c costabf.c *~
$(RM) $(BINDIR)/multimon $(Q)$(RM) $(BINDIR)/multimon
.PHONY: all clean depend dep .PHONY: all clean depend dep
+2 -2
View File
@@ -100,7 +100,7 @@ tests : lib-pprz.cma $(TESTS_CMO)
GTKCFLAGS := `pkg-config --cflags gtk+-2.0` GTKCFLAGS := `pkg-config --cflags gtk+-2.0`
%.o : %.c %.o : %.c
@echo OC $< @echo OC $<
$(Q)$(OCAMLFIND) $(OCAMLC) $(FPIC) $(INCLUDES) -package $(PKGCOMMON) -c $< $(Q)$(OCAMLFIND) $(OCAMLC) $(FPIC) $(INCLUDES) -package $(PKGCOMMON) -c $<
@@ -110,7 +110,7 @@ ml_gtk_drag.o : ml_gtk_drag.c
@echo OC $< @echo OC $<
$(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -package $(PKGCOMMON) -c -ccopt "$(GTKCFLAGS)" $< $(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 $< @echo OC $<
$(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -package $(PKGCOMMON) -c -ccopt "$(GTKCFLAGS)" $< $(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -package $(PKGCOMMON) -c -ccopt "$(GTKCFLAGS)" $<
+9 -17
View File
@@ -30,6 +30,10 @@ else
endif endif
include ../../conf/Makefile.local 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 SIMML = stdlib.ml data.ml flightModel.ml gps.ml
SIMHML = $(SIMML) hitl.ml sim.ml SIMHML = $(SIMML) hitl.ml sim.ml
@@ -38,31 +42,19 @@ SIMSML = $(SIMML) sitl.ml sim.ml
SIMSCMO=$(SIMSML:%.ml=%.cmo) SIMSCMO=$(SIMSML:%.ml=%.cmo)
SIMSCMX=$(SIMSML:%.ml=%.cmx) 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 AIRBORNE = ../airborne
VARINCLUDE=$(PAPARAZZI_HOME)/var/include VARINCLUDE=$(PAPARAZZI_HOME)/var/include
ACINCLUDE = $(PAPARAZZI_HOME)/var/$(AIRCRAFT) 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 $@ @echo OL $@
$(Q)$(OCAMLFIND) $(OCAMLC) -make-runtime -o simhitl_run fg.o $(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -o $@ -package $(PKGCOMMON) -linkpkg lib-pprz.cma gtkInit.cmo $<
$(Q)$(OCAMLFIND) $(OCAMLC) $(INCLUDES) -use-runtime simhitl_run -o $@ -package $(PKGCOMMON) -linkpkg lib-pprz.cma gtkInit.cmo $^
sitl.cma : fg.o $(SIMSCMO) sitl.cma : fg.o $(SIMSCMO)
@echo OL $@ @echo OL $@