-
Notifications
You must be signed in to change notification settings - Fork 0
/
instructions.box
132 lines (102 loc) · 4.01 KB
/
instructions.box
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/usr/bin/env BoxFactory
project.setname BaconBox
project.discover_directory
## This is generally a good default; auto-discovery.
#project.discover_directory
# Change this to change the library name
# An idea would be to default to the last directory in the project_directory path, once resolved.
# For project /home/homer/Projects/foo/bar/baz/ this would resolve as project_name "baz"
#project.setname BaconBox
# Here we load the modules this project uses.
module.load compilers/cpp
module.load compilers/cpp.cxx
module.load linker
module.load documentation/doxygen
#module.load projects/projects
cpp.settype "staticlib"
#echo "------------------"
#echo "------------------"
#echo "------------------"
#
#echo "------------------"
#echo "TESTING THINGS OUT"
#echo "------------------"
#
#if module.loaded compiler/cpp; then
# echo CPP module is loaded
#else
# echo no CPP module loader...
#fi
#
#echo "------------------"
#echo "------------------"
#echo "------------------"
#exit 2
# Using local is valid; this is run in a function especially for this reason.
local source_files; declare -a source_files
local public_headers; declare -a public_headers
local private_headers; declare -a private_headers
local include_paths; declare -a include_paths
local source_path
local platforms
local platform
# A list of platforms we support
# TODO: Properly rename platform folders...
platforms=( "Qt" "iOS" "ios" "SDL" "MusicIOS" "OpenAL" "Windows" )
# The default platform is set here
platform=${platform:-SDL}
cpp.add_define "${platform}"
#TinyXML hack.
cpp.add_define "TIXML_USE_STL"
if [[ -n "${DEBUG:-}" ]]; then
cpp.add_define "DEBUG"
cpp.set_debug
fi
# We remove the current platform from the list of available platforms
array_remove platforms "$platform"
source_path="$(project.getdirectory)/BaconBox"
include_paths=( "$(project.getdirectory)/BaconBox/" "$(project.getdirectory)/libraries/current/include/" )
# Creating an array of parameters for excludes.
# This is a "lazy" way to do it instead of passing the args manually
for p in "${platforms[@]:-}"; do
platforms_excludes+=( "-X" "*/$p" )
done
add_files -r "${platforms_excludes[@]:-}" \
source_files "${source_path}" "*.cpp"
add_files "${platforms_excludes[@]:-}" \
public_headers "${source_path}/" "*.h"
add_files -r "${platforms_excludes[@]:-}" \
private_headers "${source_path}/$(project.getname)" "*.h"
add_folders -r "${platforms_excludes[@]:-}" \
include_paths "${source_path}"
cpp.add_source_files "${source_files[@]}"
cpp.add_public_headers "${public_headers[@]}"
cpp.add_private_headers "${private_headers[@]}"
cpp.add_include_paths "${include_paths[@]}"
# ------------------------------------------------------------------------------
# - Hooks -
# ------------------------------------------------------------------------------
# Step to run after build
# The function name is not important.
# Putting long commands in a function is easier than writing them in the hooks
# array.
post_build() {
echo "Calling an external script: linkscript.sh"
#TODO: Include this in BoxFactory (static big libs linking)
$(project.getdirectory)/script/linkscript.sh \
$(project.get_build_directory)/$(cpp.getoutfile) \
$(project.getdirectory)/libraries/current/lib/libfreetype.a \
$(project.getdirectory)/libraries/current/lib/libpng.a \
$(project.getdirectory)/libraries/current/lib/libz.a \
$(project.getdirectory)/libraries/current/lib/libSDL.a \
$(project.getdirectory)/libraries/current/lib/libSDL_mixer.a \
$(project.getdirectory)/libraries/current/lib/libogg.a \
$(project.getdirectory)/libraries/current/lib/libvorbis.a \
$(project.getdirectory)/libraries/current/lib/libvorbisenc.a \
$(project.getdirectory)/libraries/current/lib/libvorbisfile.a \
$(project.getdirectory)/libraries/current/lib/libJsonBox.a \
$(project.getdirectory)/libraries/current/lib/libtinyxml.a \
$(project.get_build_directory)/$(cpp.getoutfile)
}
# Hooking the function as a post build step.
hook_step_post_build+=( "post_build" )