1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-18 03:52:11 +01:00

LP-30 added build scripts for osg (including windows dependencies), osgearth and marble

This commit is contained in:
Philippe Renon 2015-09-05 19:08:55 +02:00
parent 882c3d54b1
commit 54edce6e1c
5 changed files with 884 additions and 0 deletions

2
make/3rdparty/3rdparty.mk vendored Normal file
View File

@ -0,0 +1,2 @@
-include $(ROOT_DIR)/make/3rdparty/osgearth/osgearth.mk
-include $(ROOT_DIR)/make/3rdparty/marble/marble.mk

160
make/3rdparty/marble/marble.mk vendored Normal file
View File

@ -0,0 +1,160 @@
################################
# Targets to build Marble
#
################################
# Linux prerequisites
################################
#
#
################################
# Windows prerequisites
################################
#
#
################################
# Building
################################
#
# $ make all_marble
#
################################
# TODO should be discovered
QT_VERSION := 5.4.1
MARBLE_NAME_PREFIX :=
MARBLE_NAME_SUFIX := -qt-$(QT_VERSION)
################################
#
# Marble
#
################################
MARBLE_VERSION := master
MARBLE_GIT_BRANCH := $(MARBLE_VERSION)
MARBLE_BASE_NAME := marble-$(MARBLE_VERSION)
MARBLE_BUILD_CONF := Release
ifeq ($(UNAME), Linux)
ifeq ($(ARCH), x86_64)
MARBLE_NAME := $(MARBLE_BASE_NAME)-linux-x64
else
MARBLE_NAME := $(MARBLE_BASE_NAME)-linux-x86
endif
MARBLE_DATA_BASE_DIR := share/marble/data
MARBLE_CMAKE_GENERATOR := "Unix Makefiles"
# for some reason Qt is not added to the path in make/tools.mk
MARBLE_BUILD_PATH := $(QT_SDK_PREFIX)/bin:$(PATH)
else ifeq ($(UNAME), Darwin)
MARBLE_NAME := $(MARBLE_BASE_NAME)-clang_64
MARBLE_DATA_BASE_DIR := share/marble/data
MARBLE_CMAKE_GENERATOR := "Unix Makefiles"
# for some reason Qt is not added to the path in make/tools.mk
MARBLE_BUILD_PATH := $(QT_SDK_PREFIX)/bin:$(PATH)
else ifeq ($(UNAME), Windows)
MARBLE_NAME := $(MARBLE_BASE_NAME)-$(QT_SDK_ARCH)
MARBLE_DATA_BASE_DIR := data
MARBLE_CMAKE_GENERATOR := "MinGW Makefiles"
# CMake is quite picky about its PATH and will complain if sh.exe is found in it
MARBLE_BUILD_PATH := "$(TOOLS_DIR)/bin;$(QT_SDK_PREFIX)/bin;$(MINGW_DIR)/bin;$$SYSTEMROOT/System32"
endif
MARBLE_NAME := $(MARBLE_NAME_PREFIX)$(MARBLE_NAME)$(MARBLE_NAME_SUFIX)
MARBLE_SRC_DIR := $(ROOT_DIR)/3rdparty/marble
MARBLE_BUILD_DIR := $(BUILD_DIR)/3rdparty/$(MARBLE_NAME)
MARBLE_INSTALL_DIR := $(BUILD_DIR)/3rdparty/install/$(MARBLE_NAME)
MARBLE_DATA_DIR := $(MARBLE_INSTALL_DIR)/$(MARBLE_DATA_BASE_DIR)
MARBLE_PATCH_FILE := $(ROOT_DIR)/make/3rdparty/marble-$(MARBLE_VERSION)_patch.diff
.PHONY: marble
marble:
@$(ECHO) "Building marble $(call toprel, $(MARBLE_SRC_DIR)) into $(call toprel, $(MARBLE_BUILD_DIR))"
$(V1) $(MKDIR) -p $(MARBLE_BUILD_DIR)
$(V1) ( $(CD) $(MARBLE_BUILD_DIR) && \
PATH=$(MARBLE_BUILD_PATH) && \
$(CMAKE) -G $(MARBLE_CMAKE_GENERATOR) -DCMAKE_BUILD_TYPE=$(MARBLE_BUILD_CONF) \
-DQTONLY=1 -DQT5BUILD=1 -DWITH_DESIGNER_PLUGIN=0 \
-DCMAKE_INSTALL_PREFIX=$(MARBLE_INSTALL_DIR) $(MARBLE_SRC_DIR) && \
$(MAKE) && \
$(MAKE) install ; \
)
@$(ECHO) "Copying restricted maps to $(call toprel, $(MARBLE_DATA_DIR))"
@$(ECHO) "Copying Google Maps"
$(V1) $(MKDIR) -p $(MARBLE_DATA_DIR)/maps/earth/googlemaps
$(V1) $(CP) $(MARBLE_SRC_DIR)/googlemaps/googlemaps.dgml $(MARBLE_DATA_DIR)/maps/earth/googlemaps/
$(V1) $(CP) $(MARBLE_SRC_DIR)/googlemaps/preview.png $(MARBLE_DATA_DIR)/maps/earth/googlemaps/
$(V1) $(CP) -R $(MARBLE_SRC_DIR)/googlemaps/0 $(MARBLE_DATA_DIR)/maps/earth/googlemaps/
@$(ECHO) "Copying Google Sat"
$(V1) $(MKDIR) -p $(MARBLE_DATA_DIR)/maps/earth/googlesat
$(V1) $(CP) $(MARBLE_SRC_DIR)/googlesat/googlesat.dgml $(MARBLE_DATA_DIR)/maps/earth/googlesat/
$(V1) $(CP) $(MARBLE_SRC_DIR)/googlesat/preview.png $(MARBLE_DATA_DIR)/maps/earth/googlesat/
$(V1) $(CP) -R $(MARBLE_SRC_DIR)/googlesat/0 $(MARBLE_DATA_DIR)/maps/earth/googlesat/
$(V1) $(CP) -R $(MARBLE_SRC_DIR)/googlesat/bicycle $(MARBLE_DATA_DIR)/maps/earth/googlesat/
$(V1) $(CP) -R $(MARBLE_SRC_DIR)/googlesat/streets $(MARBLE_DATA_DIR)/maps/earth/googlesat/
.PHONY: package_marble
package_marble:
@$(ECHO) "Packaging $(call toprel, $(MARBLE_INSTALL_DIR)) into $(notdir $(MARBLE_INSTALL_DIR)).tar"
$(V1) $(CP) $(ROOT_DIR)/make/3rdparty/OpenPilotReadme.txt $(MARBLE_INSTALL_DIR)/
$(V1) ( \
$(CD) $(MARBLE_INSTALL_DIR)/.. && \
$(TAR) cf $(notdir $(MARBLE_INSTALL_DIR)).tar $(notdir $(MARBLE_INSTALL_DIR)) && \
$(ZIP) -f $(notdir $(MARBLE_INSTALL_DIR)).tar && \
$(call MD5_GEN_TEMPLATE,$(notdir $(MARBLE_INSTALL_DIR)).tar.gz) ; \
)
.NOTPARALLEL:
.PHONY: prepare_marble
prepare_marble: clone_marble
.PHONY: clone_marble
clone_marble:
$(V1) if [ ! -d "$(MARBLE_SRC_DIR)" ]; then \
$(ECHO) "Cloning marble..." ; \
$(GIT) clone --no-checkout git://anongit.kde.org/marble $(MARBLE_SRC_DIR) ; \
fi
@$(ECHO) "Fetching marble..."
$(V1) ( $(CD) $(MARBLE_SRC_DIR) && $(GIT) fetch ; )
@$(ECHO) "Checking out marble branch $(MARBLE_GIT_BRANCH)"
$(V1) ( $(CD) $(MARBLE_SRC_DIR) && $(GIT) checkout --quiet --force $(MARBLE_GIT_BRANCH) ; )
$(V1) if [ -e $(MARBLE_PATCH_FILE) ]; then \
$(ECHO) "Patching marble..." ; \
( $(CD) $(MARBLE_SRC_DIR) && $(GIT) apply $(MARBLE_PATCH_FILE) ; ) \
fi
$(V1) if [ ! -d "$(MARBLE_SRC_DIR)/googlemaps" ]; then \
$(ECHO) "Cloning googlemaps to $(call toprel, $(MARBLE_SRC_DIR)/googlemaps)" ; \
$(GIT) clone https://gitorious.org/marble-restricted-maps/googlemaps.git $(MARBLE_SRC_DIR)/googlemaps ; \
fi
@$(ECHO) "Fetching googlemaps..."
$(V1) ( $(CD) $(MARBLE_SRC_DIR)/googlemaps && $(GIT) fetch ; )
@$(ECHO) "Checking out googlemaps"
$(V1) ( $(CD) $(MARBLE_SRC_DIR)/googlemaps && $(GIT) checkout --quiet --force master ; )
$(V1) if [ ! -d "$(MARBLE_SRC_DIR)/googlesat" ]; then \
$(ECHO) "Cloning googlesat to $(call toprel, $(MARBLE_SRC_DIR)/googlesat)" ; \
$(GIT) clone https://gitorious.org/marble-restricted-maps/googlesat.git $(MARBLE_SRC_DIR)/googlesat ; \
fi
@$(ECHO) "Fetching googlesat..."
$(V1) ( $(CD) $(MARBLE_SRC_DIR)/googlesat && $(GIT) fetch ; )
@$(ECHO) "Checking out googlesat"
$(V1) ( $(CD) $(MARBLE_SRC_DIR)/googlesat && $(GIT) checkout --quiet --force master ; )
.PHONY: clean_marble
clean_marble:
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(MARBLE_BUILD_DIR))
$(V1) [ ! -d "$(MARBLE_BUILD_DIR)" ] || $(RM) -r "$(MARBLE_BUILD_DIR)"
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(MARBLE_INSTALL_DIR))
$(V1) [ ! -d "$(MARBLE_INSTALL_DIR)" ] || $(RM) -r "$(MARBLE_INSTALL_DIR)"
.PHONY: clean_all_marble
clean_all_marble: clean_marble
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(MARBLE_SRC_DIR))
$(V1) [ ! -d "$(MARBLE_SRC_DIR)" ] || $(RM) -r "$(MARBLE_SRC_DIR)"
.NOTPARALLEL:
.PHONY: all_marble
all_marble: prepare_marble marble package_marble

View File

@ -0,0 +1,48 @@
Index: GNUmakefile
===================================================================
--- GNUmakefile (revision 22722)
+++ GNUmakefile (copie de travail)
@@ -1,13 +1,13 @@
include GDALmake.opt
-GDAL_OBJ = $(GDAL_ROOT)/frmts/o/*.o \
- $(GDAL_ROOT)/gcore/*.o \
- $(GDAL_ROOT)/port/*.o \
- $(GDAL_ROOT)/alg/*.o
+GDAL_OBJ = ./frmts/o/*.o \
+ ./gcore/*.o \
+ ./port/*.o \
+ ./alg/*.o
ifeq ($(OGR_ENABLED),yes)
-GDAL_OBJ += $(GDAL_ROOT)/ogr/ogrsf_frmts/o/*.o
+GDAL_OBJ += ./ogr/ogrsf_frmts/o/*.o
endif
include ./ogr/file.lst
@@ -28,13 +28,8 @@
$(LD_SHARED) $(GDAL_SLIB_SONAME) $(GDAL_OBJ) $(GDAL_LIBS) $(LDFLAGS) $(LIBS) \
-o $(GDAL_SLIB)
-$(GDAL_LIB): $(GDAL_OBJ) GDALmake.opt
- rm -f libgdal.a
- $(AR) r $(GDAL_LIB) $(GDAL_OBJ)
- $(RANLIB) $(GDAL_LIB)
-
-$(GDAL_SLIB): $(GDAL_OBJ) $(GDAL_LIB)
- $(LD_SHARED) $(GDAL_SLIB_SONAME) $(GDAL_OBJ) $(GDAL_LIBS) $(LDFLAGS) $(LIBS) \
+$(GDAL_SLIB): $(GDAL_OBJ)
+ $(LD_SHARED) $(GDAL_SLIB_SONAME) $(GDAL_OBJ) $(LDFLAGS) $(LIBS) \
-o $(GDAL_SLIB)
$(LIBGDAL): $(GDAL_OBJ:.o=.lo)
@@ -47,7 +42,7 @@
endif
check-lib: port-target core-target frmts-target ogr-target
- $(MAKE) $(LIBGDAL-yes)
+ $(MAKE) $(GDAL_SLIB)
port-target:
(cd port; $(MAKE))

326
make/3rdparty/osgearth/osgearth.mk vendored Normal file
View File

@ -0,0 +1,326 @@
################################
# Targets to build osg and osgearth
#
################################
# Linux prerequisites
################################
#
# Install development libraries for:
# - zlib
# - jpeg
# - png
# - tiff
# - curl
# - geos
# - gdal
#
# $ sudo apt-get build-dep openscenegraph
#
# $ sudo apt-get install libtiff5-dev libcurl4-openssl-dev libgeos++-dev libgdal-dev
# libpng-dev lipjpeg-dev
#
# $ curl --version
# curl 7.35.0 (i686-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
# Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp
# Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
#
# $ gdal-config --version
# 1.10.1
#
# If using Qt 5.3.1, you'll need to workaround this issue : https://bugreports.qt-project.org/browse/QTBUG-39859
# by editing the file : ./tool/qt-5.3.1/5.3/gcc/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake
# and commenting out this line : _qt5gui_find_extra_libs(EGL "EGL" "" "/usr/include/libdrm")
#
################################
# Windows prerequisites
################################
#
# Windows versions of osg and osgearth require many additional libraries to be build
# See osg_win.sh
#
################################
# OSX prerequisites
################################
#
# brew install cmake
# brew install gdal
#
################################
# Building
################################
#
# $ make all_osg
#
# This will:
# - clone the git repositories into the ./3rdparty directory
# - build osg in the build directory, building steps are : cmake, make, make install
# - intall osg (in the OP tools directory)
# - create distribution files in the build directory
# - TODO: upload distribution files to the OP wiki download page
#
################################
# Todo
# - install osgearth in osg (a minor issue in the osgearth cmake file prevents it)
# easy to fix then set INSTALL_TO_OSG_DIR=ON when running cmake on osgearth
# - don't build osg deprecated code (if we don't use it...)
# - add targets to publish distribution files to OP wiki.
# - provide complete list of dependencies for osg and osgearth (current list is most probably incomplete as I already had some stuff installed)
#
################################
# TODO should be discovered
QT_VERSION := 5.4.1
################################
#
# common stuff
#
################################
OSG_BUILD_CONF := Release
OSG_NAME_PREFIX :=
OSG_NAME_SUFIX := -qt-$(QT_VERSION)
################################
#
# osg
#
################################
#OSG_VERSION := 0b63c8ffde
#OSG_GIT_BRANCH := $(OSG_VERSION)
#OSG_VERSION := 3.4.0-rc5
#OSG_GIT_BRANCH := tags/OpenSceneGraph-$(OSG_VERSION)
OSG_VERSION := 3.4
OSG_GIT_BRANCH := OpenSceneGraph-$(OSG_VERSION)
OSG_BASE_NAME := osg-$(OSG_VERSION)
ifeq ($(UNAME), Linux)
ifeq ($(ARCH), x86_64)
OSG_NAME := $(OSG_BASE_NAME)-linux-x64
else
OSG_NAME := $(OSG_BASE_NAME)-linux-x86
endif
OSG_CMAKE_GENERATOR := "Unix Makefiles"
OSG_WINDOWING_SYSTEM := "X11"
# for some reason Qt is not added to the path in make/tools.mk
OSG_BUILD_PATH := $(QT_SDK_PREFIX)/bin:$(PATH)
else ifeq ($(UNAME), Darwin)
OSG_NAME := $(OSG_BASE_NAME)-clang_64
OSG_CMAKE_GENERATOR := "Unix Makefiles"
OSG_WINDOWING_SYSTEM := "Cocoa"
OSG_BUILD_PATH := $(QT_SDK_PREFIX)/bin:$(PATH)
else ifeq ($(UNAME), Windows)
OSG_NAME := $(OSG_BASE_NAME)-$(QT_SDK_ARCH)
OSG_CMAKE_GENERATOR := "MinGW Makefiles"
# CMake is quite picky about its PATH and will complain if sh.exe is found in it
OSG_BUILD_PATH := "$(TOOLS_DIR)/bin;$(QT_SDK_PREFIX)/bin;$(MINGW_DIR)/bin"
endif
OSG_NAME := $(OSG_NAME_PREFIX)$(OSG_NAME)$(OSG_NAME_SUFIX)
OSG_SRC_DIR := $(ROOT_DIR)/3rdparty/osg
OSG_BUILD_DIR := $(BUILD_DIR)/3rdparty/$(OSG_NAME)
OSG_INSTALL_DIR := $(BUILD_DIR)/3rdparty/install/$(OSG_NAME)
OSG_PATCH_FILE := $(ROOT_DIR)/make/3rdparty/osg-$(OSG_VERSION)_patch.diff
.PHONY: osg
osg:
@$(ECHO) "Building osg $(call toprel, $(OSG_SRC_DIR)) into $(call toprel, $(OSG_BUILD_DIR))"
$(V1) $(MKDIR) -p $(OSG_BUILD_DIR)
$(V1) ( $(CD) $(OSG_BUILD_DIR) && \
PATH=$(OSG_BUILD_PATH) && \
$(CMAKE) -G $(OSG_CMAKE_GENERATOR) -DCMAKE_BUILD_TYPE=$(OSG_BUILD_CONF) \
-DOSG_USE_QT=ON \
-DBUILD_OSG_APPLICATIONS=ON \
-DBUILD_OSG_EXAMPLES=OFF \
-DBUILD_OPENTHREADS_WITH_QT=OFF \
-DOSG_GL3_AVAILABLE=OFF \
-DOSG_PLUGIN_SEARCH_INSTALL_DIR_FOR_PLUGINS=OFF \
-DCMAKE_PREFIX_PATH=$(BUILD_DIR)/3rdparty/osg_dependencies \
-DCMAKE_OSX_ARCHITECTURES="x86_64" \
-DOSG_WINDOWING_SYSTEM=$(OSG_WINDOWING_SYSTEM) \
-DCMAKE_INSTALL_NAME_DIR=@executable_path/../Plugins \
-DCMAKE_INSTALL_PREFIX=$(OSG_INSTALL_DIR) $(OSG_SRC_DIR) && \
$(MAKE) && \
$(MAKE) install ; \
)
.PHONY: package_osg
package_osg:
@$(ECHO) "Packaging $(call toprel, $(OSG_INSTALL_DIR)) into $(notdir $(OSG_INSTALL_DIR)).tar"
#$(V1) $(CP) $(ROOT_DIR)/make/3rdparty/OpenPilotReadme.txt $(OSG_INSTALL_DIR)/
$(V1) ( \
$(CD) $(OSG_INSTALL_DIR)/.. && \
$(TAR) cf $(notdir $(OSG_INSTALL_DIR)).tar $(notdir $(OSG_INSTALL_DIR)) && \
$(ZIP) -f $(notdir $(OSG_INSTALL_DIR)).tar && \
$(call MD5_GEN_TEMPLATE,$(notdir $(OSG_INSTALL_DIR)).tar.gz) ; \
)
.PHONY: install_win_osg
install_win_osg:
$(V1) $(CP) $(BUILD_DIR)/3rdparty/osg_dependencies/bin/*.dll $(OSG_INSTALL_DIR)/bin/
$(V1) $(CP) $(BUILD_DIR)/3rdparty/osg_dependencies/lib/*.dll $(OSG_INSTALL_DIR)/bin/
.NOTPARALLEL:
.PHONY: prepare_osg
prepare_osg: clone_osg
.PHONY: clone_osg
clone_osg:
$(V1) if [ ! -d "$(OSG_SRC_DIR)" ]; then \
$(ECHO) "Cloning osg..." ; \
$(GIT) clone --no-checkout git://github.com/openscenegraph/osg.git $(OSG_SRC_DIR) ; \
fi
@$(ECHO) "Fetching osg..."
$(V1) ( $(CD) $(OSG_SRC_DIR) && $(GIT) fetch ; )
@$(ECHO) "Checking out osg $(OSG_GIT_BRANCH)"
$(V1) ( $(CD) $(OSG_SRC_DIR) && $(GIT) fetch --tags ; )
$(V1) ( $(CD) $(OSG_SRC_DIR) && $(GIT) checkout --quiet --force $(OSG_GIT_BRANCH) ; )
$(V1) if [ -e $(OSG_PATCH_FILE) ]; then \
$(ECHO) "Patching osg..." ; \
( $(CD) $(OSG_SRC_DIR) && $(GIT) apply $(OSG_PATCH_FILE) ; ) \
fi
.PHONY: clean_osg
clean_osg:
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(OSG_BUILD_DIR))
$(V1) [ ! -d "$(OSG_BUILD_DIR)" ] || $(RM) -r "$(OSG_BUILD_DIR)"
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(OSG_INSTALL_DIR))
$(V1) [ ! -d "$(OSG_INSTALL_DIR)" ] || $(RM) -r "$(OSG_INSTALL_DIR)"
.PHONY: clean_all_osg
clean_all_osg: clean_osg
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(OSG_SRC_DIR))
$(V1) [ ! -d "$(OSG_SRC_DIR)" ] || $(RM) -r "$(OSG_SRC_DIR)"
################################
#
# osgearth
#
################################
# TODO
# fix Debug build
# add option to not build the applications (in Debug mode in particular)
#OSGEARTH_VERSION := 1873b3a9489
#OSGEARTH_GIT_BRANCH := $(OSGEARTH_VERSION)
OSGEARTH_VERSION := 2.7
OSGEARTH_GIT_BRANCH := osgearth-$(OSGEARTH_VERSION)
OSGEARTH_BASE_NAME := osgearth-$(OSGEARTH_VERSION)
OSGEARTH_BUILD_CONF := $(OSG_BUILD_CONF)
# osgearth cmake script calls the osgversion executable to find the osg version
# this makes it necessary to have osg in the pathes (bin and lib) to make sure the correct one is found
# ideally this should not be necessary
ifeq ($(UNAME), Linux)
ifeq ($(ARCH), x86_64)
OSGEARTH_NAME := $(OSGEARTH_BASE_NAME)-linux-x64
else
OSGEARTH_NAME := $(OSGEARTH_BASE_NAME)-linux-x86
endif
OSGEARTH_CMAKE_GENERATOR := "Unix Makefiles"
# for some reason Qt is not added to the path in make/tools.mk
OSGEARTH_BUILD_PATH := $(QT_SDK_PREFIX)/bin:$(OSG_INSTALL_DIR)/bin:$(PATH)
else ifeq ($(UNAME), Darwin)
OSGEARTH_NAME := $(OSGEARTH_BASE_NAME)-clang_64
OSGEARTH_CMAKE_GENERATOR := "Unix Makefiles"
OSG_WINDOWING_SYSTEM := "Cocoa"
OSGEARTH_BUILD_PATH := $(QT_SDK_PREFIX)/bin:$(OSG_INSTALL_DIR)/bin:$(PATH)
else ifeq ($(UNAME), Windows)
OSGEARTH_NAME := $(OSGEARTH_BASE_NAME)-$(QT_SDK_ARCH)
OSGEARTH_CMAKE_GENERATOR := "MinGW Makefiles"
# CMake is quite picky about its PATH and will complain if sh.exe is found in it
OSGEARTH_BUILD_PATH := "$(TOOLS_DIR)/bin;$(QT_SDK_PREFIX)/bin;$(MINGW_DIR)/bin;$(OSG_INSTALL_DIR)/bin"
endif
OSGEARTH_NAME := $(OSG_NAME_PREFIX)$(OSGEARTH_NAME)$(OSG_NAME_SUFIX)
OSGEARTH_SRC_DIR := $(ROOT_DIR)/3rdparty/osgearth
OSGEARTH_BUILD_DIR := $(BUILD_DIR)/3rdparty/$(OSGEARTH_NAME)
# osgearth will be installed into osg (there is an offical option to do that but it seems broken on mingw)
#OSGEARTH_INSTALL_DIR := $(BUILD_DIR)/3rdparty/install/$(OSGEARTH_NAME)
OSGEARTH_INSTALL_DIR := $(OSG_INSTALL_DIR)
OSGEARTH_PATCH_FILE := $(ROOT_DIR)/make/3rdparty/osgearth-$(OSGEARTH_VERSION)_patch.diff
.PHONY: osgearth
osgearth:
@$(ECHO) "Building osgEarth $(call toprel, $(OSGEARTH_SRC_DIR)) into $(call toprel, $(OSGEARTH_BUILD_DIR))"
$(V1) $(MKDIR) -p $(OSGEARTH_BUILD_DIR)
$(V1) ( $(CD) $(OSGEARTH_BUILD_DIR) && \
PATH=$(OSGEARTH_BUILD_PATH) && \
LD_LIBRARY_PATH=$(OSG_INSTALL_DIR)/lib && \
export DYLD_LIBRARY_PATH=$(OSG_INSTALL_DIR)/lib && \
$(CMAKE) -G $(OSGEARTH_CMAKE_GENERATOR) -DCMAKE_BUILD_TYPE=$(OSGEARTH_BUILD_CONF) \
-DOSGEARTH_USE_QT=ON \
-DINSTALL_TO_OSG_DIR=OFF \
-DOSG_DIR=$(OSG_INSTALL_DIR) \
-DCMAKE_INCLUDE_PATH=$(OSG_INSTALL_DIR)/include \
-DCMAKE_LIBRARY_PATH=$(OSG_INSTALL_DIR)/lib \
-DCMAKE_PREFIX_PATH=$(BUILD_DIR)/3rdparty/osg_dependencies \
-DCMAKE_OSX_ARCHITECTURES="x86_64" \
-DOSG_WINDOWING_SYSTEM=$(OSG_WINDOWING_SYSTEM) \
-DCMAKE_INSTALL_NAME_DIR=@executable_path/../Plugins \
-DCMAKE_INSTALL_PREFIX=$(OSGEARTH_INSTALL_DIR) $(OSGEARTH_SRC_DIR) && \
$(MAKE) && \
$(MAKE) install ; \
)
.PHONY: package_osgearth
package_osgearth:
@$(ECHO) "Packaging $(call toprel, $(OSGEARTH_INSTALL_DIR)) into $(notdir $(OSGEARTH_INSTALL_DIR)).tar"
$(V1) ( \
$(CD) $(OSGEARTH_INSTALL_DIR)/.. && \
$(TAR) cf $(notdir $(OSGEARTH_INSTALL_DIR)).tar $(notdir $(OSGEARTH_INSTALL_DIR)) && \
$(ZIP) -f $(notdir $(OSGEARTH_INSTALL_DIR)).tar && \
$(call MD5_GEN_TEMPLATE,$(notdir $(OSGEARTH_INSTALL_DIR)).tar.gz) ; \
)
.NOTPARALLEL:
.PHONY: prepare_osgearth
prepare_osgearth: clone_osgearth
.PHONY: clone_osgearth
clone_osgearth:
$(V1) if [ ! -d "$(OSGEARTH_SRC_DIR)" ]; then \
$(ECHO) "Cloning osgearth..." ; \
$(GIT) clone --no-checkout git://github.com/gwaldron/osgearth.git $(OSGEARTH_SRC_DIR) ; \
fi
@$(ECHO) "Fetching osgearth..."
$(V1) ( $(CD) $(OSGEARTH_SRC_DIR) && $(GIT) fetch ; )
@$(ECHO) "Checking out osgearth $(OSGEARTH_GIT_BRANCH)"
$(V1) ( $(CD) $(OSGEARTH_SRC_DIR) && $(GIT) fetch --tags ; )
$(V1) ( $(CD) $(OSGEARTH_SRC_DIR) && $(GIT) checkout --quiet --force $(OSGEARTH_GIT_BRANCH) ; )
$(V1) if [ -f "$(OSGEARTH_PATCH_FILE)" ]; then \
$(ECHO) "Patching osgearth..." ; \
( $(CD) $(OSGEARTH_SRC_DIR) && $(GIT) apply $(OSGEARTH_PATCH_FILE) ; ) \
fi
.PHONY: clean_osgearth
clean_osgearth:
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(OSGEARTH_BUILD_DIR))
$(V1) [ ! -d "$(OSGEARTH_BUILD_DIR)" ] || $(RM) -r "$(OSGEARTH_BUILD_DIR)"
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(OSGEARTH_INSTALL_DIR))
$(V1) [ ! -d "$(OSGEARTH_INSTALL_DIR)" ] || $(RM) -r "$(OSGEARTH_INSTALL_DIR)"
.PHONY: clean_all_osgearth
clean_all_osgearth: clean_osgearth
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(OSGEARTH_SRC_DIR))
$(V1) [ ! -d "$(OSGEARTH_SRC_DIR)" ] || $(RM) -r "$(OSGEARTH_SRC_DIR)"
################################
#
# all
#
################################
.NOTPARALLEL:
.PHONY: all_osg
ifeq ($(UNAME), Windows)
all_osg: prepare_osg prepare_osgearth osg osgearth install_win_osg package_osg
else
all_osg: prepare_osg prepare_osgearth osg osgearth package_osg
endif

View File

@ -0,0 +1,348 @@
################################################################################
#!/bin/bash
################################################################################
#
# This script compiles GDAL and other dependencies needed by OSG and OSGEarth
#
# A good source for building with mingw :
# http://www.gaia-gis.it/gaia-sins/mingw_how_to.html
#
################################################################################
################################################################################
# Environment
################################################################################
WORKING_DIR=$PWD
ROOT_DIR=/d/Projects/OpenPilot
DOWNLOAD_DIR=$ROOT_DIR/downloads/osgearth
SOURCE_DIR=$ROOT_DIR/3rdparty/osgearth_dependencies
BUILD_DIR=$ROOT_DIR/build/3rdparty/osgearth_dependencies
HOST=mingw32
# list of libraries to build
# other candidates include bzip2, libxml2, gif, geotiff, ssl, gl...
BUILD_PKGCONFIG=1
BUILD_ZLIB=1
BUILD_LIBJPEG=1
BUILD_LIBPNG=1
BUILD_LIBTIFF=1
BUILD_FREETYPE=1
BUILD_OPENSSL=2
BUILD_CURL=1
BUILD_PROJ4=1
BUILD_GEOS=1
BUILD_GDAL=1
# TODO
# libcurl needs to be built with zlib and ssl support
# gdal does not seem to link with shared proj4
# document libraries (required by, requires)
mkdir -p $SOURCE_DIR/
mkdir -p $BUILD_DIR/bin/
mkdir -p $BUILD_DIR/include/
mkdir -p $BUILD_DIR/lib/
# make sure all libraries see each others
export PATH=$BUILD_DIR/bin:$PATH
export CPATH=$BUILD_DIR/include
export LIBRARY_PATH=$BUILD_DIR/lib
export PKG_CONFIG_PATH=$BUILD_DIR/lib/pkgconfig
# reduce binary sizes by removing the -g option (not picked up by all libraries)
export CFLAGS=-O2
export CXXFLAGS=-O2
################################################################################
# pkg-config
# required by libcurl, gdal, osg, osgearth
################################################################################
if [ "$BUILD_PKGCONFIG" -eq 1 ]; then
echo "****************************************"
echo "Building pkg-config..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/pkg-config-0.28.tar.gz -C .
cd pkg-config-0.28
./configure --prefix=$BUILD_DIR --build=$HOST \
--with-internal-glib
make
make install
fi
################################################################################
# ZLIB
# required by libcurl, gdal, osg, osgearth
################################################################################
if [ "$BUILD_ZLIB" -eq 1 ]; then
echo "****************************************"
echo "Building zlib..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/zlib-1.2.8.tar.gz -C .
cd zlib-1.2.8
make -f win32/Makefile.gcc clean
make -f win32/Makefile.gcc
cp -f zlib1.dll $BUILD_DIR/bin/
cp -f zconf.h $BUILD_DIR/include/
cp -f zlib.h $BUILD_DIR/include/
cp -f libz.a $BUILD_DIR/lib/
cp -f libz.dll.a $BUILD_DIR/lib/
fi
################################################################################
# LIBJPEG
# required by gdal, osg, osgearth
################################################################################
if [ "$BUILD_LIBJPEG" -eq 1 ]; then
echo "****************************************"
echo "Building libjpeg..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/jpegsrc.v9a.tar.gz -C .
cd jpeg-9a
./configure --prefix=$BUILD_DIR --build=$HOST
make
make install-strip
fi
################################################################################
# LIBPNG
# required by gdal, osg, osgearth
################################################################################
if [ "$BUILD_LIBPNG" -eq 1 ]; then
echo "****************************************"
echo "Building libpng..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/libpng-1.6.14.tar.gz -C .
cd libpng-1.6.14
./configure --prefix=$BUILD_DIR --build=$HOST
make
make install-strip
fi
################################################################################
# LIBTIFF
# reqires zlib
# required by gdal, osg, osgearth
################################################################################
if [ "$BUILD_LIBTIFF" -eq 1 ]; then
echo "****************************************"
echo "Building libtiff..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/tiff-4.0.3.tar.gz -C .
cd tiff-4.0.3
./configure --prefix=$BUILD_DIR --build=$HOST
make
make install-strip
fi
################################################################################
# FreeType
################################################################################
if [ "$BUILD_FREETYPE" -eq 1 ]; then
echo "****************************************"
echo "Building FreeType..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/freetype-2.5.3.tar.gz -C .
cd freetype-2.5.3
#unzip -q $DOWNLOAD_DIR/freetype-2.3.5-1-src.zip src/freetype/2.3.5/freetype-2.3.5/* -d $TEMP/freetype-2.3.5
#cp -r $TEMP/freetype-2.3.5/src/freetype/2.3.5/freetype-2.3.5 ./
#rm -rf $TEMP/freetype-2.3.5
#cd freetype-2.3.5
./configure --prefix=$BUILD_DIR
make
make install
# hack for osg
#mv $BUILD_DIR/include/freetype2 $BUILD_DIR/include/freetype
fi
################################################################################
# OpenSSL
################################################################################
if [ "$BUILD_OPENSSL" -eq 1 ]; then
echo "****************************************"
echo "Building OpenSSL..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/curl-7.38.0.tar.gz -C .
cd curl-7.38.0
./configure --prefix=$BUILD_DIR --build=$HOST
make
make install
fi
################################################################################
# cURL
# required by gdal, osgearth
################################################################################
if [ "$BUILD_CURL" -eq 1 ]; then
echo "****************************************"
echo "Building cURL..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/curl-7.38.0.tar.gz -C .
cd curl-7.38.0
# see http://curl.haxx.se/docs/install.html
#set ZLIB_PATH=c:\zlib-1.2.8
#set OPENSSL_PATH=c:\openssl-0.9.8y
#set LIBSSH2_PATH=c:\libssh2-1.4.3
#mingw32-make mingw32-zlib' to build with Zlib support;
#mingw32-make mingw32-ssl-zlib' to build with SSL and Zlib enabled;
#mingw32-make mingw32-ssh2-ssl-zlib' to build with SSH2, SSL, Zlib;
#mingw32-make mingw32-ssh2-ssl-sspi-zlib' to build with SSH2, SSL, Zlib
#mingw32-make mingw32
#cp -f src/curl.exe $BUILD_DIR/bin/
#cp -rf include/curl $BUILD_DIR/include/
#cp -f lib/libcurl.dll $BUILD_DIR/bin/
#cp -f lib/libcurldll.a $BUILD_DIR/lib/
#cp -f lib/libcurl.a $BUILD_DIR/lib/
./configure --prefix=$BUILD_DIR --build=$HOST \
--enable-shared=yes --with-zlib=$BUILD_DIR
make
make install-strip
fi
################################################################################
# PROJ.4
# required by osgearth
################################################################################
if [ "$BUILD_PROJ4" -eq 1 ]; then
echo "****************************************"
echo "Building PROJ.4..."
echo "****************************************"
cd $SOURCE_DIR
tar -xzf $DOWNLOAD_DIR/proj-4.8.0.tar.gz -C .
tar -xzf $DOWNLOAD_DIR/proj-datumgrid-1.5.tar.gz -C proj-4.8.0/nad/
cd proj-4.8.0
./configure --prefix=$BUILD_DIR --build=$HOST \
--enable-static=no --enable-shared=yes
make
make install
fi
################################################################################
# GEOS
# required by gdal
################################################################################
if [ "$BUILD_GEOS" -eq 1 ]; then
echo "****************************************"
echo "Building GEOS..."
echo "****************************************"
cd $SOURCE_DIR
tar xjf $DOWNLOAD_DIR/geos-3.3.8.tar.bz2 -C .
cd geos-3.3.8
# TODO why --disable-inline?
./configure --prefix=$BUILD_DIR --build=$HOST \
--enable-static=no --enable-shared=yes --disable-inline
make
make install
fi
################################################################################
# GDAL
# requires zlib, libcurl, libpng, libjpeg, libtiff, geos
# required by osgearth
################################################################################
if [ "$BUILD_GDAL" -eq 1 ]; then
echo "****************************************"
echo "Building GDAL..."
echo "****************************************"
cd $SOURCE_DIR
tar xzf $DOWNLOAD_DIR/gdal-1.10.1.tar.gz -C .
cd gdal-1.10.1
# fix GNUmakefile as described here http://trac.osgeo.org/gdal/wiki/BuildingWithMinGW
patch < $WORKING_DIR/gdal_GNUmakefile_fix.diff
./configure --prefix=$BUILD_DIR --build=$HOST \
--without-python --without-libtool \
--with-xerces=no \
--with-libz=$BUILD_DIR --with-curl=$BUILD_DIR \
--with-png=$BUILD_DIR --with-jpeg=$BUILD_DIR --with-libtiff=$BUILD_DIR \
--with-geos=$BUILD_DIR/bin/geos-config
make
make install
# --with-xerces=no --with-libz=$BUILD_DIR \
# --with-png=$BUILD_DIR --with-jpeg=$BUILD_DIR --with-curl=$BUILD_DIR
# --with-libtiff=$BUILD_DIR --with-geos=$BUILD_DIR/bin/geos-config
# $(CONFIGURE) --prefix=$BUILD_DIR --build=$(HOST) --enable-static=no --enable-shared=yes --without-python --without-libtool --with-libz=$(DEP_INSTALL_DIR) --with-libtiff=$(DEP_INSTALL_DIR) --with-png=$(DEP_INSTALL_DIR) --with-jpeg=$(DEP_INSTALL_DIR) && \
# --enable-static=no --enable-shared=yes
#./configure --prefix=$WORKSPACE/dist --enable-shared=yes --enable-static=yes --with-python=no --with-xerces=no --with-expat=$WORKSPACE/dist --with-expat-lib=-L$WORKSPACE/dist/lib --with-curl=no --with-sqlite3=$WORKSPACE/dist --with-odbc=no --with-mysql=no --with-oci=no --with-pg=$WORKSPACE/dist/bin/pg_config --with-geos=no --with-libz=internal --with-png=internal --with-libtiff=internal --with-geotiff=internal --with-jpeg=internal --with-gif=internal --with-jasper=no --with-mrsid=no --with-mrsid_lidar=no --with-ecw=no --with-pcraster=internal --with-xml2=no --with-threads=yes --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --without-libtool --enable-fast-install
#./configure --prefix=$WORKSPACE/dist --enable-shared=yes --enable-static=no --with-python=no --with-xerces=no --with-expat=$WORKSPACE/dist --with-curl=no --with-sqlite3=$WORKSPACE/dist --with-odbc=no --with-mysql=no --with-oci=no --with-pg=$WORKSPACE/dist/bin/pg_config --with-geos=yes --with-libz=internal --with-png=internal --with-libtiff=internal --with-geotiff=internal --with-jpeg=internal --with-gif=internal --with-jasper=no --with-mrsid=no --with-mrsid_lidar=no --with-ecw=no --with-pcraster=internal --with-threads=yes --host=$HOST --build=$HOST --without-libtool --enable-fast-install --with-expat-lib=-L$WORKSPACE/dist/lib
fi
################################################################################