1# Makefile for cross-compiling gpredict for win32 on Linux, 2# using mingw compiler 3 4# configure pkg-config, version from git 5include config.mk 6 7# version string in C code 8VERSION_SHORT = $(GITMAJ).$(GITMIN).$(GITBLD) 9VERSION_LONG = $(GITMAJ).$(GITMIN).0.$(GITBLD) 10 11# cross-compiler prefix 12MGW_PREFIX=i686-w64-mingw32- 13 14# directories 15topsrc = .. 16gpreddir = $(topsrc)/src 17sgpsdpdir = $(gpreddir)/sgpsdp 18nxjsondir = $(gpreddir)/nxjson 19 20# tools 21CC = $(MGW_PREFIX)gcc -Wall -O2 -mms-bitfields -DWIN32 -m32 22AS = $(MGW_PREFIX)as 23DLLWRAP = $(MGW_PREFIX)dllwrap 24DLLWRAP_FLAGS = --as=$(AS) --export-all --driver-name $(CC) -s 25RC = $(MGW_PREFIX)windres 26# NB: .rc file create various version formats from the numbers 27RCFLAGS = --define __WIN32__ --define __WIN95__ --define MSRC --define __GNUWIN32__ \ 28 --define VERMAJ=$(GITMAJ) --define VERMIN=$(GITMIN) --define VERBLD=$(GITBLD) 29 30# libraries 31GTKLIBS := $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs gtk+-3.0) 32GLIBLIB := $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs glib-2.0 gthread-2.0) 33GOOLIBS := $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs goocanvas-2.0) 34GUI_LIBS = $(GTKLIBS) $(GLIBLIB) $(GOOLIBS) libsgpsdp.lib -lwinmm -lwininet -lws2_32 35LIBS = -lm 36 37# flags/defines 38GTK_CFLAGS := $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --cflags gtk+-3.0) 39GOO_CFLAGS := $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --cflags goocanvas-2.0) 40CFLAGS = -DVERSION_SHORT=$(VERSION_SHORT) -DHAVE_CONFIG_H -DPACKAGE_LOCALE_DIR=\"/\" -I. -I.. -I$(gpreddir) $(GOO_CFLAGS) 41 42# source paths 43vpath %.c $(sgpsdpdir) 44vpath %.c $(gpreddir) 45vpath %.h $(gpreddir) 46vpath %.h $(sgpsdpdir) 47vpath %.c $(nxjsondir) 48vpath %.h $(nxjsondir) 49vpath %.rc $(topsrc)/win32 50vpath %.c . 51 52#### End of system configuration section. #### 53 54SGPSDPSRC = \ 55 sgp4sdp4.c \ 56 sgp_in.c \ 57 sgp_math.c \ 58 sgp_obs.c \ 59 sgp_time.c \ 60 solar.c 61 62SGPSDPOBJ = $(SGPSDPSRC:.c=.o) 63 64NXJSONSRC = \ 65 nxjson.c 66 67NXJSONOBJ = $(NXJSONSRC:.c=.o) 68 69GOOCANVSRC = \ 70 goocanvasatk.c \ 71 goocanvasellipse.c \ 72 goocanvasenumtypes.c \ 73 goocanvasgroup.c \ 74 goocanvasimage.c \ 75 goocanvasitem.c \ 76 goocanvasitemmodel.c \ 77 goocanvasitemsimple.c \ 78 goocanvasmarshal.c \ 79 goocanvaspolyline.c \ 80 goocanvaspath.c \ 81 goocanvasprivate.h \ 82 goocanvasrect.c \ 83 goocanvasstyle.c \ 84 goocanvastable.c \ 85 goocanvastext.c \ 86 goocanvasutils.c \ 87 goocanvaswidget.c \ 88 goocanvas.c 89 90 91GOOCANVOBJ = $(GOOCANVSRC:.c=.o) 92 93 94GPREDICTSRC = \ 95 about.c \ 96 compat.c \ 97 first-time.c \ 98 gpredict-help.c \ 99 gpredict-utils.c \ 100 gtk-azel-plot.c \ 101 gtk-event-list.c \ 102 gtk-event-list-popup.c \ 103 gtk-freq-knob.c \ 104 gtk-polar-plot.c \ 105 gtk-polar-view.c \ 106 gtk-polar-view-popup.c \ 107 gtk-rig-ctrl.c \ 108 gtk-rot-ctrl.c \ 109 gtk-rot-knob.c \ 110 gtk-sat-data.c \ 111 gtk-sat-list.c \ 112 gtk-sat-list-popup.c \ 113 gtk-sat-map.c \ 114 gtk-sat-map-ground-track.c \ 115 gtk-sat-map-popup.c \ 116 gtk-sat-module.c \ 117 gtk-sat-module-popup.c \ 118 gtk-sat-module-tmg.c \ 119 gtk-sat-popup-common.c \ 120 gtk-sat-selector.c \ 121 gtk-single-sat.c \ 122 gtk-sky-glance.c \ 123 gui.c \ 124 locator.c \ 125 loc-tree.c \ 126 main.c \ 127 map-selector.c \ 128 map-tools.c \ 129 menubar.c \ 130 mod-cfg.c \ 131 mod-cfg-get-param.c \ 132 mod-mgr.c \ 133 orbit-tools.c \ 134 pass-popup-menu.c \ 135 pass-to-txt.c \ 136 predict-tools.c \ 137 print-pass.c \ 138 qth-data.c \ 139 qth-editor.c \ 140 radio-conf.c \ 141 rotor-conf.c \ 142 sat-cfg.c \ 143 sat-info.c \ 144 sat-log.c \ 145 sat-log-browser.c \ 146 sat-monitor.c \ 147 sat-pass-dialogs.c \ 148 sat-pref.c \ 149 sat-pref-conditions.c \ 150 sat-pref-debug.c \ 151 sat-pref-formats.c \ 152 sat-pref-general.c \ 153 sat-pref-interfaces.c \ 154 sat-pref-layout.c \ 155 sat-pref-list-view.c \ 156 sat-pref-map-view.c \ 157 sat-pref-modules.c \ 158 sat-pref-multi-pass.c \ 159 sat-pref-polar-view.c \ 160 sat-pref-predict.c \ 161 sat-pref-qth.c \ 162 sat-pref-qth-editor.c \ 163 sat-pref-refresh.c \ 164 sat-pref-rig.c \ 165 sat-pref-rig-editor.c \ 166 sat-pref-rot.c \ 167 sat-pref-rot-editor.c \ 168 sat-pref-single-pass.c \ 169 sat-pref-single-sat.c \ 170 sat-pref-sky-at-glance.c \ 171 sat-pref-tle.c \ 172 sat-vis.c \ 173 save-pass.c \ 174 strnatcmp.c \ 175 time-tools.c \ 176 tle-tools.c \ 177 tle-update.c \ 178 trsp-conf.c \ 179 trsp-update.c \ 180 win32-fetch.c 181 182GPREDICTOBJ = $(GPREDICTSRC:.c=.o) 183 184OBJS = $(SGPSDPOBJ) $(NXJSONOBJ) $(GPREDICTOBJ) 185 186%.o: %.c 187 $(CC) -c $(CFLAGS) $(GTK_CFLAGS) $< 188 $(CC) -MM $(CFLAGS) $(GTK_CFLAGS) $< > $*.d 189 190 191# targets begin 192 193all: libsgpsdp.dll gpredict.exe gpredict-con.exe 194 195dist: gpredict-$(GITMAJ).$(GITMIN).$(GITBLD).zip 196 197gpredict-$(GITMAJ).$(GITMIN).$(GITBLD).zip: all 198 mkdir -p gpredict/share/gpredict 199 cp -p libsgpsdp.dll gpredict.exe gpredict-con.exe $(BINDEPS) gpredict 200 cp -rp ../data gpredict/share/gpredict 201 cp -rp ../pixmaps gpredict/share/gpredict 202 cp -rp ../po gpredict/share/gpredict 203 mkdir -p gpredict/$(LOADERS) 204 cp -p loaders.cache gpredict/$(LOADERS) 205 cp -rp $(GTKETC) gpredict 206 mkdir -p gpredict/share/glib-2.0 207 cp -rp $(SCHEMAS) gpredict/share/glib-2.0 208 zip -r $@ gpredict 209 rm -rf gpredict 210 211# Use -mconsole to always open a console window when gpredicxt is started 212# Use -mwindows for no console 213gpredict.exe: TARGET:=-mwindows 214gpredict-con.exe: TARGET:=-mconsole 215 216gpredict.exe gpredict-con.exe: $(OBJS) gpredict_res.o 217 $(CC) $(TARGET) -mthreads -o $@ $^ $(CFLAGS) $(GTK_CFLAGS) $(LIBS) $(GUI_LIBS) -lmingwex -s 218 219gpredict_res.o: gpredict.rc gpredict.exp.manifest 220 $(RC) $(RCFLAGS) gpredict.rc $@ 221 222gpredict.exp.manifest: gpredict.exe.manifest 223 sed -e 's/VERSION_STRL/$(VERSION_LONG)/' < $< > $@ 224 225libgoocanvas.dll: $(GOOCANVOBJ) 226 $(CC) -shared $(CFLAGS) $(GTK_CFLAGS) $(GOOCANVOBJ) $(GTKLIBS) -lm -lmingwex \ 227 -Wl,--enable-auto-image-base -Wl,--out-implib,libgoocanvas.lib -o libgoocanvas.dll 228 229libsgpsdp.dll: $(SGPSDPOBJ) 230 $(CC) -shared $(CFLAGS) $(GTK_CFLAGS) $(SGPSDPOBJ) $(GLIBLIB) -lm -lmingwex \ 231 -Wl,--enable-auto-image-base -Wl,--out-implib,libsgpsdp.lib -o libsgpsdp.dll 232 233clean: 234 rm -f *.o *.d *.def *.a *.lib *.dll *.exe *.exp.manifest *.zip 235 rm -rf gpredict 236 237