Switch from Jam to Make

This commit is contained in:
Jaidyn Ann 2021-05-19 16:12:19 -05:00
parent c6c1bb349a
commit df55e1d9f5
49 changed files with 838 additions and 1935 deletions

10
Jamfile
View File

@ -1,10 +0,0 @@
SubDir TOP ;
# Include all the components
SubInclude TOP libs ;
SubInclude TOP application ;
SubInclude TOP protocols ;
SubInclude TOP smileys ;
UninstallTarget $(CAYA_DIRECTORY) ;
UninstallTarget $(SYSTEM_INCLUDE_DIRECTORY)/caya ;

View File

@ -1,70 +0,0 @@
# The directories used by the build.
BUILD_DIR = [ FDirName $(TOP) build ] ;
JAM_DIR = [ FDirName $(BUILD_DIR) jam ] ;
SCRIPTS_DIR = [ FDirName $(JAM_DIR) scripts ] ;
GENERATED_DIR = [ FDirName $(TOP) generated ] ;
DISTRO_DIR = [ FDirName $(TOP) generated distro ] ;
FULL_DISTRO_DIR = [ FDirName $(TOP) generated fulldistro ] ;
PACKAGE_DIR = [ FDirName $(GENERATED_DIR) packages ] ;
PACKAGE_OBJECT_DIR = [ FDirName $(PACKAGE_DIR) objects ] ;
##-------------------------------------------------------------------
## Defines
##-------------------------------------------------------------------
VERSION = 0.0.1 ;
DEFINES += VERSION=\"\\\"$(VERSION)\\\"\" ;
DEFINES += BUILD_DATE=\"\\\"$(JAMDATE)\\\"\" ;
CHGRP = ;
CHOWN = ;
# Include BuildConfig generated by configure
{
local buildConfig = [ Glob $(GENERATED_DIR) : BuildConfig ] ;
if $(buildConfig) {
LOCATE on BuildConfig = $(GENERATED_DIR) ;
include BuildConfig ;
} else {
Exit "Run ./configure first!" ;
}
}
# Include UserBuildConfig
{
local userBuildConfig = [ Glob $(JAM_DIR) : UserBuildConfig ] ;
if $(userBuildConfig) {
LOCATE on UserBuildConfig = $(JAM_DIR) ;
include UserBuildConfig ;
}
}
# Cache files for header scanning and jamfile caching.
HCACHEFILE = header_cache ;
JCACHEFILE = jamfile_cache ;
LOCATE on $(HCACHEFILE) $(JCACHEFILE) = $(GENERATED_DIR) ;
# Perform configuration checks
include [ FDirName $(JAM_DIR) CheckRules ] ;
CheckGccPlatform ;
CheckOpenSSL ;
if ! $(HAVE_OPENSSL) {
Echo "Warning OpenSSL is missing!" ;
exit 0 ;
}
CheckExpat ;
if ! $(HAVE_EXPAT) {
Echo "Warning Expat is missing!" ;
exit 1 ;
}
# Include jam scripts
include [ FDirName $(JAM_DIR) HelperRules ] ;
include [ FDirName $(JAM_DIR) ConfigRules ] ;
include [ FDirName $(JAM_DIR) OverriddenJamRules ] ;
include [ FDirName $(JAM_DIR) MainBuildRules ] ;
include [ FDirName $(JAM_DIR) FileRules ] ;
include [ FDirName $(JAM_DIR) InstallRules ] ;
include [ FDirName $(JAM_DIR) PackageRules ] ;
include [ FDirName $(JAM_DIR) DistroRules ] ;
include [ FDirName $(JAM_DIR) BuildSettings ] ;

18
Makefile Normal file
View File

@ -0,0 +1,18 @@
.DEFAULT_GOAL := default
caya:
$(MAKE) -f application/Makefile
protocols:
$(MAKE) -f protocols/Makefile
libs:
$(MAKE) -f libs/Makefile
clean:
$(MAKE) -f application/Makefile clean
all: libs protocols caya
.PHONY: libs protocols
default: all

5
Makefile.common Normal file
View File

@ -0,0 +1,5 @@
LIBPATHS = $(OBJ_DIR)
PROTOCOL_DIR = $(OBJ_DIR)/protocols/
DEFINES := VERSION="\"0.0.2\"" BUILD_DATE="\"$(shell date +"%Y-%m-%d %H:%M")\""

View File

@ -6,6 +6,8 @@
* Andrea Anzani, andrea.anzani@gmail.com
*/
#include "ChatWindow.h"
#include <Alert.h>
#include <Application.h>
#include <Box.h>
@ -24,11 +26,11 @@
#include <String.h>
#include <Notification.h>
#include "BitmapView.h"
#include <libinterface/BitmapView.h>
#include "CayaMessages.h"
#include "CayaProtocolMessages.h"
#include "CayaPreferences.h"
#include "ChatWindow.h"
#include "ContactLinker.h"
#include "EditingFilter.h"
#include "CayaConstants.h"

View File

@ -1,71 +0,0 @@
SubDir TOP application ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(TOP) libs libjabber ] ;
SubDirSysHdrs [ FDirName $(TOP) libs librunview ] ;
SubDirSysHdrs [ FDirName $(TOP) libs libinterface ] ;
SubDirSysHdrs [ FDirName $(OPENSSL_INCLUDE_DIR) ] ;
SEARCH_SOURCE += [ FDirName $(TOP) application preferences ] ;
SEARCH_SOURCE += [ FDirName $(TOP) application views ] ;
Application Caya :
AboutWindow.cpp
Account.cpp
AccountManager.cpp
CayaProtocolAddOn.cpp
CayaUtils.cpp
ChatWindow.cpp
ContactLinker.cpp
EditingFilter.cpp
ImageCache.cpp
Main.cpp
MainWindow.cpp
Notifier.cpp
ProtocolLooper.cpp
ProtocolManager.cpp
ProtocolSettings.cpp
Server.cpp
TheApp.cpp
WindowsManager.cpp
# preferences
AccountDialog.cpp
AccountListItem.cpp
AccountView.cpp
CayaPreferences.cpp
PreferencesDialog.cpp
PreferencesAccounts.cpp
PreferencesBehavior.cpp
PreferencesReplicant.cpp
PreferencesChatWindow.cpp
# views
ContactPopUp.cpp
SearchBarTextControl.cpp
NicknameTextControl.cpp
RosterItem.cpp
RosterListView.cpp
ContactInfoWindow.cpp
StatusMenuItem.cpp
StatusView.cpp
CayaRenderView.cpp
ReplicantStatusView.cpp
ReplicantMenuItem.cpp
: be $(TARGET_LIBSTDC++) translation expat
libinterface.a librunview.a libsupport.a
: Caya.rdef
;
Depends Caya : libinterface.a ;
Depends Caya : librunview.a ;
Depends Caya : libsupport.a ;
LINKFLAGS on Caya += -L$(EXPAT_LIBRARY_DIR) ;
InstallBin $(CAYA_DIRECTORY) : Caya ;
InstallFile $(SYSTEM_INCLUDE_DIRECTORY)/caya : CayaConstants.h ;
InstallFile $(SYSTEM_INCLUDE_DIRECTORY)/caya : CayaProtocol.h ;
InstallFile $(SYSTEM_INCLUDE_DIRECTORY)/caya : CayaProtocolMessages.h ;

174
application/Makefile Normal file
View File

@ -0,0 +1,174 @@
## Haiku Generic Makefile v2.6 ##
## Fill in this file to specify the project being created, and the referenced
## Makefile-Engine will do all of the hard work for you. This handles any
## architecture of Haiku.
##
## For more information, see:
## file:///system/develop/documentation/makefile-engine.html
# The name of the binary.
NAME = Caya
# The type of binary, must be one of:
# APP: Application
# SHARED: Shared library or add-on
# STATIC: Static library archive
# DRIVER: Kernel driver
TYPE = APP
# If you plan to use localization, specify the application's MIME signature.
APP_MIME_SIG = application/x-vnd.caya.Caya
# The following lines tell Pe and Eddie where the SRCS, RDEFS, and RSRCS are
# so that Pe and Eddie can fill them in for you.
#%{
# @src->@
# Specify the source files to use. Full paths or paths relative to the
# Makefile can be included. All files, regardless of directory, will have
# their object files created in the common object directory. Note that this
# means this Makefile will not work correctly if two source files with the
# same name (source.c or source.cpp) are included from different directories.
# Also note that spaces in folder names do not work well with this Makefile.
SRCS = \
application/AboutWindow.cpp \
application/Account.cpp \
application/AccountManager.cpp \
application/CayaProtocolAddOn.cpp \
application/CayaUtils.cpp \
application/ChatWindow.cpp \
application/ContactLinker.cpp \
application/EditingFilter.cpp \
application/ImageCache.cpp \
application/Main.cpp \
application/MainWindow.cpp \
application/Notifier.cpp \
application/ProtocolLooper.cpp \
application/ProtocolManager.cpp \
application/ProtocolSettings.cpp \
application/Server.cpp \
application/TheApp.cpp \
application/WindowsManager.cpp \
application/preferences/AccountDialog.cpp \
application/preferences/AccountListItem.cpp \
application/preferences/AccountView.cpp \
application/preferences/CayaPreferences.cpp \
application/preferences/PreferencesDialog.cpp \
application/preferences/PreferencesAccounts.cpp \
application/preferences/PreferencesBehavior.cpp \
application/preferences/PreferencesReplicant.cpp \
application/preferences/PreferencesChatWindow.cpp \
application/views/ContactPopUp.cpp \
application/views/SearchBarTextControl.cpp \
application/views/NicknameTextControl.cpp \
application/views/RosterItem.cpp \
application/views/RosterListView.cpp \
application/views/ContactInfoWindow.cpp \
application/views/StatusMenuItem.cpp \
application/views/StatusView.cpp \
application/views/CayaRenderView.cpp \
application/views/ReplicantStatusView.cpp \
application/views/ReplicantMenuItem.cpp
# Specify the resource definition files to use. Full or relative paths can be
# used.
RDEFS = Caya.rdef
# Specify the resource files to use. Full or relative paths can be used.
# Both RDEFS and RSRCS can be utilized in the same Makefile.
RSRCS =
# End Pe/Eddie support.
# @<-src@
#%}
# Specify libraries to link against.
# There are two acceptable forms of library specifications:
# - if your library follows the naming pattern of libXXX.so or libXXX.a,
# you can simply specify XXX for the library. (e.g. the entry for
# "libtracker.so" would be "tracker")
#
# - for GCC-independent linking of standard C++ libraries, you can use
# $(STDCPPLIBS) instead of the raw "stdc++[.r4] [supc++]" library names.
#
# - if your library does not follow the standard library naming scheme,
# you need to specify the path to the library and it's name.
# (e.g. for mylib.a, specify "mylib.a" or "path/mylib.a")
LIBS = be expat interface runview shared support translation $(STDCPPLIBS)
# Specify additional paths to directories following the standard libXXX.so
# or libXXX.a naming scheme. You can specify full paths or paths relative
# to the Makefile. The paths included are not parsed recursively, so
# include all of the paths where libraries must be found. Directories where
# source files were specified are automatically included.
LIBPATHS =
# Additional paths to look for system headers. These use the form
# "#include <header>". Directories that contain the files in SRCS are
# NOT auto-included here.
SYSTEM_INCLUDE_PATHS = libs/
# Additional paths paths to look for local headers. These use the form
# #include "header". Directories that contain the files in SRCS are
# automatically included.
LOCAL_INCLUDE_PATHS =
# Specify the level of optimization that you want. Specify either NONE (O0),
# SOME (O1), FULL (O3), or leave blank (for the default optimization level).
OPTIMIZE :=
# Specify the codes for languages you are going to support in this
# application. The default "en" one must be provided too. "make catkeys"
# will recreate only the "locales/en.catkeys" file. Use it as a template
# for creating catkeys for other languages. All localization files must be
# placed in the "locales" subdirectory.
LOCALES =
# Specify all the preprocessor symbols to be defined. The symbols will not
# have their values set automatically; you must supply the value (if any) to
# use. For example, setting DEFINES to "DEBUG=1" will cause the compiler
# option "-DDEBUG=1" to be used. Setting DEFINES to "DEBUG" would pass
# "-DDEBUG" on the compiler's command line.
DEFINES :=
# Specify the warning level. Either NONE (suppress all warnings),
# ALL (enable all warnings), or leave blank (enable default warnings).
WARNINGS =
# With image symbols, stack crawls in the debugger are meaningful.
# If set to "TRUE", symbols will be created.
SYMBOLS :=
# Includes debug information, which allows the binary to be debugged easily.
# If set to "TRUE", debug info will be created.
DEBUGGER :=
# Specify any additional compiler flags to be used.
COMPILER_FLAGS =
# Specify any additional linker flags to be used.
LINKER_FLAGS =
# Specify the version of this binary. Example:
# -app 3 4 0 d 0 -short 340 -long "340 "`echo -n -e '\302\251'`"1999 GNU GPL"
# This may also be specified in a resource.
APP_VERSION :=
# (Only used when "TYPE" is "DRIVER"). Specify the desired driver install
# location in the /dev hierarchy. Example:
# DRIVER_PATH = video/usb
# will instruct the "driverinstall" rule to place a symlink to your driver's
# binary in ~/add-ons/kernel/drivers/dev/video/usb, so that your driver will
# appear at /dev/video/usb when loaded. The default is "misc".
DRIVER_PATH =
## Include the Makefile-Engine
DEVEL_DIRECTORY := /boot/system/develop/
include $(DEVEL_DIRECTORY)/etc/makefile-engine
include Makefile.common
CC = g++

View File

@ -8,22 +8,24 @@
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
*/
#include "TheApp.h"
#include <stdio.h>
#include <Alert.h>
#include <Path.h>
#include <Roster.h>
#include <librunview/Emoticor.h>
#include "AboutWindow.h"
#include "Caya.h"
#include "CayaMessages.h"
#include "Emoticor.h"
#include "FilePanel.h"
#include "MainWindow.h"
#include "ProtocolManager.h"
#include "ReplicantStatusView.h"
#include "Server.h"
#include "TheApp.h"
TheApp::TheApp()
:

View File

@ -1,7 +1,9 @@
#include "CayaPreferences.h"
#include "CayaRenderView.h"
#include "Theme.h"
#include "RunView.h"
#include <librunview/RunView.h>
#include <librunview/Theme.h>
#include "CayaPreferences.h"
CayaRenderView::CayaRenderView(const char *name, const char* smileyConfig)

View File

@ -1,12 +1,14 @@
#ifndef _CayaRenderView_H
#define _CayaRenderView_H_
#include "RunView.h"
#include "SmileTextRender.h"
#include <librunview/RunView.h>
#include <librunview/SmileTextRender.h>
class RunView;
class Theme;
enum CayaRenderViewColors {
COL_URL = 0,
COL_TIMESTAMP,
@ -29,6 +31,7 @@ enum {
MAX_RENDERS
};
class CayaRenderView : public RunView
{
public:

View File

@ -6,6 +6,8 @@
* Casalinuovo Dario
*/
#include "ContactInfoWindow.h"
#include <Alert.h>
#include <Application.h>
#include <Box.h>
@ -18,7 +20,8 @@
#include <SpaceLayoutItem.h>
#include <String.h>
#include "BitmapView.h"
#include <libinterface/BitmapView.h>
#include "CayaMessages.h"
#include "CayaProtocolMessages.h"
#include "ContactLinker.h"
@ -27,7 +30,6 @@
#include "CayaUtils.h"
#include "NotifyMessage.h"
#include "ContactInfoWindow.h"
ContactInfoWindow::ContactInfoWindow(ContactLinker* linker)
:

View File

@ -6,16 +6,19 @@
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
*/
#include "ContactPopUp.h"
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
#include <StringView.h>
#include <TextControl.h>
#include "BitmapView.h"
#include <libinterface/BitmapView.h>
#include "ContactLinker.h"
#include "ContactPopUp.h"
#include "NotifyMessage.h"
const window_feel kMenuWindowFeel = window_feel(B_NORMAL_WINDOW_FEEL);
const int32 kNickChanged = 'NICH';

View File

@ -6,6 +6,10 @@
* Dario Casalinuovo
*/
#include "ReplicantStatusView.h"
#include <stdio.h>
#include <Application.h>
#include <AppFileInfo.h>
#include <Bitmap.h>
@ -20,19 +24,17 @@
#include <libinterface/BitmapMenuItem.h>
#include <libinterface/BitmapUtils.h>
#include <libinterface/BitmapView.h>
#include "AccountManager.h"
#include "BitmapView.h"
#include "Caya.h"
#include "CayaMessages.h"
#include "CayaPreferences.h"
#include "CayaProtocolMessages.h"
#include "CayaUtils.h"
#include "NicknameTextControl.h"
#include "ReplicantStatusView.h"
#include "ReplicantMenuItem.h"
#include <stdio.h>
extern "C" _EXPORT BView *instantiate_deskbar_item(void);

View File

@ -6,6 +6,8 @@
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
*/
#include "StatusView.h"
#include <Bitmap.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
@ -17,13 +19,13 @@
#include <libinterface/BitmapMenuItem.h>
#include <libinterface/BitmapUtils.h>
#include <libinterface/BitmapView.h>
#include "AccountManager.h"
#include "BitmapView.h"
#include "CayaUtils.h"
#include "NicknameTextControl.h"
#include "StatusMenuItem.h"
#include "StatusView.h"
const int32 kSetNickname = 'stnk';

View File

@ -1,113 +0,0 @@
# BuildSettings
#
# Setup global variables.
# C and C++ flags
if $(OSPLAT) = PPC {
# filter out -nosyspath
CFLAGS = [ FFilter $(CFLAGS) : -nosyspath ] ;
C++FLAGS = [ FFilter $(C++FLAGS) : -nosyspath ] ;
LINKFLAGS += -warn -export pragma ;
}
# Use copyattr for copying.
CP = copyattr --data ;
# Default paths for bison and flex:
BISON = bison ;
LEX = flex ;
# mkdir shall not fail, if the directory already exists.
MKDIR = mkdir -p ;
# by default we do not strip and do not build tests:
STRIP_APPS ?= 0 ;
BUILD_TESTS ?= 0 ;
# Enable debugging by default
DEBUG ?= 1 ;
rule SetUpSubDirBuildSettings
{
# SetUpSubDirBuildSettings <dir> ;
#
# Sets up the compiler flags and defines based on the WARNINGS, DEBUG, and
# OPTIMIZE variables. Also sets the locations for the targets (objects,
# libraries and executables).
#
# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
# TOP variable and the subdir tokens.
#
local dir = $(1) ;
# warnings settings
if $(WARNINGS) != 0 {
if $(OSPLAT) = X86 {
CCFLAGS += -Wall -Wno-multichar -Wpointer-arith
-Wmissing-prototypes -Wcast-align -Wsign-compare ;
C++FLAGS += -Wall -Wno-multichar -Wno-ctor-dtor-privacy -Woverloaded-virtual
-Wconversion -Wpointer-arith -Wcast-align
-Wsign-compare -Wno-reorder -Wno-unknown-pragmas ;
} else {
CCFLAGS += -w on -requireprotos ;
}
}
local gccString = ;
if $(IS_GCC4_PLATFORM) {
gccString += gcc4 ;
} else {
gccString += gcc2 ;
}
local binModeString = ;
if $(DEBUG) && $(DEBUG) != 0 {
binModeString += debug ;
} else {
binModeString += release ;
}
# debugging settings
if $(DEBUG) && $(DEBUG) != 0 {
OPTIMIZE = 0 ;
STRIP_APPS = 0 ;
DEFINES += DEBUG=$(DEBUG) BM_REF_DEBUGGING ;
CCFLAGS += -g ;
C++FLAGS += -g -fno-inline ;
LINKFLAGS += -g ;
}
DISTRO_DIR = [ FDirName $(TOP) generated distro-$(OS:L)-$(OSPLAT:L)-$(gccString)-$(binModeString) ] ;
OBJECTS_DIR = [ FDirName $(TOP) generated objects-$(OS:L)-$(OSPLAT:L)-$(gccString)-$(binModeString) ] ;
# optimization settings
if $(OPTIMIZE) = 0 {
if $(OSPLAT) = X86 {
OPTIM = -O0 ;
} else {
OPTIM = -O0 ;
}
} else {
if $(OSPLAT) = X86 {
OPTIM ?= -O3 -fstrict-aliasing ;
} else {
OPTIM ?= -O7 ;
}
}
# setup objects location
local objdir = [ FDirName $(OBJECTS_DIR) $(dir[2-]) ] ;
SEARCH_SOURCE += $(objdir) ;
LOCATE_SOURCE = $(objdir) ;
LOCATE_TARGET = $(objdir) ;
# setup main targets location
LOCATE_MAIN_TARGET ?= [ FDirName $(DISTRO_DIR) ] ;
}
# The LOCATE_MAIN_TARGET variable shall be reset for each subdirectory.
AUTO_SET_UP_CONFIG_VARIABLES += LOCATE_MAIN_TARGET ;
# Add the rules setting up the build settings for a subdirectory to the
# rules invoked by SubDir.
SUBDIRRULES += SetUpSubDirBuildSettings ;

View File

@ -1,70 +0,0 @@
# CheckRules
#
# Common checks.
rule CheckGccPlatform
{
# CheckGccPlatform ;
# Detects if we are using gcc4 and set IS_GCC4_PLATFORM according.
# First find out which gcc version the platform uses.
IS_GCC4_PLATFORM = ;
if $(OS) = HAIKU {
# Only Haiku might use gcc 4. We use the existence of a libstdc++.r4.so in
# /boot/develop/lib/x86 to judge whether this is a BeOS compatible and thus
# gcc 2 platform. This is not entirely correct, but should be good enough
# for the time being.
local haveLibStdC++.R4 = [ Glob /boot/system/develop/tools/lib : libstdc++.r4.so ] ;
if ! $(haveLibStdC++.R4) {
IS_GCC4_PLATFORM = 1 ;
Echo Using GCC4 platform ;
}
}
}
rule CheckOpenSSL
{
# CheckOpenSSL ;
# Check for OpenSSL and defined HAVE_OPENSSL according, it also defines
# OPENSSL_INCLUDE_DIR and OPENSSL_LIBRARY_DIR with location of respectively
# include and library files.
HAVE_OPENSSL = ;
OPENSSL_INCLUDE_DIR = ;
OPENSSL_LIBRARY_DIR = ;
local haveHeaders = [ Glob $(SYSTEM_INCLUDE_DIRECTORY)/openssl : ssl.h ] ;
if $(haveHeaders) {
OPENSSL_INCLUDE_DIR = $(SYSTEM_INCLUDE_DIRECTORY) ;
local haveLibs = [ Glob $(SYSTEM_DEVELOP_LIB_DIRECTORY) : libssl.so ] ;
if $(haveLibs) {
OPENSSL_LIBRARY_DIR = $(SYSTEM_DEVELOP_LIB_DIRECTORY) ;
Echo OpenSSL Headers: $(OPENSSL_INCLUDE_DIR) ;
Echo OpenSSL Libs: $(OPENSSL_LIBRARY_DIR) ;
}
HAVE_OPENSSL = $(haveLibs) ;
}
}
rule CheckExpat
{
HAVE_EXPAT = ;
EXPAT_INCLUDE_DIR = ;
EXPAT_LIBRARY_DIR = ;
local haveHeaders = [ Glob $(SYSTEM_INCLUDE_DIRECTORY)/ : expat.h ] ;
if $(haveHeaders) {
EXPAT_INCLUDE_DIR = $(SYSTEM_INCLUDE_DIRECTORY)/ ;
local haveLibs = [ Glob $(SYSTEM_DEVELOP_LIB_DIRECTORY) : libexpat.so ] ;
if $(haveLibs) {
EXPAT_LIBRARY_DIR = $(SYSTEM_DEVELOP_LIB_DIRECTORY) ;
Echo Expat Headers: $(EXPAT_INCLUDE_DIR) ;
Echo Expat Libs: $(EXPAT_LIBRARY_DIR) ;
}
HAVE_EXPAT = $(haveLibs) ;
}
}

View File

@ -1,146 +0,0 @@
# ConfigRules
#
# Contains rules providing the config variable feature. It allows to set the
# values for certain variables for subdirectories in a central place. That is
# one can, for instance, specify in a file like UserBuildConfig for which
# directories to enable debugging, warnings, set special defines, compiler
# flags and the like without needing to edit the Jamfiles for the respective
# dirs.
rule ConfigObject
{
# ConfigObject <dir> ;
#
# Private rule. Returns the dummy object on which the config variables are
# set for a given subdir.
#
# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
# TOP variable and the subdir tokens.
#
local config = __config__ ;
local grist = [ FGrist root $(1) ] ;
return $(config:G=$(grist)) ;
}
rule SetConfigVar
{
# SetConfigVar <var> : <dir> : <value> [ : <scope> ] ;
#
# Sets a config variable for a specified directory to the given value.
#
# <var>: The name of the variable to be set.
# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
# TOP variable and the subdir tokens.
# <value>: The value to which the variable shall be set.
# <scope>: Either "global" or "local". The former implies that the variable
# value shall also be used for subdirectories (recursively), if
# for them the variable has not been set. The latter has the same
# effect regarding subdirs as if the variable for the directory
# is not set. Defaults to "global".
#
local var = $(1[1]) ;
local config = [ ConfigObject $(2) ] ;
local scope = $(4) ;
if ! $(scope) {
scope = global ;
}
$(var) on $(config) = $(3) ;
__set_$(var) on $(config) = $(scope) ;
}
rule AppendToConfigVar
{
# AppendToConfigVar <var> : <dir> : <value> [ : <scope> ] ;
#
# Appends a value to a config variable for a specified directory. Shortcut
# for
# SetConfigVar <var> : <dir> : [ ConfigVar <var> : <dir> ] <value
# : <scope> ;
#
# <var>: The name of the variable to be set.
# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
# TOP variable and the subdir tokens.
# <value>: The value which to append to the variables current value.
# <scope>: Either "global" or "local". The former implies that the variable
# value shall also be used for subdirectories (recursively), if
# for them the variable has not been set. The latter has the same
# effect regarding subdirs as if the variable for the directory
# is not set. Defaults to "global".
#
SetConfigVar $(1) : $(2) : [ ConfigVar $(1) : $(2) ] $(3) : $(4) ;
}
rule ConfigVar
{
# ConfigVar <var> : <dir> [ : <scope> ] ;
#
# Returns the value of a configuration variable for a given subdir.
# If the variable is not set for the subdir, the rule is invoked
# recursively for the parent directory with the scope "global". When
# the root is reached without yielding a value, the value of the global
# variable <var> is returned.
#
# <var>: The name of the variable whose value shall be returned.
# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
# TOP variable and the subdir tokens.
# <scope>: If not given any scope passed to SetConfigVar for the given
# directory will be accepted, otherwise it must match the scope
# passed to SetConfigVar.
#
local var = $(1[1]) ;
local dir = $(2) ;
local config = [ ConfigObject $(dir) ] ;
local scope = $(3) ;
local varScope = [ on $(config) return $(__set_$(var)) ] ;
if ( ! $(scope) && $(varScope) )
|| ( $(scope) && $(scope) = $(varScope) )
|| ! $(dir) {
on $(config) return $($(var)) ;
} else {
dir = [ FReverse $(dir) ] ;
return [ ConfigVar $(var) : [ FReverse $(dir[2-]) ] : global ] ;
}
}
rule SetUpConfigVars {
# SetUpConfigVars <dir> ;
#
# Sets the global variables defined in AUTO_SET_UP_CONFIG_VARIABLES to the
# values specified for the subdirectory <dir>.
#
# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
# TOP variable and the subdir tokens.
#
local dir = $(1) ;
# Backup the global variable value on first invocation, otherwise restore
# them, so that ConfigVar returns the right values for not explicity set
# local variables.
local var ;
if ! $(__config_var_backup__) {
__config_var_backup__ = true ;
for var in $(AUTO_SET_UP_CONFIG_VARIABLES) {
__config_var_backup_$(var)__ = $($(var)) ;
}
} else {
for var in $(AUTO_SET_UP_CONFIG_VARIABLES) {
$(var) = $(__config_var_backup_$(var)__) ;
}
}
# Set the variables to their configured values.
for var in $(AUTO_SET_UP_CONFIG_VARIABLES) {
$(var) = [ ConfigVar $(var) : $(dir) ] ;
}
}
# Add the SetUpConfigVars rule to the rules that are invoked at the end of the
# SubDir rule. Prepend it, so that the variables are set up before any other
# rule is invoked.
SUBDIRRULES = SetUpConfigVars $(SUBDIRRULES) ;
# Some config variables that should be set up automatically for subdirs.
AUTO_SET_UP_CONFIG_VARIABLES +=
CCFLAGS C++FLAGS DEBUG DEFINES HDRS LINKFLAGS OPTIM OPTIMIZE
SYSHDRS WARNINGS
;

View File

@ -1,35 +0,0 @@
# DistroRules
#
# Rules to archive binary distributions.
rule Distro
{
local target = $(1) ;
NotFile $(target) ;
Always $(target) ;
}
actions Distro
{
echo "== Making distro $(DISTRO_DIR) ==" ;
mimeset $(DISTRO_DIR) ;
}
Depends fulldistro : distro ;
rule FullDistro
{
local target = $(1) ;
NotFile $(target) ;
Always $(target) ;
}
actions FullDistro
{
echo "== Making full distro $(FULL_DISTRO_DIR) ==" ;
rm -rf $(FULL_DISTRO_DIR) ;
cp -a $(DISTRO_DIR) $(FULL_DISTRO_DIR) ;
mimeset $(FULL_DISTRO_DIR) ;
}

View File

@ -1,31 +0,0 @@
# FileRules
#
# Rules for files and symbolic links.
rule SymLink
{
# SymLink <target> : <source> : <makeDefaultDependencies> ;
# Links <target> to <source>.
# <source> is the exact link contents. No binding is done.
# <makeDefaultDependencies> If true, <target> will be made a dependency
# of the `all' pseudo target, i.e. it will be made by default, and removed
# on `jam clean'.
local target = $(1) ;
local source = $(2) ;
local makeDefaultDependencies = $(3) ;
if ! $(makeDefaultDependencies) {
makeDefaultDependencies = true ;
}
LINKCONTENTS on $(target) = $(source) ;
SymLink1 $(target) ;
if $(makeDefaultDependencies) = true {
LocalDepends files : $(target) ;
LocalClean clean : $(target) ;
}
}
actions SymLink1
{
$(RM) "$(1)" && $(LN) -s "$(LINKCONTENTS)" "$(1)"
}

View File

@ -1,52 +0,0 @@
# HelperRules
#
# Helper rules without side effects.
rule FFilter
{
# FFilter <list> : <excludes> ;
#
# Removes all occurrences of <excludes> in <list>.
local list = $(1) ;
local excludes = $(2) ;
local newList ;
local item ;
for item in $(list) {
local skip ;
local exclude ;
for exclude in $(excludes) {
if $(item) = $(exclude) {
skip = true ;
}
}
if ! $(skip) {
newList += $(item) ;
}
}
return $(newList) ;
}
rule FSplitPath
{
# FSplitPath <path> ;
#
# Decomposes a path into its components.
#
# <path>: The path to be decomposed.
#
local path = $(1:G=) ;
local components ;
# $(path:D) for "/" is "/". Therefore the second condition.
while $(path:D) && $(path:D) != $(path)
{
# Note: $(path:B) returns "." for "..", but $(path:D=) is fine.
components = $(path:D=) $(components) ;
path = $(path:D) ;
}
components = $(components) ;
# Use this to return initial /
#components = $(path) $(components) ;
return $(components) ;
}

View File

@ -1,27 +0,0 @@
# InstallRules
#
# Missing rules for installation.
rule InstallSymLink
{
# InstallSymlink linkname : source ;
LocalDepends install : $(>) ;
LocalDepends install : $(<) ;
LocalClean uninstall : $(<) ;
NoCare $(>) ;
InstallSymLink1 $(<) : $(>) ;
}
actions InstallSymLink1
{
$(RM) $(<) && $(LN) -s $(>) $(<)
}
rule UninstallTarget
{
# UninstallTarget target ;
LocalClean uninstall : $(<) ;
}

View File

@ -1,385 +0,0 @@
# MainBuildRules
#
# Rules that specify what to build and how to do it.
rule AddResources
{
# AddResources <name> : <resourcefiles> ;
#
# Adds resources to the application.
#
# <name>: Name of the application.
# <resourcefiles>: List of resource files. Grist will be set.
#
local resfiles ;
local file ;
for file in $(2) {
if ! $(file:G) {
file = [ FGristFiles $(file) ] ;
}
resfiles += $(file) ;
}
SEARCH on $(resfile) += $(SEARCH_SOURCE) ;
for file in $(resfiles) {
if $(file:S) = .rdef {
local rdef = $(file) ;
file = $(rdef:S=.rsrc) ;
ResComp $(file) : $(rdef) ;
}
RESFILES on $(1) += $(file) ;
}
}
rule Application
{
# Application <name> : <sources> : <libraries> : <res> ;
#
# Creates an application from sources.
#
# <name>: Name of the application. Grist is allowed.
# <sources>: List of source files. Grist will be set.
# <libraries>: List of libraries to link against.
# <res>: List of resource files. Grist will be set.
#
local app = $(1) ;
local sources = $(2) ;
local libs = $(3) ;
local res = $(4) ;
AddResources $(app) : $(res) ;
Main $(app) : $(sources) ;
MakeLocate $(app) : $(LOCATE_MAIN_TARGET) ;
LinkAgainst $(app) : $(libs) ;
}
actions Strip
{
strip "$(1)" ;
}
rule AddOn
{
# AddOn <name> : <sources> : <libraries> : <res> ;
#
# Creates an add-on from sources.
#
# <name>: Name of the add-on. Grist is allowed.
# <sources>: List of source files. Grist will be set.
# <libraries>: List of libraries to link against.
# <res>: List of resource files. Grist will be set.
#
SharedLibrary $(1) : $(2) : $(3) : $(4) ;
}
rule SharedLibrary
{
# SharedLibrary <name> : <sources> : <libraries> : <res> ;
#
# Creates a shared library from sources.
#
# <name>: Name of the shared library. Grist is allowed.
# <sources>: List of source files. Grist will be set.
# <libraries>: List of libraries to link against.
# <res>: List of resource files. Grist will be set.
#
local lib = $(1) ;
local sources = $(2) ;
local libs = $(3) ;
local res = $(4) ;
AddResources $(lib) : $(res) ;
Main $(lib) : $(sources) ;
MakeLocate $(lib) : $(LOCATE_MAIN_TARGET) ;
local linkFlags ;
if $(OSPLAT) = X86 {
if $(IS_GCC4_PLATFORM) = 1 {
linkFlags = -shared ;
} else {
linkFlags = -nostart ;
}
linkFlags += -Xlinker -soname=\"$(lib)\" -Xlinker --no-undefined ;
} else {
linkFlags = -xms ;
}
LINKFLAGS on $(lib) = [ on $(lib) return $(LINKFLAGS) ] $(linkFlags) ;
LinkAgainst $(lib) : $(libs) ;
}
rule StaticLibrary
{
# StaticLibrary <name> : <sources> ;
#
# Creates a static library from sources.
#
# <name>: Name of the static library. Grist is allowed.
# <source>: List of source files. Grist will be set.
#
local lib = $(1) ;
Library $(lib) : $(2) ;
MakeLocate $(lib) : $(LOCATE_MAIN_TARGET) ;
# If KEEPOBJS is set, Library doesn't make the library depend on `lib'.
if $(KEEPOBJS) {
Depends lib : $(lib) ;
}
}
rule LinkAgainst
{
# LinkAgainst <name> : <libs> ;
#
# Adds libraries to the list of libraries a (Main) target shall be linked
# against.
#
# <name>: The name of the target for which to add libraries.
# <libs>: The libraries (actually arbitrary shared objects and static
# libraries) to be added. Valid elements are e.g. "be" or
# "libopenbeos.so" or "/boot/.../libfoo.so". If the basename starts
# with "lib" or the thingy has a dirname or grist, it is added to
# the NEEDLIBS variable (i.e. the file will be bound!), otherwise
# it is prefixed "-l" and added to LINKLIBS. If you want to specify
# a target that isn't a library and also has neither grist nor a
# dirname, you can prepend "<nogrist>" as grist; it will be
# stripped by this rule.
#
for i in $(>)
{
local isfile = ;
if $(i:D) || $(i:G) {
isfile = true ;
if $(i:G) = <nogrist> {
i = $(i:G=) ;
}
} else {
switch $(i:B)
{
# XXX: _APP_ and _KERNEL_ should not be needed for ELF.
case _APP_ : isfile = true ;
case _KERNEL_ : isfile = true ;
case lib* : isfile = true ;
case * : isfile = ;
}
if ! $(isfile) && ( $(i:S) = .so || $(i:S) = .o || $(i:S) = .a ) {
isfile = true ;
}
}
if $(isfile) {
NEEDLIBS on $(1) = [ on $(1) return $(NEEDLIBS) ] $(i) ;
Depends $(1) : $(i) ;
} else {
LINKLIBS on $(1) = [ on $(1) return $(LINKLIBS) ] -l$(i) ;
}
}
}
rule XRes
{
# XRes <target> : <resource files> ;
#
# Adds resources to a file.
#
# <target>: The files to which resources shall be added.
# <resource files>: The resource files.
#
if $(2)
{
Depends $(1) : $(2) ;
XRes1 $(1) : $(2) ;
}
}
rule ResComp
{
# ResComp <resource file> : <rdef file> ;
#
# Creates a binary resource file from a rdef script.
#
# <resource file>: The resource file. Grist is required.
# <rdef file>: The rdef script. Grist is required.
#
local defines ;
on $(1) {
defines = $(DEFINES) ;
}
DEFINES on $(1) = $(defines) ;
CCDEFS on $(1) = [ FDefines $(defines) ] ;
HDRS on $(1) = [ on $(1) FIncludes $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ]
$(HDRS_INCLUDES_SEPARATOR) ;
RCHDRS on $(1) = [ FRcIncludes $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ] ;
SEARCH on $(2) += $(SEARCH_SOURCE) ;
MakeLocate $(1) : $(LOCATE_TARGET) ;
Depends $(1) : $(2) $(RC) ;
LocalClean clean : $(1) ;
ResComp1 $(1) : $(RC) $(2) ;
}
# Note: We pipe the input files into the preprocessor, since *.rdef files are
# considered linker scripts, and thus we can use preprocessor features.
actions ResComp1
{
cat "$(2[2-])" | $(CC) -E $(CCDEFS) $(HDRS) - | egrep -va '^#' | $(2[1]) $(RCHDRS) --auto-names -o "$(1)" -
}
actions XRes1
{
xres -o "$(1)" "$(2)" ;
}
actions MimeSet
{
mimeset -f "$(1)" ;
}
rule LexC++
{
Depends $(1) : $(2) ;
MakeLocate $(1) : $(LOCATE_SOURCE) ;
Clean clean : $(1) ;
}
actions LexC++
{
$(LEX) -i -P$(<:B) -o$(1) $(2)
}
rule Bison
{
local _h ;
_h = $(1:S=.h) ;
MakeLocate $(<) $(_h) : $(LOCATE_SOURCE) ;
Depends $(<) : $(>) ;
BisonC++ $(<) : $(>) ;
Clean clean : $(<) $(_h) ;
# make sure someone includes $(_h) else it will be
# a deadly independent target
Includes $(<) : $(_h) ;
}
actions BisonC++
{
$(BISON) -v -d -p $(2:B) -o $(1) $(2)
}
rule Rez
{
Depends $(<) : $(>) ;
}
rule PreCompile
{
# PreCompile <hdr> : <src>
#
# precompiles the given src (a headerfile) into the specified header.
#
local _hdr = $(1) ;
local _src = $(2) ;
MakeLocate $(_hdr) : $(LOCATE_TARGET) ;
PreComp $(_hdr) : $(_src) ;
Clean clean : $(_hdr) ;
}
rule PreComp
{
Depends $(<) : $(>) ;
}
actions PreComp
{
mwcc -precompile $(<) -lang cplus "$(>)" ;
}
rule SubDirSysHdrs
{
# SubDirSysHdrs <dirs> ;
#
# Adds directories to the system include search paths for the current
# subdirectory. Counterpart of SubDirHdrs which adds non-system include
# search paths.
#
# <dirs>: The directories to be added to the current subdir's system
# include search paths.
#
SUBDIRSYSHDRS += [ FDirName $(1) ] ;
}
rule ObjectSysHdrs
{
# SubDirSysHdrs <sources or objects> : <dirs> ;
#
# Adds directories to the system include search paths for the given
# sources or objects. Counterpart of ObjectHdrs which adds non-system
# include search paths.
#
# NOTE: This rule must be invoked *after* the rule that generates the
# objects.
#
# <sources or objects>: The targets for which to add system include
# search paths.
# <dirs>: The directories to be added to the given objects' system
# include search paths.
#
local s ;
for s in [ FGristFiles $(<:S=$(SUFOBJ)) ] {
SYSHDRS on $(s) += $(>) ;
CCHDRS on $(s) = [ on $(s) FIncludes $(HDRS) ]
$(HDRS_INCLUDES_SEPARATOR) [ on $(s) FSysIncludes $(SYSHDRS) ] ;
}
}
# FSysIncludes <dirs> ;
#
# Counterpart of FIncludes for system include search paths.
#
if $(OSPLAT) = X86 {
rule FSysIncludes { return -I$(<) ; }
} else {
rule FSysIncludes { return "-i "$(<) ; }
}
# FRcIncludes <dirs> ;
#
# Counterpart of FIncludes for *.rdef scripts.
#
rule FRcIncludes
{
return "-I "$(<) ;
}
# Variable referring to the STL.
if $(OSPLAT) = X86 {
if $(IS_GCC4_PLATFORM) = 1 {
TARGET_LIBSTDC++ = stdc++ ;
} else {
TARGET_LIBSTDC++ = stdc++.r4 ;
}
} else {
TARGET_LIBSTDC++ = mslcpp_4_0 ;
}
rule CreateSVNRevisionFile file
{
# CreateSVNRevisionFile <file>
#local svnEntries = <git>entries ;
#SEARCH on $(svnEntries) = [ FDirName $(TOP) .git ] ;
#Depends $(file) : $(svnEntries) ;
}
actions CreateSVNRevisionFile
{
(LANG=C svn info $(TOP) 2> /dev/null || echo Revision: 0) |
grep Revision | awk '{printf $2}' > $(1)
}

View File

@ -1,218 +0,0 @@
# OverriddenJamRules
#
# Jam rules that need to be overridden for good reasons.
# Overridden to allow for spaces in file names and to support resources.
# Also set the on target LINKFLAGS variable to prevent later changes to
# the global variable from having an effect on the setting for the target.
rule Link
{
local dbg = [ on $(1) return $(DEBUG) ] ;
if $(STRIP_APPS) && $(STRIP_APPS) != 0 && (!$(dbg) || $(dbg) = 0) {
# strip app if requested so and if not in debug mode!
Strip $(1) ;
}
# Note: RESFILES must be set before invocation.
MODE on $(1) = $(EXEMODE) ;
on $(1) XRes $(1) : $(RESFILES) ;
Chmod $(1) ;
MimeSet $(1) ;
LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] ;
}
actions Link bind NEEDLIBS
{
$(LINK) $(LINKFLAGS) -o "$(1)" $(UNDEFS) "$(2)" "$(NEEDLIBS)" $(LINKLIBS)
}
# Overridden to allow for spaces in file names.
actions Chmod1
{
$(CHMOD) "$(MODE)" "$(1)"
}
# Overridden to allow for spaces in file names.
actions piecemeal together existing Clean
{
$(RM) -rf "$(>)"
}
# Changes to rules for sake of discrimination between system and non-system
# headers.
if $(OSPLAT) = X86 {
if $(IS_GCC4_PLATFORM) = 1 {
HDRS_INCLUDES_SEPARATOR = -iquote- ;
} else {
HDRS_INCLUDES_SEPARATOR = -I- ;
}
} else {
HDRS_INCLUDES_SEPARATOR = -i- ;
}
rule Cc
{
Depends $(<) : $(>) ;
# If the compiler's -o flag doesn't work, relocate the .o
if $(RELOCATE)
{
CcMv $(<) : $(>) ;
}
# Just to clarify here: this sets the per-target CCFLAGS to
# be the current value of (global) CCFLAGS and SUBDIRCCFLAGS.
# CCHDRS and CCDEFS must be reformatted each time for some
# compiles (VMS, NT) that malign multiple -D or -I flags.
CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) $(OPTIM) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ]
$(HDRS_INCLUDES_SEPARATOR) [ on $(<) FSysIncludes $(SYSHDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
}
rule C++
{
Depends $(<) : $(>) ;
if $(RELOCATE)
{
CcMv $(<) : $(>) ;
}
C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) $(OPTIM) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ]
$(HDRS_INCLUDES_SEPARATOR) [ on $(<) FSysIncludes $(SYSHDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
}
rule Object
{
# locate object and search for source, if wanted
Clean clean : $(<) ;
MakeLocate $(<) : $(LOCATE_TARGET) ;
SEARCH on $(>) = $(SEARCH_SOURCE) ;
# Save HDRS for -I$(HDRS) on compile.
# We shouldn't need -I$(SEARCH_SOURCE) as cc can find headers
# in the .c file's directory, but generated .c files (from
# yacc, lex, etc) are located in $(LOCATE_TARGET), possibly
# different from $(SEARCH_SOURCE).
HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;
SYSHDRS on $(<) = $(SUBDIRSYSHDRS) $(SYSHDRS) ;
# handle #includes for source: Jam scans for headers with
# the regexp pattern $(HDRSCAN) and then invokes $(HDRRULE)
# with the scanned file as the target and the found headers
# as the sources. HDRSEARCH is the value of SEARCH used for
# the found header files. Finally, if jam must deal with
# header files of the same name in different directories,
# they can be distinguished with HDRGRIST.
# $(SEARCH_SOURCE:E) is where cc first looks for #include
# "foo.h" files. If the source file is in a distant directory,
# look there. Else, look in "" (the current directory).
HDRRULE on $(>) = HdrRule ;
HDRSCAN on $(>) = $(HDRPATTERN) ;
HDRSEARCH on $(>) =
$(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(SYSHDRS) $(STDHDRS) ;
HDRGRIST on $(>) = $(HDRGRIST) ;
# propagate target specific-defines
DEFINES on $(<) += $(DEFINES) ;
# if source is not .c, generate .c with specific rule
switch $(>:S)
{
case .asm : As $(<) : $(>) ;
case .c : Cc $(<) : $(>) ;
case .C : C++ $(<) : $(>) ;
case .cc : C++ $(<) : $(>) ;
case .cpp : C++ $(<) : $(>) ;
case .f : Fortran $(<) : $(>) ;
case .l : Cc $(<) : $(<:S=.c) ;
LexC++ $(<:S=.c) : $(>) ;
case .s : As $(<) : $(>) ;
case .y : Cc $(<) : $(<:S=.c) ;
Bison $(<:S=.c) : $(>) ;
case * : UserObject $(<) : $(>) ;
}
}
rule ObjectHdrs
{
local s ;
for s in [ FGristFiles $(<:S=$(SUFOBJ)) ] {
HDRS on $(s) += $(>) ;
CCHDRS on $(s) = [ on $(s) FIncludes $(HDRS) ]
$(HDRS_INCLUDES_SEPARATOR) [ on $(s) FSysIncludes $(SYSHDRS) ] ;
}
}
# Override Jam 2.5rc3 MakeLocate and MkDir to deal more intelligently
# with grist set on the supplied directory name.
rule MakeLocate
{
if $(2[1])
{
local dir = $(2[1]) ;
if ! $(dir:G) {
dir = $(dir:G=dir) ;
}
LOCATE on $(1) = $(dir:G=) ;
Depends $(1) : $(dir) ;
MkDir $(dir) ;
}
}
rule MkDir
{
# If dir exists, don't update it
# Do this even for $(DOT).
local dir = $(<) ;
if ! $(dir:G) {
dir = $(dir:G=dir) ;
}
NoUpdate $(dir) ;
if $(dir:G=) != $(DOT) && ! $($(dir:G=)-mkdir) {
local s ;
# Cheesy gate to prevent multiple invocations on same dir
# MkDir1 has the actions
# Arrange for jam dirs
$(dir:G=)-mkdir = true ;
MkDir1 $(dir) ;
Depends dirs : $(dir) ;
# Recursively make parent directories.
# $(dir:P) = $(dir)'s parent, & we recurse until root
s = $(dir:P) ; # parent keeps grist
if $(s:G=) && $(s) != $(dir) {
Depends $(dir) : $(s) ;
MkDir $(s) ;
} else if $(s) {
NotFile $(s) ;
}
}
}
# Add SUBDIRSYSHDRS to the variables that shall be reset automatically by the
# SubDir rule.
SUBDIRRESET += SYSHDRS ;

View File

@ -1,247 +0,0 @@
# PackageRules
#
# Rules to create archives for binary distribution
rule Copy
{
if $(2) {
SEARCH on $(2) += $(SEARCH_SOURCE) ;
Depends $(1) : $(COPYATTR) $(2) ;
Copy1 $(1) : $(COPYATTR) $(2) ;
}
}
actions Copy1
{
"$(2[1])" -d "$(2[2-])" "$(1)"
}
rule Packages
{
local packagenames = $(1) ;
local packagefiles = $(2) ;
local path = $(3) ;
for name in $(packagenames) {
Package $(name) : $(packagefiles) : $(path) ;
}
}
rule FPackageConfigSubPath
{
# FPackageConfigSubPath <packagename>
#
local packagename = $(1) ;
local configSubPath ;
on $(packagename) {
configSubPath = $(OS:L) $(OSPLAT:L) ;
if $(DEBUG) = 0 {
configSubPath += release ;
} else {
configSubPath += debug_$(DEBUG) ;
}
}
return $(configSubPath) ;
}
rule Package
{
local packagename = $(1) ;
local packagefiles = $(2) ;
local path = $(3) ;
local configSubPath = [ FPackageConfigSubPath $(packagename) ] ;
#local packagezip = $(packagename:S=.zip:G=_packages) ;
local packagezip = $(packagename:S=-$(VERSION).zip:G=_packages) ;
local targetDir = [ FDirName $(PACKAGE_DIR) $(configSubPath) ] ;
local packagedir = [ FDirName $(targetDir) $(packagename) ] ;
local installscript = install.sh ;
local packageinstallscript = $(installscript:G=_packages!$(packagename)) ;
local installzip = install.zip ;
local packageinstallzip = $(installzip:G=_packages!$(packagename)) ;
local packageobjectdir = [ FDirName $(PACKAGE_OBJECT_DIR)
$(configSubPath) $(packagename) ] ;
local packagefiledir = [ FDirName $(packageobjectdir) $(path) ] ;
local packagefileinstallzip
= $(installzip:G=_package_objects!$(packagename)) ;
# add the files to the install.zip
local packagefilegrist = [ FGrist _package_files $(packagename) $(path) ] ;
for file in $(packagefiles) {
if $(path[0]) = "boot" {
local packagefile = $(file:G=$(packagefilegrist)) ;
MakeLocate $(packagefile) : $(packagefiledir) ;
Copy $(packagefile) : $(file) ;
Clean cleanPackages : $(packagefile) ;
PackageInstallZip $(packagefileinstallzip) : $(packagefile) ;
} else {
local packagefile = $(file:G=_packages!$(packagename)) ;
MakeLocate $(packagefile) : $(packagedir) ;
Copy $(packagefile) : [ FGristFiles $(file) ] ;
Clean cleanPackages : $(packagefile) ;
Depends $(packagezip) : $(packagefile) ;
}
}
# general setup for this package -- only on first invocation
if ! $(_setup_$(packagename)) {
_setup_$(packagename) = true ;
NotFile $(packagename) ;
LocalDepends packages : $(packagename) ;
MakeLocate $(packagezip) : $(targetDir) ;
MakeLocate $(packageinstallscript) : $(packagedir) ;
MakeLocate $(packageinstallzip) : $(packagedir) ;
MakeLocate $(packagefileinstallzip) : $(packageobjectdir) ;
PackageInstallScript $(packageinstallscript) : $(packagedir) ;
LinkInstallZip $(packageinstallzip) : $(packagefileinstallzip) ;
Depends $(packagename) : $(packagezip) ;
PackageZip $(packagezip) : $(packagedir)
: $(packageinstallscript) $(packageinstallzip) ;
}
}
rule PackageSymLink
{
# PackageSymLink <packageName> : <symlink path components>
# : <symlink target>
#
local packagename = $(1) ;
local symlinkPath = $(2) ;
local symlinkTarget = $(3) ;
local configSubPath = [ FPackageConfigSubPath $(packagename) ] ;
local symlinkDir = [ FReverse $(symlinkPath) ] ;
local symlink = $(symlinkDir[1]) ;
symlinkDir = [ FReverse $(symlinkDir[2-]) ] ;
local symlinkGrist = [ FGrist _package $(packagename) $(symlinkDir) ] ;
symlink = $(symlink:G=$(symlinkGrist)) ;
if $(symlinkDir[1]) = boot {
local installzip = install.zip ;
local packagefileinstallzip
= $(installzip:G=_package_objects!$(packagename)) ;
local packageobjectdir = [ FDirName $(PACKAGE_OBJECT_DIR)
$(configSubPath) $(packagename) ] ;
symlinkDir = [ FDirName $(packageobjectdir) $(symlinkDir) ] ;
PackageInstallZip $(packagefileinstallzip) : $(symlink) ;
} else {
#local packagezip = $(packagename:S=.zip:G=_packages) ;
local packagezip = $(packagename:S=-$(VERSION).zip:G=_packages) ;
local packagedir = [ FDirName $(PACKAGE_DIR) $(configSubPath)
$(packagename) ] ;
symlinkDir = [ FDirName $(packagedir) $(symlinkDir) ] ;
Depends $(packagezip) : $(symlink) ;
}
MakeLocate $(symlink) : $(symlinkDir) ;
SymLink $(symlink) : $(symlinkTarget) : false ;
Clean cleanPackages : $(symlink) ;
}
rule PackageDriverSymLink
{
# PackageDriverSymLink <packageName> : <devRelativeSymlinkComponents> ;
# <packageName>: Package name.
# <devRelativeSymlinkComponents>: Path components relative to the
# /boot/home/config/add-ons/kernel/drivers/dev directory, e.g.
# "graphics mga.driver" (no quotation, of course).
#
local packageName = $(1) ;
local symlinkComponents = $(2) ;
# construct the symlink contents
local symlinkPath = [ FReverse $(symlinkComponents) ] ;
symlinkPath = bin $(symlinkPath[1]) ;
for i in $(symlinkComponents) {
symlinkPath = $(DOTDOT) $(symlinkPath) ;
}
PackageSymLink $(packageName)
: boot home config add-ons kernel drivers dev $(symlinkComponents)
: [ FDirName $(symlinkPath) ] ;
}
rule PackageZip
{
local dir = $(2:G=dir) ;
Depends $(1) : $(dir) $(3) ;
Clean cleanPackages : $(1) ;
PackageZip1 $(1) : $(dir) ;
}
actions together PackageZip1 {
cd "$(2:P)" ;
zip -rq "$(1:BS)" "$(2:BS)" ;
}
rule PackageInstallScript
{
MakeLocate $(1) : $(2) ;
Clean cleanPackages : $(1) ;
PackageInstallScript1 $(1) : $(2:G=dir) ;
}
actions together PackageInstallScript1
{
echo '#!/bin/sh
base=`dirname "$0"`
cd "$base"
if [ -n "$TTY" ]
then
unzip -d / install.zip
else
response=`alert "Would you like to automatically overwrite existing files, or receive a prompt?" "Overwrite" "Prompt"`
if [ $response == "Overwrite" ]
then
unzip -od / install.zip
alert "Finished installing" "Thanks"
else
if [ -e /boot/beos/apps/Terminal ]
then
terminal=/boot/beos/apps/Terminal
else
terminal=`query Terminal | head -1`
fi
$terminal -t "installer" /bin/sh "$0"
fi
fi' > "$(1)" ;
chmod 755 "$(1)" ;
}
rule PackageInstallZip
{
Depends $(1) : $(2) ;
Clean cleanPackages : $(1) ;
}
actions together PackageInstallZip
{
cd "$(1:P)" ;
zip -rqy "$(1:BS)" boot ;
}
rule LinkInstallZip
{
Depends $(1) : $(2) ;
Clean cleanPackages : $(1) ;
}
actions together LinkInstallZip
{
ln -sf "`pwd`/$(2)" "$(1)" ;
}

View File

@ -1,63 +0,0 @@
# UserBuildConfig
#
# Sample of a UserBuildConfig file. It is a central place where the user can
# set variables affecting certain aspects of the build, such as debug,
# warnings and optimization settings.
#
# The following variables can be set:
#
# BUILD_TESTS - If not empty, all tests (TestBeam) will be build, too.
# Default is 0, i.e. no tests.
# CCFLAGS, C++FLAGS - Flags passed to the C/C++ compiler.
# DEBUG - If not empty, will turn on debugging, i.e. will
# add respective C/C++ compiler and linker flags and
# the CPP DEBUG macro.
# DEFINES - CPP macros to be defined, e.g. something like
# `SPECIAL_FEATURE' or `CACHE_SIZE=1024'.
# HDRS - List of directories to be added to the local include
# search paths.
# LINKFLAGS - Flags passed to the linker.
# LOCATE_MAIN_TARGET - Directory where the main targets (i.e. applications,
# libraries shall be placed). Should usually not be
# tampered with by the user.
# OPTIM - Optimization specific flags passed to the C/C++
# compiler. Usually you want to use OPTIMIZE instead.
# OPTIMIZE - If not set to `0', will turn on optimization, i.e.
# will set the respective C/C++ compiler flags
# (i.e. the OPTIM variable).
# STRIP_APPS - if not set to '0', will cause all generated apps to
# be stripped. Default is '0', i.e. no stripping
# SYSHDRS - List of directories to be added to the system include
# search paths.
# WARNINGS - If not set to `0', will turn on warnings, i.e. will
# set the respective C/C++ compiler flags.
# Examples:
# Globally turn off debugging:
#
# DEBUG = 0 ;
# Globally activate debugging:
#
# DEBUG = 1 ;
# ... e.g. like this, for the `add-ons/catalogs' directory and all its
# subdirectories.
#
# SetConfigVar WARNINGS : TOP add-ons catalogs : 1 ;
# Turn on debugging for the the directory `Languages' and all its subdirectories.
#
# SetConfigVar DEBUG : TOP Languages : 1 ;
# Turn off optimization for the `rez' directory and all its subdirectories.
#
# SetConfigVar OPTIMIZE : TOP rez : 0 ;
# Define the CPP macro INSANE_DEBUGGING_LEVEL to the value `100' in the
# `lpe' directory, but NOT in its subdirectories (note the use of the
# optional fourth parameter `local', which works for both SetConfigVar and
# AppendToConfigVar).
#
# AppendToConfigVar DEFINES : TOP lpe : INSANE_DEBUGGING_LEVEL=100 : local ;

View File

@ -1,10 +0,0 @@
SubDir TOP libs ;
# Include all the components.
SubInclude TOP libs librunview ;
SubInclude TOP libs libsupport ;
SubInclude TOP libs libinterface ;
SubInclude TOP libs libimcomm ;
SubInclude TOP libs libgloox ;
SubInclude TOP libs libyahoo2 ;

14
libs/Makefile Normal file
View File

@ -0,0 +1,14 @@
.DEFAULT_GOAL := default
libinterface:
$(MAKE) -f libs/libinterface/Makefile
librunview:
$(MAKE) -f libs/librunview/Makefile
libsupport:
$(MAKE) -f libs/libsupport/Makefile
all: libinterface librunview libsupport
default: all

View File

@ -1,112 +0,0 @@
SubDir TOP libs libgloox ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(OPENSSL_INCLUDE_DIR) ] ;
SEARCH_SOURCE += [ FDirName $(TOP) libs ] ;
local sources =
adhoc.cpp
amp.cpp
annotations.cpp
atomicrefcount.cpp
attention.cpp
base64.cpp
bookmarkstorage.cpp
capabilities.cpp
chatstate.cpp
chatstatefilter.cpp
client.cpp
clientbase.cpp
component.cpp
compressiondefault.cpp
compressionzlib.cpp
connectionbosh.cpp
connectionhttpproxy.cpp
connectionsocks5proxy.cpp
connectiontcpbase.cpp
connectiontcpclient.cpp
connectiontcpserver.cpp
connectiontls.cpp
connectiontlsserver.cpp
dataform.cpp
dataformfield.cpp
dataformfieldcontainer.cpp
dataformitem.cpp
dataformreported.cpp
delayeddelivery.cpp
disco.cpp
dns.cpp
error.cpp
eventdispatcher.cpp
featureneg.cpp
flexoff.cpp
gloox.cpp
gpgencrypted.cpp
gpgsigned.cpp
inbandbytestream.cpp
instantmucroom.cpp
iq.cpp
jid.cpp
lastactivity.cpp
logsink.cpp
md5.cpp
message.cpp
messageevent.cpp
messageeventfilter.cpp
messagefilter.cpp
messagesession.cpp
mucmessagesession.cpp
mucroom.cpp
mutex.cpp
nickname.cpp
nonsaslauth.cpp
oob.cpp
parser.cpp
prep.cpp
presence.cpp
privacyitem.cpp
privacymanager.cpp
privatexml.cpp
pubsubevent.cpp
pubsubitem.cpp
pubsubmanager.cpp
receipt.cpp
registration.cpp
rosteritem.cpp
rostermanager.cpp
search.cpp
sha.cpp
shim.cpp
simanager.cpp
siprofileft.cpp
socks5bytestream.cpp
socks5bytestreammanager.cpp
socks5bytestreamserver.cpp
softwareversion.cpp
stanza.cpp
stanzaextensionfactory.cpp
subscription.cpp
tag.cpp
tlsdefault.cpp
tlsgnutlsbase.cpp
tlsgnutlsclient.cpp
tlsgnutlsclientanon.cpp
tlsgnutlsserveranon.cpp
tlsopensslbase.cpp
tlsopensslclient.cpp
tlsopensslserver.cpp
tlsschannel.cpp
uniquemucroom.cpp
util.cpp
vcard.cpp
vcardmanager.cpp
vcardupdate.cpp
xhtmlim.cpp
;
StaticLibrary libgloox.a : $(sources) ;
Depends libssl.so ;

View File

@ -1,12 +0,0 @@
SubDir TOP libs libimcomm ;
StaticLibrary libimcomm.a :
misc.c
packet.c
flap.c
bos_signon.c
imcomm.c
snac.c
md5.c
proxy.c
;

View File

@ -1,14 +0,0 @@
SubDir TOP libs libinterface ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(TOP) libs private ] ;
StaticLibrary libinterface.a :
BitmapMenuItem.cpp
BitmapUtils.cpp
BitmapView.cpp
Divider.cpp
NotifyingTextView.cpp
PictureView.cpp
ToolButton.cpp
;

142
libs/libinterface/Makefile Normal file
View File

@ -0,0 +1,142 @@
# Haiku Generic Makefile v2.6 ##
## Fill in this file to specify the project being created, and the referenced
## Makefile-Engine will do all of the hard work for you. This handles any
## architecture of Haiku.
##
## For more information, see:
## file:///system/develop/documentation/makefile-engine.html
# The name of the binary.
NAME = libinterface
# The type of binary, must be one of:
# APP: Application
# SHARED: Shared library or add-on
# STATIC: Static library archive
# DRIVER: Kernel driver
TYPE = STATIC
# If you plan to use localization, specify the application's MIME signature.
APP_MIME_SIG =
# The following lines tell Pe and Eddie where the SRCS, RDEFS, and RSRCS are
# so that Pe and Eddie can fill them in for you.
#%{
# @src->@
# Specify the source files to use. Full paths or paths relative to the
# Makefile can be included. All files, regardless of directory, will have
# their object files created in the common object directory. Note that this
# means this Makefile will not work correctly if two source files with the
# same name (source.c or source.cpp) are included from different directories.
# Also note that spaces in folder names do not work well with this Makefile.
SRCS = \
libs/libinterface/BitmapMenuItem.cpp \
libs/libinterface/BitmapUtils.cpp \
libs/libinterface/BitmapView.cpp \
libs/libinterface/Divider.cpp \
libs/libinterface/NotifyingTextView.cpp \
libs/libinterface/PictureView.cpp \
libs/libinterface/ToolButton.cpp
# Specify the resource definition files to use. Full or relative paths can be
# used.
RDEFS =
# Specify the resource files to use. Full or relative paths can be used.
# Both RDEFS and RSRCS can be utilized in the same Makefile.
RSRCS =
# End Pe/Eddie support.
# @<-src@
#%}
# Specify libraries to link against.
# There are two acceptable forms of library specifications:
# - if your library follows the naming pattern of libXXX.so or libXXX.a,
# you can simply specify XXX for the library. (e.g. the entry for
# "libtracker.so" would be "tracker")
#
# - for GCC-independent linking of standard C++ libraries, you can use
# $(STDCPPLIBS) instead of the raw "stdc++[.r4] [supc++]" library names.
#
# - if your library does not follow the standard library naming scheme,
# you need to specify the path to the library and it's name.
# (e.g. for mylib.a, specify "mylib.a" or "path/mylib.a")
LIBS = be shared $(STDCPPLIBS)
# Specify additional paths to directories following the standard libXXX.so
# or libXXX.a naming scheme. You can specify full paths or paths relative
# to the Makefile. The paths included are not parsed recursively, so
# include all of the paths where libraries must be found. Directories where
# source files were specified are automatically included.
LIBPATHS =
# Additional paths to look for system headers. These use the form
# "#include <header>". Directories that contain the files in SRCS are
# NOT auto-included here.
SYSTEM_INCLUDE_PATHS = \
libs/private/
# Additional paths paths to look for local headers. These use the form
# #include "header". Directories that contain the files in SRCS are
# automatically included.
LOCAL_INCLUDE_PATHS =
# Specify the level of optimization that you want. Specify either NONE (O0),
# SOME (O1), FULL (O3), or leave blank (for the default optimization level).
OPTIMIZE :=
# Specify the codes for languages you are going to support in this
# application. The default "en" one must be provided too. "make catkeys"
# will recreate only the "locales/en.catkeys" file. Use it as a template
# for creating catkeys for other languages. All localization files must be
# placed in the "locales" subdirectory.
LOCALES =
# Specify all the preprocessor symbols to be defined. The symbols will not
# have their values set automatically; you must supply the value (if any) to
# use. For example, setting DEFINES to "DEBUG=1" will cause the compiler
# option "-DDEBUG=1" to be used. Setting DEFINES to "DEBUG" would pass
# "-DDEBUG" on the compiler's command line.
DEFINES =
# Specify the warning level. Either NONE (suppress all warnings),
# ALL (enable all warnings), or leave blank (enable default warnings).
WARNINGS =
# With image symbols, stack crawls in the debugger are meaningful.
# If set to "TRUE", symbols will be created.
SYMBOLS :=
# Includes debug information, which allows the binary to be debugged easily.
# If set to "TRUE", debug info will be created.
DEBUGGER :=
# Specify any additional compiler flags to be used.
COMPILER_FLAGS =
# Specify any additional linker flags to be used.
LINKER_FLAGS =
# Specify the version of this binary. Example:
# -app 3 4 0 d 0 -short 340 -long "340 "`echo -n -e '\302\251'`"1999 GNU GPL"
# This may also be specified in a resource.
APP_VERSION :=
# (Only used when "TYPE" is "DRIVER"). Specify the desired driver install
# location in the /dev hierarchy. Example:
# DRIVER_PATH = video/usb
# will instruct the "driverinstall" rule to place a symlink to your driver's
# binary in ~/add-ons/kernel/drivers/dev/video/usb, so that your driver will
# appear at /dev/video/usb when loaded. The default is "misc".
DRIVER_PATH =
## Include the Makefile-Engine
DEVEL_DIRECTORY := \
$(shell findpaths -r "makefile_engine" B_FIND_PATH_DEVELOP_DIRECTORY)
include $(DEVEL_DIRECTORY)/etc/makefile-engine
include Makefile.common

View File

@ -17,10 +17,10 @@
#include <binary_compatibility/Interface.h>
#include <libinterface/BitmapUtils.h>
#include "BitmapUtils.h"
#include "ToolButton.h"
const float kPopUpMarkerSize = 5.0f;
const float kPopUpMarkerTop = 0.5f;
const float kPopUpMarkerRect = (kPopUpMarkerSize * 2) + 2;

View File

@ -1,38 +0,0 @@
SubDir TOP libs libmsn ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(TOP) libs libmsn ] ;
SubDirSysHdrs [ FDirName $(OPENSSL_INCLUDE_DIR) ] ;
SEARCH_SOURCE += [ FDirName $(TOP) libs ] ;
SEARCH_SOURCE += [ FDirName $(TOP) libs libmsn libsiren ] ;
local sources =
# libmsn
authdata.cpp
buddy.cpp
connection.cpp
md5.cpp
message.cpp
msnobject.cpp
# msntest.cpp
notificationserver.cpp
p2p.cpp
passport.cpp
soap.cpp
switchboardserver.cpp
util.cpp
xmlParser.cpp
# libsiren
common.cpp
dct4.cpp
decoder.cpp
encoder.cpp
huffman.cpp
rmlt.cpp
;
StaticLibrary libmsn.a : $(sources) : be root $(TARGET_LIBSTDC++) ssl crypto ;

View File

@ -1,23 +0,0 @@
SubDir TOP libs librunview ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(EXPAT_INCLUDE_DIR) ] ;
SEARCH_SOURCE += [ FDirName $(TOP) libs ] ;
local sources =
# libjabber
Theme.cpp
RunView.cpp
Utilities.cpp
URLCrunch.cpp
Emoticor.cpp
Emoconfig.cpp
;
StaticLibrary librunview.a : $(sources) ;
LINKFLAGS on librunview.a += -L$(EXPAT_LIBRARY_DIR) ;

140
libs/librunview/Makefile Normal file
View File

@ -0,0 +1,140 @@
## Haiku Generic Makefile v2.6 ##
## Fill in this file to specify the project being created, and the referenced
## Makefile-Engine will do all of the hard work for you. This handles any
## architecture of Haiku.
##
## For more information, see:
## file:///system/develop/documentation/makefile-engine.html
# The name of the binary.
NAME = librunview
# The type of binary, must be one of:
# APP: Application
# SHARED: Shared library or add-on
# STATIC: Static library archive
# DRIVER: Kernel driver
TYPE = STATIC
# If you plan to use localization, specify the application's MIME signature.
APP_MIME_SIG =
# The following lines tell Pe and Eddie where the SRCS, RDEFS, and RSRCS are
# so that Pe and Eddie can fill them in for you.
#%{
# @src->@
# Specify the source files to use. Full paths or paths relative to the
# Makefile can be included. All files, regardless of directory, will have
# their object files created in the common object directory. Note that this
# means this Makefile will not work correctly if two source files with the
# same name (source.c or source.cpp) are included from different directories.
# Also note that spaces in folder names do not work well with this Makefile.
SRCS = \
libs/librunview/Theme.cpp \
libs/librunview/RunView.cpp \
libs/librunview/Utilities.cpp \
libs/librunview/URLCrunch.cpp \
libs/librunview/Emoticor.cpp \
libs/librunview/Emoconfig.cpp
# Specify the resource definition files to use. Full or relative paths can be
# used.
RDEFS =
# Specify the resource files to use. Full or relative paths can be used.
# Both RDEFS and RSRCS can be utilized in the same Makefile.
RSRCS =
# End Pe/Eddie support.
# @<-src@
#%}
# Specify libraries to link against.
# There are two acceptable forms of library specifications:
# - if your library follows the naming pattern of libXXX.so or libXXX.a,
# you can simply specify XXX for the library. (e.g. the entry for
# "libtracker.so" would be "tracker")
#
# - for GCC-independent linking of standard C++ libraries, you can use
# $(STDCPPLIBS) instead of the raw "stdc++[.r4] [supc++]" library names.
#
# - if your library does not follow the standard library naming scheme,
# you need to specify the path to the library and it's name.
# (e.g. for mylib.a, specify "mylib.a" or "path/mylib.a")
LIBS = be expat shared $(STDCPPLIBS)
# Specify additional paths to directories following the standard libXXX.so
# or libXXX.a naming scheme. You can specify full paths or paths relative
# to the Makefile. The paths included are not parsed recursively, so
# include all of the paths where libraries must be found. Directories where
# source files were specified are automatically included.
LIBPATHS =
# Additional paths to look for system headers. These use the form
# "#include <header>". Directories that contain the files in SRCS are
# NOT auto-included here.
SYSTEM_INCLUDE_PATHS =
# Additional paths paths to look for local headers. These use the form
# #include "header". Directories that contain the files in SRCS are
# automatically included.
LOCAL_INCLUDE_PATHS =
# Specify the level of optimization that you want. Specify either NONE (O0),
# SOME (O1), FULL (O3), or leave blank (for the default optimization level).
OPTIMIZE :=
# Specify the codes for languages you are going to support in this
# application. The default "en" one must be provided too. "make catkeys"
# will recreate only the "locales/en.catkeys" file. Use it as a template
# for creating catkeys for other languages. All localization files must be
# placed in the "locales" subdirectory.
LOCALES =
# Specify all the preprocessor symbols to be defined. The symbols will not
# have their values set automatically; you must supply the value (if any) to
# use. For example, setting DEFINES to "DEBUG=1" will cause the compiler
# option "-DDEBUG=1" to be used. Setting DEFINES to "DEBUG" would pass
# "-DDEBUG" on the compiler's command line.
DEFINES =
# Specify the warning level. Either NONE (suppress all warnings),
# ALL (enable all warnings), or leave blank (enable default warnings).
WARNINGS =
# With image symbols, stack crawls in the debugger are meaningful.
# If set to "TRUE", symbols will be created.
SYMBOLS :=
# Includes debug information, which allows the binary to be debugged easily.
# If set to "TRUE", debug info will be created.
DEBUGGER :=
# Specify any additional compiler flags to be used.
COMPILER_FLAGS =
# Specify any additional linker flags to be used.
LINKER_FLAGS =
# Specify the version of this binary. Example:
# -app 3 4 0 d 0 -short 340 -long "340 "`echo -n -e '\302\251'`"1999 GNU GPL"
# This may also be specified in a resource.
APP_VERSION :=
# (Only used when "TYPE" is "DRIVER"). Specify the desired driver install
# location in the /dev hierarchy. Example:
# DRIVER_PATH = video/usb
# will instruct the "driverinstall" rule to place a symlink to your driver's
# binary in ~/add-ons/kernel/drivers/dev/video/usb, so that your driver will
# appear at /dev/video/usb when loaded. The default is "misc".
DRIVER_PATH =
## Include the Makefile-Engine
DEVEL_DIRECTORY := \
$(shell findpaths -r "makefile_engine" B_FIND_PATH_DEVELOP_DIRECTORY)
include $(DEVEL_DIRECTORY)/etc/makefile-engine
include Makefile.common

View File

@ -1,9 +0,0 @@
SubDir TOP libs libsupport ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
StaticLibrary libsupport.a :
Base64.cpp
Singleton.cpp
SHA1.cpp
;

View File

@ -7,7 +7,7 @@
#include <map>
#include <libsupport/List.h>
#include "List.h"
template<class KEY, class TYPE>
class KeyMap {

137
libs/libsupport/Makefile Normal file
View File

@ -0,0 +1,137 @@
## Haiku Generic Makefile v2.6 ##
## Fill in this file to specify the project being created, and the referenced
## Makefile-Engine will do all of the hard work for you. This handles any
## architecture of Haiku.
##
## For more information, see:
## file:///system/develop/documentation/makefile-engine.html
# The name of the binary.
NAME = libsupport
# The type of binary, must be one of:
# APP: Application
# SHARED: Shared library or add-on
# STATIC: Static library archive
# DRIVER: Kernel driver
TYPE = STATIC
# If you plan to use localization, specify the application's MIME signature.
APP_MIME_SIG =
# The following lines tell Pe and Eddie where the SRCS, RDEFS, and RSRCS are
# so that Pe and Eddie can fill them in for you.
#%{
# @src->@
# Specify the source files to use. Full paths or paths relative to the
# Makefile can be included. All files, regardless of directory, will have
# their object files created in the common object directory. Note that this
# means this Makefile will not work correctly if two source files with the
# same name (source.c or source.cpp) are included from different directories.
# Also note that spaces in folder names do not work well with this Makefile.
SRCS = \
libs/libsupport/Base64.cpp \
libs/libsupport/SHA1.cpp \
libs/libsupport/Singleton.cpp
# Specify the resource definition files to use. Full or relative paths can be
# used.
RDEFS =
# Specify the resource files to use. Full or relative paths can be used.
# Both RDEFS and RSRCS can be utilized in the same Makefile.
RSRCS =
# End Pe/Eddie support.
# @<-src@
#%}
# Specify libraries to link against.
# There are two acceptable forms of library specifications:
# - if your library follows the naming pattern of libXXX.so or libXXX.a,
# you can simply specify XXX for the library. (e.g. the entry for
# "libtracker.so" would be "tracker")
#
# - for GCC-independent linking of standard C++ libraries, you can use
# $(STDCPPLIBS) instead of the raw "stdc++[.r4] [supc++]" library names.
#
# - if your library does not follow the standard library naming scheme,
# you need to specify the path to the library and it's name.
# (e.g. for mylib.a, specify "mylib.a" or "path/mylib.a")
LIBS = be shared $(STDCPPLIBS)
# Specify additional paths to directories following the standard libXXX.so
# or libXXX.a naming scheme. You can specify full paths or paths relative
# to the Makefile. The paths included are not parsed recursively, so
# include all of the paths where libraries must be found. Directories where
# source files were specified are automatically included.
LIBPATHS =
# Additional paths to look for system headers. These use the form
# "#include <header>". Directories that contain the files in SRCS are
# NOT auto-included here.
SYSTEM_INCLUDE_PATHS =
# Additional paths paths to look for local headers. These use the form
# #include "header". Directories that contain the files in SRCS are
# automatically included.
LOCAL_INCLUDE_PATHS =
# Specify the level of optimization that you want. Specify either NONE (O0),
# SOME (O1), FULL (O3), or leave blank (for the default optimization level).
OPTIMIZE :=
# Specify the codes for languages you are going to support in this
# application. The default "en" one must be provided too. "make catkeys"
# will recreate only the "locales/en.catkeys" file. Use it as a template
# for creating catkeys for other languages. All localization files must be
# placed in the "locales" subdirectory.
LOCALES =
# Specify all the preprocessor symbols to be defined. The symbols will not
# have their values set automatically; you must supply the value (if any) to
# use. For example, setting DEFINES to "DEBUG=1" will cause the compiler
# option "-DDEBUG=1" to be used. Setting DEFINES to "DEBUG" would pass
# "-DDEBUG" on the compiler's command line.
DEFINES =
# Specify the warning level. Either NONE (suppress all warnings),
# ALL (enable all warnings), or leave blank (enable default warnings).
WARNINGS =
# With image symbols, stack crawls in the debugger are meaningful.
# If set to "TRUE", symbols will be created.
SYMBOLS :=
# Includes debug information, which allows the binary to be debugged easily.
# If set to "TRUE", debug info will be created.
DEBUGGER :=
# Specify any additional compiler flags to be used.
COMPILER_FLAGS =
# Specify any additional linker flags to be used.
LINKER_FLAGS =
# Specify the version of this binary. Example:
# -app 3 4 0 d 0 -short 340 -long "340 "`echo -n -e '\302\251'`"1999 GNU GPL"
# This may also be specified in a resource.
APP_VERSION :=
# (Only used when "TYPE" is "DRIVER"). Specify the desired driver install
# location in the /dev hierarchy. Example:
# DRIVER_PATH = video/usb
# will instruct the "driverinstall" rule to place a symlink to your driver's
# binary in ~/add-ons/kernel/drivers/dev/video/usb, so that your driver will
# appear at /dev/video/usb when loaded. The default is "misc".
DRIVER_PATH =
## Include the Makefile-Engine
DEVEL_DIRECTORY := \
$(shell findpaths -r "makefile_engine" B_FIND_PATH_DEVELOP_DIRECTORY)
include $(DEVEL_DIRECTORY)/etc/makefile-engine
include Makefile.common

View File

@ -1,24 +0,0 @@
SubDir TOP libs libyahoo2 ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(TOP) libs libyahoo2 ] ;
SubDirSysHdrs [ FDirName $(OPENSSL_INCLUDE_DIR) ] ;
SEARCH_SOURCE += [ FDirName $(TOP) libs ] ;
local sources =
# libyahoo
autoresponder.c
libyahoo2.c
yahoo_fn.c
yahoo_list.c
crypt.c
md5.c
sha1.c
yahoo_httplib.c
yahoo_util.c
;
StaticLibrary libyahoo2.a : $(sources) : be network ;

View File

@ -1,8 +0,0 @@
SubDir TOP protocols ;
CAYA_INCLUDE_DIR = $(TOP) application ;
# Include all the components.
SubInclude TOP protocols aim ;
SubInclude TOP protocols xmpp ;
SubInclude TOP protocols yahoo ;

8
protocols/Makefile Normal file
View File

@ -0,0 +1,8 @@
.DEFAULT_GOAL := default
xmpp:
$(MAKE) -f protocols/xmpp/Makefile
all: xmpp
default: all

View File

@ -0,0 +1,2 @@
$(shell mkdir $(PROTOCOL_DIR) >/dev/null 2>&1)

View File

@ -1,19 +0,0 @@
SubDir TOP protocols aim ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) application ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(TOP) libs libimcomm ] ;
SEARCH_SOURCE += [ FDirName $(TOP) protocols aim ] ;
AddOn aim :
AIM.cpp
main.cpp
: libimcomm.a be network $(TARGET_LIBSTDC++)
: aim.rdef settings_template.rdef
;
Depends aim : libimcomm.a ;
InstallBin $(CAYA_DIRECTORY)/protocols : aim ;

View File

@ -1,21 +0,0 @@
SubDir TOP protocols msn ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(TOP) libs libmsn ] ;
SubDirSysHdrs [ FDirName $(OPENSSL_INCLUDE_DIR) ] ;
SubDirSysHdrs [ FDirName $(CAYA_INCLUDE_DIR) ] ;
AddOn msn :
main.cpp
MSN.cpp
MSNContainer.cpp
: be root $(TARGET_LIBSTDC++) ssl crypto network bnetapi libmsn.a
: msn.rdef SettingsTemplate.rdef
;
Depends msn : libmsn.a ;
LINKFLAGS on msn += -L$(OPENSSL_LIBRARY_DIR) ;
InstallBin $(CAYA_DIRECTORY)/protocols : msn ;

View File

@ -16,8 +16,8 @@
#include <libsupport/SHA1.h>
#include <libgloox/chatstatefilter.h>
#include <libgloox/messageeventfilter.h>
#include <gloox/chatstatefilter.h>
#include <gloox/messageeventfilter.h>
#include "JabberHandler.h"

View File

@ -9,23 +9,23 @@
#include <Path.h>
#include <String.h>
#include <libgloox/client.h>
#include <libgloox/chatstatehandler.h>
#include <libgloox/connectionlistener.h>
#include <libgloox/connectiontcpclient.h>
#include <libgloox/discohandler.h>
#include <libgloox/disco.h>
#include <libgloox/rostermanager.h>
#include <libgloox/loghandler.h>
#include <libgloox/logsink.h>
#include <libgloox/messagehandler.h>
#include <libgloox/messagesession.h>
#include <libgloox/messagesessionhandler.h>
#include <libgloox/messageeventhandler.h>
#include <libgloox/message.h>
#include <libgloox/presence.h>
#include <libgloox/vcardhandler.h>
#include <libgloox/vcardmanager.h>
#include <gloox/client.h>
#include <gloox/chatstatehandler.h>
#include <gloox/connectionlistener.h>
#include <gloox/connectiontcpclient.h>
#include <gloox/discohandler.h>
#include <gloox/disco.h>
#include <gloox/rostermanager.h>
#include <gloox/loghandler.h>
#include <gloox/logsink.h>
#include <gloox/messagehandler.h>
#include <gloox/messagesession.h>
#include <gloox/messagesessionhandler.h>
#include <gloox/messageeventhandler.h>
#include <gloox/message.h>
#include <gloox/presence.h>
#include <gloox/vcardhandler.h>
#include <gloox/vcardmanager.h>
#include <CayaProtocol.h>
#include <CayaConstants.h>

View File

@ -1,46 +0,0 @@
SubDir TOP protocols xmpp ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(TOP) libs libgloox ] ;
SubDirSysHdrs [ FDirName $(OPENSSL_INCLUDE_DIR) ] ;
SubDirSysHdrs [ FDirName $(CAYA_INCLUDE_DIR) ] ;
AddOn jabber :
JabberMain.cpp
JabberProtocol.cpp
JabberHandler.cpp
: be libsupport.a libgloox.a network ssl crypto z $(TARGET_LIBSTDC++)
: jabber.rdef jabber_settings.rdef
;
AddOn gtalk :
GoogleTalkMain.cpp
GoogleTalkProtocol.cpp
JabberHandler.cpp
: be libsupport.a libgloox.a network ssl crypto z $(TARGET_LIBSTDC++)
: gtalk.rdef gtalk_settings.rdef
;
AddOn facebook :
FacebookMain.cpp
FacebookProtocol.cpp
JabberHandler.cpp
: be libsupport.a libgloox.a network ssl crypto z $(TARGET_LIBSTDC++)
: facebook.rdef facebook_settings.rdef
;
Depends jabber : libsupport.a ;
Depends jabber : libgloox.a ;
Depends gtalk : libsupport.a ;
Depends gtalk : libgloox.a ;
Depends facebook : libsupport.a ;
Depends facebook : libgloox.a ;
LINKFLAGS on jabber += -L$(OPENSSL_LIBRARY_DIR) ;
LINKFLAGS on gtalk += -L$(OPENSSL_LIBRARY_DIR) ;
LINKFLAGS on facebook += -L$(OPENSSL_LIBRARY_DIR) ;
InstallBin $(CAYA_DIRECTORY)/protocols : jabber ;
InstallBin $(CAYA_DIRECTORY)/protocols : gtalk ;
InstallBin $(CAYA_DIRECTORY)/protocols : facebook ;

140
protocols/xmpp/Makefile Normal file
View File

@ -0,0 +1,140 @@
## Haiku Generic Makefile v2.6 ##
## Fill in this file to specify the project being created, and the referenced
## Makefile-Engine will do all of the hard work for you. This handles any
## architecture of Haiku.
##
## For more information, see:
## file:///system/develop/documentation/makefile-engine.html
# The name of the binary.
NAME = protocols/jabber
# The type of binary, must be one of:
# APP: Application
# SHARED: Shared library or add-on
# STATIC: Static library archive
# DRIVER: Kernel driver
TYPE = SHARED
# If you plan to use localization, specify the application's MIME signature.
APP_MIME_SIG =
# The following lines tell Pe and Eddie where the SRCS, RDEFS, and RSRCS are
# so that Pe and Eddie can fill them in for you.
#%{
# @src->@
# Specify the source files to use. Full paths or paths relative to the
# Makefile can be included. All files, regardless of directory, will have
# their object files created in the common object directory. Note that this
# means this Makefile will not work correctly if two source files with the
# same name (source.c or source.cpp) are included from different directories.
# Also note that spaces in folder names do not work well with this Makefile.
SRCS = \
protocols/xmpp/JabberMain.cpp \
protocols/xmpp/JabberProtocol.cpp \
protocols/xmpp/JabberHandler.cpp
# Specify the resource definition files to use. Full or relative paths can be
# used.
RDEFS = \
protocols/xmpp/jabber.rdef \
protoocls/xmpp/jabber_settings.rdef
# Specify the resource files to use. Full or relative paths can be used.
# Both RDEFS and RSRCS can be utilized in the same Makefile.
RSRCS =
# End Pe/Eddie support.
# @<-src@
#%}
# Specify libraries to link against.
# There are two acceptable forms of library specifications:
# - if your library follows the naming pattern of libXXX.so or libXXX.a,
# you can simply specify XXX for the library. (e.g. the entry for
# "libtracker.so" would be "tracker")
#
# - for GCC-independent linking of standard C++ libraries, you can use
# $(STDCPPLIBS) instead of the raw "stdc++[.r4] [supc++]" library names.
#
# - if your library does not follow the standard library naming scheme,
# you need to specify the path to the library and it's name.
# (e.g. for mylib.a, specify "mylib.a" or "path/mylib.a")
LIBS = be crypto network support ssl gloox z $(STDCPPLIBS)
# Specify additional paths to directories following the standard libXXX.so
# or libXXX.a naming scheme. You can specify full paths or paths relative
# to the Makefile. The paths included are not parsed recursively, so
# include all of the paths where libraries must be found. Directories where
# source files were specified are automatically included.
LIBPATHS =
# Additional paths to look for system headers. These use the form
# "#include <header>". Directories that contain the files in SRCS are
# NOT auto-included here.
SYSTEM_INCLUDE_PATHS = application/ libs/
# Additional paths paths to look for local headers. These use the form
# #include "header". Directories that contain the files in SRCS are
# automatically included.
LOCAL_INCLUDE_PATHS =
# Specify the level of optimization that you want. Specify either NONE (O0),
# SOME (O1), FULL (O3), or leave blank (for the default optimization level).
OPTIMIZE :=
# Specify the codes for languages you are going to support in this
# application. The default "en" one must be provided too. "make catkeys"
# will recreate only the "locales/en.catkeys" file. Use it as a template
# for creating catkeys for other languages. All localization files must be
# placed in the "locales" subdirectory.
LOCALES =
# Specify all the preprocessor symbols to be defined. The symbols will not
# have their values set automatically; you must supply the value (if any) to
# use. For example, setting DEFINES to "DEBUG=1" will cause the compiler
# option "-DDEBUG=1" to be used. Setting DEFINES to "DEBUG" would pass
# "-DDEBUG" on the compiler's command line.
DEFINES =
# Specify the warning level. Either NONE (suppress all warnings),
# ALL (enable all warnings), or leave blank (enable default warnings).
WARNINGS =
# With image symbols, stack crawls in the debugger are meaningful.
# If set to "TRUE", symbols will be created.
SYMBOLS :=
# Includes debug information, which allows the binary to be debugged easily.
# If set to "TRUE", debug info will be created.
DEBUGGER :=
# Specify any additional compiler flags to be used.
COMPILER_FLAGS =
# Specify any additional linker flags to be used.
LINKER_FLAGS =
# Specify the version of this binary. Example:
# -app 3 4 0 d 0 -short 340 -long "340 "`echo -n -e '\302\251'`"1999 GNU GPL"
# This may also be specified in a resource.
APP_VERSION :=
# (Only used when "TYPE" is "DRIVER"). Specify the desired driver install
# location in the /dev hierarchy. Example:
# DRIVER_PATH = video/usb
# will instruct the "driverinstall" rule to place a symlink to your driver's
# binary in ~/add-ons/kernel/drivers/dev/video/usb, so that your driver will
# appear at /dev/video/usb when loaded. The default is "misc".
DRIVER_PATH =
## Include the Makefile-Engine
DEVEL_DIRECTORY := /boot/system/develop/
include $(DEVEL_DIRECTORY)/etc/makefile-engine
include Makefile.common
include protocols/Makefile.common

View File

@ -1,21 +0,0 @@
SubDir TOP protocols yahoo ;
SubDirSysHdrs [ FDirName $(TOP) ] ;
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
SubDirSysHdrs [ FDirName $(TOP) libs libyahoo2 ] ;
SubDirSysHdrs [ FDirName $(OPENSSL_INCLUDE_DIR) ] ;
SubDirSysHdrs [ FDirName $(CAYA_INCLUDE_DIR) ] ;
AddOn yahoo :
Yahoo.cpp
YahooCallbacks.cpp
YahooConnection.cpp
: be $(TARGET_LIBSTDC++) ssl crypto libyahoo2.a network
: Yahoo.rdef ProtocolTemplate.rdef
;
Depends yahoo : libyahoo2.a ;
LINKFLAGS on yahoo += -L$(OPENSSL_LIBRARY_DIR) ;
InstallBin $(CAYA_DIRECTORY)/protocols : yahoo ;