# See comments in $(FPTOOLS_TOP)/utils/ghc-pkg/Makefile for why we use
# a real binary here rather than a shell script.
+INPLACE_SRC = $(odir)/ghc-inplace.c
INPLACE_PROG = $(odir)/ghc-inplace$(_way)$(exeext)
EXCLUDED_C_SRCS += ghc-inplace.c
INPLACE_EXTRA_FLAGS = -optc-DWINDOWS
endif
-$(INPLACE_PROG): ghc-inplace.c
- $(HC) -cpp -optc-DGHC_PATH=$(DQ)$(GHC_PATH)$(DQ) -optc-DTOP_ABS=$(DQ)$(FPTOOLS_TOP_ABS)$(DQ) $(INPLACE_EXTRA_FLAGS) $< -o $@
+$(INPLACE_SRC): ghc-inplace.c
+ $(SED) -e "s@GHC_PATH@$(GHC_PATH)@g" -e "s@TOP_ABS@$(FPTOOLS_TOP_ABS)@g" < $< > $@
+
+$(INPLACE_PROG): $(INPLACE_SRC)
+ $(HC) -cpp $(INPLACE_EXTRA_FLAGS) $< -o $@
all :: $(INPLACE_PROG)
fprintf(stderr, "Malloc failed\n");
exit(1);
}
- args[0] = GHC_PATH;
- args[1] = "-B" TOP_ABS;
+ args[0] = "GHC_PATH"; /* Gets replaced by sed */
+ args[1] = "-BTOP_ABS"; /* Gets replaced by sed */
args[2] = "-fhardwire-lib-paths";
if ((argc >= 2) && (strcmp(argv[1], "-v") == 0)) {
printf("Using %s %s %s\n", args[0], args[1], args[2]);
}
memcpy(args + 3, argv + 1, sizeof(char *) * (argc - 1));
args[argc+2] = NULL;
- return run(argv[0], GHC_PATH, argc + 2, args);
+ return run(argv[0],
+ "GHC_PATH", /* Gets replaced by sed */
+ argc + 2,
+ args);
}
#ifndef WINDOWS