mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-08-07 16:32:27 -04:00
196 lines
6.9 KiB
Plaintext
196 lines
6.9 KiB
Plaintext
################################################################################
|
|
#
|
|
# Copyright (c) 2007-2008 Dario Senic, Jurko Gospodnetic.
|
|
#
|
|
# Use, modification and distribution is subject to the Boost Software
|
|
# License Version 1.0. (See accompanying file LICENSE_1_0.txt or
|
|
# http://www.boost.org/LICENSE_1_0.txt)
|
|
#
|
|
################################################################################
|
|
|
|
################################################################################
|
|
#
|
|
# Boost Build wxFormBuilder generator tool module.
|
|
#
|
|
# wxFormBuilder is a GUI designer tool for the wxWidgets library. It can then
|
|
# generate C++ sources modeling the designed GUI using the wxWidgets library
|
|
# APIs.
|
|
#
|
|
# This module defines a wxFormBuilder project file type and rules needed to
|
|
# generate C++ source files from those projects. With it you can simply list
|
|
# wxFormBuilder projects as sources for some target and Boost Build will
|
|
# automatically convert them to C++ sources and process from there.
|
|
#
|
|
# The wxFormBuilder executable location may be provided as a parameter when
|
|
# configuring this toolset. Otherwise the default wxFormBuilder.exe executable
|
|
# name is used located in the folder pointed to by the WXFORMBUILDER environment
|
|
# variable.
|
|
#
|
|
# Current limitations:
|
|
#
|
|
# * Works only on Windows.
|
|
# * Works only when run via Boost Jam using the native Windows cmd.exe command
|
|
# interpreter, i.e. the default native Windows Boost Jam build.
|
|
# * Used wxFormBuilder projects need to have their output file names defined
|
|
# consistently with target names assumed by this build script. This means
|
|
# that their target names must use the prefix 'wxFormBuilderGenerated_' and
|
|
# have no output folder defined where the base name is equal to the .fpb
|
|
# project file's name.
|
|
#
|
|
################################################################################
|
|
|
|
################################################################################
|
|
#
|
|
# Implementation note:
|
|
#
|
|
# Avoiding the limitation on the generated target file names can be done but
|
|
# would require depending on external tools to copy the wxFormBuilder project to
|
|
# a temp location and then modify it in-place to set its target file names. On
|
|
# the other hand wxFormBuilder is expected to add command-line options for
|
|
# choosing the target file names from the command line which will allow us to
|
|
# remove this limitation in a much cleaner way.
|
|
# (23.08.2008.) (Jurko)
|
|
#
|
|
################################################################################
|
|
|
|
import generators ;
|
|
import os ;
|
|
import path ;
|
|
import toolset ;
|
|
import type ;
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# wxFormBuilder.generate()
|
|
# ------------------------
|
|
#
|
|
# Action for processing WX_FORM_BUILDER_PROJECT types.
|
|
#
|
|
################################################################################
|
|
#
|
|
# Implementation notes:
|
|
#
|
|
# wxFormBuilder generated CPP and H files need to be moved to the location
|
|
# where the Boost Build target system expects them so that the generated CPP
|
|
# file can be included into the compile process and that the clean rule
|
|
# succesfully deletes both CPP and H files. We expect wxFormBuilder to generate
|
|
# files in the same location where the provided WX_FORM_BUILDER_PROJECT file is
|
|
# located.
|
|
# (15.05.2007.) (Dario)
|
|
#
|
|
################################################################################
|
|
|
|
actions generate
|
|
{
|
|
start "" /wait "$(EXECUTABLE)" /g "$(2)"
|
|
move "$(1[1]:BSR=$(2:P))" "$(1[1]:P)"
|
|
move "$(1[2]:BSR=$(2:P))" "$(1[2]:P)"
|
|
}
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# wxFormBuilder.init()
|
|
# --------------------
|
|
#
|
|
# Main toolset initialization rule called via the toolset.using rule.
|
|
#
|
|
################################################################################
|
|
|
|
rule init ( executable ? )
|
|
{
|
|
if $(.initialized)
|
|
{
|
|
if $(.debug-configuration)
|
|
{
|
|
ECHO notice: [wxFormBuilder-cfg] Repeated initialization request
|
|
(executable \"$(executable:E="")\") detected and ignored. ;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
local environmentVariable = WXFORMBUILDER ;
|
|
|
|
if $(.debug-configuration)
|
|
{
|
|
ECHO notice: [wxFormBuilder-cfg] Configuring wxFormBuilder... ;
|
|
}
|
|
|
|
# Deduce the path to the used wxFormBuilder executable.
|
|
if ! $(executable)
|
|
{
|
|
executable = "wxFormBuilder.exe" ;
|
|
local executable-path = [ os.environ $(environmentVariable) ] ;
|
|
if $(executable-path)-is-not-empty
|
|
{
|
|
executable = [ path.root $(executable) $(executable-path) ] ;
|
|
}
|
|
else if $(.debug-configuration)
|
|
{
|
|
ECHO notice: [wxFormBuilder-cfg] No wxFormBuilder path
|
|
configured either explicitly or using the
|
|
$(environmentVariable) environment variable. ;
|
|
ECHO notice: [wxFormBuilder-cfg] To avoid complications please
|
|
update your configuration to includes a correct path to the
|
|
wxFormBuilder executable. ;
|
|
ECHO notice: [wxFormBuilder-cfg] wxFormBuilder executable will
|
|
be searched for on the system path. ;
|
|
}
|
|
}
|
|
if $(.debug-configuration)
|
|
{
|
|
ECHO notice: [wxFormBuilder-cfg] Will use wxFormBuilder executable
|
|
\"$(executable)\". ;
|
|
}
|
|
|
|
# Now we are sure we have everything we need to initialize this toolset.
|
|
.initialized = true ;
|
|
|
|
# Store the path to the used wxFormBuilder executable.
|
|
.executable = $(executable) ;
|
|
|
|
# Type registration.
|
|
type.register WX_FORM_BUILDER_PROJECT : fbp ;
|
|
|
|
# Parameters to be forwarded to the action rule.
|
|
toolset.flags wxFormBuilder.generate EXECUTABLE : $(.executable) ;
|
|
|
|
# Generator definition and registration.
|
|
generators.register-standard wxFormBuilder.generate :
|
|
WX_FORM_BUILDER_PROJECT : CPP(wxFormBuilderGenerated_%)
|
|
H(wxFormBuilderGenerated_%) ;
|
|
}
|
|
}
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# wxFormBuilder.is-initialized()
|
|
# ------------------------------
|
|
#
|
|
# Returns whether this toolset has been initialized.
|
|
#
|
|
################################################################################
|
|
|
|
rule is-initialized ( )
|
|
{
|
|
return $(.initialized) ;
|
|
}
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# Startup code executed when loading this module.
|
|
#
|
|
################################################################################
|
|
|
|
# Global variables for this module.
|
|
.executable = ;
|
|
.initialized = ;
|
|
|
|
if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
|
|
{
|
|
.debug-configuration = true ;
|
|
}
|