kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #09445
Parallel build errors on Windows using mingw32-make
I used to think these problems were solely down to mingw32-make, however
from the other cmake problem, perhaps some of them are not.
I've not seen this problem before, this is the first time I've come across
it, but it is repeatable. -j6 produces the attached output, and no a single
process results in a correct specctra_lexer.h file being generated.
The fix at the moment is to build without parallel processes, but that's
SLOW! Still, it only needs to be done to generate specctra_lexer.h. If that
doesn't need regenerating then parallel process builds should be fine.
If there's any further information I can provide to help, just let me know.
To cause the problem I can simply delete pcbnew/specctra_lexer.h and start
start a build with -j6.
Best Regards, Brian.
/* Do not modify this file it was automatically generated by the
* TokenList2DsnLexer CMake script.
*/
#ifndef SPECCTRA_LEXER_H_
#define SPECCTRA_LEXER_H_
#include <dsnlexer.h>
/**
* C++ does not put enum _values_ in separate namespaces unless the enum itself
* is in a separate namespace. All the token enums must be in separate namespaces
* otherwise the C++ compiler will eventually complain if it sees more than one
* DSNLEXER in the same compilation unit, say by mutliple header file inclusion.
* Plus this also enables re-use of the same enum name T. A typedef can always be used
* to clarify which enum T is in play should that ever be a problem. This is
* unlikely since Parse() functions will usually only be exposed to one header
* file like this one. But if there is a problem, then use:
* typedef DSN::T T;
* within that problem area.
*/
namespace DSN
{
/// enum T contains all this lexer's tokens.
enum T
{
// these first few are negative special ones for syntax, and are
// inherited from DSNLEXER.
T_NONE = DSN_NONE,
T_COMMENT = DSN_COMMENT,
T_STRING_QUOTE = DSN_STRING_QUOTE,
T_QUOTE_DEF = DSN_QUOTE_DEF,
T_DASH = DSN_DASH,
T_SYMBOL = DSN_SYMBOL,
T_NUMBER = DSN_NUMBER,
T_RIGHT = DSN_RIGHT, // right bracket: ')'
T_LEFT = DSN_LEFT, // left bracket: '('
T_STRING = DSN_STRING, // a quoted string, stripped of the quotes
T_EOF = DSN_EOF, // special case for end of file
T_pair,
T_absolute = 0 T_parallel,
,
T_add_group T_parallel_noise,
,
T_add_pins T_parallel_segment,
,
T_added T_parser,
,
T_allow_antenna T_part_library,
,
T_allow_redundant_wiring T_path,
,
T_amp,
T_pcb T_ancestor,
,
T_permit_orient T_antipad,
,
T_aperture_type T_permit_side,
T_array,
,
T_physical T_attach,
,
T_attr T_physical_part_mapping,
,
T_average_pair_length T_piggyback,
,
T_back T_pin,
,
T_pin_allow T_base_design,
,
T_pin_cap_via,
T_bbv_ctr2ctr T_pin_via_cap,
,
T_bend_keepout T_pin_width_taper,
,
T_pins T_bond,
,
T_pintype,
T_both T_place,
,
T_place_boundary T_bottom,
,
T_place_control,
T_bottom_layer_sel T_place_keepout,
,
T_boundary T_place_rule,
,
T_brickpat T_placement,
,
T_plan T_bundle,
T_plane,
,
T_bus T_pn,
,
T_point T_bypass,
,
T_polygon,
T_capacitance_resolution T_polyline_path,
,
T_capacitor T_position,
,
T_positive_diagonal T_case_sensitive,
T_power,
,
T_cct1 T_power_dissipation,
,
T_power_fanout T_cct1a,
,
T_prefix T_center_center,
,
T_primary,
T_checking_trim_by_pin T_priority,
,
T_circ T_property,
,
T_protect T_circle,
,
T_qarc T_circuit,
,
T_quarter T_class,
,
T_radius T_class_class,
,
T_ratio T_classes,
,
T_ratio_tolerance T_clear,
,
T_rect T_clearance,
,
T_reduced T_cluster,
,
T_region T_cm,
,
T_color T_region_class,
,
T_colors,
T_region_class_class T_comment,
,
T_comp T_region_net,
,
T_comp_edge_center T_relative_delay,
T_comp_order,
,
T_relative_group_delay T_component,
,
T_relative_group_length T_composite,
,
T_conductance_resolution T_relative_length,
,
T_conductor,
T_reorder T_conflict,
,
T_reroute_order_viols T_connect,
,
T_resistance_resolution T_constant,
,
T_resistor T_contact,
,
T_resolution T_control,
,
T_restricted_layer_length_factor T_corner,
,
T_room T_corners,
,
T_rotate T_cost,
,
T_rotate_first T_created_time,
,
T_round T_cross,
,
T_roundoff_rotation T_crosstalk_model,
,
T_current_resolution T_route,
,
T_delete_pins T_route_to_fanout_only,
,
T_deleted T_routes,
,
T_deleted_keepout T_routes_include,
,
T_delta T_rule,
T_diagonal,
,
T_same_net_checking T_direction,
,
T_sample_window T_directory,
,
T_discrete T_saturation_length,
T_effective_via_length,
,
T_sec T_elongate_keepout,
,
T_exclude T_secondary,
,
T_expose,
T_self T_extra_image_directory,
,
T_sequence_number T_family,
,
T_session T_family_family,
,
T_set_color T_family_family_spacing,
,
T_set_pattern T_fanout,
,
T_shape T_farad,
,
T_shield T_file,
,
T_shield_gap T_fit,
,
T_shield_loop T_fix,
,
T_shield_tie_down_interval T_flip_style,
,
T_shield_width T_floor_plan,
,
T_side T_footprint,
,
T_signal,
T_forbidden T_site,
,
T_force_to_terminal_point T_small,
,
T_forgotten T_smd,
,
T_free T_snap,
,
T_fromto T_snap_angle,
,
T_front T_soft,
,
T_front_only T_source,
,
T_gap T_space_in_quoted_tokens,
,
T_gate T_spacing,
,
T_gates T_spare,
,
T_generated_by_freeroute T_spiral_via,
,
T_global T_square,
,
T_grid T_stack_via,
,
T_group T_stack_via_depth,
,
T_group_set T_standard,
,
T_guide,
T_starburst T_hard,
,
T_status T_height,
,
T_high T_structure,
T_history,
,
T_structure_out T_horizontal,
,
T_subgate T_host_cad,
,
T_subgates T_host_version,
,
T_substituted T_image,
,
T_such T_image_conductor,
,
T_image_image T_suffix,
,
T_image_image_spacing T_super_placement,
,
T_image_outline_clearance,
T_supply T_image_set,
,
T_supply_pin T_image_type,
,
T_swapping T_inch,
T_switch_window,
,
T_include T_system,
,
T_include_pins_in_crosstalk T_tandem_noise,
,
T_inductance_resolution T_tandem_segment,
,
T_insert T_tandem_shield_overhang,
,
T_term_only T_instcnfg,
,
T_terminal T_inter_layer_clearance,
,
T_jumper T_terminator,
,
T_junction_type,
T_test T_keepout,
,
T_test_points T_kg,
,
T_kohm T_testpoint,
,
T_large,
T_threshold T_large_large,
,
T_time_length_factor T_layer,
,
T_layer_depth T_time_resolution,
,
T_layer_noise_weight,
T_tjunction T_layer_pair,
,
T_tolerance T_layer_rule,
,
T_length T_top,
,
T_length_amplitude,
T_topology T_length_factor,
,
T_total T_length_gap,
,
T_track_id T_library,
,
T_turret T_library_out,
,
T_type T_limit,
,
T_um T_limit_bends,
,
T_unassigned T_limit_crossing,
,
T_unconnects T_limit_vias,
,
T_unit T_limit_way,
,
T_up T_linear,
,
T_use_array T_linear_interpolation,
,
T_use_layer T_load,
,
T_lock_type T_use_net,
,
T_logical_part T_use_via,
,
T_value T_logical_part_mapping,
,
T_vertical,
T_low T_via,
,
T_via_array_template T_match_fromto_delay,
T_via_at_smd,
T_via_keepout,
,
T_via_number T_match_fromto_length,
,
T_via_rotate_first T_match_group_delay,
,
T_via_site,
T_match_group_length T_via_size,
T_match_net_delay,
,
T_virtual_pin T_match_net_length,
,
T_volt T_max_delay,
,
T_max_len T_voltage_resolution,
,
T_max_length T_was_is T_max_noise,
,
T_way T_max_restricted_layer_length,
,
T_weight T_max_stagger,
T_width,
,
T_max_stub T_window,
,
T_max_total_delay T_wire,
,
T_max_total_length T_wire_keepout,
,
T_max_total_vias T_wires,
,
T_medium T_wires_include,
,
T_mhenry T_wiring,
,
T_mho,
T_write_resolution T_microvia,
,
T_mid_driven T_x,
,
T_mil T_xy,
T_min_gap,
,
T_y T_mirror
,
T_mirror_first,
T_mixed,
T_mm,
T_negative_diagonalN
/**
* Class SPECCTRA_LEXER
* is an automatically generated class using the TokenList2DnsLexer.cmake
* technology, based on keywords provided by file:
* C:/kicad-winbuilder-dev/kicad-winbuilder/src/kicad/pcbnew/specctra.keywords
*/
class SPECCTRA_LEXER : public DSNLEXER
{
/// Auto generated lexer keywords table and length:
static const KEYWORD keywords[];
static const unsigned keyword_count;
public:
/**
* Constructor ( const std::string&, const wxString& )
* @param aSExpression is (utf8) text possibly from the clipboard that you want to parse.
* @param aSource is a description of the origin of @a aSExpression, such as a filename.
* If left empty, then _(clipboard) is used.
*/
SPECCTRA_LEXER( const std::string& aSExpression, const wxString& aSource = wxEmptyString ) :
DSNLEXER( keywords, keyword_count, aSExpression, aSource )
{
}
/**
* Constructor ( FILE* )
* takes @a aFile already opened for reading and @a aFilename as parameters.
* The opened file is assumed to be positioned at the beginning of the file
* for purposes of accurate line number reporting in error messages. The
* FILE is closed by this instance when its destructor is called.
* @param aFile is a FILE already opened for reading.
* @param aFilename is the name of the opened file, needed for error reporting.
*/
SPECCTRA_LEXER( FILE* aFile, const wxString& aFilename ) :
DSNLEXER( keywords, keyword_count, aFile, aFilename )
{
}
/**
* Constructor ( LINE_READER* )
* intializes a lexer and prepares to read from @a aLineReader which
* is assumed ready, and may be in use by other DSNLEXERs also. No ownership
* is taken of @a aLineReader. This enables it to be used by other lexers also.
* The transition between grammars in such a case, must happen on a text
* line boundary, not within the same line of text.
*
* @param aLineReader is any subclassed instance of LINE_READER, such as
* STRING_LINE_READER or FILE_LINE_READER. No ownership is taken of aLineReader.
*/
SPECCTRA_LEXER( LINE_READER* aLineReader ) :
DSNLEXER( keywords, keyword_count, aLineReader )
{
}
/**
* Function TokenName
* returns the name of the token in ASCII form.
*/
static const char* TokenName( DSN::T aTok );
/**
* Function NextTok
* returns the next token found in the input file or T_EOF when reaching
* the end of file. Users should wrap this function to return an enum
* to aid in grammar debugging while running under a debugger, but leave
* this lower level function returning an int (so the enum does not collide
* with another usage).
* @return DSN::T - the type of token found next.
* @throw IO_ERROR - only if the LINE_READER throws it.
*/
DSN::T NextTok() throw( IO_ERROR )
{
return (DSN::T) DSNLEXER::NextTok();
}
/**
* Function NeedSYMBOL
* calls NextTok() and then verifies that the token read in
* satisfies bool IsSymbol().
* If not, an IO_ERROR is thrown.
* @return int - the actual token read in.
* @throw IO_ERROR, if the next token does not satisfy IsSymbol()
*/
DSN::T NeedSYMBOL() throw( IO_ERROR )
{
return (DSN::T) DSNLEXER::NeedSYMBOL();
}
/**
* Function NeedSYMBOLorNUMBER
* calls NextTok() and then verifies that the token read in
* satisfies bool IsSymbol() or tok==T_NUMBER.
* If not, an IO_ERROR is thrown.
* @return int - the actual token read in.
* @throw IO_ERROR, if the next token does not satisfy the above test
*/
DSN::T NeedSYMBOLorNUMBER() throw( IO_ERROR )
{
return (DSN::T) DSNLEXER::NeedSYMBOLorNUMBER();
}
/**
* Function CurTok
* returns whatever NextTok() returned the last time it was called.
*/
DSN::T CurTok()
{
return (DSN::T) DSNLEXER::CurTok();
}
/**
* Function PrevTok
* returns whatever NextTok() returned the 2nd to last time it was called.
*/
DSN::T PrevTok()
{
return (DSN::T) DSNLEXER::PrevTok();
}
};
// example usage
/**
* Class _PARSER
* holds data and functions pertinent to parsing a S-expression file .
*
class SPECCTRA_PARSER : public SPECCTRA_LEXER
{
};
*/
#endif // SPECCTRA_LEXER_H_
,
T_net,
T_net_number,
T_net_out,
T_net_pin_changes,
T_nets,
T_network,
T_network_out,
T_no,
T_noexpose,
T_noise_accumulation,
T_noise_calculation,
T_normal,
T_object_type,
T_off,
T_off_grid,
T_offset,
T_on,
T_open,
T_opposite_side,
T_order,
T_orthogonal,
T_outline,
T_overlap,
T_pad,
T_pad_pad,
T_padstack,
T_pair,
T_parallel,
T_parallel_noise,
T_parallel_segment,
T_parser,
T_part_library,
T_path,
T_pcb,
T_permit_orient,
T_permit_side,
T_physical,
T_physical_part_mapping,
T_piggyback,
T_pin,
T_pin_allow,
T_pin_cap_via,
T_pin_via_cap,
T_pin_width_taper,
T_pins,
T_pintype,
T_place,
T_place_boundary,
T_place_control,
T_place_keepout,
T_place_rule,
T_placement,
T_plan,
T_plane,
T_pn,
T_point,
T_polygon,
T_polyline_path,
T_position,
T_positive_diagonal,
T_power,
T_power_dissipation,
T_power_fanout,
T_prefix,
T_primary,
T_priority,
T_property,
T_protect,
T_qarc,
T_quarter,
T_radius,
T_ratio,
T_ratio_tolerance,
T_rect,
T_reduced,
T_region,
T_region_class,
T_region_class_class,
T_region_net,
T_relative_delay,
T_relative_group_delay,
T_relative_group_length,
T_relative_length,
T_reorder,
T_reroute_order_viols,
T_resistance_resolution,
T_resistor,
T_resolution,
T_restricted_layer_length_factor,
T_room,
T_rotate,
T_rotate_first,
T_round,
T_roundoff_rotation,
T_route,
T_route_to_fanout_only,
T_routes,
T_routes_include,
T_rule,
T_same_net_checking,
T_sample_window,
T_saturation_length,
T_sec,
T_secondary,
T_self,
T_sequence_number,
T_session,
T_set_color,
T_set_pattern,
T_shape,
T_shield,
T_shield_gap,
T_shield_loop,
T_shield_tie_down_interval,
T_shield_width,
T_side,
T_signal,
T_site,
T_small,
T_smd,
T_snap,
T_snap_angle,
T_soft,
T_source,
T_space_in_quoted_tokens,
T_spacing,
T_spare,
T_spiral_via,
T_square,
T_stack_via,
T_stack_via_depth,
T_standard,
T_starburst,
T_status,
T_structure,
T_structure_out,
T_subgate,
T_subgates,
T_substituted,
T_such,
T_suffix,
T_super_placement,
T_supply,
T_supply_pin,
T_swapping,
T_switch_window,
T_system,
T_tandem_noise,
T_tandem_segment,
T_tandem_shield_overhang,
T_term_only,
T_terminal,
T_terminator,
T_test,
T_test_points,
T_testpoint,
T_threshold,
T_time_length_factor,
T_time_resolution,
T_tjunction,
T_tolerance,
T_top,
T_topology,
T_total,
T_track_id,
T_turret,
T_type,
T_um,
T_unassigned,
T_unconnects,
T_unit,
T_up,
T_use_array,
T_use_layer,
T_use_net,
T_use_via,
T_value,
T_vertical,
T_via,
T_via_array_template,
T_via_at_smd,
T_via_keepout,
T_via_number,
T_via_rotate_first,
T_via_site,
T_via_size,
T_virtual_pin,
T_volt,
T_voltage_resolution,
T_was_is,
T_way,
T_weight,
T_width,
T_window,
T_wire,
T_wire_keepout,
T_wires,
T_wires_include,
T_wiring,
T_write_resolution,
T_x,
T_xy,
T_y
};
} // namespace DSN
/**
* Class SPECCTRA_LEXER
* is an automatically generated class using the TokenList2DnsLexer.cmake
* technology, based on keywords provided by file:
* C:/kicad-winbuilder-dev/kicad-winbuilder/src/kicad/pcbnew/specctra.keywords
*/
class SPECCTRA_LEXER : public DSNLEXER
{
/// Auto generated lexer keywords table and length:
static const KEYWORD keywords[];
static const unsigned keyword_count;
public:
/**
* Constructor ( const std::string&, const wxString& )
* @param aSExpression is (utf8) text possibly from the clipboard that you want to parse.
* @param aSource is a description of the origin of @a aSExpression, such as a filename.
* If left empty, then _(clipboard) is used.
*/
SPECCTRA_LEXER( const std::string& aSExpression, const wxString& aSource = wxEmptyString ) :
DSNLEXER( keywords, keyword_count, aSExpression, aSource )
{
}
/**
* Constructor ( FILE* )
* takes @a aFile already opened for reading and @a aFilename as parameters.
* The opened file is assumed to be positioned at the beginning of the file
* for purposes of accurate line number reporting in error messages. The
* FILE is closed by this instance when its destructor is called.
* @param aFile is a FILE already opened for reading.
* @param aFilename is the name of the opened file, needed for error reporting.
*/
SPECCTRA_LEXER( FILE* aFile, const wxString& aFilename ) :
DSNLEXER( keywords, keyword_count, aFile, aFilename )
{
}
/**
* Constructor ( LINE_READER* )
* intializes a lexer and prepares to read from @a aLineReader which
* is assumed ready, and may be in use by other DSNLEXERs also. No ownership
* is taken of @a aLineReader. This enables it to be used by other lexers also.
* The transition between grammars in such a case, must happen on a text
* line boundary, not within the same line of text.
*
* @param aLineReader is any subclassed instance of LINE_READER, such as
* STRING_LINE_READER or FILE_LINE_READER. No ownership is taken of aLineReader.
*/
SPECCTRA_LEXER( LINE_READER* aLineReader ) :
DSNLEXER( keywords, keyword_count, aLineReader )
{
}
/**
* Function TokenName
* returns the name of the token in ASCII form.
*/
static const char* TokenName( DSN::T aTok );
/**
* Function NextTok
* returns the next token found in the input file or T_EOF when reaching
* the end of file. Users should wrap this function to return an enum
* to aid in grammar debugging while running under a debugger, but leave
* this lower level function returning an int (so the enum does not collide
* with another usage).
* @return DSN::T - the type of token found next.
* @throw IO_ERROR - only if the LINE_READER throws it.
*/
DSN::T NextTok() throw( IO_ERROR )
{
return (DSN::T) DSNLEXER::NextTok();
}
/**
* Function NeedSYMBOL
* calls NextTok() and then verifies that the token read in
* satisfies bool IsSymbol().
* If not, an IO_ERROR is thrown.
* @return int - the actual token read in.
* @throw IO_ERROR, if the next token does not satisfy IsSymbol()
*/
DSN::T NeedSYMBOL() throw( IO_ERROR )
{
return (DSN::T) DSNLEXER::NeedSYMBOL();
}
/**
* Function NeedSYMBOLorNUMBER
* calls NextTok() and then verifies that the token read in
* satisfies bool IsSymbol() or tok==T_NUMBER.
* If not, an IO_ERROR is thrown.
* @return int - the actual token read in.
* @throw IO_ERROR, if the next token does not satisfy the above test
*/
DSN::T NeedSYMBOLorNUMBER() throw( IO_ERROR )
{
return (DSN::T) DSNLEXER::NeedSYMBOLorNUMBER();
}
/**
* Function CurTok
* returns whatever NextTok() returned the last time it was called.
*/
DSN::T CurTok()
{
return (DSN::T) DSNLEXER::CurTok();
}
/**
* Function PrevTok
* returns whatever NextTok() returned the 2nd to last time it was called.
*/
DSN::T PrevTok()
{
return (DSN::T) DSNLEXER::PrevTok();
}
};
// example usage
/**
* Class _PARSER
* holds data and functions pertinent to parsing a S-expression file .
*
class SPECCTRA_PARSER : public SPECCTRA_LEXER
{
};
*/
#endif // SPECCTRA_LEXER_H_
Follow ups