Improve Linux build

Introduces several improvements to Makefiles:
* BUILD=[debug|release] flag with CFLAGS consistent with vcproj
* DESTDIR for staged builds
* installation paths can be overridden in make arguments
* `make install` makes sure install dirs are present
* debug build adds GDB debug symbols
pull/11/head
Adam Kolakowski 6 years ago
parent cbfc82c50c
commit 52537aca8f

@ -7,8 +7,9 @@ OBJECTS = AMBEFEC.o AnnouncementUnit.o ArduinoController.o BeaconUnit.o Callsign
SlowDataDecoder.o SlowDataEncoder.o SoundCardController.o SoundCardReaderWriter.o SplitController.o TCPReaderWriter.o \ SlowDataDecoder.o SlowDataEncoder.o SoundCardController.o SoundCardReaderWriter.o SplitController.o TCPReaderWriter.o \
Timer.o UDPReaderWriter.o UDRCController.o URIUSBController.o Utils.o Timer.o UDPReaderWriter.o UDRCController.o URIUSBController.o Utils.o
.PHONY: all .PHONY: all clean
all: Common.a
all: Common.a
Common.a: $(OBJECTS) Common.a: $(OBJECTS)
$(AR) rcs Common.a $(OBJECTS) $(AR) rcs Common.a $(OBJECTS)
@ -19,7 +20,6 @@ Common.a: $(OBJECTS)
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -c -o $@ $< $(CXX) -DwxUSE_GUI=0 $(CFLAGS) -c -o $@ $<
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) $< > $*.d $(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) $< > $*.d
.PHONY: clean
clean: clean:
$(RM) Common.a *.o *.d *.bak *~ $(RM) Common.a *.o *.d *.bak *~

@ -1,8 +1,9 @@
OBJECTS = DStarRepeaterApp.o DStarRepeaterLogRedirect.o DStarRepeaterRXThread.o DStarRepeaterStatusData.o \ OBJECTS = DStarRepeaterApp.o DStarRepeaterLogRedirect.o DStarRepeaterRXThread.o DStarRepeaterStatusData.o \
DStarRepeaterThread.o DStarRepeaterTRXThread.o DStarRepeaterTXRXThread.o DStarRepeaterTXThread.o DStarRepeaterThread.o DStarRepeaterTRXThread.o DStarRepeaterTXRXThread.o DStarRepeaterTXThread.o
.PHONY: all .PHONY: all install clean
all: dstarrepeaterd
all: dstarrepeaterd
dstarrepeaterd: $(OBJECTS) ../Common/Common.a dstarrepeaterd: $(OBJECTS) ../Common/Common.a
$(CXX) $(OBJECTS) ../Common/Common.a $(LDFLAGS) $(LIBS) -o dstarrepeaterd $(CXX) $(OBJECTS) ../Common/Common.a $(LDFLAGS) $(LIBS) -o dstarrepeaterd
@ -13,9 +14,8 @@ dstarrepeaterd: $(OBJECTS) ../Common/Common.a
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -c -o $@ $< $(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -c -o $@ $<
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common $< > $*.d $(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common $< > $*.d
.PHONY: install
install: install:
install -g bin -o root -m 0775 dstarrepeaterd $(BINDIR) install -g root -o root -m 0755 dstarrepeaterd $(DESTDIR)$(BINDIR)
clean: clean:
$(RM) dstarrepeaterd *.o *.d *.bak *~ $(RM) dstarrepeaterd *.o *.d *.bak *~

@ -1,7 +1,9 @@
OBJECTS = DStarRepeaterApp.o DStarRepeaterFrame.o DStarRepeaterLogRedirect.o DStarRepeaterRXThread.o DStarRepeaterStatusData.o \ OBJECTS = DStarRepeaterApp.o DStarRepeaterFrame.o DStarRepeaterLogRedirect.o DStarRepeaterRXThread.o DStarRepeaterStatusData.o \
DStarRepeaterThread.o DStarRepeaterTRXThread.o DStarRepeaterTXRXThread.o DStarRepeaterTXThread.o DStarRepeaterThread.o DStarRepeaterTRXThread.o DStarRepeaterTXRXThread.o DStarRepeaterTXThread.o
all: dstarrepeater .PHONY: install clean
all: dstarrepeater
dstarrepeater: $(OBJECTS) ../Common/Common.a ../GUICommon/GUICommon.a dstarrepeater: $(OBJECTS) ../Common/Common.a ../GUICommon/GUICommon.a
$(CXX) $(OBJECTS) ../Common/Common.a ../GUICommon/GUICommon.a $(LDFLAGS) $(GUILIBS) -o dstarrepeater $(CXX) $(OBJECTS) ../Common/Common.a ../GUICommon/GUICommon.a $(LDFLAGS) $(GUILIBS) -o dstarrepeater
@ -10,11 +12,9 @@ dstarrepeater: $(OBJECTS) ../Common/Common.a ../GUICommon/GUICommon.a
$(CXX) $(CFLAGS) -I../Common -I../GUICommon -c -o $@ $< $(CXX) $(CFLAGS) -I../Common -I../GUICommon -c -o $@ $<
$(CXX) -MM $(CFLAGS) -I../Common -I../GUICommon $< > $*.d $(CXX) -MM $(CFLAGS) -I../Common -I../GUICommon $< > $*.d
.PHONY: install
install: install:
install -g bin -o root -m 0775 dstarrepeater $(BINDIR) install -g root -o root -m 0755 dstarrepeater $(DESTDIR)$(BINDIR)
.PHONY: clean
clean: clean:
$(RM) dstarrepeater *.o *.d *.bak *~ $(RM) dstarrepeater *.o *.d *.bak *~

@ -5,8 +5,8 @@ OBJECTS = DStarRepeaterConfigActiveHangSet.o DStarRepeaterConfigAnnouncementSet.
DStarRepeaterConfigIcomSet.o DStarRepeaterConfigMMDVMSet.o DStarRepeaterConfigModemSet.o DStarRepeaterConfigNetworkSet.o \ DStarRepeaterConfigIcomSet.o DStarRepeaterConfigMMDVMSet.o DStarRepeaterConfigModemSet.o DStarRepeaterConfigNetworkSet.o \
DStarRepeaterConfigSoundCardSet.o DStarRepeaterConfigSplitSet.o DStarRepeaterConfigTimesSet.o DStarRepeaterConfigSoundCardSet.o DStarRepeaterConfigSplitSet.o DStarRepeaterConfigTimesSet.o
.PHONY: all .PHONY: all install clean
all: dstarrepeaterconfig all: dstarrepeaterconfig
dstarrepeaterconfig: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a dstarrepeaterconfig: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a
$(CXX) $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a $(LDFLAGS) $(GUILIBS) -o dstarrepeaterconfig $(CXX) $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a $(LDFLAGS) $(GUILIBS) -o dstarrepeaterconfig
@ -17,11 +17,9 @@ dstarrepeaterconfig: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a
$(CXX) $(CFLAGS) -I../GUICommon -I../Common -c -o $@ $< $(CXX) $(CFLAGS) -I../GUICommon -I../Common -c -o $@ $<
$(CXX) -MM $(CFLAGS) -I../GUICommon -I../Common $< > $*.d $(CXX) -MM $(CFLAGS) -I../GUICommon -I../Common $< > $*.d
.PHONY: install
install: install:
install -g bin -o root -m 0775 dstarrepeaterconfig $(BINDIR) install -g root -o root -m 0755 dstarrepeaterconfig $(DESTDIR)$(BINDIR)
.PHONY: install
clean: clean:
$(RM) dstarrepeaterconfig *.o *.d *.bak *~ $(RM) dstarrepeaterconfig *.o *.d *.bak *~

@ -1,22 +1,24 @@
.PHONY: install
install: install:
install -d -g bin -o root -m 0775 $(DATADIR) install -d -g root -o root -m 0755 $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 de_DE.ambe $(DATADIR) install -g root -o root -m 0644 de_DE.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 de_DE.indx $(DATADIR) install -g root -o root -m 0644 de_DE.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 dk_DK.ambe $(DATADIR) install -g root -o root -m 0644 dk_DK.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 dk_DK.indx $(DATADIR) install -g root -o root -m 0644 dk_DK.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 en_GB.ambe $(DATADIR) install -g root -o root -m 0644 en_GB.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 en_GB.indx $(DATADIR) install -g root -o root -m 0644 en_GB.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 en_US.ambe $(DATADIR) install -g root -o root -m 0644 en_US.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 en_US.indx $(DATADIR) install -g root -o root -m 0644 en_US.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 es_ES.ambe $(DATADIR) install -g root -o root -m 0644 es_ES.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 es_ES.indx $(DATADIR) install -g root -o root -m 0644 es_ES.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 fr_FR.ambe $(DATADIR) install -g root -o root -m 0644 fr_FR.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 fr_FR.indx $(DATADIR) install -g root -o root -m 0644 fr_FR.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 it_IT.ambe $(DATADIR) install -g root -o root -m 0644 it_IT.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 it_IT.indx $(DATADIR) install -g root -o root -m 0644 it_IT.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 no_NO.ambe $(DATADIR) install -g root -o root -m 0644 no_NO.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 no_NO.indx $(DATADIR) install -g root -o root -m 0644 no_NO.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 pl_PL.ambe $(DATADIR) install -g root -o root -m 0644 pl_PL.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 pl_PL.indx $(DATADIR) install -g root -o root -m 0644 pl_PL.indx $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 se_SE.ambe $(DATADIR) install -g root -o root -m 0644 se_SE.ambe $(DESTDIR)$(DATADIR)
install -g bin -o root -m 0664 se_SE.indx $(DATADIR) install -g root -o root -m 0644 se_SE.indx $(DESTDIR)$(DATADIR)

@ -1,6 +1,6 @@
OBJECTS = AddressTextCtrl.o CallsignTextCtrl.o MessageTextCtrl.o PortTextCtrl.o RestrictedTextCtrl.o OBJECTS = AddressTextCtrl.o CallsignTextCtrl.o MessageTextCtrl.o PortTextCtrl.o RestrictedTextCtrl.o
.PHONY: all .PHONY: all clean
all: GUICommon.a all: GUICommon.a
GUICommon.a: $(OBJECTS) GUICommon.a: $(OBJECTS)
@ -12,7 +12,6 @@ GUICommon.a: $(OBJECTS)
$(CXX) $(CFLAGS) -c -o $@ $< $(CXX) $(CFLAGS) -c -o $@ $<
$(CXX) -MM $(CFLAGS) $< > $*.d $(CXX) -MM $(CFLAGS) $< > $*.d
.PHONY: clean
clean: clean:
$(RM) GUICommon.a *.o *.d *.bak *~ $(RM) GUICommon.a *.o *.d *.bak *~

@ -1,20 +1,29 @@
export DATADIR := "/usr/share/dstarrepeater" .PHONY: install installdirs clean force
export LOGDIR := "/var/log" export BUILD ?= debug
export CONFDIR := "/etc" export DATADIR ?= /usr/share/dstarrepeater
export BINDIR := "/usr/bin" export LOGDIR ?= /var/log
export CONFDIR ?= /etc
export BINDIR ?= /usr/bin
DEBUGFLAGS := -g -D_DEBUG
RELEASEFLAGS := -DNDEBUG -DwxDEBUG_LEVEL=0
export CXX := $(shell wx-config --cxx) export CXX := $(shell wx-config --cxx)
export CFLAGS := -O2 -Wall $(shell wx-config --cxxflags) -DLOG_DIR='$(LOGDIR)' -DCONF_DIR='$(CONFDIR)' -DDATA_DIR='$(DATADIR)' export CFLAGS := -O2 -Wall $(shell wx-config --cxxflags) -DLOG_DIR='"$(LOGDIR)"' -DCONF_DIR='"$(CONFDIR)"' -DDATA_DIR='"$(DATADIR)"'
ifeq ($(BUILD), debug)
export CFLAGS := $(CFLAGS) $(DEBUGFLAGS)
else ifeq ($(BUILD), release)
export CFLAGS := $(CFLAGS) $(RELEASEFLAGS)
endif
export GUILIBS := $(shell wx-config --libs adv,core,base) -lasound export GUILIBS := $(shell wx-config --libs adv,core,base) -lasound
export LIBS := $(shell wx-config --libs base) -lasound -lusb-1.0 export LIBS := $(shell wx-config --libs base) -lasound -lusb-1.0
export LDFLAGS := export LDFLAGS :=
all: DStarRepeater/dstarrepeaterd DStarRepeaterConfig/dstarrepeaterconfig all: DStarRepeater/dstarrepeaterd DStarRepeaterConfig/dstarrepeaterconfig
DStarRepeater/dstarrepeaterd: Common/Common.a force DStarRepeater/dstarrepeaterd: Common/Common.a force
$(MAKE) -C DStarRepeater $(MAKE) -C DStarRepeater
DStarRepeaterConfig/dstarrepeaterconfig: GUICommon/GUICommon.a Common/Common.a force DStarRepeaterConfig/dstarrepeaterconfig: GUICommon/GUICommon.a Common/Common.a force
$(MAKE) -C DStarRepeaterConfig $(MAKE) -C DStarRepeaterConfig
GUICommon/GUICommon.a: force GUICommon/GUICommon.a: force
@ -23,19 +32,19 @@ GUICommon/GUICommon.a: force
Common/Common.a: force Common/Common.a: force
$(MAKE) -C Common $(MAKE) -C Common
.PHONY: install installdirs:
install: all /bin/mkdir -p $(DESTDIR)$(DATADIR) $(DESTDIR)$(LOGDIR) $(DESTDIR)$(CONFDIR) $(DESTDIR)$(BINDIR)
install: all installdirs
$(MAKE) -C Data install $(MAKE) -C Data install
$(MAKE) -C DStarRepeater install $(MAKE) -C DStarRepeater install
$(MAKE) -C DStarRepeaterConfig install $(MAKE) -C DStarRepeaterConfig install
.PHONY: clean
clean: clean:
$(MAKE) -C Common clean $(MAKE) -C Common clean
$(MAKE) -C GUICommon clean $(MAKE) -C GUICommon clean
$(MAKE) -C DStarRepeater clean $(MAKE) -C DStarRepeater clean
$(MAKE) -C DStarRepeaterConfig clean $(MAKE) -C DStarRepeaterConfig clean
.PHONY: force
force: force:
@true @true

@ -1,15 +1,26 @@
export DATADIR := "/usr/share/dstarrepeater" export BUILD ?= debug
export LOGDIR := "/var/log" export DATADIR ?= /usr/share/dstarrepeater
export CONFDIR := "/etc" export LOGDIR ?= /var/log
export BINDIR := "/usr/bin" export CONFDIR ?= /etc
export BINDIR ?= /usr/bin
DEBUGFLAGS := -g -D_DEBUG
RELEASEFLAGS := -DNDEBUG -DwxDEBUG_LEVEL=0
export CXX := $(shell wx-config --cxx) export CXX := $(shell wx-config --cxx)
export CFLAGS := -O2 -Wall $(shell wx-config --cxxflags) -DLOG_DIR='$(LOGDIR)' -DCONF_DIR='$(CONFDIR)' -DDATA_DIR='$(DATADIR)' export CFLAGS := -O2 -Wall $(shell wx-config --cxxflags) -DLOG_DIR='"$(LOGDIR)"' -DCONF_DIR='"$(CONFDIR)"' -DDATA_DIR='"$(DATADIR)"'
ifeq ($(BUILD), debug)
export CFLAGS := $(CFLAGS) $(DEBUGFLAGS)
else ifeq ($(BUILD), release)
export CFLAGS := $(CFLAGS) $(RELEASEFLAGS)
endif
export GUILIBS := $(shell wx-config --libs adv,core,base) -lasound -lusb-1.0 export GUILIBS := $(shell wx-config --libs adv,core,base) -lasound -lusb-1.0
export LIBS := $(shell wx-config --libs base) -lasound -lusb-1.0 export LIBS := $(shell wx-config --libs base) -lasound -lusb-1.0
export LDFLAGS := export LDFLAGS :=
all: DStarRepeater/dstarrepeater DStarRepeaterConfig/dstarrepeaterconfig .PHONY: install installdirs clean force
all: DStarRepeater/dstarrepeater DStarRepeaterConfig/dstarrepeaterconfig
DStarRepeater/dstarrepeater: GUICommon/GUICommon.a Common/Common.a force DStarRepeater/dstarrepeater: GUICommon/GUICommon.a Common/Common.a force
$(MAKE) -C DStarRepeater -f MakefileGUI $(MAKE) -C DStarRepeater -f MakefileGUI
@ -23,19 +34,19 @@ GUICommon/GUICommon.a: force
Common/Common.a: force Common/Common.a: force
$(MAKE) -C Common $(MAKE) -C Common
.PHONY: install installdirs:
install: all /bin/mkdir -p $(DESTDIR)$(DATADIR) $(DESTDIR)$(LOGDIR) $(DESTDIR)$(CONFDIR) $(DESTDIR)$(BINDIR)
install: all installdirs
$(MAKE) -C Data install $(MAKE) -C Data install
$(MAKE) -C DStarRepeater -f MakefileGUI install $(MAKE) -C DStarRepeater -f MakefileGUI install
$(MAKE) -C DStarRepeaterConfig install $(MAKE) -C DStarRepeaterConfig install
.PHONY: clean
clean: clean:
$(MAKE) -C Common clean $(MAKE) -C Common clean
$(MAKE) -C GUICommon clean $(MAKE) -C GUICommon clean
$(MAKE) -C DStarRepeater -f MakefileGUI clean $(MAKE) -C DStarRepeater -f MakefileGUI clean
$(MAKE) -C DStarRepeaterConfig clean $(MAKE) -C DStarRepeaterConfig clean
.PHONY: force
force: force:
@true @true

Loading…
Cancel
Save

Powered by TurnKey Linux.