c9b4d1ed154763d3c8ed0d1319dda751ef901e50
[sdk] / ear / extract / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CONTENT
4
5 MODULE := extract
6 CONFIG := release
7 COMPILER := default
8 TARGET_TYPE = executable
9
10 OBJ = obj/$(CONFIG).$(PLATFORM)/
11
12 RES = 
13
14 CONSOLE = -mwindows
15
16 TARGET = obj/$(CONFIG).$(PLATFORM)/extract$(E)
17
18 OBJECTS = $(OBJ)extract.o $(OBJ)$(MODULE).main$(O)
19
20 COBJECTS = $(OBJ)extract.c
21
22 SYMBOLS = $(OBJ)extract.sym
23
24 IMPORTS = $(OBJ)extract.imp
25
26 SOURCES = extract.ec
27
28 RESOURCES = ../../ecere/res/vanilla/ecere/actions/folderNew.png \
29         ../../ecere/res/vanilla/ecere/actions/goUp.png ../../ecere/res/vanilla/ecere/devices/computer.png \
30         ../../ecere/res/vanilla/ecere/devices/driveHardDisk.png ../../ecere/res/vanilla/ecere/devices/driveRemovableMedia.png \
31         ../../ecere/res/vanilla/ecere/devices/mediaFloppy.png ../../ecere/res/vanilla/ecere/devices/mediaOptical.png \
32         ../../ecere/res/vanilla/ecere/elements/areaClose.png ../../ecere/res/vanilla/ecere/elements/areaMaximize.png \
33         ../../ecere/res/vanilla/ecere/elements/areaMinimize.png ../../ecere/res/vanilla/ecere/elements/areaRestore.png \
34         ../../ecere/res/vanilla/ecere/elements/arrowDown.png ../../ecere/res/vanilla/ecere/elements/arrowLeft.png \
35         ../../ecere/res/vanilla/ecere/elements/arrowRight.png ../../ecere/res/vanilla/ecere/elements/arrowUp.png \
36         ../../ecere/res/vanilla/ecere/elements/optionBoxDisabledSelected.bmp ../../ecere/res/vanilla/ecere/elements/optionBoxDown.bmp \
37         ../../ecere/res/vanilla/ecere/elements/optionBoxSelected.bmp ../../ecere/res/vanilla/ecere/elements/optionBoxSelectedDown.bmp \
38         ../../ecere/res/vanilla/ecere/elements/optionBoxUp.bmp ../../ecere/res/vanilla/ecere/places/driveRemote.png \
39         ../../ecere/res/vanilla/ecere/places/folder.png ../../ecere/res/vanilla/ecere/places/folderRemote.png \
40         ../../ecere/res/vanilla/ecere/places/networkServer.png ../../ecere/res/vanilla/ecere/places/networkWorkgroup.png \
41         ../../ecere/res/vanilla/ecere/status/folderOpen.png
42
43 # CROSS-PLATFORM MAGIC
44
45 include ../../include.mk
46
47 # TOOLCHAIN
48 export LD_LIBRARY_PATH = ../../obj/$(PLATFORM)/lib/
49 export DYLD_LIBRARY_PATH = ../../obj/$(PLATFORM)/lib/
50 ECP := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecp)
51 ECC := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecc)
52 ECS := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecs)
53 EAR := $(call psep,../../obj/$(PLATFORM)/bin/ear)
54
55 # FLAGS
56
57 CFLAGS = -fmessage-length=0 -Os -m32 $(FPIC) -w \
58          -DECERE_STATIC
59
60 CECFLAGS =
61
62 ECFLAGS = -nolinenumbers
63
64 OFLAGS = -m32 \
65          -L../../ecere/obj/vanilla.$(PLATFORM) \
66          -L../../deps/zlib/obj/release.$(PLATFORM)
67
68 LIBS = -lecereVanilla -lz $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
69
70 UPXFLAGS = -9 -q --no-progress --no-color
71
72 # HARD CODED PLATFORM-SPECIFIC OPTIONS
73 ifdef LINUX
74 OFLAGS += -Wl,--no-undefined
75 endif
76
77 # PLATFORM-SPECIFIC OPTIONS
78
79 ifdef WINDOWS
80
81 LIBS += -lmpr -lwinmm -limm32
82
83 else
84 ifdef LINUX
85
86 OFLAGS += \
87          -L/usr/X11R6/lib
88
89 LIBS += -lfontconfig -lfreetype -lXrender -lXext -lncurses -lm -ldl -lpthread -lX11
90
91 else
92 ifdef OSX
93
94 OFLAGS += \
95          -L/usr/X11R6/lib
96
97 LIBS += -lfontconfig -lfreetype -lXrender -lXext -lncurses -lm -ldl -lpthread -lX11
98
99 endif
100 endif
101 endif
102
103 # TARGETS
104
105 all: objdir $(TARGET)
106
107 objdir:
108         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
109
110 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
111         $(ECS) $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/$(CONFIG).$(PLATFORM) -o $(OBJ)$(MODULE).main.ec
112
113 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
114         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
115         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)
116
117 $(SYMBOLS): | objdir
118 $(OBJECTS): | objdir
119 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
120         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
121         $(STRIP) $(STRIPOPT) $(TARGET)
122 ifndef WINDOWS
123 ifeq "$(TARGET_TYPE)" "executable"
124         @-$(call psep,$(UPX) $(UPXFLAGS) $(TARGET)) || $(call echo,upx not installed; not compressing.)
125 endif
126 else
127         @-$(call psep,$(UPX) $(UPXFLAGS) $(TARGET)) || $(call echo,upx not installed; not compressing.)
128 endif
129         $(EAR) awq $(TARGET) ../../ecere/res/vanilla/ecere/actions/folderNew.png ../../ecere/res/vanilla/ecere/actions/goUp.png "ecere/actions"
130         $(EAR) awq $(TARGET) ../../ecere/res/vanilla/ecere/devices/computer.png ../../ecere/res/vanilla/ecere/devices/driveHardDisk.png ../../ecere/res/vanilla/ecere/devices/driveRemovableMedia.png ../../ecere/res/vanilla/ecere/devices/mediaFloppy.png ../../ecere/res/vanilla/ecere/devices/mediaOptical.png "ecere/devices"
131         $(EAR) awq $(TARGET) ../../ecere/res/vanilla/ecere/elements/areaClose.png ../../ecere/res/vanilla/ecere/elements/areaMaximize.png ../../ecere/res/vanilla/ecere/elements/areaMinimize.png ../../ecere/res/vanilla/ecere/elements/areaRestore.png ../../ecere/res/vanilla/ecere/elements/arrowDown.png ../../ecere/res/vanilla/ecere/elements/arrowLeft.png ../../ecere/res/vanilla/ecere/elements/arrowRight.png ../../ecere/res/vanilla/ecere/elements/arrowUp.png ../../ecere/res/vanilla/ecere/elements/optionBoxDisabledSelected.bmp ../../ecere/res/vanilla/ecere/elements/optionBoxDown.bmp "ecere/elements"
132         $(EAR) awq $(TARGET) ../../ecere/res/vanilla/ecere/elements/optionBoxSelected.bmp ../../ecere/res/vanilla/ecere/elements/optionBoxSelectedDown.bmp ../../ecere/res/vanilla/ecere/elements/optionBoxUp.bmp "ecere/elements"
133         $(EAR) awq $(TARGET) ../../ecere/res/vanilla/ecere/places/driveRemote.png ../../ecere/res/vanilla/ecere/places/folder.png ../../ecere/res/vanilla/ecere/places/folderRemote.png ../../ecere/res/vanilla/ecere/places/networkServer.png ../../ecere/res/vanilla/ecere/places/networkWorkgroup.png "ecere/places"
134         $(EAR) awq $(TARGET) ../../ecere/res/vanilla/ecere/status/folderOpen.png "ecere/status"
135
136
137 # SYMBOL RULES
138
139 $(OBJ)extract.sym: extract.ec
140         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c extract.ec -o $(OBJ)extract.sym
141
142 # C OBJECT RULES
143
144 $(OBJ)extract.c: extract.ec $(OBJ)extract.sym | $(SYMBOLS)
145         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c extract.ec -o $(OBJ)extract.c -symbols $(OBJ)
146
147 # IMPLICIT OBJECT RULE
148
149 $(OBJ)%$(O) : $(OBJ)%.c
150         $(CC) $(CFLAGS) $(FVISIBILITY) -c $< -o $@
151
152 # OBJECT RULES
153
154 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
155         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
156
157 clean: objdir
158         $(call rmq,$(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
159         $(call rmq,$(OBJECTS))
160         $(call rmq,$(COBJECTS))
161         $(call rmq,$(IMPORTS))
162         $(call rmq,$(SYMBOLS))
163
164 realclean:
165         $(call rmrq,$(OBJ))
166
167 distclean:
168         $(call rmrq,obj/)