f27e8f6d44e42b5b44baabe692175ffd48157bb7
[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 CPP := cpp
51 CC := gcc
52 ECP := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecp)
53 ECC := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecc)
54 ECS := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecs)
55 EAR := $(call psep,../../obj/$(PLATFORM)/bin/ear)
56 LD := gcc
57 AR := ar
58 STRIP := strip
59 UPX := upx
60
61 # FLAGS
62
63 CFLAGS = -fmessage-length=0 -Os -m32 $(FPIC) -w \
64          -DECERE_STATIC
65
66 CECFLAGS =
67
68 ECFLAGS = -nolinenumbers
69
70 OFLAGS = -m32 \
71          -L../../ecere/obj/vanilla.$(PLATFORM) \
72          -L../../deps/zlib/obj/release.$(PLATFORM)
73
74 LIBS = -lecereVanilla -lz $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
75
76 UPXFLAGS = -9 -q --no-progress --no-color
77
78 # HARD CODED PLATFORM-SPECIFIC OPTIONS
79 ifdef LINUX
80 OFLAGS += -Wl,--no-undefined
81 endif
82
83 # PLATFORM-SPECIFIC OPTIONS
84
85 ifdef WINDOWS
86
87 LIBS += -lmpr -lwinmm -limm32
88
89 else
90 ifdef LINUX
91
92 OFLAGS += \
93          -L/usr/X11R6/lib
94
95 LIBS += -lfontconfig -lfreetype -lXrender -lXext -lncurses -lm -ldl -lpthread -lX11
96
97 else
98 ifdef OSX
99
100 OFLAGS += \
101          -L/usr/X11R6/lib
102
103 LIBS += -lfontconfig -lfreetype -lXrender -lXext -lncurses -lm -ldl -lpthread -lX11
104
105 endif
106 endif
107 endif
108
109 # TARGETS
110
111 all: objdir $(TARGET)
112
113 objdir:
114         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
115
116 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
117         $(ECS) $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/$(CONFIG).$(PLATFORM) -o $(OBJ)$(MODULE).main.ec
118
119 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
120         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
121         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)
122
123 $(TARGET): $(SOURCES) $(RESOURCES) | objdir $(SYMBOLS) $(OBJECTS)
124         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
125         $(STRIP) $(STRIPOPT) $(TARGET)
126 ifndef WINDOWS
127 ifeq "$(TARGET_TYPE)" "executable"
128         @-$(call psep,$(UPX) $(UPXFLAGS) $(TARGET)) || $(call echo,upx not installed; not compressing.)
129 endif
130 else
131         @-$(call psep,$(UPX) $(UPXFLAGS) $(TARGET)) || $(call echo,upx not installed; not compressing.)
132 endif
133         $(EAR) awq $(TARGET) ../../ecere/res/vanilla/ecere/actions/folderNew.png ../../ecere/res/vanilla/ecere/actions/goUp.png "ecere/actions"
134         $(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"
135         $(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"
136         $(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"
137         $(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"
138         $(EAR) awq $(TARGET) ../../ecere/res/vanilla/ecere/status/folderOpen.png "ecere/status"
139
140
141 # SYMBOL RULES
142
143 $(OBJ)extract.sym: extract.ec
144         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c extract.ec -o $(OBJ)extract.sym
145
146 # C OBJECT RULES
147
148 $(OBJ)extract.c: extract.ec $(OBJ)extract.sym | $(SYMBOLS)
149         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c extract.ec -o $(OBJ)extract.c -symbols $(OBJ)
150
151 # IMPLICIT OBJECT RULE
152
153 $(OBJ)%$(O) : $(OBJ)%.c
154         $(CC) $(CFLAGS) $(FVISIBILITY) -c $< -o $@
155
156 # OBJECT RULES
157
158 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
159         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
160
161 clean: objdir
162         $(call rmq,$(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
163         $(call rmq,$(OBJECTS))
164         $(call rmq,$(COBJECTS))
165         $(call rmq,$(IMPORTS))
166         $(call rmq,$(SYMBOLS))
167
168 realclean:
169         $(call rmrq,$(OBJ))
170
171 distclean:
172         $(call rmrq,obj/)