#######################################
# RCSId: $Id: makefile,v 1.3 2000/08/01 20:54:47 ralblas Exp $
#
# Makefile to compile and generate wsat
# Project: WSAT
# Version: T1.0
# Author: R. Alblas
#
# History: 
# $Log: makefile,v $
# Revision 1.3  2000/08/01 20:54:47  ralblas
# Added hri_functions file
#
# Revision 1.2  2000/05/16 21:38:05  ralblas
#
# Added GPL
#
# Revision 1.1.1.1  2000/04/12 21:36:59  kmelero
# Initial import.
#
#######################################
####################################################################
# Copyright (C) 2000 WSAT. 
#
# This is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License 
# as published by the Free Software Foundation.
# 
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this software. If not, write to the Free Software 
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 
# 02111-1307, USA.
####################################################################
#
#
#
RELEASE_=\"2010.01.a\"

#Choose linux or windows
OS="linux"

#Choose gtk version: 2.0 or 1.3 or no
ifeq ($(OS),"linux")
#  GTK_REL="1.3"
  GTK_REL="2.0"
  DBGFLAG=-g
else
  GTK_REL="2.0"
endif


#Choose decoder interface (par. port always present)
USE_PAR="TRUE"
USE_USB="TRUEn"
USE_ETH="TRUEn"

##########################################################
ifneq ($(OS),"linux")
  ifneq ($(OS),"windows")
all:
	echo "Wrong choice $(OS)."

  endif
endif

PARFLAG=
USBFLAG=
ETHFLAG=
ifeq ($(USE_PAR),"TRUE")
  PARFLAG=-D__ADD_PAR__
endif
ifeq ($(USE_USB),"TRUE")
  USBFLAG=-D__ADD_USB__
endif
ifeq ($(USE_ETH),"TRUE")
  ETHFLAG=-D__ADD_ETH__
endif
XFLAG=$(PARFLAG) $(USBFLAG) $(ETHFLAG)


#Compile commands
CC=gcc -Wall -Wno-format-y2k $(INCL_OPT) $(CCFLAGS) $(DBGFLAG) $(XFLAG)

####$(INCL_OPT) $(GTKCONFIG_CFLAG)
LN=gcc 

#windows: ftd2xx.lib in ../libs
ifeq ($(USE_USB),"TRUE")
  USBLIBS=-L../libs -lftd2xx 
else
  USBLIBS=
endif

ifeq ($(OS),"linux")
#######################PLATFORM DEPENDENT SETTINGS###################
#------------------------- Defs for Linux ---------------------------
  PROGRAM=wsat
  ifeq ($(GTK_REL),"2.0")
    GTKCONFIG_CFLAG=`pkg-config --cflags gtk+-2.0` -D__GTK_20__ 
    GTKCONFIG_LLIBS=`pkg-config --libs gtk+-2.0` -lgthread-2.0
  else
    GTKCONFIG_CFLAG=`gtk-config --cflags`
    GTKCONFIG_LLIBS=`gtk-config --libs`
  endif
  STATIC_LINK_OPTIONS=-Wl,-Bstatic -L/usr/local/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib  -lintl  -lm  -Wl,-Bdynamic -ldl -lXext -lX11
  CFLAGS_EXTRA=
#--------------------------------------------------------------------
else
  #------------------------- Defs for Windows -------------------------
  PROGRAM=wsat.exe

  ifeq ($(GTK_REL),"2.0")
#      GTKCONFIG_CFLAG=`pkg-config --cflags gtk+-2.0` -D__GTK_20__ 
#      GTKCONFIG_LLIBS=`pkg-config --libs gtk+-2.0`
    GTKCONFIG_CFLAG=-mms-bitfields -Ic:/tools/wingtk20/include/gtk-2.0 -Ic:/tools/wingtk20/lib/gtk-2.0/include -Ic:/tools/wingtk20/include/atk-1.0 -Ic:/tools/wingtk20/include/cairo -Ic:/tools/wingtk20/include/pango-1.0 -Ic:/tools/wingtk20/include/glib-2.0 -Ic:/tools/wingtk20/lib/glib-2.0/include -Ic:/tools/wingtk20/include/libpng12
    GTKCONFIG_LLIBS= -Lc:/tools/wingtk20/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -mwindows
    CFLAGS_EXTRA=-D__GTK_WIN32__=1 -D__GTK_20__ 
  else

    GTKCONFIG_CFLAG=-Ic:/bin/wingnu/gtk/include/gppm3 -Ic:/bin/wingnu/gtk/include/gtkp -Ic:/bin/wingnu/gtk/include/gtkp/gdk
    GTKCONFIG_LLIBS=-Lc:/bin/wingnu/gtk/lib -lgtk-1.3 -lgdk-1.3 -lglib-1.3 -mwindows
    CFLAGS_EXTRA=-D__GTK_WIN32__=1
   endif
######################################################################
endif

CCFLAGS=$(LOC_INCS) $(GTKCONFIG_CFLAG) $(CFLAGS_EXTRA)

#Source locations
LOC_INCLUDE=../include
LOC_SGTK=../sgtk
LOC_STDFRMT=../std_frmts
LOC_HRPT1=../hrpt
LOC_HRPT=../hrpt
LOC_HRI1=../hri
LOC_HRI=../hri
LOC_RAWD=../rawd

#Include option
INCL_OPT=-I$(LOC_INCLUDE)/ -I$(LOC_SGTK)/ -I$(LOC_STDFRMT)/

#Sources modules
#SUN raster files
SRC_SUN = $(LOC_STDFRMT)/sun.c 
INC_SUN = $(LOC_STDFRMT)/sun.h

#PPM files
SRC_PPM = $(LOC_STDFRMT)/ppm.c 
INC_PPM = $(LOC_STDFRMT)/ppm.h

#GIF raster files
SRC_GIF=$(LOC_STDFRMT)/gif_read.c $(LOC_STDFRMT)/gif_write.c
INC_GIF  = $(LOC_STDFRMT)/gif.h

#HRPT files
SRC_HRPT=$(LOC_HRPT)/hrpt_rec.c $(LOC_HRPT)/hrpt_rec_pp.c \
         $(LOC_HRPT)/hrpt_rec_eth.c $(LOC_HRPT)/hrpt_rec_usb.c \
         $(LOC_HRPT1)/hrpt1_read.c $(LOC_HRPT1)/hrpt1_write.c \
         $(LOC_HRPT1)/hrpt_framehdr.c $(LOC_HRPT1)/hrpt_calcs.c
INC_HRPT=$(LOC_INCLUDE)/hrpt.h $(LOC_INCLUDE)/pp_dec_interf.h  \
         $(LOC_INCLUDE)/hrpt1.h $(LOC_INCLUDE)/hrpt_funcs.h \
         $(LOC_INCLUDE)/ftd2xx.h $(LOC_INCLUDE)/WinTypes.h

#AHRPT files
SRC_AHRPT=$(LOC_HRPT)/ahrpt1_read.c $(LOC_HRPT)/ahrpt1_write.c
INC_AHRPT=$(LOC_INCLUDE)/ahrpt.h

#HRI files
SRC_HRI=$(LOC_HRI)/hri_rec_pp.c $(LOC_HRI)/hri_functions.c \
        $(LOC_HRI1)/hri1_read.c $(LOC_HRI1)/hri1_write.c
INC_HRI=$(LOC_INCLUDE)/hri.h $(LOC_INCLUDE)/pp_dec_interf.h  \
        $(LOC_INCLUDE)/hri1.h 

#RAWD files
SRC_RAWD=$(LOC_RAWD)/rawd_rec_pp.c 

#GTK sgtk files
SRC_SGTK=$(LOC_SGTK)/sgtk_misc.c $(LOC_SGTK)/windows.c $(LOC_SGTK)/filemngr.c \
        $(LOC_SGTK)/canvas.c $(LOC_SGTK)/buttons.c $(LOC_SGTK)/listtree.c \
        $(LOC_SGTK)/adjust.c $(LOC_SGTK)/menus.c $(LOC_SGTK)/packing.c \
        $(LOC_SGTK)/rgbdraw.c $(LOC_SGTK)/gtk_led.c
INC_SGTK=$(LOC_SGTK)/sgtk.h $(LOC_SGTK)/gtk_led.h
INC_SGTKALL=$(INC_SGTK) $(LOC_SGTK)/sgtk_functions.h

#Parallel port 
ifeq ($(USE_PAR),"TRUE")
  SRC_PPORT=pp_dec_interf.c test_parport.c
  INC_PPORT=$(LOC_INCLUDE)/pp_dec_interf.h
else
  SRC_PPORT=
  INC_PPORT=
endif

#Orbit
SRC_ORBIT=calc_satpos.c draw_satpos.c select_kepler.c edit_orbit.c parse_norad.c
INC_ORBIT= $(LOC_INCLUDE)/orbit.h

#Main files
SRC_MAIN=wsat.c gtk_inter.c prefer.c zoom.c lumi.c draw.c mapping.c  \
         key_actions.c mouse_actions.c file.c file_save.c channels.c \
         map_chan.c data_proc.c misc.c slide.c
INC_MAIN=$(LOC_INCLUDE)/wsat.h $(LOC_INCLUDE)/menu_wsat.h 

#####################################################
#Collection of all sources/includes/objects
SRC_WSAT=$(SRC_MAIN) $(SRC_ORBIT) $(SRC_HRPT) $(SRC_HRI) $(SRC_RAWD) $(SRC_AHRPT) \
        $(SRC_SUN) $(SRC_PPM) $(SRC_GIF) $(SRC_PPORT)

INC_WSAT=$(INC_SUN) $(INC_PPM) $(INC_GIF) $(INC_HRPT) $(INC_HRI) $(INC_AHRPT) \
         $(INC_ORBIT) $(INC_PPORT) $(INC_MAIN)
INC_WSATALL=$(INC_WSAT) ../include/wsat_functions.h
INC_ALL=$(INC_WSATALL) $(INC_SGTKALL)

SRC_ALL=$(SRC_WSAT) $(SRC_SGTK) 
OBJ_ALL= $(SRC_ALL:.c=.o)

OBJ_PPORT= $(SRC_PPORT:.c=.o)

#####################################################
#Link all objects into wsat.
#If gtk-libs should be static then do: make wsat_s
#Dynamic libs:
$(PROGRAM): $(OBJ_ALL) 
	$(LN) -o $@ $(OBJ_ALL) $(GTKCONFIG_LLIBS) $(USBLIBS)

#Static libs (except X-libs):
wsat_s: $(OBJ_ALL) 
	$(LNS) -o $@ $(OBJ_ALL) $(STATIC_LINK_OPTIONS)


#####################################################
#Special compiles

#Make OBJ_PPORT

pp_dec_interf.o: pp_dec_interf.c $(INC_PPORT)
	$(CC) -c $(CFLAGS_EXTRA) -O -o $@ $<

test_parport.o: test_parport.c $(INC_PPORT)
	$(CC) -c $(CFLAGS_EXTRA) -O -o $@ $<

#Recompile HW-interfaces if makefile changes
$(LOC_HRPT)/hrpt_rec.o: $(LOC_HRPT)/hrpt_rec.c makefile
	$(CC) -c -o $@ $<
$(LOC_HRPT)/hrpt_rec_usb.o: $(LOC_HRPT)/hrpt_rec_usb.c makefile
	$(CC) -c -o $@ $<
$(LOC_HRPT)/hrpt_rec_eth.o: $(LOC_HRPT)/hrpt_rec_eth.c makefile
	$(CC) -c -o $@ $<
prefer.o: prefer.c makefile
	$(CC) -c -o $@ $<

#Make wsat.obj (add version nummer)
wsat.o: wsat.c makefile $(INC_MAIN)
	$(CC) -c -DRELEASE=$(RELEASE_) $(CFLAGS_EXTRA) wsat.c

#####################################################
#Default compiles

%.o: %.c $(INC_WSAT) $(INC_SGTK)
	$(CC) -c $(CCFLAGS) $(CFLAGS_EXTRA) -o $@ $<


#####################################################
# Web it
web: wsat.tgz
wsat.tgz: wsat
	tar -czf wsat.tgz wsat

#####################################################
#Pack it (for archiving)

arch: wsat.zip
wsat.zip: $(SRC_WSAT) $(INC_WSATALL) makefile
	zip wsat.zip $(SRC_WSAT) $(INC_WSATALL) makefile

arch_all: wsat_all.zip
wsat_all.zip: $(SRC_ALL) $(INC_ALL) makefile
	zip wsat_all.zip $(SRC_ALL) $(INC_ALL) makefile

icon: wsat_icon.exe
wsat_icon.exe: wsat.exe
	mv wsat.exe wsat_noicon.exe
	ResHacker -add wsat_noicon.exe,wsat.exe,wbol.ico,ICONGROUP,ikoon,
