Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/sourcetools/com.ibm.jpp.preprocessor/com/ibm/jpp/om/MacroExtension.java
6004 views
1
/*******************************************************************************
2
* Copyright (c) 1999, 2017 IBM Corp. and others
3
*
4
* This program and the accompanying materials are made available under
5
* the terms of the Eclipse Public License 2.0 which accompanies this
6
* distribution and is available at https://www.eclipse.org/legal/epl-2.0/
7
* or the Apache License, Version 2.0 which accompanies this distribution and
8
* is available at https://www.apache.org/licenses/LICENSE-2.0.
9
*
10
* This Source Code may also be made available under the following
11
* Secondary Licenses when the conditions for such availability set
12
* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
13
* General Public License, version 2 with the GNU Classpath
14
* Exception [1] and GNU General Public License, version 2 with the
15
* OpenJDK Assembly Exception [2].
16
*
17
* [1] https://www.gnu.org/software/classpath/license.html
18
* [2] http://openjdk.java.net/legal/assembly-exception.html
19
*
20
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
21
*******************************************************************************/
22
package com.ibm.jpp.om;
23
24
import java.io.File;
25
import java.io.FileNotFoundException;
26
import java.io.IOException;
27
import java.util.HashMap;
28
import java.util.Map;
29
import java.util.Properties;
30
import java.util.StringTokenizer;
31
32
/**
33
* Macro Extension
34
*/
35
public class MacroExtension extends BuilderExtension {
36
37
/**
38
* The macros to use for this build.
39
*/
40
private final Map<String, String> macros = new HashMap<>();
41
42
/**
43
* Constructor for MacroExtension.
44
*/
45
public MacroExtension() {
46
super("macro");
47
}
48
49
/**
50
* @see com.ibm.jpp.om.BuilderExtension#validateOptions(Properties)
51
*/
52
@Override
53
public void validateOptions(Properties options) {
54
String arg = options.getProperty("macro:define");
55
56
if (arg != null) {
57
StringTokenizer tokenizer = new StringTokenizer(arg, ";");
58
59
while (tokenizer.hasMoreTokens()) {
60
String token = tokenizer.nextToken();
61
int posEquals = token.indexOf('=');
62
63
if (posEquals > 0 && posEquals < (token.length() - 1)) {
64
String identifier = token.substring(0, posEquals);
65
String replacement = token.substring(posEquals + 1);
66
67
macros.put(identifier, replacement);
68
}
69
}
70
}
71
}
72
73
/**
74
* @see com.ibm.jpp.om.BuilderExtension#notifyBuildBegin()
75
*/
76
@Override
77
public void notifyBuildBegin() {
78
// try loading the macros from the root of the sources
79
try {
80
loadProperties(macros, new File(builder.getSourceDir(), "macros.properties"));
81
} catch (FileNotFoundException e) {
82
// do nothing
83
} catch (IOException e) {
84
builder.getLogger().log("An exception occured while loading macros", Logger.SEVERITY_ERROR, e);
85
}
86
}
87
88
/**
89
* @see com.ibm.jpp.om.BuilderExtension#notifyConfigurePreprocessor(JavaPreprocessor)
90
*/
91
@Override
92
public void notifyConfigurePreprocessor(JavaPreprocessor preprocessor) {
93
preprocessor.setMacros(this.macros);
94
}
95
96
}
97
98