Improvements to makefiles

- Added cmake file to find D-Bus
- Removed remaining AddEngine stuff
- Fixed cross compiling for windows trying to use dbus after previous commit
- Compilation tested on Linux, FreeBSD, OpenBSD and cross compilation from linux for windows using mingw compiler
This commit is contained in:
Jonas Kvinge
2018-05-15 00:25:30 +02:00
parent 6b1ae5d5ac
commit eab25bbd17
6 changed files with 303 additions and 310 deletions

View File

@@ -1,88 +0,0 @@
# Strawberry Music Player
# Copyright 2013, Jonas Kvinge <jonas@strawbs.net>
#
# Strawberry 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, either version 3 of the License, or
# (at your option) any later version.
#
# Strawberry 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 Strawberry. If not, see <http://www.gnu.org/licenses/>.
macro(add_engine engine_lower engine_upper lib_list src_list inc_list enabled)
#message(STATUS "ADD ENGINE: ${engine_lower} ${engine_upper} ${lib_list} ${src_list} ${inc_list} ${enabled}")
#set(ENGINE_LIBRARIES "")
# recreate list
set(lib_list ${lib_list})
#list(GET lib_list 0 name)
# add a user selectable build option
option(ENGINE_${engine_upper}_ENABLED "enable engine ${engine_upper}" ${enabled})
# check if engine is enabled and needed librares are available
if(ENGINE_${engine_upper}_ENABLED)
# check for all needed libraries
foreach(lib ${lib_list})
#pkg_check_modules(${lib} ${lib})
if (NOT ${lib}_FOUND MATCHES 1)
set(ENGINE_${engine_upper}_LIB_MISSING TRUE)
endif(NOT ${lib}_FOUND MATCHES 1)
endforeach(lib ${lib_list})
if(ENGINE_${engine_upper}_LIB_MISSING)
set(ENGINES_MISSING "${ENGINES_MISSING} ${engine_lower}")
#set("HAVE_${engine_upper}" 0 CACHE INTERNAL ${engine_upper})
set("HAVE_${engine_upper}" OFF)
else(ENGINE_${engine_upper}_LIB_MISSING)
# add define -DHAVE_<engine> so we can clutter the code with #ifdefs
#set("HAVE_${engine_upper}" 1 CACHE INTERNAL ${engine_upper})
set("HAVE_${engine_upper}" ON)
# add sources and headers
list(APPEND SOURCES ${src_list})
list(APPEND HEADERS ${inc_list})
# add libraries to link against
foreach(lib ${lib_list})
#set(ENGINE_LIBRARIES ${ENGINE_LIBRARIES} ${${lib}_LIBRARIES} CACHE INTERNAL libraries)
set(ENGINE_LIBRARIES ${ENGINE_LIBRARIES} ${${lib}_LIBRARIES})
endforeach(lib ${lib_list})
# add to list of enabled engines
set(ENGINES_ENABLED "${ENGINES_ENABLED} ${engine_lower}")
endif(ENGINE_${engine_upper}_LIB_MISSING)
else(ENGINE_${engine_upper}_ENABLED)
set(ENGINES_DISABLED "${ENGINES_DISABLED} ${engine_lower}")
#set("HAVE_${engine_upper}" 0 CACHE INTERNAL ${engine_upper})
set("HAVE_${engine_upper}" OFF)
endif(ENGINE_${engine_upper}_ENABLED)
endmacro(add_engine engine_lower engine_upper lib_list src_list inc_list enabled)
# print engines to be built
macro(print_engines)
if(ENGINES_ENABLED)
message(STATUS "Building engines:${ENGINES_ENABLED}")
endif(ENGINES_ENABLED)
if(ENGINES_DISABLED)
message(STATUS "Disabled engines:${ENGINES_DISABLED}")
endif(ENGINES_DISABLED)
if(ENGINES_MISSING)
message(STATUS "Missing engines:${ENGINES_MISSING}")
endif(ENGINES_MISSING)
#message(STATUS "Engine libraries:${ENGINE_LIBRARIES}")
# need at least 1 engine
if(NOT ENGINES_ENABLED)
message(FATAL_ERROR "No engine enabled!")
endif(NOT ENGINES_ENABLED)
endmacro(print_engines)

43
cmake/FindDBus.cmake Normal file
View File

@@ -0,0 +1,43 @@
if(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
# Already in cache, be silent
set(DBUS_FIND_QUIETLY TRUE)
endif(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
set(DBUS_LIBRARY)
set(DBUS_INCLUDE_DIR)
set(DBUS_ARCH_INCLUDE_DIR)
FIND_PATH(DBUS_INCLUDE_DIR dbus/dbus.h
/usr/include
/usr/include/dbus-1.0
/usr/local/include
/usr/local/include/dbus-1.0
)
FIND_PATH(DBUS_ARCH_INCLUDE_DIR dbus/dbus-arch-deps.h
/usr/lib/include
/usr/lib/dbus-1.0/include
/usr/lib64/include
/usr/lib64/dbus-1.0/include
/usr/local/lib/include
/usr/local/lib/dbus-1.0/include
/usr/local/lib64/include
/usr/local/lib64/dbus-1.0/include
)
FIND_LIBRARY(DBUS_LIBRARY NAMES dbus-1 dbus
PATHS
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
)
if(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
MESSAGE(STATUS "D-Bus found: includes in ${DBUS_INCLUDE_DIR}, library in ${DBUS_LIBRARY}")
set(DBUS_FOUND TRUE)
else(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
MESSAGE(STATUS "D-Bus not found")
endif(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
MARK_AS_ADVANCED(DBUS_INCLUDE_DIR DBUS_LIBRARY DBUS_ARCH_INCLUDE_DIR)