Launcher, based on PickleLauncher
[mupen64plus-pandora.git] / source / mupen64launcher / Makefile
1 # Picklelauncher makefile
2
3 PROGRAM = mupen64launcher
4 LIB_ZIP = libunzip.a
5
6 # Build type
7 #BUILDTYPE = debug
8 BUILDTYPE = release
9 BUILDTARGET = PANDORA
10
11 # Compiler flags
12 CXXFLAGS     ?= -g -Wall -Wextra -O3
13 ZIP_CFLAGS   = $(CXXFLAGS)
14 # Linker flags
15 BASE_LDFLAGS = -L$(LIBRARY) -lSDL_ttf -lSDL_image -lSDL
16 ZIP_LDFLAGS  = -L$(LIBRARY) -lz
17
18 # Target compiler options
19 ifeq ($(BUILDTARGET),PANDORA)
20 PREFIX   = /mnt/utmp/codeblocks
21 TOOLS    = usr/bin
22 TARGET   = 
23 INCLUDE  = $(PREFIX)/usr/include
24 LIBRARY  = $(PREFIX)/usr/lib
25 CXXFLAGS += -DPANDORA
26 LDFLAGS  = $(BASE_LDFLAGS) -lfreetype -ltiff -lpng12 -lz -ljpeg -lts
27 else
28 ifeq ($(BUILDTARGET),CAANOO)
29 PREFIX   = /data/devel/toolchains/caanoo/GPH_SDK
30 TOOLS    = tools/gcc-4.2.4-glibc-2.7-eabi/bin
31 TARGET   = arm-gph-linux-gnueabi-
32 INCLUDE  = $(PREFIX)/DGE/include
33 LIBRARY  = $(PREFIX)/DGE/lib/target
34 CXXFLAGS += -DCAANOO
35 LDFLAGS  = $(BASE_LDFLAGS)
36 else
37 ifeq ($(BUILDTARGET),WIZ)
38 PREFIX   = /data/devel/toolchains/openwiz/arm-openwiz-linux-gnu
39 TOOLS    = bin
40 TARGET   = arm-openwiz-linux-gnu-
41 INCLUDE  = $(PREFIX)/include
42 LIBRARY  = $(PREFIX)/lib
43 CXXFLAGS += -DWIZ
44 LDFLAGS  = $(BASE_LDFLAGS) -lfreetype -lz
45 else
46 ifeq ($(BUILDTARGET),GP2X)
47 PREFIX   = /data/devel/toolchains/open2x/gcc-4.1.1-glibc-2.3.6
48 TOOLS    = bin
49 TARGET   = arm-open2x-linux-
50 INCLUDE  = $(PREFIX)/include
51 LIBRARY  = $(PREFIX)/lib
52 CXXFLAGS += -DGP2X
53 LDFLAGS  = -static $(BASE_LDFLAGS) -lfreetype -lz -lpng12 -lpthread -ldl
54 else
55 ifeq ($(BUILDTARGET),GCW)
56 PREFIX   = /data/devel/toolchains/gcw_mips/buildroot/output/host/usr
57 TOOLS    = bin
58 TARGET   = mipsel-gcw0-linux-uclibc-
59 INCLUDE  = $(PREFIX)/mipsel-gcw0-linux-uclibc/sysroot/usr/include
60 LIBRARY  = $(PREFIX)/mipsel-gcw0-linux-uclibc/sysroot/usr/lib
61 CXXFLAGS += -DGCW
62 LDFLAGS  = $(BASE_LDFLAGS) -lz -lpthread
63 else # default linux
64 PREFIX   = /usr
65 TOOLS    = bin
66 TARGET   =
67 INCLUDE  = $(PREFIX)/include
68 LIBRARY  = $(PREFIX)/lib
69 LDFLAGS  = $(BASE_LDFLAGS)
70 endif
71 endif
72 endif
73 endif
74 endif
75
76 # Assign includes
77 CXXFLAGS += -I$(INCLUDE) -I$(INCLUDE)/SDL
78
79 ifeq ($(BUILDTYPE),debug)
80 CXXFLAGS += -DDEBUG
81 endif
82
83 # Source files
84 SRCS       = main.cpp cselector.cpp cprofile.cpp cconfig.cpp csystem.cpp czip.cpp cbase.cpp
85 SRCS_ZIP   = ioapi.c unzip.c
86
87 # Assign paths to binaries/sources/objects
88 BUILD      = build
89 SRCDIR     = src
90 SRCDIR_ZIP = $(SRCDIR)/unzip
91 OBJDIR     = $(BUILD)/objs/$(BUILDTYPE)
92
93 SRCS       := $(addprefix $(SRCDIR)/,$(SRCS)) 
94 OBJS       := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o)) 
95 SRCS_ZIP   := $(addprefix $(SRCDIR_ZIP)/,$(SRCS_ZIP)) 
96 OBJS_ZIP   := $(addprefix $(OBJDIR)/,$(SRCS_ZIP:.c=.o)) 
97
98 LIB_ZIP    := $(addprefix $(OBJDIR)/,$(LIB_ZIP)) 
99 PROGRAM    := $(addprefix $(BUILD)/,$(PROGRAM)) 
100
101 # Assign Tools
102 CC  = $(PREFIX)/$(TOOLS)/$(TARGET)gcc
103 CXX = $(PREFIX)/$(TOOLS)/$(TARGET)g++
104 AR  = $(PREFIX)/$(TOOLS)/$(TARGET)ar
105
106 # Build rules
107 all : setup $(LIB_ZIP) $(PROGRAM)
108
109 setup:
110         mkdir -p $(OBJDIR)/$(SRCDIR_ZIP)
111
112 $(LIB_ZIP): $(OBJS_ZIP)
113         $(AR) rcs $(LIB_ZIP) $(OBJS_ZIP)
114
115 $(PROGRAM): $(OBJS)
116         $(CXX) $(CXXFLAGS) -o $(PROGRAM) $(OBJS) $(LIB_ZIP) $(LDFLAGS) 
117
118 $(OBJDIR)/$(SRCDIR_ZIP)/%.o: $(SRCDIR_ZIP)/%.c
119         $(CC) $(ZIP_CFLAGS) -c $< -o $@
120
121 $(OBJDIR)/$(SRCDIR)/%.o: $(SRCDIR)/%.cpp
122         $(CXX) $(CXXFLAGS) -c $< -o $@
123
124 clean:
125         rm -f $(PROGRAM) $(OBJS) $(LIB_ZIP) $(OBJS_ZIP)