timelineeditor: Support importing timecode format v1 and automatic timescale generation.
[L-SMASH.git] / Makefile
blob856f0b165145eb4058eb3c85e89fbc8605562826
1 # for future use
2 #include config.mak
3 #$(EXE)
5 UNAME_S:=$(shell uname -s)
6 UNAME_M:=$(shell uname -m)
8 CROSS=
9 TARGET_OS=
10 CC=$(CROSS)gcc
11 AR=$(CROSS)ar
12 RANLIB=$(CROSS)ranlib
13 STRIP=$(CROSS)strip
14 ECHO=echo
15 EXE=
17 CFLAGS=-Wshadow -Wall -std=gnu99 -I. -DLSMASH_DEMUXER_ENABLED
18 #CFLAGS+=-Wsign-conversion
19 LDFLAGS=
20 EXTRALIBS=
22 ifeq ($(DEBUG),YES)
23 CFLAGS+=-g -O0
24 else
25 CFLAGS+=-O3
26 endif
28 ifeq ($(CROSS),)
29 ifneq ($(findstring i686, $(UNAME_M)),)
30 CFLAGS+=-march=i686 -mfpmath=sse -msse
31 endif
33 ifneq ($(findstring MINGW, $(UNAME_S)),)
34 LDFLAGS+=-Wl,--large-address-aware
35 EXE=.exe
36 endif
37 ifneq ($(findstring CYGWIN, $(UNAME_S)),)
38 LDFLAGS+=-Wl,--large-address-aware
39 EXE=.exe
40 endif
41 else #ifeq ($(CROSS),)
42 ifeq ($(TARGET_OS),mingw32)
43 EXE=.exe
44 endif
45 endif #ifeq ($(CROSS),)
47 SRCS=isom.c utils.c mp4sys.c mp4a.c importer.c summary.c print.c read.c timeline.c
48 OBJS=$(SRCS:%.c=%.o)
49 #TARGET=lsmash$(EXE)
51 TARGET_LIB=liblsmash.a
53 SRC_AUDIOMUXER=audiomuxer.c
54 OBJ_AUDIOMUXER=$(SRC_AUDIOMUXER:%.c=%.o)
55 TARGET_AUDIOMUXER=$(SRC_AUDIOMUXER:%.c=%$(EXE))
57 SRC_BOXDUMPER=boxdumper.c
58 OBJ_BOXDUMPER=$(SRC_BOXDUMPER:%.c=%.o)
59 TARGET_BOXDUMPER=$(SRC_BOXDUMPER:%.c=%$(EXE))
61 SRC_REMUXER=remuxer.c
62 OBJ_REMUXER=$(SRC_REMUXER:%.c=%.o)
63 TARGET_REMUXER=$(SRC_REMUXER:%.c=%$(EXE))
65 SRC_TIMELINEEDITOR=timelineeditor.c
66 OBJ_TIMELINEEDITOR=$(SRC_TIMELINEEDITOR:%.c=%.o)
67 TARGET_TIMELINEEDITOR=$(SRC_TIMELINEEDITOR:%.c=%$(EXE))
69 SRCS_ALL=$(SRCS) $(SRC_AUDIOMUXER) $(SRC_BOXDUMPER) $(SRC_REMUXER) $(SRC_TIMELINEEDITOR)
70 OBJS_ALL=$(SRCS_ALL:%.c=%.o)
72 #### main rules ####
74 # should have distclean, install, uninstall in the future
75 .PHONY: all lib tools audiomuxer boxdumper remuxer timelineeditor dep depend clean info
77 all: info tools
79 info:
80 @echo "CFLAGS : $(CFLAGS)"
81 @echo "LDFLAGS: $(LDFLAGS)"
83 lib: $(TARGET_LIB)
85 tools: $(TARGET_AUDIOMUXER) $(TARGET_BOXDUMPER) $(TARGET_REMUXER) $(TARGET_TIMELINEEDITOR)
87 audiomuxer: $(TARGET_AUDIOMUXER)
89 boxdumper: $(TARGET_BOXDUMPER)
91 remuxer: $(TARGET_REMUXER)
93 timelineeditor : $(TARGET_TIMELINEEDITOR)
95 $(TARGET_LIB): .depend $(OBJS)
96 @$(ECHO) "AR: $@"
97 @$(AR) rc $@ $(OBJS)
98 @$(ECHO) "RANLIB: $@"
99 @$(RANLIB) $@
101 $(TARGET_AUDIOMUXER): $(OBJ_AUDIOMUXER) $(TARGET_LIB)
102 @$(ECHO) "LINK: $@"
103 @$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ $(EXTRALIBS)
104 ifneq ($(DEBUG),YES)
105 @$(ECHO) "STRIP: $@"
106 @$(STRIP) $@
107 endif
109 $(TARGET_BOXDUMPER): $(OBJ_BOXDUMPER) $(TARGET_LIB)
110 @$(ECHO) "LINK: $@"
111 @$(ECHO) "$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ $(EXTRALIBS)"
112 @$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ $(EXTRALIBS)
113 ifneq ($(DEBUG),YES)
114 @$(ECHO) "STRIP: $@"
115 @$(STRIP) $@
116 endif
118 $(TARGET_REMUXER): $(OBJ_REMUXER) $(TARGET_LIB)
119 @$(ECHO) "LINK: $@"
120 @$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ $(EXTRALIBS)
121 ifneq ($(DEBUG),YES)
122 @$(ECHO) "STRIP: $@"
123 @$(STRIP) $@
124 endif
126 $(TARGET_TIMELINEEDITOR): $(OBJ_TIMELINEEDITOR) $(TARGET_LIB)
127 @$(ECHO) "LINK: $@"
128 @$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ $(EXTRALIBS)
129 ifneq ($(DEBUG),YES)
130 @$(ECHO) "STRIP: $@"
131 @$(STRIP) $@
132 endif
134 #### type rules ####
135 %.o: %.c .depend
136 @$(ECHO) "CC: $<"
137 @$(CC) -c $(CFLAGS) -o $@ $<
139 #### dependency relative ####
140 dep: .depend
141 depend: .depend
142 ifneq ($(wildcard .depend),)
143 include .depend
144 endif
146 # when we have configure script, use ".depend: config.mak"
147 .depend:
148 @rm -f .depend
149 @$(foreach SRC, $(SRCS_ALL), $(CC) $(CFLAGS) $(SRC) -g0 -MT $(SRC:%.c=%.o) -MM >> .depend;)
151 # automagically create dependency of tools, but old style "make depend" is required
152 # @$(foreach TOOL, $(SRCS_TOOLS), $(ECHO) -e '$(TOOL:%.c=%$(EXE)): $(TOOL:%.c=%.o) $(TARGET_LIB)\n\t$(CC) $(LDFLAGS) -o $$@ $$+ $(EXTRALIBS)' >> .depend;)
154 #### clean stuff ####
155 clean:
156 rm -f $(OBJS_ALL) $(TARGET_LIB) $(TARGET_AUDIOMUXER) $(TARGET_BOXDUMPER) $(TARGET_REMUXER) $(TARGET_TIMELINEEDITOR) .depend